میز پر سیٹ اپ شدہ ایک SO-100 کم قیمت کے روبوٹ آرم، ٹیلی آپریشن اور پالیسی ٹریننگ کے لیے
DAggerSO-100نقالی سیکھناVLAٹیلی آپریشن

SO-100 پر VLA پالیسی کے ساتھ DAgger لوپ چلانا

AY-Robots ResearchAugust 27, 202615 منٹ میں پڑھیں

SO-100 آرم پر ایک انسانی گیٹ شدہ DAgger راؤنڈ کا مرحلہ وار بیان: پالیسی چلائیں اور ریکارڈ کریں، غلط ہونے پر ٹیک اوور کریں، رن کو درستگی کے طور پر فائل کریں، ملی جلی ڈیٹاسیٹ کمپوز کریں، اور چیک پوائنٹ سے ٹریننگ جاری رکھیں۔ لیڈر آرم کے بغیر لوگوں کے لیے کی بورڈ اور سلائڈر ٹیک اوور پاتھ، اور چار غلطیاں جو ایک راؤنڈ کو بیکار بناتی ہیں۔

آپ کی پالیسی چلتی ہے۔ یہ کیوب کی طرف پہنچتی ہے، گریپر کو ایک سینٹی میٹر بہت جلدی بند کرتی ہے، اور اگر اسے پکڑا ہوتا تو ویسے ہی جاتی۔ کوئی خرابی نہیں ہوتی، اور ٹریننگ خسارے کو کتنا بھی دیکھنے سے کوئی فرق نہیں پڑتا۔ حل ایک اور 20,000 gradient steps نہیں ہے ایک جیسے demonstrations پر۔ یہ آپ کا ہاتھ بالکل وہاں واپس رکھنا ہے جہاں یہ غلط ہوتا ہے، وہ ریکارڈ کریں جو آپ نے کیا، اور اگلی checkpoint کو پرانے ڈیٹا کے علاوہ اس درستگی پر ٹریننگ دیں۔ یہ ایک DAgger راؤنڈ ہے، اور یہ بتاتا ہے کہ ایک SO-100 پر ایک vision-language-action پالیسی کے ساتھ کیسے چلایا جائے۔

نظریہ کہیں اور ہے: کیوں dataset aggregation بالکل کام کرتا ہے اور انسانی gating اسے کیا بدلتا ہے۔ یہ آپریٹنگ مینول ہے، اور یہ ایک trained checkpoint، کام کرنے والا کیمرا سیٹ، اور ایک آرم جو حرکت کرتا ہے، یہ فرض کرتا ہے۔ نیچے دیے گئے چھے مراحل یہ لوپ ہیں جیسا کہ اس پلیٹ فارم پر لاگو کیا گیا ہے اس پلیٹ فارم کے DAgger صفحہ پر، لیکن ترتیب آپ کی اپنی scripts سے ایک جیسی ہے۔

ایک راؤنڈ مختصر میں

  • Trained پالیسی چلائیں اور اسے ریکارڈ کریں، رن کے task متن کے ساتھ generically ٹیلی آپریشن label کی بجائے۔
  • اس لمحے ٹیک اوور لیں جب رویہ غلط ہو جائے: ایک lider arm کے ساتھ آئینہ handover، فوری اور manual کی بورڈ یا سلائڈرز پر ایک کے بغیر۔
  • ہر رن کو triage کریں: اسے درستگی کے طور پر فائل کریں، اسے evaluation episode کے طور پر رکھیں، یا discard کریں۔
  • Mix کو hand سے کمپوز کریں - اصل demonstrations کے علاوہ corrections، episodes کو source سے منتخب کیا جائے۔ کبھی corrections الون پر ٹریننگ نہ کریں۔
  • آخری checkpoint سے ٹریننگ جاری رکھیں، اور نوٹ کریں کہ کون سی checkpoint نے کون سا mix تیار کیا۔
  • وہ عدد جو بتاتا ہے کہ آیا راؤنڈ کچھ قیمتی تھا intervention rate ہے، ٹریننگ loss نہیں۔

دوسرا راؤنڈ کیوں صرف مزید ڈیٹا نہیں ہے

