למה ACT מצטיין במשימות דו-מנויות
ACT (Action Chunked Transformers) פותחה במקור במיוחד עבור מחקר מניפולציה דו-ידנית. התובנה המרכזית שלו - שחיזוי רצפים של פעולות עתידיות (נתחים) ולא פעולות חד-שלביות מפחיתה את שגיאות ההרכבה - חשובה במיוחד עבור משימות דו-ידניות, שבהן שגיאה קטנה במסלול של זרוע אחת עלולה לגרום לכשל במפל בביצוע של הזרוע השנייה.
מנגנון ה-action chunking נותן למעשה למדיניות אופק תכנוני. במקום להתחייב לפקודה משותפת אחת בכל צעד זמן של 50Hz, ACT מתכנן 100 צעדים קדימה ומחליק את הביצוע. עבור משימת מסירה, פירוש הדבר שהמדיניות יכולה "לראות" את הגישה של שתי הזרועות לעבר נקודת המסירה כחלק מרצף מתוכנן, במקום להגיב לכל פריים באופן עצמאי. מבחינה אמפירית, זה מפחית בחצי את שיעור הכישלונות באמצע ההעברה בהשוואה לגישות ללא חתיכות על מערכי נתונים דו-ידניים.
זהירות אחת: ACT מניחה שההדגמות במערך הנתונים שלך מייצגות א אסטרטגיה עקבית. אם הדגמות שונות מציגות דרכים שונות מהותית לביצוע המסירה - זרוע שונה שמתחילה, גובה מסירה שונה - רכיב CVAE יתקשה לקודד סגנון בודד. 100 ההדגמות שלך צריכות לבצע את אותה אסטרטגיית תנועה.
פיקוד הדרכה
--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% (בי-ידנית קשה יותר מזרוע אחת, וזו תוצאה חזקה של ריצה ראשונה).