
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 سے آتے ہیں۔
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 لے کر آتا ہے۔
راؤنڈ، شروع سے آخر تک
- 1Inference چلائیں اور ریکارڈ کریں
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جب یہ غلط ہو تو ٹیک اوور کریں
Take over دبائیں اور input mode منتخب کریں: leader arm، کی بورڈ یا سلائڈرز۔ رنر pause ہو جاتا ہے، آپ درست کرتے ہیں، آپ واپس کریں۔ Frames جو آپ drive کر رہے ہوں وہ خودکار طریقے سے interventions کے طور پر flagged ہوتے ہیں۔
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 - 3Episodes کو triage کریں
فیصلہ کریں فی episode: correction کے طور پر فائل کریں، evaluation کے طور پر رکھیں، یا discard کریں۔ ایک رن جو پالیسی بغیر مدد کے مکمل کرتے ہے وہ evaluation ڈیٹا ہے۔
- 4Correction ڈیٹاسیٹ کو sync کریں
Corrections ایک local dataset میں ہر policy کے لیے collect ہوتے ہیں اور خودکار sync کے ذریعے cloud storage میں جاتے ہیں۔ کچھ بھی mixed نہیں ہوا جو آپ نے وہاں نہ رکھا ہو۔
- 5Mixed ڈیٹاسیٹ کو کمپوز کریں
اصل ڈیٹاسیٹ کو corrections کے ساتھ ملائیں، episodes کو source سے منتخب کرتے ہوئے۔ نتیجہ وہاں سے ایک عام ڈیٹاسیٹ ہے۔
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6Checkpoint سے ٹریننگ جاری رکھیں
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 limit | Locked جب |
|---|---|---|---|
| Leader arm | Mirror 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 degrees | 409 کے ساتھ 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 کے بغیر ڈیٹاسیٹ میں اتر آتے ہیں۔
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
بٹن کب دبائیں
دیر سے بہتر جلدی۔ ایک 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 مر جاتے ہیں۔
- اپنی inference script سے LeRobot dataset میں frames لکھیں، task string کے ساتھ پالیسی کو ٹریننگ دی گئی تھی۔
- Policy loop کو pause کریں، command source میں switch کریں، اور ہر frame کو flag کریں جو آپ ڈرائیو کرتے ہیں ایک intervention کے طور پر۔ Flag کے بغیر، corrections عام demonstrations کی طرح لگتے ہیں۔
- جان بوجھ کر فیصلہ کریں کہ کیا ہوتا ہے transition frames کے درمیان policy control release کرنے اور آپ کی پہلی input کے درمیان۔
- Corrections کو اپنی اپنی dataset میں رکھیں فی policy، اور track کریں episode indices hand سے تاکہ mix reconstructed ہو سکے۔
- Fine-tuning entry point کو پچھلی checkpoint پر point کریں، اور log میں check کریں کہ یہ وہ weights لوڈ کرتا ہے۔
وہی چھے steps buttons کے طور پر موجود ہیں۔ جو خودکار ہے وہ یہ ہے جو hand سے غلط ہونے میں آسان ہے: per-frame intervention flag، corrections اور evaluations کے درمیان split، اور کون سی checkpoint نے کون سا mix تیار کیا اس کا record۔ کوئی چیز composed dataset میں داخل نہیں ہوتی جو آپ نے منتخب نہ کیا ہو۔
یہ آپ کے لیے فیصلہ نہیں کرتا۔ کون سا رن correction کے طور پر شمار ہوتا ہے، کون سے episodes mix میں جاتے ہیں، اور کب intervention rate سے گرنا بند ہو، یہ judgement calls رہتے ہیں۔ Fields کو document کیا گیا ہے training کے تحت، input modes کو teleoperation کے تحت۔
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 نہ ہونے سے بدتر ہے۔
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 - اور لکھنا جو آپ نے کیا۔

Step 6 تفصیل میں: checkpoint سے continue کرنا اصل میں کیا مطلب ہے
Mix کو base model سے ٹریننگ دینا کام کرتا ہے لیکن پچھلے راؤنڈ کو پھینکتا ہے اور ایک مکمل رن cost دیتا ہے۔ پچھلی checkpoint سے continue کرنا تیز ہے اور عام طور پر بہتر۔ یہ بھی phrase کی نسبت زیادہ محدود ہے۔
ایک 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 tier | Action step میں Inference | Dataset format | اسے try کرنے کے قابل سے پہلے Episodes |
|---|---|---|---|---|---|
| GR00T N1.7 | تقریباً 3 B، تقریباً 40 M fine-tuning کے دوران trained | A100 80 GB یا H100 80 GB | تقریباً 152 ms | LeRobot v2.0 یا v2.1 | 50 |
| GR00T N1.5 | تقریباً 3 B | A100 80 GB یا H100 80 GB | تقریباً 165 ms | LeRobot v2.0 یا v2.1 | 50 |
| Pi0.5 | ایک PaliGemma backbone پر تقریباً 3 B | A100 80 GB یا H100 80 GB | تقریباً 485 ms | LeRobot v3.0 | 50 |
| SmolVLA | تقریباً 450 M | RTX 4090 یا کوئی بھی 24 GB card | تقریباً 245 ms | LeRobot v3.0 | 30 |
| ACT | تقریباً 80 M، scratch سے trained | RTX 4090 یا کوئی بھی 24 GB card | تقریباً 20 ms | LeRobot v3.0 | 50 |
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، اور mean | Loop کا 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 ریکارڈ کریں۔
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