Behavior cloning اُن states پر ٹریننگ دیتا ہے جو ایک انسان نے دیکھے ہیں۔ Test وقت پر پالیسی وہ states دیکھتی ہے جو یہ سبب بناتی ہے، اور چھوٹی action errors states میں بڑھ جاتی ہیں جو کوئی demonstration نے کبھی نہیں دیکھے۔ Ross, Gordon اور Bagnell نے اس failure کو AISTATS 2011 میں formalise کیا اور اسے iterative algorithm کے ساتھ جواب دیا جو ایک stationary deterministic policy کو ٹریننگ دیتا ہے اور، ان کی reduction کے تحت، state distribution کے تحت اچھی کارکردگی کے ذریعے کرنا پڑتا ہے جو یہ کرتا ہے: موجودہ پالیسی چلائیں، expert کو اُن states کو label کریں جو یہ حقیقی طریقے سے پہنچی ہے، ڈیٹاسیٹ میں شامل کریں، دوبارہ ٹریننگ دیں، دہرائیں۔ Kelly et al. نے HG-DAgger کے ساتھ query کو عملی بنایا، جہاں انسان اپنا فیصلہ کرتا ہے کہ کب کنٹرول لیں بجائے states کو بغیر کنٹرول رکھے label کرنے کے؛ وہ simulated اور ایک real autonomous driving task دونوں پر DAgger اور behavior cloning دونوں کے لیے improved performance رپورٹ کرتے ہیں۔ Human gating یہ ہے جو لوپ کو میز آرم پر متحمل بناتا ہے - آپ اپنے ہاتھ حرکت دیتے ہیں صرف جب کچھ غلط جا رہا ہو۔

عملی طریقے میں نظریہ سے زیادہ دو نتائج اہم ہیں۔ Corrections عام demonstrations نہیں ہیں: وہ bottleneck regions میں concentrate ہوتے ہیں جو Mandlekar et al. وضاحت کرتے ہیں، جہاں ایک چھوٹی سی deviation پالیسی کو اُن states میں گراتی ہے جو demonstrations نے کبھی نہیں دیکھے۔ اور ایک dataset جو صرف ان مشکل حصوں سے بنا ہو وہ بری شکل کی dataset ہے - Belkhale, Cui اور Sadigh ڈیٹا سے بحث کرتے ہیں کہ state diversity ہمیشہ فائدہ مند نہیں ہے، اور وہ action divergence اور transition diversity مل کر dataset quality کا فیصلہ کرتے ہیں۔ Mixed dataset compromize نہیں ہے، یہ نقطہ ہے۔

یہ freeze کریں پہلے راؤنڈ سے پہلے

ایک DAgger راؤنڈ ایک پالیسی کو وقت کے آر پار خود کے خلاف موازنہ کرتا ہے۔ جو کچھ بھی آپ راؤنڈز کے درمیان بدلتے ہیں جو dataset نہیں ہے، وہ اس موازنہ کو بیکار بناتا ہے۔

  • کیمرا کی positions اور mounts، wrist camera بھی۔ ایک clamp کھولیں اور آپ نے observation distribution بدلا ہے، پالیسی نہیں۔
  • Exposure اور white balance، اگر آپ کے capture stack انہیں pin کرتے ہیں۔ Auto-exposure drift راؤنڈز کے درمیان ایک سست، غیر مرئی domain shift ہے۔
  • Arm calibration اور servo zero positions۔ اگر آپ کو recalibrate کرنا ہے تو، اس سے پہلے ریکارڈ کی گئی ہر چیز کو الگ dataset کے طور پر سلوک کریں۔
  • Task متن۔ ہر VLA یہاں اس پر conditions دیتا ہے؛ loop کے درمیان اسے دوبارہ لکھنا ایک مختلف task ہے۔
  • روشنی، میز کی سطح، object سیٹ۔ ایک نیا object ایک نیا تجربہ ہے، اگلا راؤنڈ نہیں۔
  • Recording frame rate۔ دو sampling rasters کے آر پار intervention rates کا موازنہ کرنا اختلافات پیدا کرتا ہے جو raster سے آتے ہیں۔
Wrist کیمرا اختیاری فرنیچر نہیں ہے

Hsu et al. نے ایک hand-centric view کو معمولی third-person view کے خلاف موازنہ کیا اور eye-in-hand perspective کو consistently بہتر ٹریننگ efficiency اور out-of-distribution generalisation پایا، اس کے باوجود منظر کے کم حصے کو دیکھتے ہوئے۔ پانچ joint آرم پر، gripper timing عام طور پر وہ ہے جو آپ کی corrections درست کر رہے ہیں، اور gripper timing وہی ہے جو wrist view لے کر آتا ہے۔

