
SO-100 پر lerobot کے ساتھ ایک Action Chunking Transformer کو شروع سے تربیت دیں: act config، chunk_size اور n_action_steps، 100000 سٹیپ کا شیڈول، 20 ms انفرنس۔
SO-100 پالیسیوں میں ACT ایک منفرد حیثیت رکھتا ہے۔ GR00T N1.7 اور N1.5 کا آغاز nvidia/GR00T-N1.7-3B اور nvidia/GR00T-N1.5-3B، Pi0.5 کا آغاز lerobot/pi05_base سے ہوتا ہے۔ ACT کا آغاز کچھ بھی نہیں سے ہوتا ہے: کوئی بنیادی چیک پوائنٹ نہیں ہے، کیونکہ یہ کوئی فاؤنڈیشن ماڈل نہیں ہے۔ یہ تقریباً 80 ملین پیرامیٹر کا ایک ٹرانسفارمر ہے جسے آپ ایک ہی کام کے لیے، اپنے بازو پر، اپنی روشنی میں شروع سے تربیت دیتے ہیں۔
یہی وجہ ہے کہ یہ 20 ms میں ایک کنٹرول سٹیپ چلاتا ہے جہاں 3 بلین پیرامیٹر والے VLA کو 152 سے 485 ms درکار ہوتے ہیں، اور اس کی لاگت 4 سے 12 USD کے بجائے 1 سے 3 USD فی رن آتی ہے۔ یہ گائیڈ دستی طریقہ کار کو lerobot پر ایک SO-100 کے ساتھ بیان کرتی ہے: ریکارڈ، act کنفگ، کیا chunk_size اور n_action_steps کنٹرول کرتے ہیں، 100000 سٹیپ کا شیڈول، رول آؤٹ۔ پھر AY-Robots پر وہی کام، بشمول جہاں پلیٹ فارم مدد نہیں کرتا۔
آپ کو کیا جاننے کی ضرورت ہے
- •ACT شروع سے تربیت حاصل کرتا ہے: کوئی بنیادی ماڈل نہیں، کوئی پری ٹریننگ نہیں، کوئی زبان کا ان پٹ نہیں۔ ایک چیک پوائنٹ، ایک کام۔
- •پیپر: تقریباً 80 M پیرامیٹرز، 11 GB RTX 2080 Ti پر تقریباً 5 گھنٹے، 0.01 s انفرنس۔
- •lerobot ڈیفالٹس: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000۔
- •AY-Robots پر: 20 ms فی سٹیپ، پانچوں میں سب سے تیز۔ کم از کم 50 ایپی سوڈز، LeRobot v3.0، ایک 24 GB کارڈ، 1 سے 3 USD فی رن۔
- •یہ اس کام میں جیتتا ہے جو اس نے دیکھا ہے، اور جیسے ہی آپ زبان کی کنڈیشنگ چاہتے ہیں، یہ ہار جاتا ہے۔
23 اگست 2026 کو lerobot 0.6.x کے خلاف چیک کیا گیا: pyproject.toml پر main پڑھتا ہے version = "0.6.2"، تازہ ترین ٹیگ v0.6.1، 3 اگست 2026۔ ایک ٹیوٹوریل جو python lerobot/scripts/train.py سے شروع ہوتا ہے، کنسول انٹری پوائنٹس lerobot-train، lerobot-record اور lerobot-rollout سے پہلے کا ہے۔
ACT دراصل کیا ہے
ایکشن چنکنگ ود ٹرانسفارمرز ALOHA پیپر سے ماخوذ ہے، کم لاگت والے ہارڈویئر کے ساتھ باریک بینی سے دوہاتھوں کی ہیرا پھیری سیکھنا، از ژاؤ، کمار، لیوین اور فن، arXiv، 23 اپریل 2023۔ یہ رگ 50 Hz پر ریکارڈ کرتی ہے جس میں چار ویب کیمز 480x640 ریزولوشن پر 30 fps پر سٹریم کرتی ہیں: دو گرپرز پر، ایک اوپر، ایک سامنے۔ خلاصہ میں 80 سے 90 percent کامیابی کے ساتھ چھ مہارتوں کا دعویٰ کیا گیا ہے، جن میں ایک شفاف کنڈیمنٹ کپ کھولنا اور بیٹری لگانا شامل ہے، جو 10 minutes کے مظاہروں سے حاصل کی گئی ہیں۔
ریکارڈنگ سیشن کی منصوبہ بندی کرتے وقت باڈی زیادہ مفید ہوتی ہے: ہر کام کے لیے 50 demonstrations، سوائے Thread Velcro کے 100 پر، جو کہ 10 to 20 minutes کا ڈیٹا اور ری سیٹ گننے کے بعد 30 to 60 minutes کا وال-کلاک ٹائم ہے۔ کامیابی بھی یکساں نہیں ہے: Thread Velcro 20 percent پر ختم ہوتا ہے، Put On Shoe 92 پر، Cup Open 84 پر، Prep Tape 64 پر۔
| ہائپر پیرامیٹر | ALOHA paper, Table III | مین پر لیرو بوٹ |
|---|---|---|
| لرننگ ریٹ | 1e-5 | optimizer_lr = 1e-5 |
| بیچ سائز | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| انکوڈر / ڈیکوڈر لیئرز | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| چنک سائز k | 100 | chunk_size = 100 |
| z کا لیٹنٹ ڈائمینشن | absent; Fig. 11 shows a 32 to 512 projection | latent_dim = 32 |
| ٹیمپورل اینسیمبلنگ | absent; --temporal_agg in the reference code | temporal_ensemble_coeff = None |
مقالے میں 7 ڈیکوڈر لیئرز درج ہیں، LeRobot جان بوجھ کر 1 فراہم کرتا ہے۔ `configuration_act.py` میں تبصرہ کہتا ہے کہ اصل امپلیمینٹیشن میں ایک بگ ہے جس کا مطلب ہے کہ صرف پہلی لیئر استعمال ہوتی ہے، tonyzhaozh/act میں ایشو 25 کا حوالہ دیتے ہوئے: ایکشن ہیڈ `hs[0]` پڑھتا ہے، لہذا تمام سات لیئرز چلتی ہیں لیکن صرف پہلی آؤٹ پٹ پیشین گوئی تک پہنچتی ہے۔ یہ ایشو 23 اپریل 2024 سے کھلا اور لاجواب ہے۔ LeRobot اس رویے سے مطابقت رکھتا ہے جس نے شائع شدہ نتائج پیدا کیے، نہ کہ چھپے ہوئے نمبر سے۔ `--policy.n_decoder_layers` کو بڑھائیں اور آپ ایک ایسا ماڈل تربیت دیں گے جس کا مقالے نے کبھی جائزہ نہیں لیا۔
ایکشن چنکنگ ہی اصل خیال ہے۔
عام رویے کی کلوننگ ایک مشاہدے کو ایک عمل سے جوڑتی ہے، اور غلطیاں بڑھتی جاتی ہیں: ایک انحراف بازو کو آف-ڈسٹریبیوشن کر دیتا ہے، جس سے ایک بدتر عمل پیدا ہوتا ہے، اور تیس قدموں کے بعد گریپر آبجیکٹ کے قریب کہیں نہیں ہوتا۔ ایکشن چنکنگ ایک ساتھ k اعمال کی پیش گوئی کرتا ہے اور انہیں انجام دیتا ہے، مؤثر افق کو k کے عنصر سے کم کرتا ہے۔ یہ انسانی ڈیٹا سے متعلق ایک پریشانی کو بھی سنبھالتا ہے: ٹیلی آپریٹرز وقفہ لیتے ہیں، اور ایک سنگل-اسٹیپ مارکووین پالیسی ایک ایسے وقفے کو ماڈل نہیں کر سکتا جو اس بات پر منحصر ہو کہ پہلے کیا ہوا تھا۔
مقالہ k کو ثابت کرنے کے بجائے اسے ابلیٹ کرتا ہے۔ ٹیمپورل اینسیمبلنگ بند ہونے کے ساتھ، چار سیٹنگز پر اوسطاً، کامیابی k = 1 پر 1 فیصد سے بڑھ کر k = 100 پر 44 فیصد ہو جاتی ہے، پھر 200 اور 400 پر کم ہوتی جاتی ہے جیسے ہی پالیسی اوپن-لوپ کنٹرول کے قریب پہنچتی ہے۔ یہ منحنی خطوط ہی وجہ ہے کہ ڈیفالٹ 100 ہے۔
- chunk_size: ڈیکوڈر فی فارورڈ پاس میں کتنی مستقبل کی کارروائیوں کی پیش گوئی کرتا ہے۔ ڈیفالٹ 100۔
- n_action_steps: دوبارہ استفسار کرنے سے پہلے آپ ان میں سے کتنے کو انجام دیتے ہیں۔ ڈیفالٹ 100، لہذا lerobot پورے چنک کو اوپن لوپ میں چلاتا ہے۔
- lerobot
n_action_steps <= chunk_sizeکی توثیق کرتا ہے اور اگر آپ اسے الٹا کرتے ہیں توValueErrorاٹھاتا ہے۔
آپریشنل طور پر جو چیز اہمیت رکھتی ہے وہ chunk_size کو فریم ریٹ سے تقسیم کرنا ہے۔ 30 fps پر lerobot کے SO-100 مثالیں استعمال کرتی ہیں، 100 کا ایک چنک ایک مشاہدے سے تقریباً 3.3 سیکنڈ کا عہد کرتا ہے۔ اگر کام کو اس ونڈو کے اندر تصحیح کی ضرورت ہو، تو n_action_steps کو کم کریں، نہ کہ chunk_size کو: آپ طویل پیش گوئی کو برقرار رکھتے ہیں اور زیادہ کثرت سے دوبارہ مشاہدہ کرتے ہیں۔
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--policy.chunk_size=100 \
--policy.n_action_steps=25 \
--policy.device=cuda--policy.temporal_ensemble_coeff سیٹ کریں اور lerobot کو n_action_steps = 1 کی ضرورت ہوتی ہے، بصورت دیگر NotImplementedError اٹھاتا ہے۔ اینسیمبلنگ ہر ٹائم سٹیپ پر پالیسی سے استفسار کرتا ہے اور اس ٹائم سٹیپ کے لیے اوورلیپنگ پیش گوئیوں کو وزن w_i = exp(-m * i) کے ساتھ ملاتا ہے، جس میں سب سے پرانے کو w_0 ملتا ہے۔ پیپر اسے ACT کے لیے 3.3 فیصد پر رکھتا ہے: حقیقی لیکن معمولی، اور یہ انفرنس کی گنتی کو چنک کی لمبائی سے ضرب دیتا ہے۔ 20 ms فی قدم پر سستی، 485 ms پر نہیں۔ انفرنس لیٹنسی دیکھیں۔
جب ACT ایک فاؤنڈیشن ماڈل کو مات دیتا ہے
پانچ قابل تربیت پالیسیاں ساتھ ساتھ، ان اعداد و شمار کے ساتھ جنہیں AY-Robots ماپتا ہے اور اپنے کرائے کے GPU کا سائز متعین کرنے کے لیے استعمال کرتا ہے۔
| پالیسی | فیملی | پیرامیٹرز | فی قدم | GPU ٹیر | کم از کم ایپی سوڈز | ڈیٹا سیٹ |
|---|---|---|---|---|---|---|
| ACT | Chunking transformer، شروع سے | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | کومپیکٹ VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA فاؤنڈیشن، ڈفیوژن ہیڈ | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | VLA فاؤنڈیشن، پیشرو | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | فلو-میچنگ VLA، دیکھیں فلو میچنگ | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- فی ایکشن سٹیپ 20 ملی سیکنڈ، پانچ میں سب سے تیز، 24 جی بی کارڈ پر نہ کہ A100 پر۔
- 3 B کلاس کے لیے 4 سے 12 کے مقابلے میں فی رن 1 سے 3 امریکی ڈالر۔
- اس نے جو رابطہ سے بھرپور کام دیکھا ہے اس پر درست: سلائیڈ زپ لاک اور سلاٹ بیٹری پر 88 اور 96 فیصد، جہاں پچھلے طریقے کبھی پہلے مرحلے کو عبور نہیں کر پائے۔
- زبان کی کوئی شرط نہیں: ٹاسک سٹرنگ کو نظر انداز کر دیا جاتا ہے، لہذا ایک چیک پوائنٹ ایک ٹاسک ہے۔
- کوئی سیمنٹک پرائرز نہیں: جو کچھ بھی یہ جانتا ہے وہ آپ کے 50 ایپی سوڈز سے آیا ہے۔
- محدود عمومیت: کیمرہ منتقل کریں اور آپ دوبارہ تربیت دے رہے ہیں۔
- یہ خاموشی سے ناکام ہو جاتا ہے: نقصان کم ہوتا ہے، بازو کچھ نہیں کرتا، لاگز کچھ نہیں کہتے۔
- رفتار کا فائدہ صرف اس صورت میں مدد کرتا ہے جب انفرنس سرووز کے ساتھ ہو۔
ACT کا انتخاب کریں جب ٹاسک اور منظر مقرر ہوں اور حرکت تیز اور درست ہونی چاہیے۔ ایک کا انتخاب کریں جب ایک چیک پوائنٹ کو کئی ہدایات کا احاطہ کرنا ہو۔ دو صفحات اس فیصلے پر آمنے سامنے کام کرتے ہیں: اور ۔ شائع شدہ بینچ مارکس کے لیے، ہر نمبر کو اس کے ماخذ سے جوڑتی ہے۔
شروع کرنے سے پہلے آپ کو کیا چاہیے
ایک فالوور بازو، کے لیے ایک لیڈر بازو، کم از کم ایک کیمرہ، ایک 24 جی بی جی پی یو۔ ACT صرف تصاویر اور جوائنٹ پوزیشنز پڑھتا ہے۔ دو کیمرے بہترین ہیں: چیزیں کہاں ہیں اس کے لیے ایک مقررہ سامنے کا منظر، اور ایک کلائی کیمرہ اس کے لیے کہ کس چیز کو چھونے والا ہے، جیسا کہ ALOHA پر ہے۔
| آرم | سرووز | وولٹیج | پرزوں کی لاگت | حیثیت |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | مکمل سپورٹ، ریفرنس آرم |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | مکمل سپورٹ |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | ہم آہنگ |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | ہم آہنگ |
SO-100 اور SO-101 Feetech STS3215 سرووز کو 7.4 V ریل پر چلاتے ہیں۔ انہیں 12 V فراہم کرنے سے وہ تباہ ہو جاتے ہیں، اتنی خاموشی سے کہ لوگ پہلے سافٹ ویئر کو مورد الزام ٹھہراتے ہیں، اور ایک Koch 12 V سپلائی SO-100 بورڈ پر جسمانی طور پر فٹ ہو جاتی ہے۔ لیبل چیک کریں۔ علامات: سروو جواب نہیں دے رہا، آرم جھٹکے لیتا ہے پھر ڈھیلا پڑ جاتا ہے۔ نیز SO-100 بمقابلہ SO-101۔
خالی آرم سے ریکارڈ شدہ ڈیٹا سیٹ تک
نیچے دیا گیا فلو lerobot 0.6.x ہے۔ اگر آپ کے پاس کیلیبریٹڈ آرم اور ڈیٹا سیٹ ہے تو اسے چھوڑ دیں۔ بصورت دیگر SO-100 شروع کرنے کی گائیڈ اسمبلی کا احاطہ کرتی ہے، ریکارڈنگ واک تھرو کیپچر کا احاطہ کرتا ہے اور ڈیٹا سیٹ دستاویزات فارمیٹ کا احاطہ کرتی ہے۔
- 1مناسب ایکسٹراز کے ساتھ lerobot انسٹال کریں
ریکارڈنگ کے لیے
core_scripts، ٹریننگ کے لیےtraining، Feetech سرووز کے لیےfeetechدرکار ہیں۔ Python 3.12+۔bashconda create -y -n lerobot python=3.12 conda activate lerobot conda install ffmpeg -c conda-forge pip install 'lerobot[core_scripts,training,feetech]' lerobot-info - 2ہر بازو کی USB پورٹ تلاش کریں
اسے دونوں بازوؤں کو پلگ ان کر کے چلائیں، جب کہا جائے تو ایک کو ان پلگ کر دیں۔ لینکس پر آپ کو نوڈ کی اجازتیں کھولنے کی ضرورت پڑ سکتی ہے۔
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3موٹر IDs اور باؤڈریٹ سیٹ کریں
SO-100 پر یہ اسمبلی سے پہلے ہوتا ہے: SO-101 کے برعکس، ایک بار بننے کے بعد کنیکٹرز تک رسائی ممکن نہیں ہوتی۔ اسکرپٹ گریپر سے ایک وقت میں ایک موٹر کو بس پر چلاتا ہے، اور IDs کو EEPROM میں لکھتا ہے۔
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4دونوں بازوؤں کو کیلیبریٹ کریں
ہر جوائنٹ کو اس کی رینج کے وسط میں سیٹ کریں، Enter دبائیں، پھر ہر ایک کو اس کی پوری رینج میں گھمائیں۔ کیلیبریشن ایک بازو پر تربیت یافتہ پالیسی کو دوسرے پر چلانے کی اجازت دیتی ہے۔ وہی
idدوبارہ استعمال کریں۔bashlerobot-calibrate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower lerobot-calibrate \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader - 5کیمروں کے ساتھ ایک بار ٹیلی آپریٹ کریں
lerobot کا انگوٹھا اصول: آپ کو صرف کیمرے کی تصاویر دیکھ کر کام کرنے کے قابل ہونا چاہیے۔ اگر آپ نہیں کر سکتے، تو ACT بھی نہیں کر سکتا۔ یہ بعد کی ڈیبگنگ کے مقابلے میں زیادہ خراب ڈیٹا سیٹس کو پکڑتا ہے۔
bashlerobot-teleoperate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --display_data=true - 650 ایپی سوڈز ریکارڈ کریں
50 AY-Robots کی کم از کم تعداد ہے اور ALOHA نے فی ٹاسک یہی استعمال کیا تھا۔ lerobot فی آبجیکٹ لوکیشن 10 کی سفارش کرتا ہے، کیمرے فکسڈ ہوں، گرفت مستقل ہو۔
nایک ایپی سوڈ ختم کرتا ہے،rدوبارہ ریکارڈ کرتا ہے،qروکتا ہے اور انکوڈ کرتا ہے۔bashHF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}') lerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --dataset.repo_id=${HF_USER}/so100_cube \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the black cube and put it in the bin" \ --display_data=true

