بازوی رباتی کم‌هزینه SO-100 روی میز، برای تله‌اپراسیون و آموزش policy تنظیم‌شده
DAggerSO-100یادگیری تقلیدVLAتله‌اپراسیون

اجرای حلقه DAgger روی SO-100 با یک policy VLA

AY-Robots ResearchAugust 27, 2026خواندن ۱۵ دقیقه

شرح مرحله به مرحله یک دور 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 آنچه است که دیدگاه مچ حمل می‌کند.

دور، از ابتدا تا انتها

  1. 1
    inference را اجرا کنید و ضبط کنید

    اجرا را درخواست 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. 2
    وقتی اشتباه می‌شود تصرف کنید

    Take over را فشار دهید و حالت ورودی را انتخاب کنید: بازوی رهبر، صفحه‌کلید یا لغزنده‌ها. دونده متوقف می‌شود، شما اصلاح می‌کنید، شما برمی‌گردانید. فریم‌های ضبط‌شده در حین رانندگی خود به طور خودکار به عنوان دخالت‌ها پرچم‌گذاری می‌شوند.

    bash
    POST /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. 3
    قسمت‌ها را دسته‌بندی کنید

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

  4. 4
    dataset اصلاح را هم‌گام کنید

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

  5. 5
    dataset ترکیبی را بسازید

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

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 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 بدون تفاوت فرمت فرود می‌آیند.

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
همان طرح کلید به همان نحوی که در هر جای دیگر در پشته، بنابراین حافظه‌ی عضلات از ضبط حمل می‌شود.
راهنمای آموزش نشان دهنده‌ی مراحل مرتب‌شده‌ی اجرای تنظیق دقیق GR00T روی یک dataset SO-100
طرف آموزش یک دور همان دنباله‌ی هدایت‌شده است که اجرای اول؛ فقط فیلد checkpoint متفاوت است.

کی دکمه را فشار دهید

زودتر نه دیر. اصلاحی که بعد از بسته‌شدن gripper روی چیزی شروع می‌شود بازیابی از شکستی را آموزش می‌دهد که policy نباید وارد آن می‌شد و داده‌های بازیابی بسیار کمتر از داده‌های اجتناب ارزشمند است. در اولین لحظه‌ای که مطمئن هستید trajectory اشتباه است قطع کنید، از طریق قسمت سخت اصلاح کنید، به محض اینکه state یکی است که policy قبلاً مدیریت کرده بود برگردانید. ThriftyDAgger آن تصمیم را با گیت‌گذاری دخالت‌ها روی نویافتگی و ریسک تخمینی تحت بودجه‌ی انسانی ثابت خودکار می‌کند، اما روی یک بازوی واحد با انسانی که قبلاً تماشا می‌کند، دروازه‌ی انسانی ارزان‌تر و بهتر کالیبره‌شده است از هر چیزی که شما تنظیم خواهید کرد.

امکان‌پذیر با پشته‌ی منبع باز و چند اسکریپت. آنچه قیمت می‌خواهد حسابداری است و حسابداری جایی است که دورهای DAgger می‌میرند.

  1. فریم‌ها را از اسکریپت inference خود را به dataset LeRobot بنویسید، با رشته‌ی کار که policy روی آن آموزش یافت.
  2. حلقه‌ی policy را متوقف کنید، منبع دستور را تغییر دهید و هر فریمی که رانندگی می‌کنید را به عنوان یک دخالت پرچم‌گذاری کنید. بدون پرچم، اصلاحات مثل نمایش‌های معمولی به نظر می‌رسند.
  3. به طور عمدی تصمیم بگیرید که چه اتفاقی برای فریم‌های انتقالی بین policy رهایی کنترل و ورودی اول خود می‌افتد.
  4. اصلاحات را در dataset خود آن‌ها برای هر policy نگاه دارید و شاخص‌های قسمت را به صورت دستی تتبع کنید تا ترکیب بتواند بازسازی شود.
  5. نقطه‌ی ورود تنظیق دقیق را در checkpoint قبلی اشاره کنید و در گزارش بررسی کنید که آن وزن‌ها را بارگذاری کرد.

مرحله 3 به طور مفصل: دسته‌بندی کیفیت را تصمیم می‌گیرد

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

  • به عنوان اصلاح فایل کنید وقتی دخالت یک اصلاح واقعی بود: policy به جایی اشتباه می‌رفت و ورودی شما چیز درست را از حالتی نشان داد که policy خود تولید کرده بود.
  • به عنوان ارزیابی برای اجراهای خودکار تمیز و برای اجراهایی که احتیاطاً تصرف کردید نگاه دارید. قسمت‌های ارزیابی نحوه‌ای هستند که checkpoint بعدی را اندازه می‌گیرید و آن‌ها هرگز نباید روی آن‌ها آموزش یابند.
  • اجراهایی که توسط چیز‌های نامربوط خراب شده‌اند دور بریزید - فریم دوربین افتاده، servo متوقف شده، شیء‌ای که واژگون کردید. اصلاح‌ی غیرمنظم بدتر از هیچ اصلاحی است.