راؤنڈ، شروع سے آخر تک

  1. 1
    Inference چلائیں اور ریکارڈ کریں

    Checkpoint کے خلاف رن شروع کریں جو آپ بہتر بنانا چاہتے ہیں، پھر recording کو inference root میں شروع کریں۔ اس طریقے سے ریکارڈ کیا گیا یہ run کا اپنا task متن وراثت کرتا ہے، جو پالیسی کو ٹریننگ دی گئی تھی، بجائے default ٹیلی آپریشن label کے۔ Recording کے بغیر آپ failure دیکھ سکتے ہیں لیکن اس پر ٹریننگ نہیں دے سکتے۔

    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 دبائیں اور input mode منتخب کریں: leader arm، کی بورڈ یا سلائڈرز۔ رنر pause ہو جاتا ہے، آپ درست کرتے ہیں، آپ واپس کریں۔ Frames جو آپ drive کر رہے ہوں وہ خودکار طریقے سے interventions کے طور پر flagged ہوتے ہیں۔

    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
    Episodes کو triage کریں

    فیصلہ کریں فی episode: correction کے طور پر فائل کریں، evaluation کے طور پر رکھیں، یا discard کریں۔ ایک رن جو پالیسی بغیر مدد کے مکمل کرتے ہے وہ evaluation ڈیٹا ہے۔

  4. 4
    Correction ڈیٹاسیٹ کو sync کریں

    Corrections ایک local dataset میں ہر policy کے لیے collect ہوتے ہیں اور خودکار sync کے ذریعے cloud storage میں جاتے ہیں۔ کچھ بھی mixed نہیں ہوا جو آپ نے وہاں نہ رکھا ہو۔

  5. 5
    Mixed ڈیٹاسیٹ کو کمپوز کریں

    اصل ڈیٹاسیٹ کو corrections کے ساتھ ملائیں، episodes کو source سے منتخب کرتے ہوئے۔ نتیجہ وہاں سے ایک عام ڈیٹاسیٹ ہے۔

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 6
    Checkpoint سے ٹریننگ جاری رکھیں

    Mix کو پچھلی checkpoint سے ٹریننگ دیں بجائے base model کے۔ نوٹ کریں کہ کون سی checkpoint اور کون سا mix؛ بغیر اس جوڑے کے راؤنڈ reproducible نہیں ہے۔

    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

Step 2 تفصیل میں: ٹیک اوور کے دو طریقے

ایک leader arm کے ساتھ

میں leader-follower mode میں takeover دو arms کے درمیان ایک handover ہے جو ایک جیسے pose میں نہیں ہیں۔ Take over دبانا runnner کو pause کرتا ہے اور leader کو follower کے موجودہ pose پر drive کرتا ہے، تو torque transfer کے وقت کچھ نہیں اچھلتا۔ اگر وہ alignment drive timeout کرے تو آپ leader کو hand سے align کریں اور صرف تب release کریں جب دونوں پانچ degrees کے اندر ہوں۔ اس کے بعد سے آپ عام طور پر teleoperate کرتے ہیں اور action column وہ ریکارڈ کرتا ہے جو آپ نے کمانڈ دیا۔

اس path کے بارے میں سچائی سے بولیں: alignment drive اور torque handover لوپ کا کم سے کم test شدہ حصہ ہیں real hardware پر۔ Handover کو ایک سست، بے ضرر pose پر ٹیسٹ کریں پہلے کہ آپ اس پر انحصار کریں ایک رن میں جس کی آپ کو پرواہ ہے۔ ایک leader arm تینوں modes میں smoothest corrections تیار کرتا ہے، اور بھی زیادہ ہے جو mechanically غلط ہو سکتا ہے۔

بغیر leader arm: کی بورڈ اور سلائڈرز

اکثر لوگ جو یہ پڑھ رہے ہیں ان کے پاس ایک آرم ہے۔ یہ کافی ہے۔ کی بورڈ یا سلائڈر input منتخب کریں اس لمحے جب آپ Take over دبائیں، اور takeover فوری اور manual ہے - دوسرا آرم align کرنے کے لیے نہیں ہے، تو alignment step نہیں ہے۔ Follower اپنے pose میں رہتا ہے اور input کے لیے انتظار کرتا ہے۔

