Human-gated DAgger، سرتاسر

وقتی 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 کنترل را مثل یک یادگیری باناظر معمولی می‌بیند: مشاهده وارد می‌شود، هدف مفصل (joint) بیرون می‌آید، و این تابع روی فریم‌هایی برازش شده که یک انسان ضبط کرده است. این رویکرد فقط تا وقتی درست است که ربات در همان حالت‌هایی بماند که آن انسان از آن‌ها عبور کرده، و ربات در آن‌ها نمی‌ماند. گریپری که چهل میلی‌ثانیه زودتر بسته شود، مکعب را دو میلی‌متر از موقعیت نشان‌داده‌شده جابه‌جا می‌کند. مشاهدهٔ بعدی چیزی است که در مجموعهٔ آموزشی وجود ندارد، پس اکشن در آن نقطه یک برون‌یابی است، و حالت بعد از آن حتی دورتر می‌افتد. توزیع آموزشی و توزیعی که policy یادگرفته‌شده واقعاً تولید می‌کند دو چیز متفاوت‌اند، و دومی هرچه اپیزود جلوتر می‌رود بیشتر از اولی فاصله می‌گیرد.

Ross، Gordon و Bagnell دقیقاً همین شکست کاهش (reduction) را در سال ۲۰۱۱ توصیف و اندازه‌گیری کردند: یک طبقه‌بند که زیر توزیع خبره با احتمال e اشتباه می‌کند، می‌تواند روی یک افق T گامی، زیر توزیعی که خودش تولید می‌کند، در حدود T به توان دو ضرب‌در e اشتباه مرتکب شود، چون یک اشتباه مشاهده‌هایی می‌سازد که خبره هرگز تولید نکرده و خطاها روی هم انباشته می‌شوند. راه‌حل آن‌ها همین الگوریتمی است که موضوع این صفحه است: policy فعلی را اجرا کنید، برای حالت‌هایی که سر می‌زند برچسب‌های خبره جمع کنید، آن‌ها را با هر چه تا کنون جمع شده تجمیع کنید، دوباره آموزش دهید، تکرار کنید. دموی بیشتر از همان نوع کمکی نمی‌کند، چون دوباره از همان توزیع نمونه‌برداری می‌شود. برچسب روی حالت‌هایی که policy به آن‌ها می‌رسد کمک می‌کند. نسخه‌ای که اینجا پیاده شده انسان‌محور است (HG-DAgger، Kelly و همکاران): policy کنترل را نگه می‌دارد تا وقتی یک انسان تشخیص دهد که کار اشتباه پیش می‌رود و کنترل را در دست بگیرد؛ به این ترتیب اصلاح‌ها فقط جایی تولید می‌شوند که لازم است، و از بازو هرگز خواسته نمی‌شود به حالتی برود که اپراتور اجازه نمی‌دهد.

  • Behavior Cloning فقط روی توزیع حالت‌هایی معتبر است که با آن‌ها آموزش دیده است.
  • این شکست خودتقویت‌شونده است: یک انحراف کوچک یک حالت ناآشنا می‌سازد، و آن حالت انحرافی بزرگ‌تر می‌سازد.
  • درمان آن دموی بیشتر نیست، بلکه برچسب روی حالت‌هایی است که خود policy به آن‌ها می‌رسد.
  • انسان‌محور یعنی اپراتور تصمیم می‌گیرد چه زمانی مداخله کند، نه یک امتیاز خودمختاری.

چرا خطا انباشته می‌شود

افق را بکشید. زیر Behavior Cloning، هزینهٔ اضافی مورد انتظار تقریباً با مجذور تعداد گام‌ها رشد می‌کند، چون هر اشتباه حالت‌هایی می‌سازد که دموها هرگز پوشش نداده‌اند؛ یک حلقهٔ تجمیع این رشد را نزدیک به خطی نگه می‌دارد (Ross et al.، ۲۰۱۱).

200
1.0 %
Behavior Cloning
400
DAgger
2.00
200×
Behavior Cloning ÷ DAgger
0.000100200300400050100150200هزینهٔ اضافی مورد انتظار (کران)
افق وظیفه (گام)

منحنی‌های نمایشی برگرفته از کران‌های Ross et al. (۲۰۱۱)، نه اندازه‌گیری از ربات شما. نکتهٔ اصلی شکل منحنی است، نه عددها.

یک دور DAgger، شش گام

این همان حلقه‌ای است که پلتفرم واقعاً اجرا می‌کند، نه یک نمودار شماتیک. هر گام زیر به یک کنترل در کاکپیت مربوط می‌شود.

