
شرح مرحله به مرحله یک دور DAgger با گیتگذاری انسانی روی بازوی SO-100: policy را اجرا کنید و ضبط کنید، وقتی مشکل پیش آمد تصرف کنید، اجرا را به عنوان اصلاح فایل کنید، یک dataset ترکیبی بسازید و آموزش را از یک checkpoint ادامه دهید. شامل مسیر تصرف صفحهکلید و لغزنده برای کسانی که بازوی رهبر ندارند و چهار اشتباهی که یک دور را بیارزش میکند.
policy شما اجرا میشود. برای مکعب دراز میکند، گیپر را یک سانتیمتر زودتر میبندد و مثل اینکه آن را گرفته است ادامه میدهد. هیچ خطایی نیست و هیچ میزان نگاه کردن به تلفات آموزش آن را توضیح نمیدهد. راهحل آن نیست که ۲۰۰۰۰ مرحله گرادیان دیگر روی همان نمایشها انجام دهید. این است که دوباره دست خود را دقیقاً جایی که اشتباه میشود روی بازو قرار دهید، آنچه شما به جای آن انجام دادید ضبط کنید و checkpoint بعدی را روی دادههای قدیم به اضافهی آن اصلاح آموزش دهید. این یک دور DAgger است و این است که چگونه روی یک SO-100 با یک policy vision-language-action.
نظریه در جای دیگری است: چرا تجمیع dataset اصلاً کار میکند و آنچه گیتگذاری انسانی در بارهی آن تغییر میدهد. این راهنمای عملیات است و فرض میکند checkpoint آموزشدیده، مجموعه دوربین کارکن و بازویی که حرکت میکند. شش مرحله زیر حلقه هستند همانطور که روی صفحهی DAgger این پلتفرم، اما دنباله از اسکریپتهای خود شما یکسان است.
یک دور به طور خلاصه
- •policy آموزشدیده را اجرا کنید و ضبط کنید، با متن کار اجرا به جای برچسب تلهاپراسیون عام.
- •در لحظهای که رفتار اشتباه میشود تصرف کنید: تحویل آینهای با بازوی رهبر، فوری و دستی از طریق صفحهکلید یا لغزنده بدون یکی.
- •هر اجرا را دستهبندی کنید: آن را به عنوان اصلاح فایل کنید، آن را به عنوان یک قسمت ارزیابی نگاه دارید یا آن را دور بریزید.
- •ترکیب را به صورت دستی بسازید - نمایشهای اصلی به اضافهی اصلاحات، قسمتهای انتخابشده برای هر منبع. هرگز فقط روی اصلاحات آموزش ندهید.
- •آموزش را از آخرین checkpoint ادامه دهید و یادداشت کنید که کدام checkpoint کدام ترکیب را تولید کرده است.
- •عددی که میگوید آیا دور ارزشمند بود نرخ دخالت است، نه تلفات آموزش.
چرا دور دوم فقط دادههای بیشتر نیست
تقلید رفتار روی حالتهایی آموزش مییابد که یک انسان از آنها بازدید کرد. در زمان آزمایش policy حالتهایی را بازدید میکند که آنها را ایجاد میکند و خطاهای کوچک عمل به حالتهایی تجمع مییابند که هیچ نمایشی پوشش ندادند. Ross، Gordon و Bagnell این شکست را برای AISTATS 2011 رسمی کردند و آن را با یک الگوریتم تکراری پاسخ دادند که یک policy قطعی ثابت آموزش میدهد و تحت کاهش آنها باید تحت توزیع حالتی که آن را القاء میکند عملکرد خوب داشته باشد: policy فعلی را اجرا کنید، متخصص حالتهای واقعیای را که رسید برچسبگذاری کنید، آنها را به dataset اضافه کنید، دوباره آموزش دهید، تکرار کنید. Kelly و دیگران جستجو را عملی کردند با HG-DAgger، جایی که انسان تصمیم میگیرد کی تصرف کند به جای برچسبگذاری حالتها بدون نگهداشتن کنترلها؛ آنها عملکرد بهتر از هر دو DAgger و تقلید رفتار را روی یک کار رانندگی خودکار شبیهسازیشده و واقعی گزارش میدهند. گیتگذاری انسانی آنچه است که حلقه را روی بازوی میز تحملپذیر میکند - شما فقط وقتی دستهای خود را حرکت میدهید که چیزی اشتباه میشود.
دو پیامد در عمل بیشتر از نظریه اهمیت دارند. اصلاحات نمایشهای معمولی نیستند: آنها در ناحیههای گلوگاهی که Mandlekar و دیگران شرح میدهند متمرکز میشوند، جایی که یک انحراف کوچک policy را به حالتهایی میافکند که نمایشها هرگز پوشش ندادند. و datasetای که فقط از آن قسمتهای سخت ساختهشده است یک dataset اشتباه شکلدار است - Belkhale، Cui و Sadigh از طرف دادهها استدلال میکنند که تنوع حالت همیشه مفید نیست و واگرایی عمل و تنوع انتقال با هم کیفیت dataset را تصمیم میگیرند. dataset ترکیبی سازش نیست، این نقطه است.
قبل از دور یک اینها را منجمد کنید
یک دور DAgger policy را با خود در طول زمان مقایسه میکند. هر چیزی که بین دورها تغییر میدهید که dataset نیست آن مقایسه را بیمعنی میکند.
- موقعیتهای دوربین و نصبها، دوربین مچ شامل. یک گیره را آزاد کنید و توزیع مشاهده را تغییر دادید، نه policy را.
- نمایش و تعادل سفید، اگر پشته ضبط شما به شما اجازه میدهد آنها را پین کنید. نمایش خودکار که بین دورها بیفتد یک تغییر domain آهسته و نامرئی است.
- کالیبراسیون بازو و موقعیتهای صفر servo. اگر باید دوباره کالیبره کنید، همه چیز ضبطشده قبل از آن را به عنوان یک dataset جداگانه رفتار کنید.
- متن کار. هر VLA در اینجا بر آن شرط دارد؛ بازنویسی آن در میانه حلقه یک کار متفاوت است.
- روشنایی، سطح میز، مجموعهی اشیاء. یک شیء جدید یک آزمایش جدید است، نه دور بعدی.
- نرخ فریم ضبط. مقایسه نرخهای دخالت در دو شطرنج نمونهگیری تفاوتهایی تولید میکند که از شطرنج میآیند.
Hsu و دیگران یک دیدگاه متمرکز بر دست را در برابر دیدگاه معمولی شخص سوم مقایسه کردند و دریافتند که دیدگاه eye-in-hand بهبود ثابت کارایی آموزش و تعمیم خارج از توزیع را بهبود داد، علیرغم دیدن کمتر صحنه. روی بازویی پنجمفصلی، تعیین وقت gripper معمولاً آنچه است که اصلاحات شما دارند و تعیین وقت gripper آنچه است که دیدگاه مچ حمل میکند.
دور، از ابتدا تا انتها
- 1inference را اجرا کنید و ضبط کنید
اجرا را درخواست checkpointای که میخواهید بهبود دهید شروع کنید، سپس ضبط را در ریشهی inference شروع کنید. اینگونه ضبطشده متن کار خود اجرا را وارث میشود، که آنچه است که policy روی آن آموزش یافت، به جای برچسب تلهاپراسیون پیشفرض. بدون ضبط میتوانید شکست را ببینید اما روی آن آموزش ندهید.
bash# two calls, not one: the run, then its recording POST /inference/start # model_id, and hf_repo_id = the checkpoint to drive POST /recording/start # root=inference # root=inference also makes the recording inherit the run's task text - 2وقتی اشتباه میشود تصرف کنید
Take over را فشار دهید و حالت ورودی را انتخاب کنید: بازوی رهبر، صفحهکلید یا لغزندهها. دونده متوقف میشود، شما اصلاح میکنید، شما برمیگردانید. فریمهای ضبطشده در حین رانندگی خود به طور خودکار به عنوان دخالتها پرچمگذاری میشوند.
bashPOST /inference/takeover/start # input = leader | keyboard | sliders POST /inference/takeover/nudge # keyboard, relative delta per call POST /inference/takeover/set # sliders, absolute target POST /inference/takeover/stop # back to the policy - 3قسمتها را دستهبندی کنید
برای هر قسمت تصمیم بگیرید: به عنوان اصلاح فایل کنید، به عنوان ارزیابی نگاه دارید یا دور بریزید. اجرایی که policy بدون کمک تکمیل کرد دادهی ارزیابی است.
- 4dataset اصلاح را همگام کنید
اصلاحات در یک dataset محلی برای هر policy جمع میشوند و از طریق همگامسازی خودکار به ذخیرهسازی ابر میروند. هیچ چیز ترکیب نمیشود که شما در آنجا قرار ندادید.
- 5dataset ترکیبی را بسازید
dataset اصلی را با اصلاحات ترکیب کنید، قسمتهای انتخابشده به طور صریح برای هر منبع. نتیجه از آن نقطه به بعد یک dataset معمولی است.
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6آموزش را از checkpoint ادامه دهید
ترکیب را از checkpoint قبلی آموزش دهید نه از مدل base. یادداشت کنید کدام checkpoint و کدام ترکیب؛ بدون آن جفت دور قابل تکرار نیست.
bash# field on the training job base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint> # the platform passes it to the training pod as BASE_CKPT_S3
مرحله 2 به طور مفصل: دو راه تصرف کردن
با بازوی رهبر
در رهبر-پیرو حالت تصرف یک تحویل بین دو بازو است که در یک pose یکسان نیستند. فشار دادن Take over دونده را متوقف میکند و رهبر را به pose فعلی پیرو هدایت میکند، بنابراین هیچ چیز وقتی torque منتقل میشود پریدار نیست. اگر آن درایو تراز وقتگذر شود، شما رهبر را به صورت دستی تراز میکنید و فقط وقتی این دو در پنج درجه هستند آزاد میکنید. از آنجا شما به طور معمول تلهاپراسیون میکنید و ستون عمل آنچه را شما دستور دادید ضبط میکند.
صادق در مورد این مسیر باشید: درایو تراز و تحویل torque کمترین بخش آزمایششده حلقه روی سختافزار واقعی است. تحویل را روی یک pose آهسته و بیضرر آزمایش کنید قبل از اینکه روی آن در اجرایی که به آن اهمیت میدهید متکی باشید. بازوی رهبر صافترین اصلاحات از سه حالت را تولید میکند و همچنین بیشترین چیزی است که میتواند از لحاظ مکانیکی اشتباه شود.
بدون بازوی رهبر: صفحهکلید و لغزندهها
بیشتر مردمی که این را میخوانند یک بازو دارند. این کافی است. صفحهکلید یا ورودی لغزنده را در لحظهای که Take over را فشار میدهید انتخاب کنید و تصرف فوری و دستی است - هیچ بازوی دوم برای تراز کردن نیست، بنابراین هیچ مرحلهی تراز وجود ندارد. پیرو pose خود را نگاه میدارد و منتظر ورودی است.
| حالت ورودی | نحوهی حرکت بازو | حد هر تماس که توسط سرور اعمال شود | قفل شده وقتی |
|---|---|---|---|
| بازوی رهبر | آینه پیرو را از زوایای مفصل رهبر هدایت میکند | هیچ nudge یا فراخوانی set در این حالت نیست؛ آینه اهداف پیرو را به طور مداوم مینویسد | هرگز قفل نشده است و پیشفرض اگر حالت ورودی داده نشود - اما به بازوی دوم نیاز دارد؛ بدون شناسهی رهبر تصرف رد میشود |
| صفحهکلید | nudge نسبی برای هر فشار کلید، ارسال شده به نقطهی انتهایی nudge تصرف | گیرهی سخت در ۲ درجه برای هر مفصل، ۴ درجه برای gripper | رد شده با ۴۰۹ اگر تصرف در حالت رهبر شروع شد |
| لغزندهها | pose هدف مطلق، ارسال شده به نقطهی انتهایی مجموعه تصرف | حداکثر ۶ درجه سفر به سمت هدف برای هر تماس؛ رابط حدود ده بار در ثانیه ارسال میکند | رد شده با ۴۰۹ اگر تصرف در حالت رهبر شروع شد |
گیرهها در طرف سرور اعمال میشوند، نه در رابط، زیرا یک delta نوشتهشدهی اشتباهی روی بازوی bus-servo یک برخورد است. اصلاحات صفحهکلید به صورت مرحلهای و کمی خشن بیرون میآیند؛ اصلاحات لغزنده صافتر است، زیرا سرور به سمت هدف راه میرود در حین ارسال رابط. در هر صورت ستون عمل بردار pose دستور دادهشدهی کامل را دریافت میکند و علامتگذاری دخالت برابر با مسیر رهبر است، بنابراین اصلاحات صفحهکلید در همان dataset بدون تفاوت فرمت فرود میآیند.
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
کی دکمه را فشار دهید
زودتر نه دیر. اصلاحی که بعد از بستهشدن gripper روی چیزی شروع میشود بازیابی از شکستی را آموزش میدهد که policy نباید وارد آن میشد و دادههای بازیابی بسیار کمتر از دادههای اجتناب ارزشمند است. در اولین لحظهای که مطمئن هستید trajectory اشتباه است قطع کنید، از طریق قسمت سخت اصلاح کنید، به محض اینکه state یکی است که policy قبلاً مدیریت کرده بود برگردانید. ThriftyDAgger آن تصمیم را با گیتگذاری دخالتها روی نویافتگی و ریسک تخمینی تحت بودجهی انسانی ثابت خودکار میکند، اما روی یک بازوی واحد با انسانی که قبلاً تماشا میکند، دروازهی انسانی ارزانتر و بهتر کالیبرهشده است از هر چیزی که شما تنظیم خواهید کرد.
امکانپذیر با پشتهی منبع باز و چند اسکریپت. آنچه قیمت میخواهد حسابداری است و حسابداری جایی است که دورهای DAgger میمیرند.
- فریمها را از اسکریپت inference خود را به dataset LeRobot بنویسید، با رشتهی کار که policy روی آن آموزش یافت.
- حلقهی policy را متوقف کنید، منبع دستور را تغییر دهید و هر فریمی که رانندگی میکنید را به عنوان یک دخالت پرچمگذاری کنید. بدون پرچم، اصلاحات مثل نمایشهای معمولی به نظر میرسند.
- به طور عمدی تصمیم بگیرید که چه اتفاقی برای فریمهای انتقالی بین policy رهایی کنترل و ورودی اول خود میافتد.
- اصلاحات را در dataset خود آنها برای هر policy نگاه دارید و شاخصهای قسمت را به صورت دستی تتبع کنید تا ترکیب بتواند بازسازی شود.
- نقطهی ورود تنظیق دقیق را در checkpoint قبلی اشاره کنید و در گزارش بررسی کنید که آن وزنها را بارگذاری کرد.
همان شش مرحله به عنوان دکمهها وجود دارند. آنچه خودکار است آنچه است که آسان است به صورت دستی اشتباه شود: پرچم دخالت برای هر فریم، تقسیم بین اصلاحات و ارزیابیها و ضبط کدام checkpoint کدام ترکیب را تولید کرده است. هیچ چیز وارد یک dataset ترکیبشده نمیشود که شما انتخاب نکردید.
برای شما تصمیم نمیگیرد. کدام اجرا به عنوان اصلاح شمار میرود، کدام قسمتها وارد ترکیب میشوند و کی متوقف شود درخواستهای قضاوت باقی میماند. فیلدها تحت مستندسازی هستند آموزش، حالتهای ورودی تحت تلهاپراسیون.
مرحله 3 به طور مفصل: دستهبندی کیفیت را تصمیم میگیرد
بعد از اجرا شما ضبطی دارید با برخی فریمها به عنوان دخالتها علامتگذاریشده. سه مقصد وجود دارند و اشتباهی بیسر و صدا دور بعدی را مسموم میکند.
- به عنوان اصلاح فایل کنید وقتی دخالت یک اصلاح واقعی بود: policy به جایی اشتباه میرفت و ورودی شما چیز درست را از حالتی نشان داد که policy خود تولید کرده بود.
- به عنوان ارزیابی برای اجراهای خودکار تمیز و برای اجراهایی که احتیاطاً تصرف کردید نگاه دارید. قسمتهای ارزیابی نحوهای هستند که checkpoint بعدی را اندازه میگیرید و آنها هرگز نباید روی آنها آموزش یابند.
- اجراهایی که توسط چیزهای نامربوط خراب شدهاند دور بریزید - فریم دوربین افتاده، servo متوقف شده، شیءای که واژگون کردید. اصلاحی غیرمنظم بدتر از هیچ اصلاحی است.
بین policy رهایی کنترل و ورودی اول شما، بازو ساکن میماند در حین ضبطکننده ادامه مینویسد - اجرایی از poseهای یکسان جفتشده با تصاویر کمی متفاوت. در اینجا فریمهای تحویل در ضبط خام باقی میماند و خارج dataset اصلاح. اگر حلقه را خود بسازید، آنها را عمدی قطع کنید: policy آموزشیافته روی آنها یاد میگیرد متوقف شود جایی که باید عمل کند.
مرحله 5 به طور مفصل: ترکیب ترکیب کردن
ترکیب dataset اصلی به اضافه dataset اصلاح را میگیرد و یک جدید، معمولی تولید میکند dataset LeRobot که مثل هر یک دیگر آموزش میدهد. ویژگی مهم این است که انتخاب قسمت برای هر منبع صریح است - هیچ چیز به طور خودکار ترکیب نمیشود. این جزئی به نظر میرسد تا زمانی که اولین بار policy به طور عجیب رفتار میکند و شما باید بازسازی کنید که روی آن آموزش یافت.
سؤال باز نسبت است و هیچ کس عددی ندارد که منتقل میشود. آنچه ادبیات دربارهی آن توافق دارد این است که اصلاحات باید برای بیشتر از سهم فریم آن شمار شود. Mandlekar و دیگران به طور تکراری روی دادههایی که سیستم دخالت خود جمع میکند دوباره آموزش میدهند، بنابراین policy یاد میگیرد گلوگاهها را طی کند و گزارش میدهند که عوامل آموزشیافته به این روش از عوامل آموزشیافته روی تعداد معادل نمونههای از متخصصان غیرمداخلهای عملکرد بهتر دارند. Sirius بیشتر میرود و نمونههای آموزش را با اعتماد انسانی تخمینی دوباره وزن میدهد و ۸ درصد بهبود در شبیهسازی و ۲۷ درصد روی سختافزار واقعی در نرخ موفقیت policy در برابر روشهایی گزارش میدهد که با آن مقایسه میکند در دو برابر سرعت convergence. هیچ یک از نقاط ورود آموزش در اینجا یک دستگیره وزنگذاری نمونه را بیرون نمیآورند، بنابراین جایگزین خام این است که هر قسمت اصلاح را نگاه دارید در حین نمونهگیری زیر نمایشهای اصلی - و نوشتن آنچه انجام دادید.