Input modeآرم کیسے حرکت کرتا ہےسرور کے ذریعے لاگو کی گئی per-call limitLocked جب
Leader armMirror follower کو leader کے joint angles سے drive کرتا ہےاس mode میں کوئی nudge یا set calls نہیں؛ mirror follower goals کو continuously لکھتا ہےکبھی locked نہیں، اور default ہے اگر کوئی input mode نہیں دیا گیا - لیکن اسے دوسرے آرم کی ضرورت ہے؛ leader id کے بغیر takeover refuse کیا جاتا ہے
کی بورڈPer key press relative nudge، takeover nudge endpoint کو بھیجا جاتا ہےHard clamp 2 degrees per joint پر، gripper کے لیے 4 degrees409 کے ساتھ Rejected اگر takeover leader mode میں شروع کیا گیا تھا
سلائڈرزAbsolute target pose، takeover set endpoint کو بھیجا جاتا ہےTarget کی طرف سفر میں 6 degrees کے زیادہ سے زیادہ per call؛ interface تقریباً دس بار فی سیکنڈ بھیجتا رہتا ہے409 کے ساتھ Rejected اگر takeover leader mode میں شروع کیا گیا تھا

Clamps کو server-side سے لاگو کیا جاتا ہے، interface میں نہیں، کیونکہ ایک bus-servo آرم پر غلط delta ایک collision ہے۔ Keyboard corrections stepwise اور تھوڑے rough آتے ہیں؛ slider corrections smoother ہیں، کیونکہ سرور target کی طرف چلتا ہے جب interface streaming رکھتا ہے۔ کسی بھی طریقے سے action column مکمل commanded pose vector موصول کرتا ہے اور intervention marking leader path جیسی ہے، تو keyboard corrections ایک format difference کے بغیر ڈیٹاسیٹ میں اتر آتے ہیں۔

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
Stack میں ہر جگہ ایک جیسی key layout، تو recording سے muscle memory carry over ہوتی ہے۔
ایک SO-100 ڈیٹاسیٹ پر GR00T fine-tuning رن کے ordered steps کو دکھاتا training guide
ایک راؤنڈ کا training سائڈ پہلے رن کے طور پر ایک ہی guided sequence ہے؛ صرف checkpoint field مختلف ہے۔

بٹن کب دبائیں

دیر سے بہتر جلدی۔ ایک correction جو شروع ہوتا ہے gripper کے بند ہونے کے بعد کچھ نہیں پر failure سے recovery سیکھتا ہے جو پالیسی کو داخل نہیں کرنی چاہیے، اور recovery ڈیٹا avoidance ڈیٹا سے بہت کم قیمتی ہے۔ اس لمحے interrupt کریں جب آپ اعتماد رکھتے ہیں trajectory غلط ہے، مشکل حصے کے ذریعے درست کریں، hand back جیسے ہی state ایک ہے جو پالیسی نے پہلے handle کیا تھا۔ ThriftyDAgger اس decision کو automate کرتا ہے novelty پر gating کے ذریعے interventions کو اور estimated risk کو ایک fixed انسانی budget کے تحت، لیکن ایک single آرم پر ایک انسان کے ساتھ پہلے سے دیکھ رہا ہو تو، انسان gate سستا ہے اور بہتر calibrated ہے کچھ سے زیادہ جو آپ tune کریں۔

Open-source stack اور کچھ scripts کے ساتھ ممکن ہے۔ جو یہ costs bookkeeping ہے، اور bookkeeping وہ ہے جہاں DAgger rounds مر جاتے ہیں۔

  1. اپنی inference script سے LeRobot dataset میں frames لکھیں، task string کے ساتھ پالیسی کو ٹریننگ دی گئی تھی۔
  2. Policy loop کو pause کریں، command source میں switch کریں، اور ہر frame کو flag کریں جو آپ ڈرائیو کرتے ہیں ایک intervention کے طور پر۔ Flag کے بغیر، corrections عام demonstrations کی طرح لگتے ہیں۔
  3. جان بوجھ کر فیصلہ کریں کہ کیا ہوتا ہے transition frames کے درمیان policy control release کرنے اور آپ کی پہلی input کے درمیان۔
  4. Corrections کو اپنی اپنی dataset میں رکھیں فی policy، اور track کریں episode indices hand سے تاکہ mix reconstructed ہو سکے۔
  5. Fine-tuning entry point کو پچھلی checkpoint پر point کریں، اور log میں check کریں کہ یہ وہ weights لوڈ کرتا ہے۔