قدم به قدم در حلقه

همان شش گام، یکی‌یکی، همراه با آنچه در هر کدام روی بازو و در مجموعه داده اتفاق می‌افتد.

01

اجرای policy و ضبط آن

یک اجرای inference را روی یک checkpoint که خودتان آموزش داده‌اید شروع کنید. این اجرا همان لحظه که در جریان است ضبط می‌شود، همراه با متن وظیفهٔ همان اجرا، تا فریم‌ها بعداً به‌عنوان داده آموزشی قابل استفاده باشند، نه فقط یک ویدیو که فقط می‌شود آن را تماشا کرد.

1 از 6

چه چیزهایی را پلتفرم از دوش شما برمی‌دارد

هر مورد اینجا گامی از حلقه است که در غیر این صورت باید خودتان می‌ساختید و نگه می‌داشتید.

در دست‌گیری بدون بازوی leader

در ابتدای اجرا ورودی صفحه‌کلید یا اسلایدر را انتخاب کنید تا بتوانید فقط با یک لپ‌تاپ اصلاح کنید. حرکت‌های کوچک صفحه‌کلید در سمت سرور به دو درجه در هر مفصل و چهار درجه در گریپر محدود می‌شوند؛ هدف‌های اسلایدر مطلق‌اند و سرور در هر فراخوانی حداکثر شش درجه به سمت آن‌ها حرکت می‌کند. این محدودیت‌ها در سرور اعمال می‌شوند، نه در رابط کاربری، پس گیر کردن یک کلید نمی‌تواند بازو را پرت کند.

مستندات teleoperation

مداخله‌ها به‌ازای هر فریم علامت‌گذاری می‌شوند

هر فریمی که وقتی بازو در دست شماست ضبط می‌شود، پرچم مداخله را با خود دارد، و ستون action وضعیت کامل فرمان‌داده‌شده را دربردارد. شما نیازی به نگه‌داشتن دستیِ یک ستون پرچم یا هم‌ترازی آن با اندیس فریم‌ها ندارید.

قالب مجموعه دادهٔ LeRobot

تریاژ: اصلاح، ارزیابی یا حذف

هر اجرا روی کارت ذخیره یک تصمیم می‌گیرد. اجراهای اصلاحی وارد دور بعدی آموزش می‌شوند، اجراهای ارزیابی بیرون از آموزش می‌مانند تا یک سنجش تمیز باقی بمانند، و اجراهای خراب به‌جای اینکه بی‌سروصدا ترکیب را خراب کنند، کنار گذاشته می‌شوند.

Sessionها و اپیزودها

ترکیب را صریح بچینید

مجموعهٔ آموزشی دور n را خودتان می‌چینید: مجموعه دادهٔ اصلی به‌علاوهٔ اصلاحات، با اپیزودهای انتخاب‌شده از هر منبع. هیچ ترکیب خودکاری، هیچ دادهٔ شبیه‌سازی پنهانی، و نتیجهٔ ترکیب‌شده مثل هر مجموعه دادهٔ دیگر رفتار می‌کند.

مجموعه‌های داده

ادامه از یک checkpoint

یک اجرای آموزش را به‌جای مدل پایه به سمت checkpointی هدایت کنید که تازه رانده‌اید، تا هر دور از همان‌جا شروع شود که دور قبل تمام شده است. فقط وزن‌ها مقداردهی اولیه می‌شوند؛ وضعیت optimizer بازیابی نمی‌شود، به همین دلیل بهتر است دور اول را یک آزمون امکان‌سنجی در نظر بگیرید.

آموزش

اجارهٔ GPU به ازای هر دور

ACT و SmolVLA روی یک 4090، و Pi0 و GR00T N1.5 یا N1.7 روی یک A100 با ۸۰ گیگابایت. یک دور را شروع می‌کنید، pod بالا می‌آید، checkpointها در bucket شما فرود می‌آیند، و فقط بابت ساعت‌هایی که آن دور طول کشیده پرداخت می‌کنید.

قیمت‌گذاری GPU

دورها را برنامه‌ریزی کنید

نرخ مداخله معیار پیشرفت این حلقه است: فریم‌های اصلاح‌شده تقسیم بر فریم‌های اجرا. نقطهٔ شروع و میزان بهبود هر دور را تنظیم کنید و ببینید رسیدن به هدفتان چند دور طول می‌کشد.