مرحله 6 به طور مفصل: آنچه ادامهی از checkpoint واقعاً به معنی است
آموزش ترکیب از مدل پایهای کار میکند اما دور قبلی را دور میریزد و یک اجرای کامل قیمت میخواهد. ادامه دادن از checkpoint سریعتر و معمولاً بهتر است. همچنین محدودتر از آنچه عبارت نشان میدهد است.
یک checkpoint فقط وزنها شامل پارامترها و چیز دیگری نیست. بارگذاری آن اجرای بعدی را یک نقطهی شروع بهتر از مدل پایه میدهد، اما optimizer moments، موقعیت برنامهی یادگیری و ترتیب داده همه از صفر شروع میشوند. انتظار یک spike تلفات در شروع اجرای ادامهدار داشته باشید، آن را به عنوان شکست نخوانید و دور را resume نخوانید. این یک شروع گرم است.
| Policy | اندازه | لایه GPU | Inference برای هر مرحلهی عمل | فرمت dataset | قسمتها قبل از اینکه ارزش تلاش را داشته باشد |
|---|---|---|---|---|---|
| GR00T N1.7 | حدود ۳ B، تقریباً ۴۰ M آموزشیافته در طول تنظیق دقیق | A100 80 GB یا H100 80 GB | حدود ۱۵۲ ms | LeRobot v2.0 یا v2.1 | 50 |
| GR00T N1.5 | حدود ۳ B | A100 80 GB یا H100 80 GB | حدول ۱۶۵ ms | LeRobot v2.0 یا v2.1 | 50 |
| Pi0.5 | حدود ۳ B روی یک PaliGemma backbone | A100 80 GB یا H100 80 GB | حدود ۴۸۵ ms | LeRobot v3.0 | 50 |
| SmolVLA | حدود ۴۵۰ M | RTX 4090 یا هر کارت ۲۴ GB | حدود ۲۴۵ ms | LeRobot v3.0 | 30 |
| ACT | حدود ۸۰ M، از ابتدا آموزشیافته | RTX 4090 یا هر کارت ۲۴ GB | حدود ۲۰ ms | LeRobot v3.0 | 50 |
تأخیر در داخل حلقه DAgger به روشی ترکیب میشود که در حین نمایش نمیشود: در تقریباً ۴۸۵ ms برای هر مرحلهی عمل شما تصرف میکنید زیرا بازو تردید کرد نه زیرا اشتباه بود و اصلاحات تردید دادههای آموزش مفیدی نیستند. اگر روی دادهها تکرار میکنید نه تحقیق برای نرخ موفقیت نهایی، روی مدل سریع تکرار کنید. Shukor و دیگران SmolVLA را توصیف میکنند که برای آموزش روی GPU واحد و استقرار روی GPUهای مصرفی یا CPUها طراحیشده، با یک پشتهی inference ناهمزمان که پیشبینی عمل را از اجرا جدا میکند تا نرخهای کنترل بالاتر را مجاز کند - ویژگیای که حلقهی تصرف را پاسخگو نگاه میدارد.
فرمتهای dataset نیز قابل تعویض نیستند. GR00T LeRobot v2.0 یا v2.1 میگیرد و مخزن Isaac-GR00T ورودی خود را به عنوان یک طعم فرمت LeRobot v2 با یک فایل توصیف modality اضافهشده توصیف میکند؛ آموزشدهندگان جدیدتر در اینجا v3.0 را انتظار میروند. ترکیبی که در نسخهی اشتباهی ساختهشود در زمان بارگذاری ناکام میشود تا بدون تولید policy بد - حالت شکست بهتر، هنوز هم یک slot صف اتلاف. مستندسازی dataset فهرست میکند کدام فرمت هر آموزشدهنده میگیرد.
حلقه، با حسابداری قبلاً انجامشده
تصرف با بازوی رهبر، صفحهکلید یا لغزندهها؛ علامتگذاری دخالت برای هر فریم؛ فایل کردن اجراها به عنوان اصلاحات یا ارزیابیها؛ ترکیب یک dataset ترکیبی با انتخاب قسمت صریح برای هر منبع؛ و ادامهی آموزش از checkpoint به جای مدل پایه. آنچه تصمیم شما باقی میماند کدام اجرا به عنوان اصلاح شمار میرود، چه چیزی وارد ترکیب میشود و کی نرخ دخالت متوقف شده است.
ببینید چگونه حلقهی DAgger سیمشده استچهار راه تلف کردن یک دور
۱. آموزش فقط روی اصلاحات
شایعترین شکست و جذابترین میانبر. یک dataset فقط اصلاح تقریباً کاملاً میانهی سخت کار است با رویکرد و عقبنشینی گمشده؛ policy در قسمت سخت بهتر میشود و فراموش میکند چگونه به آنجا برسد. تجمیع جزئیات پیادهسازی روش نیست، این مکانیسم است: دادههای قدیم آنچه است که بقیهی رفتار را سر جای خود نگاه میدارد در حین اصلاحات یک قسمت از آن را حرکت میدهند.
۲. جابهجایی دوربین بین دورها
دوربینی که بین دورها دو سانتیمتر تغییر میکند policy بدتر از آنچه که شروع کردید تولید میکند و تشخیصی که یک روز قیمت میخواهد. هر VLA در اینجا روی تصاویر شرط دارد؛ حالت مفصل به تنهایی جایی که شیء است را ابهامزدایی نمیکند. قبل از دور اول تصوی ری از تنظیم بگیرید و آن تصوی ری را قبل از هر یک بعدی بررسی کنید.
۳. اجازه دادن به مصنوعات تحویل به آموزش
پوشش بالا و در لیست زیرا نامرئی است. علامت یک policy است که برای کسری از ثانیه دقیقاً جایی که اپراتور دور قبلی تصرف کرد متوقف میشود. مثل تردید به نظر میرسد؛ این تقلید است.
۴. نامگذاری شروع گرم به عنوان resume
اگر معتقدید حالت optimizer منتقل شد، spike تلفات اولیه به عنوان اشکال خوانده میشود و شما برای دادههای فاسد شکار میروید. اگر میدانید optimizer تازه شروع شد، spike انتظار میرود و شما به آنچه بعد از آن میآید نگاه میکنید. همان اعداد، نتایج متضاد.
اندازهگیری دور
متریک برای حلقهی انسانی-گیت نرخ دخالت است: فریمهای ضبطشده در حین کنترل، تقسیم بر کل فریمهای اجرا. این در وضعیت تصرف است و تنها عددی است که به سؤالی که دور پرسید پاسخ میدهد. تلفات آموزش کاهش مییابد خواه policy بهتر شود یا نه؛ نرخ موفقیت دودویی و پرسروصدا در اندازههای نمونه است که بازوی میز تولید میکند. نرخ دخالت پیوسته است، اندازهگیریشده روی حالتهای که policy خود تولید کرد و کاهش مییابد به عنوان policy کمتر شما را نیاز دارد.
فقط در اجراهای ضبطشده تحت شرایط یکسان آن را مقایسه کنید. استدلال کامل و نحوهی ساخت مجموعهی ارزیابی که بیش از دو دور زنده میماند در مقالهای دربارهی اندازهگیری حلقهی DAgger. دور یک به طور واقعبینانه تست امکانپذیری است: شما بررسی میکنید که تصرف روی سختافزار خود کار میکند، اصلاحات با پرچمهای خود فرود میآیند و اجرای ادامهدار checkpoint را که نامگذاری کردید بارگذاری کرد. دورهای دو و سه جایی است که نرخ باید شروع شود. اگر تا دور چهار حرکت نکرده است، مشکل بالادست DAgger است.
| برای هر دور بنویسید | چرا بعداً اهمیت دارد |
|---|---|
| Checkpointای که هدایتشد | بدون آن نمیتوانید بهبود را به یک ترکیب نسبتدهید |
| حالت ورودی استفادهشده برای تصرف | اصلاحات صفحهکلید خشنتر از اصلاحات رهبر است و در داده نشان میدهد |
| تعداد اجراها و نحوهی دستهبندی هر یک | آیا دور اصلاحات کافی برای اهمیت داشت |
| نرخ دخالت برای هر اجرا و میانگین | متریک پیشرفت حلقه |
| انتخاب قسمت دقیق برای هر منبع | تنها راه برای تکرار یا لغو یک دور |
| شروع گرم یا آموزش تازه | منحنی تلفات را توضیح میدهد که در یک هفته خواهید دید |
اگر هنوز checkpoint ندارید
حلقه بدون یک نقطهی ورود ندارد. اول dataset را ضبط کنید، اول policy را آموزش دهید، آن را اجرا کنید - ضبط، آموزش و اجرای policy این مسیر را پوشش میدهند. ضبطکننده روی صفحهی دانلود، لایههای GPU و نرخهای ساعتی روی صفحهی قیمتگذاری، و آن چه قسمت قابل استفاده در راهنمای جمعآوری داده SO-100. نمایشها را قبل از اصلاحات درست کنید: DAgger یک مکانیسم ترمیم است و روی چیزی که تقریباً درست بود بسیار بهتر کار میکند.
آیا میتوانم حلقهی DAgger را بدون بازوی رهبر اجرا کنم؟▾
بله. صفحهکلید یا ورودی لغزنده را انتخاب کنید وقتی Take over را فشار میدهید: تصرف فوری و دستی است با بدون بازوی دوم برای تراز کردن. صفحهکلید nudgeهای نسبی ارسال میکند که سرور سختی در ۲ درجه برای هر مفصل و ۴ برای gripper گیره میکند؛ لغزندهها pose هدف مطلق ارسال میکنند و سرور حداکثر ۶ درجه به سمت آن برای هر تماس حرکت میکند در حین ارسال رابط. ستون عمل و علامتگذاری دخالت همانطور که در حالت رهبر است بنابراین اصلاحات در dataset غیرقابلتفکیک است.
یک دور چند اصلاح نیاز دارد؟▾
هیچ عدد جهانی دفاعپذیری نیست و تعداد فریم بیشتر از تعداد قسمت اهمیت دارد. قانون کار این است که اصلاحات نباید در ترکیب گم شوند: با ۲۰۰ قسمت اصلی و سه قسمت اصلاح، هیچ چیز حرکت نمیکند. برای اصلاحاتی که رفتار ناکام را از چند تنظیمات شروع پوشش میدهند تلاش کنید نه سه تکرار از همان نجات.
چرا آموزش فقط روی اصلاحات چنین ایدهی بدی است؟▾
زیرا اصلاحات تقریباً کاملاً میانهی سخت کار است. رویکرد، تراز و عقبنشینی گمشده است، بنابراین policy آنچه را که قبلاً خوب انجام داد از دست میدهد در حین بهبود در قسمتی که اصلاح کردید. نگهداشتن دادههای قدیم و افزودن به آن مکانیسم خود است، نه اضافی اختیاری.
آیا ادامهی از checkpoint اجرای آموزش قبلی را از سر میگیرد؟▾
نه. یک checkpoint فقط وزنها پارامترها را بازیابی میکند و هیچ چیز دیگری: optimizer moments، موقعیت برنامهی یادگیری و ترتیب داده تازه شروع میشود. این یک شروع گرم است و spike تلفات اولیه انتظار میرود نه علامت. بنویسید کدام از این دو را واقعاً انجام دادید، بنابراین منحنی را یک هفته بعد درست بخوانید.
چه اگر نرخ دخالت کاهش نیابد؟▾
متوقف کردن افزودن دورها. نرخ تخت به معنی اصلاحات آنچه را که فکر میکنید آموزش نمیدهند است. علل معمول بالادست هستند: دوربین جابهجا شد، اصلاحات برای دادهی اجتناب زیادی دیر شروع میشوند، فریمهای تحویل در مجموعهی آموزش هستند یا کار از مشاهدههایی که policy واقعاً میگیرد تحتتعیین است.
هیچ یک از اینها یک مسئلهی حلشده نیست و هیچ یک یک کلیک نیست. یادگیری تقلید تعاملی دقیقاً یک ناحیهی تحقیقاتی فعال است زیرا سؤالات آن - کی دخالت کنیم، چگونه آنچه را انسان انجام داد وزندهیم، چه مقدار دادهی قدیم نگهدارم - پاسخهای حلشدهای ندارند؛ بررسی توسط Celemin و دیگران نقشه میکشد آنچه هنوز باز است. آنچه حلقه دارد convergence قابلاندازهگیری است وقتی احتیاطانه اجرا میشود روی سختافزاری که صدها یورو قیمت دارد. تنظیم را منجمد کنید، زود دخالت کنید، صادقانه دستهبندی کنید، عمدی ترکیب کنید و نرخ دخالت را هر بار ضبط کنید.
Sources
- Ross, Gordon, Bagnell (AISTATS 2011): A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
- Kelly, Sidrane, Driggs-Campbell, Kochenderfer (2019): HG-DAgger - Interactive Imitation Learning with Human Experts
- Mandlekar et al. (2020): Human-in-the-Loop Imitation Learning using Remote Teleoperation
- Liu, Nasiriany, Zhang, Bao, Zhu (2022): Robot Learning on the Job - Human-in-the-Loop Autonomy and Learning During Deployment (Sirius)
- Hoque et al. (2021): ThriftyDAgger - Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
- Celemin et al. (2022): Interactive Imitation Learning in Robotics - A Survey
- Belkhale, Cui, Sadigh (2023): Data Quality in Imitation Learning
- Hsu et al. (2022): Vision-Based Manipulators Need to Also See from Their Hands
- Zhao et al. (2023): Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT / ALOHA)
- Black et al. (2024): Pi0 - A Vision-Language-Action Flow Model for General Robot Control
- Bjorck et al. (2025): GR00T N1 - An Open Foundation Model for Generalist Humanoid Robots
- Shukor et al. (2025): SmolVLA - A Vision-Language-Action Model for Affordable and Efficient Robotics
- LeRobot documentation (Hugging Face)
- NVIDIA Isaac-GR00T repository
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started