Step 3 تفصیل میں: triage quality کا فیصلہ کرتا ہے

رن کے بعد آپ کے پاس ایک recording ہے جس میں کچھ frames interventions کے طور پر marked ہیں۔ تین منزلیں موجود ہیں، اور غلط ایک خاموشی سے اگلے راؤنڈ کو زہر دیتا ہے۔

  • Correction کے طور پر file کریں جب intervention ایک genuine fix تھا: پالیسی کہیں غلط جا رہی تھی اور آپ کی input صحیح چیز دکھاتی تھی ایک state سے جو پالیسی نے خود تیار کیا تھا۔
  • Evaluation کے لیے رکھیں clean autonomous runs کے لیے اور runs آپ نے احتیاط سے ٹیک اوور کیے۔ Evaluation episodes کی طریقہ کار ہے جس سے آپ اگلی checkpoint کو ماپتے ہیں، اور وہ کبھی ٹریننگ پر نہیں ہونے چاہیں۔
  • Discard runs غلط شیوں سے - ایک dropped camera frame، ایک stalled servo، ایک object آپ نے گرایا۔ ایک messy correction کوئی correction نہ ہونے سے بدتر ہے۔
Freeze frames raw recording میں ہونی چاہیں، ٹریننگ ڈیٹا میں نہیں

Policy release control کرنے اور آپ کی پہلی input کے درمیان، آرم static رہتا ہے جب کہ recorder لکھتا رہتا ہے - identical poses کا ایک run جو تھوڑے مختلف images کے ساتھ paired ہے۔ یہاں وہ handover frames raw recording میں رہتے ہیں اور correction dataset سے باہر۔ اگر آپ loop خود بناتے ہیں تو انہیں deliberately cut کریں: ایک policy جو ان پر ٹریننگ پاتی ہے pause کرنا سیکھتی ہے جہاں اسے act کرنا چاہیے۔

Step 5 تفصیل میں: mix کو compose کرنا

Composition اصل dataset کو correction dataset کے ساتھ لیتا ہے اور ایک نیا، عام LeRobot dataset تیار کرتا ہے جو کسی اور کی طرح ٹریننگ دیتا ہے۔ اہم property یہ ہے کہ episode selection explicit ہے source سے - کچھ خودکار طریقے سے blended نہیں ہوا۔ یہ چھوٹا لگتا ہے جب تک پالیسی عجیب سلوک نہ کرے اور آپ کو reconstruct کرنا پڑے کہ یہ کس پر ٹریننگ پائی۔

کھلا سوال ratio ہے، اور کسی کے پاس نمبر نہیں ہے جو منتقل ہو۔ جو literature agree کرتا ہے وہ یہ ہے کہ corrections کو ان کے frame share سے زیادہ count کریں۔ Mandlekar et al. iteratively retrain کرتے ہیں ڈیٹا پر جو ان کے intervention system collect کرتا ہے، تو پالیسی bottleneck traverse کرنا سیکھتی ہے، اور report کرتے ہیں کہ اس طریقے سے trained agents outperform agents جو ٹریننگ non-interventional demonstrators سے samples کی برابر تعداد پر۔ Sirius آگے جاتا ہے اور re-weight کرتا ہے ٹریننگ samples کو approximated انسانی trust سے، reporting ایک 8 percent gain simulation میں اور 27 percent real hardware پر policy success rate میں ان methods کے خلاف جن کے ساتھ یہ موازنہ کرتے ہیں، دو گنا convergence speed پر۔ Training entry points یہاں کوئی sample-weighting knob expose نہیں کرتے، تو crude substitute ہے ہر correction episode کو رکھنا جب کہ subsampling اصل demonstrations - اور لکھنا جو آپ نے کیا۔

ایک SO-100 ڈیٹاسیٹ کے episodes کو دکھاتا ہے camera streams کے ساتھ Dataset recording view
Correction episodes عام episodes ہیں ایک per-frame intervention flag کے ساتھ، تو وہ اصل dataset کے ساتھ compose ہوتے ہیں conversion کے بغیر۔

Step 6 تفصیل میں: checkpoint سے continue کرنا اصل میں کیا مطلب ہے

Mix کو base model سے ٹریننگ دینا کام کرتا ہے لیکن پچھلے راؤنڈ کو پھینکتا ہے اور ایک مکمل رن cost دیتا ہے۔ پچھلی checkpoint سے continue کرنا تیز ہے اور عام طور پر بہتر۔ یہ بھی phrase کی نسبت زیادہ محدود ہے۔