30 %
25 %
3 000
دورنرخ مداخلهفریم‌های اصلاح‌شده
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، یا کد خودتان روی باس سروو. در دست‌گیری با صفحه‌کلید و اسلایدر، از جمله محدودیت‌های ایمن، چیزی است که خودتان می‌نویسید و بعد روی سخت‌افزار واقعی دیباگ می‌کنید.بازوی leader، صفحه‌کلید یا اسلایدر، که در شروع اجرا انتخاب می‌شود. محدودیت‌های زاویه در سرور جای دارند.
علامت‌گذاری مداخله‌هاشما ستون پرچم را اضافه می‌کنید، آن را با اندیس فریم هم‌تراز نگه می‌دارید و هر بار قالب ضبط تغییر کرد دوباره بررسی‌اش می‌کنید.هر فریمی که در طول یک در دست‌گیری ضبط می‌شود به‌طور خودکار علامت می‌خورد، همراه با وضعیت فرمان‌داده‌شده در ستون action.
دسته‌بندی اجراهاقراردادهای پوشه‌ای و اسکریپت‌های shell. پیدا کردن و کنار گذاشتن فریم‌های ثابت اطراف جابه‌جایی کنترل با خودتان است.یک تصمیم برای هر اجرا روی کارت ذخیره. فریم‌های جابه‌جایی کنترل در پوشهٔ raw می‌مانند.
ساختن مجموعه دادهٔ ترکیبیاسکریپت‌های merge برای هر نسخهٔ قالب. هماهنگ نگه‌داشتن اندیس اپیزودها، متادیتا و ارجاع‌های ویدیو بخش خسته‌کننده‌اش است.ترکیب از داده‌های اصلی به‌علاوهٔ اصلاحات، با انتخاب اپیزود از هر منبع؛ نتیجه یک مجموعه دادهٔ معمولی است.
شروع دور بعدی از آخرین policyخودتان checkpoint را به trainer وصل می‌کنید، و اگر یک resume واقعی بخواهید می‌توانید وضعیت optimizer را هم بازیابی کنید.یک فیلد برای checkpoint پایه. فقط وزن‌ها: از روی checkpoint مقداردهی اولیه می‌شود، یک resume برای optimizer نیست.
کنترل روی حلقهٔ آموزشکامل. loss خودتان، زمان‌بندی خودتان، ablationهای خودتان، ابزارسازی خودتان، بدون هیچ پلتفرمی در میانه. اگر سؤال پژوهشی خودِ حلقهٔ آموزش است، آن را با دست انجام دهید.یک مسیر ثابت با فهرستی معین از policyها و hyperparameterهایی که فرم در اختیار می‌گذارد، نه کد دلخواه.

مقاله‌هایی که این کار بر پایهٔ آن‌هاست

پیش از هر بحثی دربارهٔ این حلقه، این‌ها را بخوانید. هر لینک به صفحهٔ چکیده می‌رود، نه پشت یک paywall.

  1. 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-به-توان-دو را برای رویکرد صرفاً باناظر می‌دهد، و پیشنهاد می‌کند داده از حالت‌هایی که خودِ یادگیرنده سر می‌زند تجمیع شود.

  2. 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 انتخاب کرده از او پرسیده شود؛ همین حالتی است که این پلتفرم پیاده کرده است.

  3. EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning

    Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019

    راه دیگر برای کنترل مداخله‌ها: عدم توافق میان اعضای ensemble به‌عنوان سیگنال اطمینان برای اینکه چه زمانی یادگیرنده می‌تواند تنها عمل کند. مقایسهٔ مفیدی در برابر واگذاشتن تصمیم به یک انسان.

  4. 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

    توجه انسان را به‌عنوان منبعی کمیاب در نظر می‌گیرد و فقط در حالت‌های تازه یا پرریسک درخواست کمک می‌کند؛ چارچوب درستی برای وقتی که یک نفر تمام بعدازظهر ناظر بازو است.

  5. DART: Noise Injection for Robust Imitation Learning

    Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017

    جایگزین صادقانه: به‌جای اصلاح policy در حین اجرا، دموها را با اغتشاش همراه می‌کند تا خبره نحوهٔ بازگشت را نشان دهد. پیش از متعهد شدن به مداخله‌ها ارزش دانستن دارد.

  6. 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 کجای این نقشه قرار می‌گیرد.

  7. 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 تقلیدی رانده شود، و ACT سریع‌ترین policy برای تکرار یک دور DAgger است.

  8. π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 از پیش آموزش‌دیده ساخته شده، و یکی از checkpointهایی است که اینجا می‌توانید فاین‌تیون کنید؛ مقاله صریحاً می‌گوید مهارت‌های تازه از فاین‌تیون می‌آیند، نه فقط از مدل پایه.