ACT کے پاس پیچھے ہٹنے کے لیے کوئی سابقہ معلومات نہیں ہیں، لہذا ہر عدم مطابقت مستقل ہو جاتی ہے۔ تین سب سے مہنگی غلطیاں: ایپی سوڈ 20 اور 21 کے درمیان کیمرے کا ہل جانا، روشنی کا بدل جانا کیونکہ آپ نے آدھا سیٹ دوپہر میں ریکارڈ کیا، ایک گرفت جو دو طریقوں سے کی گئی۔ ہر ایک ایک بہترین نظر آنے والا نقصان کا منحنی خطوط اور ایک بازو دیتا ہے جو غلط جگہ پر جاتا ہے۔ دیکھیں نقصان کم ہوتا ہے، پالیسی کچھ نہیں کرتی، پالیسی صرف ایک سیٹ اپ میں کام کرتی ہے اور اعلیٰ معیار کا تربیتی ڈیٹا جمع کرنا۔
ٹریننگ سے پہلے، کم از کم پانچ ایپی سوڈز دوبارہ چلائیں۔ کیمرہ سٹریمز، جوائنٹ سٹیٹس اور ایکشنز فی میں محفوظ کرتا ہے، اور ری پلے ان ایکشنز کو بازو پر واپس دھکیلتا ہے۔ اگر ری پلے کام نہیں کرتا، تو ڈیٹا میں وہ شامل نہیں ہوتا اور ٹریننگ اسے ایجاد نہیں کرے گی۔
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0ACT پالیسی کی تربیت
یہ مکمل کمانڈ ہے۔ ACT سے متعلق ہر چیز پہلے سے ہی ڈیفالٹ ہے، یہی وجہ ہے کہ lerobot ACT صفحہ ان کے ساتھ شروع کرنے کا کہتا ہے۔
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--output_dir=outputs/train/act_so100_cube \
--job_name=act_so100_cube \
--policy.device=cuda \
--wandb.enable=true \
--policy.repo_id=${HF_USER}/act_so100_cube--policy.type=act ACTConfig کو لوڈ کرتا ہے، جو آپ کے ڈیٹا سیٹ میں ریکارڈ کیے گئے موٹرز اور کیمروں کی تعداد کے مطابق ڈھل جاتا ہے، لہذا آپ کو کبھی بھی آبزرویشن کی شکل کا اعلان نہیں کرنا پڑتا۔ --wandb.enable=true اختیاری ہے اور اس کے قابل ہے: 100000 قدموں کی رن میں لاس کرو واحد سستا سگنل ہے۔ شیڈول lerobot کی ٹرین کنفگ سے آتا ہے، ACTConfig سے نہیں: 100000 قدم، بیچ 8، سیڈ 1000، ایک چیک پوائنٹ ہر 20000 قدموں پر ایک، اور ہر 200 قدموں پر لاگنگ۔
ایک مکمل رن پانچ چیک پوائنٹ ڈائریکٹریز چھوڑتا ہے، 020000 سے 100000 تک، علاوہ ایک آخری سم لنک۔ ان سب کو رکھیں: بہترین پالیسی اکثر آخری والی نہیں ہوتی۔
| سیٹنگ | lerobot ڈیفالٹ | AY-Robots ACT فارم | تبصرہ |
|---|---|---|---|
| بیچ سائز | 8 | 8 | اگر آپ VRAM کی حدوں کو چھوتے ہیں تو پہلے اسے کم کریں۔ |
| لرننگ ریٹ | 1e-5 | 1e-5 | ALOHA پیپر جیسا ہی۔ |
| زیادہ سے زیادہ قدم | 100000 | 100000 | تقریباً وہ جگہ جہاں 50 ایپیسوڈ کا سیٹ بہتر ہونا بند کر دیتا ہے۔ |
| گریڈینٹ جمع کرنا | 1 | 1, does not apply | اس کے بجائے بیچ سائز تبدیل کریں۔ |
| سیڈ | 1000 | exposed | GR00T کے ٹائرو انٹری پوائنٹ میں کوئی سیڈ نہیں ہے؛ ACT رنز قابل تولید ہیں۔ |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, editable | پیش گوئی اور عمل درآمد کا افق۔ دوسرے کو کم کریں، پہلے کو نہیں۔ |
| چیک پوائنٹ فریکوئنسی | 20000 | not exposed | یہاں saveSteps ایک GR00T نوب ہے۔ |
بیچ سائز 8 پر ACT دو 640x480 کیمروں کے ساتھ 24 GB پر آرام سے فٹ ہو جاتا ہے۔ یہ اس وقت فٹ ہونا بند کر دیتا ہے جب لوگ رفتار کے لیے بیچ سائز بڑھاتے ہیں، یا اسے 1920x1080 فریمز فراہم کرتے ہیں جو ایک lerobot ریکارڈنگ مثال دکھاتی ہے۔ 1080p پر دو ResNet-18 بیک بونز کا میموری پروفائل بہت مختلف ہوتا ہے۔ بڑا کارڈ کرائے پر لینے سے پہلے --batch_size کو 4 پر گرا دیں۔ دیکھیں ٹریننگ میں میموری سے باہر ہونا۔
دورانیہ: پیپر میں 11 GB RTX 2080 Ti پر تقریباً 5 گھنٹے، lerobot کے ACT صفحہ کے مطابق 100k مراحل کے لیے چند گھنٹے، AY-Robots 24 GB ٹیر پر 2 سے 5 گھنٹے۔ اسے مختصر نہ کریں۔ ریفرنس ریپو کی README کے مطابق، ایک جھٹکے دار یا رک رک کر چلنے والی پالیسی کو عام طور پر مزید تربیت کی ضرورت ہوتی ہے، کیونکہ نقصان کے مستحکم ہونے کے بعد بھی کامیابی اور ہمواری بہتر ہوتی رہتی ہے: حقیقی دنیا کے ڈیٹا کے لیے اسے کم از کم 5000 ای پوکس، یا مستحکم ہونے کے بعد دوبارہ 3 سے 4 گنا زیادہ دورانیہ درکار ہوتا ہے۔
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueتربیت یافتہ پالیسی کو بازو پر چلانا
تعیناتی میں lerobot-rollout استعمال ہوتا ہے۔ کیمرہ کیز ریکارڈ شدہ کیز سے مماثل ہونی چاہئیں: ایک پالیسی جو front اور wrist پر تربیت یافتہ ہے وہ cam0 اور cam1 کو قبول نہیں کرے گی، اور rename_map مدد نہیں کرتا، کیونکہ اسے ایک پری ٹرینڈ چیک پوائنٹ کی ضرورت ہوتی ہے۔ ٹاسک سٹرنگ کو چھوڑا جا سکتا ہے؛ lerobot کی اپنی مثال اسے ACT کے لیے قابلِ گریز قرار دیتی ہے۔
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/act_so100_cube \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
--display_data=true \
--duration=60تشخیص پہلے lerobot-record --policy.path=... کے ذریعے چلائی جاتی تھی۔ 0.6.x میں یہ lerobot-rollout ہے جس میں --strategy.type سلیکٹر ہے: base، sentry (خودکار اپ لوڈ کے ساتھ ریکارڈنگ)، highlight (کی اسٹروک کے ذریعے محفوظ کردہ رنگ بفر)، dagger (لوپ میں انسان) اور episodic۔ 23 اگست 2026 تک ACT دستاویزات کا صفحہ اب بھی lerobot-rollout چلانے والے بلاک کے بالکل اوپر "lerobot-record کمانڈ کا استعمال کرتے ہوئے" کہتا ہے۔ جملے کی بجائے کمانڈ کی پیروی کریں۔
حتمی ماڈل کی بجائے ایک چیک پوائنٹ کو پن کرنے کے لیے، شامل کریں --policy.pretrained_revision۔ اس کے لیے رن کا آغاز --save_checkpoint_to_hub=true کے ساتھ ہونا ضروری ہے، جو کہ بطور ڈیفالٹ بند ہوتا ہے: اس کے بغیر lerobot صرف حتمی ماڈل کو پش کرتا ہے اور کچھ نہیں۔ اس کے ساتھ، ہر چیک پوائنٹ کو اس کے زیرو پیڈڈ سٹیپ کے ساتھ ٹیگ کیا جاتا ہے، لہٰذا --policy.pretrained_revision=060000 60000 سٹیپ والے کو بازیافت کرتا ہے۔ اسے حقیقی بازو پر 100000 کے مقابلے میں جانچنا سب سے سستا دستیاب تجربہ ہے۔
ایک ہی چیک پوائنٹ تک پہنچنے کے دو راستے
اوپر بیان کردہ تمام طریقہ کار دستی ہے اور یہ کام کرتا ہے۔ پلیٹ فارم کا طریقہ کار GPU یا پائتھون ماحول کی ملکیت نہ ہونے کے بدلے کنٹرول کو قربان کرتا ہے۔
core_scripts،training،feetech، ffmpeg کے ساتھ lerobot 0.6.x انسٹال کریں۔- پورٹس تلاش کریں، موٹر آئی ڈیز سیٹ کریں، دونوں بازوؤں کو کیلیبریٹ کریں، 50 ایپی سوڈز ریکارڈ کریں۔
- ڈیٹا میں ٹاسک کی موجودگی کی تصدیق کے لیے چند ایپی سوڈز دوبارہ چلائیں۔
- 24 GB GPU کرائے پر لیں یا خریدیں، CUDA اور PyTorch کو میچ کریں،
lerobot-train --policy.type=actچلائیں۔ - چند گھنٹے انتظار کریں، پھر بازو والی مشین پر
lerobot-rolloutچلائیں۔
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
--teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
--dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
--dataset.single_task="Grab the black cube"
lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
--output_dir=outputs/train/act_so100_cube --policy.device=cudaمکمل کنٹرول: configuration_act.py میں ترمیم کریں، ایک کیمرہ شامل کریں، ٹرینر کو فورک کریں۔ کسی ٹاسک کو بھیجنے کے بجائے تحقیق کے لیے، ایک پلیٹ فارم توجہ ہٹانے کا باعث ہے۔
- ڈیسک ٹاپ کلائنٹ کے ساتھ ریکارڈ کریں، یا Hugging Face repo id یا مقامی ڈیٹا سیٹ لائیں۔
- ACT on SO-100 گائیڈ کھولیں اور ماڈل اور ڈیٹا سیٹ کا انتخاب کریں۔ ڈیفالٹس lerobot والے ہیں؛ chunkSize، nActionSteps، seed اور logFreq قابل ترمیم ہیں۔
- بیک اینڈ VRAM کے سائز کا ایک GPU کرائے پر لیتا ہے اور چیک پوائنٹس کو آبجیکٹ اسٹوریج میں لکھتا ہے۔
- پھر
/api/inference/podپالیسی کو مقامی روبوٹ کلائنٹ کو فراہم کرتا ہے۔ ایک بیکار واچ ڈاگ پوڈ کو تباہ کر دیتا ہے، لہذا کوئی بھی بل خاموشی سے نہیں بنتا۔ - یہی آپریشنز CLI، MCP سرور اور ٹریننگ دستاویزات میں موجود ہیں۔
یہ آپ کے ڈیٹا کو درست نہیں کرتا: ایک منتقل شدہ کیمرے والا ڈیٹا سیٹ یہاں بھی اتنا ہی خراب تربیت پاتا ہے، اور فارم اسے پہچان نہیں سکتا۔ نہ ہی یہ لیٹنسی کے مسئلے کو حل کرتا ہے۔ کنٹرول لوپ فی ایکشن سٹیپ 20 سے 485 ms ہے، جس میں پبلک انٹرنیٹ راؤنڈ ٹرپس بھی شامل ہیں، اور ACT کو سب سے زیادہ نقصان ہوتا ہے کیونکہ اس کا سٹیپ سب سے چھوٹا ہے: 60 ms، Pi0.5 کے 485 ms پر 12 فیصد سست روی ہے لیکن ACT کے 20 ms پر چار گنا سٹیپ ہے۔ ریموٹ انفرنس سست پک اینڈ پلیس کے لیے موزوں ہے، تیز ری ایکٹو حرکت کے لیے نہیں۔