Weight initialisation optimizer resume نہیں ہے

ایک weights-only checkpoint parameters اور کچھ نہیں رکھتا ہے۔ اسے لوڈ کرنا اگلے رن کو base model سے بہتر starting point دیتا ہے، لیکن optimizer moments، learning-rate schedule position اور data order سب صفر سے شروع ہوتے ہیں۔ Expect کریں loss spike continuation کے شروع میں، اسے failure کے طور پر نہ پڑھیں، اور راؤنڈ کو resume نہ کہیں۔ یہ ایک warm start ہے۔

PolicyسائزGPU tierAction step میں InferenceDataset formatاسے try کرنے کے قابل سے پہلے Episodes
GR00T N1.7تقریباً 3 B، تقریباً 40 M fine-tuning کے دوران trainedA100 80 GB یا H100 80 GBتقریباً 152 msLeRobot v2.0 یا v2.150
GR00T N1.5تقریباً 3 BA100 80 GB یا H100 80 GBتقریباً 165 msLeRobot v2.0 یا v2.150
Pi0.5ایک PaliGemma backbone پر تقریباً 3 BA100 80 GB یا H100 80 GBتقریباً 485 msLeRobot v3.050
SmolVLAتقریباً 450 MRTX 4090 یا کوئی بھی 24 GB cardتقریباً 245 msLeRobot v3.030
ACTتقریباً 80 M، scratch سے trainedRTX 4090 یا کوئی بھی 24 GB cardتقریباً 20 msLeRobot v3.050

Latency ایک DAgger loop کے اندر compound ہوتا ہے ایک طریقے سے یہ demo کے دوران نہیں: تقریباً 485 ms per action step پر آپ ٹیک اوور لیتے ہیں کیونکہ آرم hesitated، غلط نہ تھا، اور hesitation corrections بیکار ٹریننگ ڈیٹا نہیں ہیں۔ اگر آپ ڈیٹا پر iterate کر رہے ہیں بجائے ایک آخری success rate کا پیچھا کریں، ایک تیز model پر iterate کریں۔ Shukor et al. SmolVLA کو describe کرتے ہیں ایک single GPU پر ٹریننگ اور consumer GPUs یا CPUs پر deploy کرنے کے لیے design کیا گیا ہے، ایک asynchronous inference stack کے ساتھ جو action prediction کو execution سے decouple کرتا ہے اعلیٰ control rates کی اجازت دینے کے لیے - property جو ایک takeover loop کو responsive رکھتا ہے۔

Dataset formats interchangeable نہیں ہیں۔ GR00T LeRobot v2.0 یا v2.1 لیتا ہے، اور Isaac-GR00T repository اپنے input کو LeRobot v2 format کا ایک flavour بیان کرتا ہے ایک added modality description file کے ساتھ؛ نئے trainers یہاں v3.0 expect کرتے ہیں۔ ایک mix compose کیا ہوا غلط version میں load وقت پر fail ہوتا ہے بجائے بری policy تیار کرنے - بہتر failure mode، ابھی ایک wasted queue slot۔ dataset documentation سوچتا ہے کہ ہر trainer کون سا format لیتا ہے۔

Loop، bookkeeping کے ساتھ پہلے سے کیا جاتا ہے

Leader arm کے ساتھ Takeover، کی بورڈ یا سلائڈرز؛ per-frame intervention marking؛ correction یا evaluation کے طور پر filing runs؛ ایک mixed dataset کو compose کرنا ایک explicit episode selection کے ساتھ source سے؛ اور ایک checkpoint سے base model کی بجائے continue ٹریننگ۔ جو آپ کا فیصلہ رہتا ہے وہ کون سا رن correction کے طور پر شمار ہوتا ہے، کیا mix میں جاتا ہے، اور کب intervention rate سے گرنا بند ہوتا ہے۔

دیکھیں کیسے DAgger loop wired ہے

چار طریقے ایک راؤنڈ کو ضائع کرنے کے

1. صرف corrections پر ٹریننگ

سب سے عام ناکامی اور سب سے لالچی shortcut۔ ایک correction-only dataset تقریباً مکمل طور پر مشکل middle task کا ہے، approach اور retreat missing کے ساتھ؛ پالیسی hard part میں بہتر ہو جاتی ہے اور کہیں وہاں پہنچنا بھول جاتی ہے۔ Aggregation method کی ایک implementation detail نہیں ہے، یہ mechanism ہے: پرانا ڈیٹا وہ ہے جو behavior کی بقیہ جگہ رکھتا ہے جب corrections ایک حصہ کو move کرتے ہیں۔