سؤال‌هایی که واقعاً پرسیده می‌شوند

آیا برای DAgger به بازوی leader نیاز دارم؟

نه. در شروع اجرا ورودی صفحه‌کلید یا اسلایدر را انتخاب کنید تا در دست‌گیری از همان فریم اول دستی باشد و از مرورگر هدایت شود. بازوی leader برای حرکت‌های ظریف دلنشین‌تر است، و تنها حالتی است که بازو پیش از تحویل کنترل خودش را هم‌تراز می‌کند؛ اما حلقه بدون آن هم اجرا می‌شود.

به چند دور DAgger نیاز دارم؟

عدد ثابت صادقانه‌ای وجود ندارد. نرخ مداخله را زیر نظر بگیرید: اگر از دوری به دور بعد پایین نیاید، آن دور چیزی برایتان نداشته، و مشکل معمولاً در چیدمان وظیفه، دوربین‌ها یا مجموعه دادهٔ اصلی است، نه در تعداد دورها.

این DAgger واقعی است یا چیزی سست‌تر؟

این HG-DAgger است، نسخهٔ انسان‌محور. DAgger کلاسیک از خبره دربارهٔ حالت‌هایی می‌پرسد که policy انتخاب کرده، از جمله حالت‌هایی که هیچ اپراتور عاقلی اجازه نمی‌دهد یک بازوی واقعی به آن‌ها برسد. اینجا یک انسان تصمیم می‌گیرد چه زمانی مداخله کند، و فقط همان بخش‌ها به برچسب تبدیل می‌شوند.

آیا فقط روی اصلاحات آموزش می‌دهم؟

نه، و نباید هم این کار را بکنید. آموزش فقط روی اصلاحات، policyای می‌سازد که فقط بلد است چطور برگردد. مجموعه دادهٔ ترکیب‌شده داده‌های اصلی به‌علاوهٔ اصلاحات است، با اپیزودهای انتخاب‌شدهٔ صریح از هر منبع.

آیا ادامه از checkpoint همان اجرای آموزش را resume می‌کند؟

فقط وزن‌ها را از آن checkpoint مقداردهی اولیه می‌کند. وضعیت optimizer بازیابی نمی‌شود، پس در معنای دقیق کلمه یک resume نیست. در عمل این وزن‌ها هستند که رفتار یادگرفته‌شده را از یک دور به دور دیگر منتقل می‌کنند، اما بهتر است بدانید کدام‌یک از این دو را دارید.

نرخ مداخله چطور محاسبه می‌شود؟

فریم‌های علامت‌خورده به‌عنوان مداخله تقسیم بر کل فریم‌های اجرا. این عدد در وضعیت در دست‌گیری نشان داده می‌شود، و همان یک عددی است که ارزش دارد به‌ازای هر دور، کنار checkpoint رانده‌شده و ترکیب آموزش‌دیده یادداشت شود.

با کدام policyها می‌توانم این حلقه را اجرا کنم؟

ACT، SmolVLA، Pi0 و GR00T N1.5 یا N1.7. خودِ حلقه نسبت به نوع policy بی‌تفاوت است چون فقط مجموعه داده و checkpoint تولید می‌کند؛ تفاوت عملی در این است که یک دور چقدر طول می‌کشد و به کدام GPU نیاز دارد.

آیا می‌توانم این کار را بدون داشتن ربات انجام دهم؟

می‌توانید بدون ربات ضبط و آموزش دهید، با خرید مجموعه داده از marketplace یا سفارش کار به اپراتورها، و می‌توانید یک SO-100 واقعی را در صفحهٔ live از مرورگر هدایت کنید. یک دور DAgger فرق دارد: به بازویی نیاز دارد که بتوانید در میانهٔ اجرا کنترلش را در دست بگیرید، پس برای خودِ حلقه به سخت‌افزار روی میز خودتان نیاز دارید.

Drive a real arm

A real SO-100, live in the browser. No signup, no hardware needed.

همین هفته اولین دور خود را اجرا کنید

کلاینت را نصب کنید، یک checkpoint که از قبل دارید را اجرا کنید، و اولین باری که بازو از کنار مکعب رد شد کنترل را در دست بگیرید. همین یک اجرا یک دور DAgger در ابعاد کوچک است: هر چه بعد از آن می‌آید فقط چیدن ترکیب و پرداخت ساعت‌های GPU است.