فریم‌های منجمد متعلق به ضبط خام هستند نه در داده‌های آموزش

بین policy رهایی کنترل و ورودی اول شما، بازو ساکن می‌ماند در حین ضبط‌کننده ادامه می‌نویسد - اجرایی از pose‌های یکسان جفت‌شده با تصاویر کمی متفاوت. در اینجا فریم‌های تحویل در ضبط خام باقی می‌ماند و خارج dataset اصلاح. اگر حلقه را خود بسازید، آن‌ها را عمدی قطع کنید: policy آموزش‌یافته روی آن‌ها یاد می‌گیرد متوقف شود جایی که باید عمل کند.

مرحله 5 به طور مفصل: ترکیب ترکیب کردن

ترکیب dataset اصلی به اضافه dataset اصلاح را می‌گیرد و یک جدید، معمولی تولید می‌کند dataset LeRobot که مثل هر یک دیگر آموزش می‌دهد. ویژگی مهم این است که انتخاب قسمت برای هر منبع صریح است - هیچ چیز به طور خودکار ترکیب نمی‌شود. این جزئی به نظر می‌رسد تا زمانی که اولین بار policy به طور عجیب رفتار می‌کند و شما باید بازسازی کنید که روی آن آموزش یافت.

سؤال باز نسبت است و هیچ کس عددی ندارد که منتقل می‌شود. آنچه ادبیات درباره‌ی آن توافق دارد این است که اصلاحات باید برای بیشتر از سهم فریم آن شمار شود. Mandlekar و دیگران به طور تکراری روی داده‌هایی که سیستم دخالت خود جمع می‌کند دوباره آموزش می‌دهند، بنابراین policy یاد می‌گیرد گلوگاه‌ها را طی کند و گزارش می‌دهند که عوامل آموزش‌یافته به این روش از عوامل آموزش‌یافته روی تعداد معادل نمونه‌های از متخصصان غیرمداخله‌ای عملکرد بهتر دارند. Sirius بیشتر می‌رود و نمونه‌های آموزش را با اعتماد انسانی تخمینی دوباره وزن می‌دهد و ۸ درصد بهبود در شبیه‌سازی و ۲۷ درصد روی سخت‌افزار واقعی در نرخ موفقیت policy در برابر روش‌هایی گزارش می‌دهد که با آن مقایسه می‌کند در دو برابر سرعت convergence. هیچ یک از نقاط ورود آموزش در اینجا یک دستگیره وزن‌گذاری نمونه را بیرون نمی‌آورند، بنابراین جایگزین خام این است که هر قسمت اصلاح را نگاه دارید در حین نمونه‌گیری زیر نمایش‌های اصلی - و نوشتن آنچه انجام دادید.

نمایش ضبط dataset نشان دهنده‌ی قسمت‌های یک dataset SO-100 با جریان دوربین‌ها
قسمت‌های اصلاح قسمت‌های معمولی با پرچم دخالت برای هر فریم هستند، بنابراین آن‌ها با dataset اصلی بدون تبدیل ترکیب می‌شوند.

مرحله 6 به طور مفصل: آنچه ادامه‌ی از checkpoint واقعاً به معنی است

آموزش ترکیب از مدل پایه‌ای کار می‌کند اما دور قبلی را دور می‌ریزد و یک اجرای کامل قیمت می‌خواهد. ادامه دادن از checkpoint سریع‌تر و معمولاً بهتر است. همچنین محدودتر از آنچه عبارت نشان می‌دهد است.

اولیه‌سازی وزن شروع optimizer دوباره نیست

یک checkpoint فقط وزن‌ها شامل پارامترها و چیز دیگری نیست. بارگذاری آن اجرای بعدی را یک نقطه‌ی شروع بهتر از مدل پایه می‌دهد، اما optimizer moments، موقعیت برنامه‌ی یادگیری و ترتیب داده همه از صفر شروع می‌شوند. انتظار یک spike تلفات در شروع اجرای ادامه‌دار داشته باشید، آن را به عنوان شکست نخوانید و دور را resume نخوانید. این یک شروع گرم است.

Policyاندازهلایه GPUInference برای هر مرحله‌ی عملفرمت datasetقسمت‌ها قبل از اینکه ارزش تلاش را داشته باشد
GR00T N1.7حدود ۳ B، تقریباً ۴۰ M آموزش‌یافته در طول تنظیق دقیقA100 80 GB یا H100 80 GBحدود ۱۵۲ msLeRobot v2.0 یا v2.150
GR00T N1.5حدود ۳ BA100 80 GB یا H100 80 GBحدول ۱۶۵ msLeRobot v2.0 یا v2.150
Pi0.5حدود ۳ B روی یک PaliGemma backboneA100 80 GB یا H100 80 GBحدود ۴۸۵ msLeRobot v3.050
SmolVLAحدود ۴۵۰ MRTX 4090 یا هر کارت ۲۴ GBحدود ۲۴۵ msLeRobot v3.030
ACTحدود ۸۰ M، از ابتدا آموزش‌یافتهRTX 4090 یا هر کارت ۲۴ GBحدود ۲۰ msLeRobot v3.050

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

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started