למה ACT מצטיין במשימות דו-מנויות

ACT (Action Chunked Transformers) פותחה במקור במיוחד עבור מחקר מניפולציה דו-ידנית. התובנה המרכזית שלו - שחיזוי רצפים של פעולות עתידיות (נתחים) ולא פעולות חד-שלביות מפחיתה את שגיאות ההרכבה - חשובה במיוחד עבור משימות דו-ידניות, שבהן שגיאה קטנה במסלול של זרוע אחת עלולה לגרום לכשל במפל בביצוע של הזרוע השנייה.

מנגנון ה-action chunking נותן למעשה למדיניות אופק תכנוני. במקום להתחייב לפקודה משותפת אחת בכל צעד זמן של 50Hz, ACT מתכנן 100 צעדים קדימה ומחליק את הביצוע. עבור משימת מסירה, פירוש הדבר שהמדיניות יכולה "לראות" את הגישה של שתי הזרועות לעבר נקודת המסירה כחלק מרצף מתוכנן, במקום להגיב לכל פריים באופן עצמאי. מבחינה אמפירית, זה מפחית בחצי את שיעור הכישלונות באמצע ההעברה בהשוואה לגישות ללא חתיכות על מערכי נתונים דו-ידניים.

זהירות אחת: ACT מניחה שההדגמות במערך הנתונים שלך מייצגות א אסטרטגיה עקבית. אם הדגמות שונות מציגות דרכים שונות מהותית לביצוע המסירה - זרוע שונה שמתחילה, גובה מסירה שונה - רכיב CVAE יתקשה לקודד סגנון בודד. 100 ההדגמות שלך צריכות לבצע את אותה אסטרטגיית תנועה.

פיקוד הדרכה

מקור ~/dk1-env/bin/activate python -m lerobot.scripts.train \ --אקט סוג מדיניות \ --dataset-repo-id cube-handoff-v1 \ --root ~/dk1-datasets \ --output-dir ~/dk1-policies/cube-handoff-v1 \ --config-overrides \_0 policy. policy.n_action_steps=100 \ policy.dim_feedforward=3200 \ policy.n_heads=8 \ policy.n_encoder_layers=4 \ policy.n_decoder_layers=7 \ training.num_steps=80000 \ training.eval_freq=5000 \ training.freq_freq.0 training. # policy.action_dim=14 tells ACT the action space is 14-dimensional (6+6 joints + 2 grippers) # Run this before sleeping — checkpoints save every 5k steps
GPU נדרש עבור זמן אימון מעשי: ב-RTX 3080 (10GB), 80,000 צעדים נמשכים כ-90 דקות. ב-RTX 4090, כ-50 דקות. במעבד, צפו ל-10-14 שעות. השתמש ב- --device cuda דגל אם יש לך GPU. אפשרויות GPU בענן (Lambda Labs, Vast.ai) פועלות בערך של $0.50-1.50 לשעה עבור החומרה הדרושה.

קריאת עקומות אימון דו-ידניות

עקומות אימון דו-ידניות שונות מזרוע אחת במובן חשוב אחד: יש לך שני מרחבי פעולה, והמדיניות חייבת ללמוד לתאם ביניהם. שימו לב לדפוסים האלה בעיקומי ההפסד שלכם (הצג ב-TensorBoard ב tensorboard --logdir ~/dk1-policies/):

L_reconstruction (אובדן פעולה כולל)

אמור לרדת מ-~3.0 מתחת ל-0.4 ב-60,000 צעדים. רמה מעל 0.7 לאחר 40,000 צעדים מצביעה על בעיות באיכות מערך הנתונים - סביר להניח ששונות גדולה מדי בתזמון או במיקום המסירה.

L_kl (הסדרת CVAE)

מתחיל ליד 0 ועולה לאט ל-5-15. אם הוא עולה מעל 30, ה- CVAE מתקשה למצוא הטבעה בסגנון קומפקטי. לעתים קרובות זה אומר להפגנות שלך יש יותר מדי גיוון התנהגותי. שקול לגזור את ההדגמות התחתונות של 20% הפחות עקביות והכשרה מחדש.

שגיאת פעולה: שמאל מול ימין

אם תפעיל רישום שגיאות לכל זרוע (באמצעות training.log_per_action_dim=true ביטול), תראה עקומות אובדן נפרדות עבור ממדי הפעולה השמאלי והימני. פער מתמשך גדול בין השניים מצביע על כך שהדגמות של זרוע אחת עקביות יותר משל האחרת - עיין ברשימת הבדיקה האיכותית של יחידה 4 שלך לגבי הזרוע הפוגרת.

היפרפרמטרים דו-ידניים ספציפיים

פָּרָמֶטֶר ברירת מחדל (זרוע אחת) DK1 Bimanual מומלץ מַדוּעַ
action_dim 7 14 שתי זרועות 6-DOF + 2 תפסנים = 14 ממדי פעולה
chunk_size 100 100 אותו דבר - נתחי פעולה כבר מתאימים היטב ללוחות זמנים של תיאום דו-ידני
dim_feedforward 3200 3200 אין צורך בשינוי - שטח הפעולה הגדול יותר מטופל על ידי ראש הפעולה, לא רוחב השנאי
num_steps 50000 80000 תיאום דו-מנואלי דורש יותר שלבי אימון כדי להתכנס בצורה מהימנה; 80k הוא המינימום המעשי ל-100 הדגמות
batch_size 32 16 מצומצם כדי להתאים לדגימות הנתונים הדו-ידניים הגדולים יותר (הזנות מצלמה כפולות) בזיכרון ה-GPU
kl_weight 10 10 ברירת המחדל פועלת היטב; הגדל ל-20 רק אם L_kl נשאר קרוב לאפס לאחר 30 אלף צעדים (CVAE לא לומד)

בחירת מחסום

שמור מחסומים כל 5,000 צעדים (training.save_freq=5000). אל תניח שהמחסום הסופי הוא הטוב ביותר. מדיניות דו-ידנית יכולה להתאים יותר מדי בספירת צעדים גבוהה - המדיניות לומדת לשחזר הדגמות אימון בצורה מושלמת אך מאבדת הכללה לשונות הקלות בעולם האמיתי שתתקל בהן במהלך ההערכה.

בחר את המחסום בשלב שבו L_reconstruction הגיע למינימום שלו לפני תחילת הרמה או עלייה קלה. בדרך כלל זה בטווח של 60,000-80,000 צעדים עבור מערכי נתונים דו-ידניים של 100 הדגמות. פרוס שני מחסומים (מחסום ההפסד המינימלי והאחרון) והשווה את הביצועים שלהם בעולם האמיתי ביחידה 6.

יחידה 5 השלם כאשר...

האימון השלים 80,000 צעדים ונקודות הבידוק נשמרות ב ~/dk1-policies/cube-handoff-v1/. הגמר L_reconstruction הערך נמוך מ-0.5. זיהית את המחסום הטוב ביותר שלך על סמך עקומות ההפסד. אתה מבין מדוע עקומת L_kl מתנהגת כפי שהיא מתנהגת בריצה שלך. אתה מוכן לפרוס לחומרה אמיתית ביחידה 6 - יעד ההצלחה בהעברת הקובייה הוא מעל 60% (בי-ידנית קשה יותר מזרוע אחת, וזו תוצאה חזקה של ריצה ראשונה).