2. راؤنڈز کے درمیان کیمرا move کرنا

ایک کیمرا جو دو سینٹی میٹر shift ہوتا ہے راؤنڈز کے درمیان ایک policy بھی خراب بناتا ہے جو آپ نے شروع کیا تھا، اور ایک diagnosis جو ایک دن cost دیتا ہے۔ ہر VLA یہاں images پر conditions دیتا ہے؛ joint state تنہا disambiguate نہیں کرتا جہاں object ہے۔ پہلے راؤنڈ سے پہلے setup کو photograph کریں اور ہر بعد میں رن سے پہلے وہ photograph check کریں۔

3. Handover artefacts کو ٹریننگ میں داخل ہونے دینا

اوپر covered، اور list پر کیونکہ یہ غیر مرئی ہے۔ Symptom ایک policy ہے جو stalls کرتا ہے ایک fraction سیکنڈ کے بالکل جہاں پچھلے راؤنڈ کے operator نے ٹیک اوور کیا۔ یہ hesitation کی طرح لگتا ہے؛ یہ imitation ہے۔

4. Warm start کو resume کہنا

اگر آپ کو لگتا ہے optimizer state carry over ہوا، ابتدائی loss spike bug کی طرح پڑھا جاتا ہے اور آپ corrupted ڈیٹا کے لیے hunt کریں۔ اگر آپ جانتے ہیں optimizer تازہ شروع ہوا تو، spike expected ہے اور آپ دیکھتے ہیں کہ اس کے بعد کیا آتا ہے۔ ایک جیسے نمبر، مختلف نتائج۔

Round کو ماپنا

Metric ایک human-gated loop کے لیے intervention rate ہے: frames جو آپ کنٹرول میں تھے جب ریکارڈ کیے گئے، کل frames رن کے ذریعے divided۔ یہ takeover status میں ہے، اور یہ واحد نمبر ہے جو سوال کے جواب دیتا ہے راؤنڈ نے پوچھا۔ ٹریننگ loss گرتا ہے چاہے policy بہتر ہوا یا نہیں؛ success rate binary اور noisy ہے desk arm پر samples sizes۔ Intervention rate continuous ہے، measured ہے states پر جو پالیسی نے خود سبب بنایا، اور یہ گرتا ہے جب policy آپ کی کم ضرورت دیتا ہے۔

اسے صرف موازنہ کریں identical conditions کے تحت ریکارڈ کیے گئے runs کے آر پار۔ مکمل argument، اور کیسے ایک evaluation set بنائیں جو دو rounds سے زیادہ رہتا ہے، میں ہے DAgger loop کو ماپنے پر article۔ پہلا راؤنڈ realistically ایک feasibility test ہے: آپ check کر رہے ہیں کہ takeover اپنے hardware پر کام کرتا ہے، corrections اپنے flags کے ساتھ آتے ہیں، اور continued رن checkpoint جو آپ نام کیے ہوں وہ لوڈ کیا۔ Rounds دو اور تین جہاں rate شروع سے move کرنا چاہیے۔ اگر یہ move نہیں ہوا ہے چار سے، مسئلہ DAgger کے اوپر ہے۔

Per round لکھیںیہ بعد میں کیوں اہم ہے
Checkpoint جو drive ہوا تھابغیر اس کے آپ improvement کو mix سے attribute نہیں کر سکتے
Input mode takeover کے لیے استعمالKeyboard corrections leader corrections سے coarser ہیں، اور یہ ڈیٹا میں دکھتا ہے
Runs کی تعداد اور ہر کیسے triaged ہواچاہے راؤنڈ میں corrections شمار کرنے کے لیے کافی تھے
Intervention rate per run، اور meanLoop کا progress metric
ہر source سے exactly episode selectionواحد طریقہ ایک راؤنڈ کو reproduce یا undo کرنے کا
Warm start یا fresh ٹریننگLoss curve کی وضاحت کرتا ہے جو آپ ایک ہفتہ بعد دیکھیں گے

اگر آپ کے پاس ابھی checkpoint نہیں ہے

