להשתלט כשה-policy טועה, ולאמן בדיוק על התיקון הזה.
policy שאומן ב-behavior cloning מכיר רק את המצבים שההדגמות שלכם ביקרו בהם. DAgger סוגר את הפער הזה בעזרת נתונים מהמצבים שאליהם ה-policy עצמו מגיע. AY-Robots מריצה את כל הלולאה על זרוע SO-100: מפעילים checkpoint, משתלטים באמצע הריצה, שומרים את הפרקים המתוקנים, מרכיבים את התמהיל, וממשיכים לאמן מאותו checkpoint שהרצתם הרגע.
- HG-DAgger, בשליטת אדם
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- שיעור התערבות לכל סבב
למה policy מאומן עושה דבר שמעולם לא הודגם
Behavior cloning מתייחס לבקרה כאל למידה מונחית רגילה: תצפית בכניסה, יעד למפרק ביציאה, מותאם לפריימים שאדם הקליט. זה תקף רק כל עוד הרובוט נשאר במצבים שהאדם ביקר בהם, וזה לא המצב. גריפר שנסגר ארבעים מילישניות מוקדם מדי דוחף את הקובייה שני מילימטרים מהתנוחה שהודגמה. התצפית הבאה היא כזו שסט האימון לא מכיל, כך שהפעולה שם היא אקסטרפולציה, והמצב שאחרי כן רחוק עוד יותר. התפלגות האימון וההתפלגות שה-policy הנלמד בעצם יוצר הן שני דברים שונים, וההתפלגות השנייה מתרחקת מהראשונה ככל שהפרק מתקדם.
Ross, Gordon ו-Bagnell תיארו בדיוק את כשל הרדוקציה הזה ב-2011 וכימתו את הנזק: מסווג שטועה בהסתברות e תחת התפלגות המומחה יכול לצבור בסדר גודל של T בריבוע כפול e טעויות על פני אופק של T צעדים תחת ההתפלגות שהוא עצמו יוצר, כי טעות אחת מייצרת תצפיות שהמומחה מעולם לא הפיק, והטעויות מצטברות. הפתרון שלהם הוא האלגוריתם שהעמוד הזה עוסק בו: מריצים את ה-policy הנוכחי, אוספים תוויות מומחה עבור המצבים שהוא מבקר בהם, מצרפים אותן לכל מה שנאסף עד כה, מאמנים מחדש, וחוזרים חלילה. יותר הדגמות מאותו סוג לא עוזרות, כי הן דוגמות מחדש מאותה התפלגות. תוויות על המצבים שה-policy מגיע אליהם כן עוזרות. הגרסה המיושמת כאן היא בשליטת אדם (HG-DAgger, Kelly et al.): ה-policy שומר על השליטה עד שאדם מחליט שמשהו משתבש ומשתלט, כך שתיקונים נוצרים רק היכן שצריך, והזרוע אף פעם לא נדרשת להגיע למצב שהמפעיל לא היה מאשר.
- Behavior cloning תקף רק על התפלגות המצבים שעליה הוא אומן.
- הכשל מגביר את עצמו: סטייה קטנה מייצרת מצב לא מוכר, שמייצר סטייה גדולה יותר.
- התרופה היא לא עוד הדגמות, אלא תוויות על המצבים שאליהם ה-policy עצמו מגיע.
- בשליטת אדם פירושו שהמפעיל מחליט מתי להתערב, לא ציון אוטונומיה.
למה הטעות מצטברת
גוררים את האופק. תחת behavior cloning העלות הנוספת הצפויה גדלה בערך כריבוע מספר הצעדים, כי כל טעות מייצרת מצבים שההדגמות מעולם לא כיסו; לולאת אגרגציה שומרת על הגידול קרוב ללינארי (Ross et al., 2011).
עקומות להמחשה מתוך החסמים ב-Ross et al. (2011), לא מדידות מהרובוט שלכם. העניין הוא הצורה, לא המספרים.
סבב DAgger אחד, שישה שלבים
זו הלולאה כפי שהפלטפורמה מריצה אותה בפועל, לא סכמה. כל שלב למטה מתאים לפקד בעמדת הבקרה.
מעבר על הלולאה שלב אחר שלב
אותם שישה שלבים, אחד בכל פעם, עם מה שקורה בזרוע ובמערך הנתונים בכל אחד מהם.
הרצת ה-policy והקלטתה
מפעילים ריצת inference מול checkpoint שאימנתם. הריצה מוקלטת תוך כדי, עם טקסט המשימה של הריצה עצמה, כך שהפריימים שמישים כנתוני אימון אחר כך במקום להיות רק סרטון לצפייה.
להשתלט ולתקן
ברגע שהזרוע עושה את הדבר הלא נכון, לוחצים Take over. ה-runner נעצר לרגע והזרוע בשליטתכם. עם leader arm הוא נוסע קודם אל תנוחת ה-follower ואז מעביר שליטה; עם קלט מקלדת או סליידרים, שנבחר בתחילת הריצה, ההשתלטות ידנית מיידית. מתקנים את התנועה, ואז מחזירים את השליטה ל-policy. פריימים שהוקלטו במהלך ההשתלטות מסומנים כהתערבות אוטומטית.
מיון הריצה
מחליטים לכל ריצה מה היא הייתה: לתייק אותה כתיקון, לשמור אותה כריצת הערכה, או להשליך אותה. פריימי הקיפאון סביב מסירת השליטה נשארים בתיקיית ה-raw ולעולם לא נכנסים למערך הנתונים.
סנכרון מערך התיקונים
התיקונים מצטברים במערך תיקונים ייעודי לכל policy ועוברים ל-bucket שלכם דרך הסנכרון האוטומטי לענן. בשלב הזה שום דבר לא ממוזג לתוך שום דבר; התיקונים הם פשוט מערך נתונים בפני עצמו.
הרכבת התמהיל בעצמכם
משתמשים ב-Compose dataset כדי לבנות את סט האימון לסבב הבא: מערך הנתונים המקורי בתוספת התיקונים, עם בחירת פרקים מפורשת לכל מקור. התוצאה היא מערך נתונים רגיל שמסתנכרן ומתאמן כמו כל אחד אחר. שום דבר לא מעורבב מאחורי הגב, ושום נתוני סימולציה לא נוספים אוטומטית.
המשך אימון מה-checkpoint
מאמנים את מערך הנתונים המורכב עם Continue from checkpoint במקום להתחיל מהמודל הבסיסי, כך שהסבב מתחיל מה-policy שהרצתם הרגע. חשוב לדייק מה זה בעצם: זה מאתחל את המשקלים מאותו checkpoint, זה לא resume של האופטימייזר.
מה הפלטפורמה מורידה מכם
כל פריט כאן הוא שלב בלולאה שאחרת הייתם צריכים לבנות ולתחזק בעצמכם.
השתלטות בלי leader arm
בוחרים קלט מקלדת או סליידרים בתחילת הריצה, ואז מספיק מחשב נייד כדי לתקן. דחיפות מקלדת מוגבלות בצד השרת לשתי מעלות לכל מפרק וארבע מעלות בגריפר; יעדי סליידר הם מוחלטים, והשרת זז לכל היותר שש מעלות לכיוונם בכל קריאה. ההגבלות אכופות בשרת, לא בממשק, כך שמקש תקוע לא יכול להטיל את הזרוע.
תיעוד טלה-אופרציההתערבויות מסומנות לכל פריים
כל פריים שמוקלט בזמן שאתם מחזיקים בזרוע נושא דגל התערבות, ועמודת ה-action נושאת את התנוחה המלאה שנשלחה כפקודה. אתם לא מתחזקים עמודת דגל ביד ולא מיישרים אותה לאינדקסים של פריימים בדיעבד.
פורמט מערך הנתונים של LeRobotמיון: תיקון, הערכה, או פח
כל ריצה מקבלת החלטה אחת בכרטיס השמירה. ריצות תיקון מזינות את סבב האימון הבא, ריצות הערכה נשארות מחוץ לאימון כדי שיישארו מדידה נקייה, וריצות גרועות נעלמות במקום להרעיל בשקט את התמהיל.
Sessions ופרקיםהרכבת התמהיל במפורש
את סט האימון לסבב n מרכיבים אתם: מערך הנתונים המקורי בתוספת תיקונים, פרקים נבחרים לכל מקור. בלי ערבוב אוטומטי, בלי נתוני סימולציה נסתרים, והתוצאה המורכבת מתנהגת כמו כל מערך נתונים אחר.
מערכי נתוניםהמשך מ-checkpoint
מפנים ריצת אימון אל ה-checkpoint שהרצתם הרגע במקום למודל הבסיסי, כך שכל סבב מתחיל היכן שהקודם הסתיים. זה מאתחל רק משקלים; מצב האופטימייזר לא משוחזר, ולכן כדאי להתייחס לסבב הראשון כאל מבחן היתכנות.
אימוןGPU בשכירות לפי סבב
ACT ו-SmolVLA על 4090, Pi0 ו-GR00T N1.5 או N1.7 על A100 עם 80 GB. מתחילים סבב, ה-pod עולה, ה-checkpoints מגיעים ל-bucket שלכם, ומשלמים רק על השעות שהסבב לקח.
תמחור GPUתכנון הסבבים
שיעור ההתערבות הוא מדד ההתקדמות של הלולאה: פריימים מתוקנים חלקי פריימים של הריצה. קובעים מאיפה מתחילים וכמה כל סבב משפר, ורואים כמה סבבים נדרשים כדי להגיע ליעד.
| סבב | שיעור התערבות | פריימים מתוקנים |
|---|---|---|
| 1 | 30.0 % | 900 |
| 2 | 22.5 % | 675 |
| 3 | 16.9 % | 506 |
| 4 | 12.7 % | 380 |
| 5 | 9.5 % | 285 |
| 6 | 7.1 % | 214 |
| Σ | 2 960 | |
מודל, לא תחזית. סבבים אמיתיים משתנים בקפיצות, וסבב שלא מזיז את השיעור לא הביא שום דבר; זה בדיוק האות ששווה לעקוב אחריו.
לבנות את הלולאה בעצמכם מול להריץ אותה כאן
שום דבר מכל זה לא בלתי אפשרי ידנית. זו שאלה של כמה ערבים הולכים על תשתית במקום על סבבים, ויש שורה אחת שבה עשייה עצמאית היא בבירור התשובה הטובה יותר.
| שלב בלולאה | הקמה ידנית | ב-AY-Robots |
|---|---|---|
| השתלטות באמצע ריצה | leader arm, או קוד משלכם על ה-servo bus. השתלטות במקלדת וסליידרים, כולל הגבלות בטיחות, זה משהו שכותבים ואז מנפים באגים על חומרה אמיתית. | leader arm, מקלדת, או סליידרים, נבחר כשהריצה מתחילה. הגבלות הזווית יושבות בשרת. |
| סימון התערבויות | מוסיפים עמודת דגל, שומרים אותה מיושרת לאינדקס הפריים, ובודקים מחדש בכל שינוי בפורמט ההקלטה. | כל פריים שמוקלט במהלך השתלטות מסומן אוטומטית, עם התנוחה שנשלחה כפקודה בעמודת ה-action. |
| מיון הריצות | מוסכמות תיקיות וסקריפטי shell. פריימי הקיפאון סביב מסירת השליטה עליכם למצוא ולסנן בעצמכם. | החלטה אחת לכל ריצה בכרטיס השמירה. פריימי המסירה נשארים בתיקיית ה-raw. |
| בניית מערך הנתונים המעורבב | סקריפטי merge לכל גרסת פורמט. לשמור על עקביות באינדקסי פרקים, מטא-דאטה והפניות וידאו זה החלק המייגע. | הרכבה מהמקור בתוספת תיקונים עם בחירת פרקים לכל מקור; התוצאה היא מערך נתונים רגיל. |
| התחלת הסבב הבא מה-policy האחרון | מחווטים את ה-checkpoint לתוך המאמן בעצמכם, ואפשר גם לשחזר את מצב האופטימייזר אם רוצים resume אמיתי. | שדה אחד ל-checkpoint הבסיסי. רק משקלים: מאתחל מה-checkpoint, זה לא resume של אופטימייזר. |
| שליטה בלולאת האימון | מלאה. ה-loss שלכם, לוח הזמנים שלכם, ה-ablations שלכם, האינסטרומנטציה שלכם, בלי פלטפורמה בדרך. אם שאלת המחקר היא לולאת האימון עצמה, עושים את זה ביד. | מסלול קבוע עם רשימת policies מוגדרת וההיפרפרמטרים שהטופס חושף, לא קוד חופשי. |
המאמרים שעליהם זה מבוסס
כדאי לקרוא אותם לפני שמתווכחים עם הלולאה. כל קישור מוביל לעמוד התקציר, לא לחומה בתשלום.
- A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
Stephane Ross, Geoffrey J. Gordon, J. Andrew Bagnell · 2011 · AISTATS 2011 (PMLR 15)
מאמר ה-DAgger המקורי: הוא מנסח את בעיית הצטברות השגיאה, נותן את חסם T-בריבוע לגישה המונחית הפשוטה, ומציע לצבור נתונים מהמצבים שהלומד עצמו מבקר בהם.
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
הגרסה בשליטת אדם: המומחה מחליט מתי לקחת שליטה במקום להיות מתושאל על מצבים שה-policy בחרה; זה המצב שהפלטפורמה הזו מיישמת.
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
הדרך האחרת לשער התערבויות: חוסר הסכמה בתוך ensemble כאות ביטחון למתי הלומד רשאי לפעול לבד. ניגוד מועיל לכך שאדם ישפוט זאת.
- ThriftyDAgger: Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
Ryan Hoque, Ashwin Balakrishna, Ellen Novoseller, Albert Wilcox, Daniel S. Brown, Ken Goldberg · 2021 · CoRL 2021
מתייחס לתשומת הלב האנושית כמשאב המוגבל ומבקש עזרה רק במצבים חדשים או מסוכנים; המסגרת הנכונה כשאדם אחד משגיח על הזרוע במשך אחר צהריים שלם.
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
החלופה הכנה: במקום לתקן את ה-policy באופן מקוון, מפריעים להדגמות כך שהמומחה יראה התאוששות. שווה להכיר לפני שמתחייבים להתערבויות.
- Interactive Imitation Learning in Robotics: A Survey
Carlos Celemin, Rodrigo Perez-Dattari, Eugenio Chisari, Giovanni Franzese, Leandro de Souza Rosa, Ravi Prakash, Zlatan Ajanovic, Marta Ferraz, Abhinav Valada, Jens Kober · 2022 · arXiv:2211.00600
מפת התחום: אילו צורות של משוב אנושי קיימות, אילו ממשקים נושאים אותן, והיכן התערבות בסגנון DAgger יושבת ביניהן.
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
מאמר ה-ACT. action chunking הוא הסיבה שזרוע זולה יכולה בכלל להיות מופעלת על ידי policy של imitation, ו-ACT היא ה-policy המהירה ביותר לאיטרציה של סבב DAgger.
- π0: A Vision-Language-Action Flow Model for General Robot Control
Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn et al. · 2024 · arXiv:2410.24164
VLA מבוסס flow matching שבנוי על מודל vision-language מאומן מראש, ואחד ה-checkpoints שאפשר לעשות להם fine-tuning כאן; המאמר מפורש בכך שיכולות חדשות מגיעות מ-fine-tuning, לא מהמודל הבסיסי לבדו.
שאלות שבאמת שואלים
האם צריך leader arm בשביל DAgger?
לא. בוחרים קלט מקלדת או סליידרים בתחילת הריצה, וההשתלטות ידנית מהפריים הראשון, מופעלת מהדפדפן. leader arm נעים יותר לתנועה עדינה, וזה המצב שבו הזרוע מיישרת את עצמה לפני המסירה, אבל הלולאה רצה גם בלעדיו.
כמה סבבי DAgger צריך?
אין מספר קבוע והוגן. עוקבים אחרי שיעור ההתערבות: אם הוא לא יורד מסבב לסבב, הסבב הזה לא הביא כלום, והבעיה בדרך כלל היא הגדרת המשימה, המצלמות, או מערך הנתונים המקורי, ולא מספר הסבבים.
זה DAgger אמיתי או משהו רופף יותר?
זה HG-DAgger, הגרסה בשליטת אדם. DAgger קלאסי שואל את המומחה על מצבים שה-policy בחרה, כולל מצבים שאף מפעיל שפוי לא היה נותן לזרוע אמיתית להגיע אליהם. כאן אדם מחליט מתי להתערב, ורק הקטעים האלה הופכים לתוויות.
מאמנים רק על התיקונים?
לא, וגם לא כדאי. אימון על תיקונים בלבד נותן policy שיודעת רק להתאושש. מערך הנתונים המורכב הוא הנתונים המקוריים בתוספת התיקונים, עם פרקים מכל מקור נבחרים במפורש.
האם המשך מ-checkpoint מחדש את ריצת האימון?
זה מאתחל את המשקלים מאותו checkpoint. מצב האופטימייזר לא משוחזר, כך שבמובן המחמיר זה לא resume. בפועל המשקלים הם מה שנושא את ההתנהגות הנלמדת בין סבבים, אבל שווה לדעת איזה משני הדברים מקבלים.
איך מחשבים את שיעור ההתערבות?
פריימים שסומנו כהתערבות חלקי סך הפריימים של הריצה. הוא מוצג בסטטוס ההשתלטות, וזה המספר היחיד ששווה לרשום לכל סבב לצד ה-checkpoint שהרצתם והתמהיל שאימנתם.
עם אילו policies אפשר להריץ את הלולאה הזו?
ACT, SmolVLA, Pi0, וגם GR00T N1.5 או N1.7. הלולאה עצמה אדישה ל-policy כי היא רק מייצרת מערכי נתונים ו-checkpoints; ההבדל בפועל הוא כמה זמן סבב לוקח ואיזה GPU הוא צריך.
אפשר לעשות את זה בלי להחזיק רובוט משלי?
להקליט ולאמן אפשר בלי רובוט, על ידי קניית מערכי נתונים בשוק או הזמנת מפעילים, ואפשר להפעיל SO-100 אמיתי בדפדפן בעמוד ה-live. סבב DAgger זה משהו אחר: הוא צריך זרוע שאפשר להשתלט עליה באמצע ריצה, אז ללולאה עצמה כדאי שתהיה חומרה על השולחן שלכם.
A real SO-100, live in the browser. No signup, no hardware needed.
להריץ את הסבב הראשון השבוע
מתקינים את הלקוח, מפעילים checkpoint שכבר יש לכם, ומשתלטים בפעם הראשונה שהזרוע מפספסת את הקובייה. הריצה הבודדת הזו היא סבב DAgger בזעיר אנפין: כל מה שאחריה זה הרכבת התמהיל ותשלום על שעות ה-GPU.