اصل میں کیا غلط ہوتا ہے
تقریباً تمام مشکلات ٹریننگ کمانڈ میں نہیں ہیں۔ بلکہ یہ اس کے ارد گرد کی چیزوں میں ہیں، اس ترتیب سے کہ وہ پہلی بار کتنی بار مسئلہ بنتی ہیں۔
| علامت | عام وجہ | صفحہ |
|---|---|---|
| lerobot-find-port shows nothing | ڈرائیور، کیبل یا نوڈ کی اجازتیں | آرم کا پتہ نہیں چلا |
| Camera missing at record time | ریبوٹ پر انڈیکس تبدیل ہو گیا، یا ایک USB کنٹرولر پر دو کیمرے | کیمرہ کا پتہ نہیں چلا |
| Training rejects the dataset | ACT wants v3.0, GR00T needs v2.1 | ڈیٹا سیٹ v3 کے طور پر مسترد کر دیا گیا |
| CUDA out of memory | بیچ کا سائز بڑھا دیا گیا، یا 480p کے بجائے 1080p فریمز | ٹریننگ میں میموری ختم |
| Loss looks great, arm does nothing | ڈیٹا میں ٹاسک کی کمی ہے، یا کیمرہ حرکت کر گیا | لاس گرتا ہے، پالیسی کچھ نہیں کرتی |
| Jerky motion or a pause mid-episode | کم تربیت یافتہ، ایک چنک باؤنڈری اسٹال، یا ٹائم آؤٹ انفرنس کال | پالیسی حرکت کے درمیان جم جاتی ہے |
دو قطاریں خاص توجہ کی مستحق ہیں۔ ACT LeRobot v3.0 پر تربیت حاصل کرتا ہے جبکہ GR00T کا لوڈر اس پر کریش ہو جاتا ہے اور اسے v2.1 کی ضرورت ہوتی ہے، لہذا ایک ڈیٹا سیٹ جو ACT کو تربیت دیتا ہے وہ GR00T رن کو ناکام کر سکتا ہے۔ اور آخری قطار میں دو حل ہیں: ACT کے مصنفین جھٹکے دار حرکت کا جواب مزید تربیت سے دیتے ہیں، جبکہ n_action_steps کو 100 پر رکھنے سے ایک حقیقی اسٹال چنک باؤنڈری پر ہوتا ہے، جو 30 fps پر ہر 3.3 سیکنڈ میں ایک واضح وقفہ ہے۔ مزید دو باتیں جاننے کے لیے: ایک واحد مردہ جوائنٹ عام طور پر ایک سروو آئی ڈی ہے جو کبھی نہیں لکھی گئی، اور ایک گریپر جو قریب آتا ہے لیکن کبھی بند نہیں ہوتا کا مطلب مظاہروں میں گریپر کی رینج بہت کم ہے۔ مکمل انڈیکس: ناکامی کے موڈ کے صفحات۔
ایک رن کی لاگت کیا ہے
| درجہ | ماڈلز | چلنے کا وقت | فی گھنٹہ قیمت | فی رن لاگت |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 to 5 گھنٹے | 0.30 to 0.60 USD | تقریباً 1 to 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 گھنٹے | 1.20 to 2.00 USD | تقریباً 4 to 12 USD |
یہ ACT سے شروع کرنے کی دلیل ہے، چاہے آپ بعد میں VLA چاہتے ہوں۔ ایک ناکام ACT رن کی قیمت ایک کافی کے برابر ہوتی ہے اور یہ آپ کو گھنٹوں کے اندر بتا دیتا ہے کہ آیا آپ کے ڈیٹا سیٹ میں وہ کام شامل ہے۔ ایک ناکام GR00T رن کی قیمت اسی سبق کے لیے چار گنا زیادہ ہے۔ اس کے بعد GR00T N1.7 یا SmolVLA بعد میں ایک شکل کی تبدیلی ہے، دوبارہ تعمیر نہیں۔ پس منظر: وژن-لینگویج-ایکشن ماڈلز، مکمل SO-100 گائیڈ، اپنی پہلی پالیسی کو تربیت دیں اور نقلی سیکھنا۔ کوئی بازو نہیں؟ لائیو صفحہ ایک حقیقی SO-100 کو بغیر سائن اپ کیے چلانے کے لیے سٹریم کرتا ہے۔
اپنے SO-100 پر ACT کو تربیت دیں
اس مخصوص امتزاج کے لیے گائیڈ: ڈیفالٹس، GPU ٹیر اور ایک رن کی لاگت۔ ڈیٹا سیٹ کا انتخاب کریں، بیک اینڈ کارڈ کرائے پر لیتا ہے اور چیک پوائنٹس لکھتا ہے۔
تربیتی گائیڈ کھولیںکیا کوئی پری ٹرینڈ ACT ماڈل ہے جسے میں اس کے بجائے فائن ٹیون کر سکتا ہوں؟▾
نہیں۔ ACT کا کوئی بنیادی ماڈل نہیں ہے؛ یہ صرف آپ کی تربیت کے بعد موجود ہوتا ہے۔ یہ ٹولنگ میں کوئی خامی نہیں ہے، یہ وہی ہے جو ACT ہے: مقالہ ہر کام کے لیے شروع سے ایک پالیسی کو تربیت دیتا ہے۔ وینڈر چیک پوائنٹ کے لیے، GR00T N1.7 یا Pi0.5 استعمال کریں۔
مجھے واقعی کتنے ایپیسوڈز کی ضرورت ہے؟▾
50: جو ALOHA نے فی ٹاسک ریکارڈ کیا (تھریڈ ویلکرو کے لیے 100، جو اس کا سب سے مشکل ہے) اور AY-Robots کا کم از کم۔ lerobot ہر آبجیکٹ کی جگہ کے لیے تقریباً 10 کا مشورہ دیتا ہے، کیمرے فکسڈ، گرفت مستقل۔ پچاس صاف ایپیسوڈز سو ایسے ایپیسوڈز سے بہتر ہیں جہاں کیمرہ حرکت میں آیا۔
کیا مجھے chunk_size کو 100 سے تبدیل کرنا چاہیے؟▾
عام طور پر نہیں۔ ایبلیشن k = 1 پر 1 فیصد سے بڑھ کر k = 100 پر 44 فیصد تک پہنچ جاتی ہے اور اس کے بعد کم ہوتی جاتی ہے، لہذا 100 سب سے اوپر کے قریب ہے۔ اگر بازو بہت زیادہ دیر تک مصروف رہتا ہے، تو اس کے بجائے n_action_steps کو کم کریں: 30 fps پر، 25 دوبارہ استفسارات ہر 0.8 سیکنڈ میں۔
ایک تربیتی رن میں کتنا وقت لگتا ہے، اور کیا میں اسے جلدی روک سکتا ہوں؟▾
100000 سٹیپس کے لیے 24 GB کارڈ پر دو سے پانچ گھنٹے۔ چیک پوائنٹس ہر 20000 سٹیپس پر بنتے ہیں اور --resume=true ایک رن کو دوبارہ شروع کرتا ہے، لہذا جلدی روکنا محفوظ ہے۔ بس پہلے فلیٹ حصے پر نہیں: نقصان کے مستحکم ہونے کے بعد ہمواری بہتر ہوتی ہے۔
نقصان کم ہو گیا اور بازو اب بھی ناکام ہو رہا ہے۔ اب کیا؟▾
تقریباً ہمیشہ ڈیٹا سیٹ۔ بازو پر ریکارڈ شدہ ایپیسوڈز کو دوبارہ چلائیں: اگر ری پلے کام نہیں کرتا، تو ڈیٹا میں وہ شامل نہیں ہے۔ پھر چیک کریں کہ کیا کچھ حرکت میں آیا، خاص طور پر کیمرہ۔ ACT کے کوئی پیشگی علم نہیں ہیں، لہذا ایپیسوڈ 21 پر ایک معمولی حرکت مستقل ہے۔
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started