Loop میں ایک entry point بغیر نہیں ہے۔ ایک پہلی ڈیٹاسیٹ ریکارڈ کریں، ایک پہلی policy ٹریننگ دیں، یہ چلائیں - recording، training اور policy چلانا وہ path cover کرتے ہیں۔ Recording client download page پر ہے، GPU tiers اور hourly rates pricing page پر ہیں، اور کیا usable episode لگتا ہے SO-100 ڈیٹا کلیکشن guide میں ہے۔ Corrections سے پہلے demonstrations get صحیح: DAgger ایک repair mechanism ہے، اور یہ بہت بہتر کام کرتا ہے کچھ جو nearly صحیح تھا۔

کیا میں ایک DAgger loop leader arm کے بغیر چلا سکتا ہوں؟

ہاں۔ کی بورڈ یا سلائڈر input منتخب کریں جب آپ Take over دبائیں: takeover فوری اور manual ہے، align کرنے کے لیے دوسرے آرم کے بغیر۔ Keyboard relative nudges بھیجتا ہے جو server hard clamp کرتا ہے 2 degrees per joint پر اور 4 gripper کے لیے؛ سلائڈرز ایک absolute target بھیجتے ہیں اور server 6 degrees سے زیادہ move کرتا ہے اس کی طرف per call، جب کہ interface streaming رکھتا ہے۔ Action column اور intervention marking leader mode میں ایک جیسے ہیں، تو corrections dataset میں format difference کے بغیر indistinguishable ہیں۔

ایک راؤنڈ کو کتنی corrections کی ضرورت ہے؟

کوئی defensible universal نمبر نہیں ہے، اور frame count episode count سے زیادہ ماتر ہے۔ Working rule یہ ہے کہ corrections کو mix میں lost نہیں ہونا چاہیے: 200 اصل episodes اور تین correction episodes کے ساتھ، کوئی move نہیں کرے گا۔ corrections کے لیے aim کریں جو failing behavior کو کچھ starting configurations سے cover کریں بجائے ایک جیسے rescue کی تین repetitions۔

کیوں صرف corrections پر ٹریننگ کیسے ایک برا خیال ہے؟

کیونکہ corrections تقریباً مکمل طور پر task کے hard middle سے ہیں۔ Approach، alignment اور retreat missing ہیں، تو policy وہ forget کرتا ہے جو یہ پہلے سے اچھا کر رہی تھی جب بھی آپ جو حصہ fix کیا اس میں بہتری آتی ہے۔ پرانا ڈیٹا رکھنا اور add کرنا mechanism خود ہے، ایک optional extra نہیں۔

کیا ایک checkpoint سے continue کرنا پچھلے ٹریننگ رن کو resume کرتا ہے؟

نہیں۔ ایک weights-only checkpoint parameters restore کرتا ہے اور کچھ نہیں: optimizer moments، learning-rate schedule position اور data order تازہ شروع ہوتے ہیں۔ یہ ایک warm start ہے، اور ایک ابتدائی loss spike expected ہے بجائے symptom۔ لکھیں کہ آپ نے حقیقی کون سے دونوں کیے، تو آپ ایک ہفتہ بعد curve صحیح پڑھیں۔

کیا اگر intervention rate نہیں سے گرتا ہے؟

Rounds add کرنا بند کریں۔ ایک flat rate کا مطلب ہے corrections نہیں سیکھ رہے جو آپ سوچتے ہیں۔ عام causes اوپر ہیں: ایک کیمرا moved، corrections بہت دیر سے شروع ہوتے ہیں avoidance ڈیٹا ہونے کے لیے، handover frames ٹریننگ set میں ہیں، یا task underdetermined ہے observations سے جو policy حقیقی طریقے سے ملتا ہے۔

اس میں سے کوئی ایک solved problem نہیں ہے اور کوئی ایک click نہیں ہے۔ Interactive imitation learning ایک active research area ہے بالکل اس وجہ سے کہ اس کے سوالات - کب intervene، کیسے weight کریں جو انسان نے کیا، کتنا پرانا ڈیٹا رکھیں - کوئی settled answers نہیں ہیں؛ Celemin et al. کے ذریعے survey map کرتا ہے جو ابھی open ہے۔ جو loop کے پاس measurable convergence ہے جب یہ احتیاط سے run ہوتا ہے، hardware پر جو کچھ سو euros کی cost دیتا ہے۔ Setup کو freeze کریں، جلدی intervene کریں، سچائی سے triage کریں، deliberately mix کریں، اور ہر بار intervention rate ریکارڈ کریں۔

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started