
SmolVLA ایک 450 M پیرامیٹر VLA ہے جو ایک ہی 24 GB کارڈ پر فائن ٹیون ہوتا ہے۔ حقیقی lerobot 0.6.1 کمانڈز، اصل ڈیفالٹس، وہ مشکلات جن پر ایک دن صرف ہوتا ہے، اور ایک رن کی لاگت کیا ہے۔
ایک سکرین میں SmolVLA
- •450 M پیرامیٹرز، جن میں سے تقریباً 100 M ایک فلو میچنگ ایکشن ایکسپرٹ ہیں۔ lerobot صرف اس ایکسپرٹ کو تربیت دیتا ہے اور VLM کو منجمد رکھتا ہے، یہی وجہ ہے کہ یہ ایک کارڈ پر فٹ ہو جاتا ہے۔
- •LeRobot کی کمپیوٹ گائیڈ smolvla گروپ کو AdamW کے ساتھ بیچ 8 پر تقریباً 10 سے 16 GB کی چوٹی VRAM پر رکھتی ہے۔ لہذا 24 GB۔
- •اینٹری پوائنٹ lerobot-train ہے۔ جون 2025 کی SmolVLA بلاگ پوسٹ اب بھی python lerobot/scripts/train.py پرنٹ کرتی ہے، ایک ایسا راستہ جو اب موجود نہیں ہے۔ نیچے دی گئی تمام معلومات lerobot 0.6.1 کے مطابق ہیں۔
- •کوسائن شیڈول 30000 سٹیپس پر زوال پذیر ہونے کے لیے پہلے سے سیٹ ہے۔ lerobot 0.6.1 اسے ایک مختصر رن کے لیے نیچے کی طرف ری اسکیل کرتا ہے اور اسے لاگ کرتا ہے، لیکن کبھی اوپر نہیں: اسٹاک 100000 سٹیپ رن 70000 سٹیپس کے لیے 2.5e-6 فلور پر ختم ہوتا ہے۔
- •تیس ایپی سوڈز AY-Robots کی کم از کم حد ہیں، 24 GB ٹیر پر جس کی لاگت 1 سے 3 USD فی رن ہے جبکہ 80 GB ماڈلز کے لیے 4 سے 12 USD ہے۔
زیادہ تر لوگ جو ایک ویژن لینگویج ایکشن ماڈل کو ایک حقیقی بازو پر چاہتے ہیں وہ ہارڈویئر کی حد پر رک جاتے ہیں۔ GR00T N1.7 اور Pi0.5 ہر ایک تقریباً تین ارب پیرامیٹرز کے حامل ہیں اور انہیں A100 80 GB یا H100 کی ضرورت ہوتی ہے۔ اگر آپ کے پاس RTX 4090 کے ساتھ ایک گیمنگ پی سی ہے، تو یہ راستے کا اختتام ہے۔ SmolVLA ایک استثناء ہے: 450 M پیرامیٹرز، LeRobot کے اندر، جو ایک کنزیومر کارڈ پر فائن ٹیون کرنے اور CPU سے سروس فراہم کرنے کے لیے بنایا گیا ہے۔
پہلے دستی راستہ: lerobot انسٹال کریں، lerobot/smolvla_base چیک پوائنٹ کھینچیں، اصلی کمانڈ چلائیں، اور چلتے ہوئے رن کو پڑھیں۔ پھر پلیٹ فارم کا راستہ، اور جہاں یہ مدد نہیں کرتا۔
SmolVLA کیا ہے، ان اعداد میں جنہیں آپ چیک کر سکتے ہیں
SmolVLA ایک فلو میچنگ پالیسی ہے جو ایک چھوٹے ویژن لینگویج ماڈل پر نصب ہے۔ اس کا بنیادی ڈھانچہ SmolVLM2-500M-Video-Instruct ہے؛ مقالے میں اس کے لینگویج ماڈل کی صرف پہلی 16 تہوں کو رکھا گیا ہے، ہر کیمرہ فریم کو امیج ٹائلنگ کے بجائے پکسل شفل کے ساتھ 64 بصری ٹوکنز تک محدود کیا گیا ہے، اور ہر دوسرے بلاک میں کراس اٹینشن کو سیلف اٹینشن لیئر کے ساتھ ملایا گیا ہے۔ انفرنس کی لاگت ایک ڈیزائن کی رکاوٹ تھی، نہ کہ بعد کی سوچ۔
| خاصیت | قدر | ماخذ |
|---|---|---|
| کل پیرامیٹرز | about 450 M | مقالہ |
| ایکشن ایکسپرٹ | about 100 M, flow matching | مقالہ |
| VLM بنیادی ڈھانچہ | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| استعمال شدہ VLM تہیں | لینگویج ماڈل کی پہلی 16 | num_vlm_layers = 16 |
| فی فریم بصری ٹوکنز | 64, pixel shuffle, no tiling | مقالہ |
| پری ٹریننگ | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | مقالہ |
بینچ مارکس ہی وہ وجہ ہیں کہ لوگ 450 ملین ماڈل پر کیوں توجہ دیتے ہیں۔ LIBERO پر یہ 7 B کے OpenVLA کے 76.5 کے مقابلے میں اوسطاً 87.3 فیصد اور 3.3 B کے روبوٹکس پری ٹرینڈ Pi0 کے 86.0 کے مقابلے میں اوسطاً 87.3 فیصد حاصل کرتا ہے؛ Meta-World پر، 47.9 کے مقابلے میں 57.3۔ حقیقی SO-100 ہارڈویئر پر، ملٹی ٹاسک ٹریننگ پک اینڈ پلیس پر 75 فیصد، اسٹیکنگ پر 90، سارٹنگ پر 70، اوسطاً 78.3 دیتی ہے، جہاں ACT فی ٹاسک تربیت یافتہ اوسطاً 48.3 حاصل کرتا ہے۔ یہی قطاریں ہر شائع شدہ VLA کے ساتھ موجود ہیں SmolVLA ایرینا انٹری اور ACT بمقابلہ SmolVLA موازنہ۔
SmolVLA ہر چیز میں 3 B ماڈل سے بہتر نہیں ہے۔ مقالے کی اپنی SO-101 ٹیبل ہی بتاتی ہے: تقسیم میں 90 فیصد کامیابی، اس سے باہر 50 فیصد، ایک ایسے پلیٹ فارم پر جس پر اسے کبھی پری ٹرین نہیں کیا گیا تھا۔ جو یہ دعویٰ کرتا ہے، اور اس کی حمایت کرتا ہے، وہ یہ ہے کہ Pi0 کے مقابلے میں یہ 6 گنا کم میموری پر تقریباً 40 فیصد تیزی سے تربیت حاصل کرتا ہے۔
24 GB کارڈ پہلی بار چلانے کے لیے صحیح انتخاب کیوں ہے
LeRobot ایک کمپیوٹ سائزنگ گائیڈ فراہم کرتا ہے، جو اس کے لیے ریپو میں سب سے مفید صفحہ ہے۔ یہ پالیسیوں کو بیک بون سائز کے لحاظ سے گروپ کرتا ہے اور ہر گروپ کے لیے ایک VRAM انویلپ دیتا ہے، جسے بیچ سائز 8 پر AdamW کے ساتھ ماپا جاتا ہے، جو lerobot کا ڈیفالٹ ہے۔ آپٹیمائزر کی حالت اکیلے ایک سادہ فارورڈ اور بیکورڈ پاس پر 30 سے 100 فیصد کا اضافہ کرتی ہے، لہذا یہ صرف وزن کے اعداد و شمار نہیں ہیں۔
| گروپ | پالیسیاں | پیک VRAM (بیچ 8، AdamW) | اسٹارٹر GPUs |
|---|---|---|---|
| لائٹ BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| ڈیفیوژن | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| چھوٹا VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| بڑا VLA | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| ملٹی موڈل | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
بیچ 8 پر دس سے سولہ گیگا بائٹس کا دلیل یہ ہے: ایک 24 GB کارڈ اس کے علاوہ ڈیٹا لوڈر کو بھی فٹ کرتا ہے۔ AY-Robots SmolVLA کو RTX 4090 یا کسی بھی 24 GB کارڈ پر رکھتا ہے، کم از کم 30 ایپیسوڈز، LeRobot v3.0 ڈیٹا، 245 ms فی ایکشن سٹیپ۔ کرائے پر، یہ 0.30 سے 0.60 USD فی گھنٹہ کے حساب سے 2 سے 5 گھنٹے بنتے ہیں، تقریباً 1 سے 3 USD فی فائن ٹیوننگ رن، 80 GB ٹیر پر GR00T اور Pi0.5 کو درکار 4 سے 12 USD کے مقابلے میں (قیمتوں کا تعین)۔ ایک ناکام SmolVLA رن ایک کافی ہے؛ ایک ناکام GR00T رن، دوپہر کا کھانا ہے۔

- ایسے ہارڈ ویئر پر فٹ بیٹھتا ہے جو آپ کے پاس پہلے سے موجود ہو سکتا ہے: بیچ 8 پر تقریباً 10 سے 16 GB۔
- ایک ضائع شدہ رن میں گھنٹوں اور چند ڈالرز لگتے ہیں، لہذا آپ ڈیٹا سیٹ کے بارے میں غلط ہونے کا متحمل ہو سکتے ہیں۔
- lerobot ٹیگ کے تحت شیئر کیے گئے کمیونٹی ڈیٹا سیٹس پر پری ٹرین کیا گیا ہے، جس میں حقیقی SO-100 اور SO-101 نتائج شامل ہیں۔
- یہ خود lerobot میں رہتا ہے: کوئی وینڈر ریپو نہیں، اور smolvla_base گیٹڈ نہیں ہے۔
- 450 M اب بھی 450 M ہے: پیپر کی SO-101 جدول میں آؤٹ آف ڈسٹری بیوشن کامیابی 90 سے 50 فیصد تک گر جاتی ہے۔
- اسے LeRobot v3.0 ڈیٹا درکار ہے؛ v2.1 ریکارڈنگ کو تبدیل کرنا ہوگا (ڈیٹا سیٹ مسترد شدہ v3)۔
- فی ایکشن سٹیپ 245 ms ایک قابل پک اینڈ پلیس کنٹرولر ہے، نہ کہ ری ایکٹو۔
- دستاویزات کی مثال A100 پر بیچ 64 چلاتی ہے؛ 24 GB پر آپ بیچ کو وال کلاک کے لیے تبدیل کرتے ہیں۔
مرحلہ 0: ڈیٹا سیٹ رن کا فیصلہ کرتا ہے، نہ کہ فلیگز
اگر ریکارڈنگ خراب ہے تو نیچے کچھ بھی اہمیت نہیں رکھتا۔ LeRobot SmolVLA صفحہ واضح ہے: حوالہ ڈیٹا سیٹ 5 کیوب پوزیشنز پر 50 ایپی سوڈز پر مشتمل تھا، ہر پوزیشن پر 10، اور 25 ایپی سوڈز پر وہی کام بری طرح انجام دیا گیا۔ ہر تغیر کی تکرار عمومی بناتی ہے، خام ایپی سوڈ کی گنتی نہیں۔ کبھی ریکارڈ نہیں کیا؟ یہاں سے شروع کریں اپنا پہلا ڈیٹا سیٹ ریکارڈ کریں کے ساتھ ڈیسک ٹاپ کلائنٹ، جو ایک ٹیلی آپریشن سیشن سے LeRobot فارمیٹ لکھتا ہے، یا ڈیٹا سیٹ ڈائریکٹری سے ایک ادھار لیں۔
- AY-Robots پر کم از کم 30 ایپی سوڈز، LeRobot ریفرنس ریسیپی کے لیے تقریباً 50۔
- ہر وہ تغیر جو آپ رول آؤٹ پر توقع کرتے ہیں، کئی بار دہرایا جائے۔
- ایک ٹاسک سٹرنگ، ریکارڈ اور رول آؤٹ کے وقت یکساں طور پر لکھی جائے۔ ماڈل اس متن پر مشروط ہے۔
- مستقل کیمرے۔ ریکارڈنگ اور رول آؤٹ کے درمیان منتقل کیا گیا کیمرہ سب سے عام وجہ ہے کہ ایک صاف لاس کرو ایک بے حرکت بازو دیتا ہے۔
- ایک ایسا تغیر جسے آپ نے کبھی تربیت نہیں دی، تاکہ آپ کے پاس جانچنے کے لیے کچھ ایماندارانہ ہو۔
SmolVLA، Pi0.5 اور ACT کو LeRobot v3.0 درکار ہے۔ GR00T N1.7 اور N1.5 کو v2.0 یا v2.1 درکار ہے اور ان کا لوڈر v3.0 پر کریش ہو جاتا ہے۔ ایک بار ریکارڈ کریں، بعد میں ماڈلز کا موازنہ کرنے کا منصوبہ بنائیں، اور آپ کسی نہ کسی طرح تبدیل کریں گے: ڈیٹا سیٹ v3 مسترد کر دیا گیا۔
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_placeاس بارے میں مزید یہاں ہے اعلیٰ معیار کا VLA تربیتی ڈیٹا کیسے جمع کیا جائے۔ مختصر ورژن: ایک کام کے 30 سے 50 صاف ایپی سوڈز، جان بوجھ کر تغیر کے ساتھ، تین کے 200 لاپرواہ ایپی سوڈز کو اس فرق سے ہرا دیتے ہیں جسے کوئی ہائپر پیرامیٹر بند نہیں کر سکتا۔
lerobot 0.6.1 انسٹال کریں
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot
# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge
# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'
# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-infoبنیادی lerobot انسٹال پتلا ہے اور بھاری انحصار کو اضافی پیکجز کے پیچھے رکھتا ہے: smolvla ٹرانسفارمرز، num2words اور accelerate شامل کرتا ہے، training ڈیٹا سیٹ اسٹیک اور wandb، core_scripts ہارڈویئر اور ویژولائزیشن کے انحصار۔ لینکس پر انسٹالیشن کا راستہ آپ کے CUDA وہیل کا بھی تعین کرتا ہے: PyPI کا ڈیفالٹ cu130 وہیل ہے جس میں ڈرائیور کی کم از کم حد 580.65 ہے، لہذا پرانے ڈرائیور پر پہلے cu128 انڈیکس سے ٹارچ انسٹال کریں، پھر lerobot۔
--policy.path=lerobot/smolvla_base پہلے سے تربیت یافتہ 450 M چیک پوائنٹ کو لوڈ کرتا ہے اور اسے فائن ٹیون کرتا ہے۔ --policy.type=smolvla ایک نیا SmolVLA بناتا ہے، اور کنفگ کا ڈیفالٹ load_vlm_weights = False کا مطلب ہے کہ یہ SmolVLM2 کے بیک بون وزن کو بھی نہیں کھینچتا جب تک کہ آپ نہ کہیں۔ اگر آپ اسے غلط کرتے ہیں تو رن خوشی سے تربیت پاتا ہے، لاگت وہی رہتی ہے، اور کچھ بھی قابل منتقلی نہیں سیکھتا۔
ٹریننگ رن، کمانڈ بہ کمانڈ
- 1ہب کے خلاف تصدیق کریں
بیس چیک پوائنٹ ہب سے آتا ہے، اور آپ کا ڈیٹا سیٹ بھی شاید وہیں سے آتا ہے۔
bashhf auth login - 2آپشنز کو ایک بار پڑھیں
پائپ لائن اور پالیسی کنفگ کا ہر فیلڈ ایک فلیگ ہے۔ سورس میں گہرائی میں جانے سے پہلے اسے سرسری طور پر دیکھ لیں۔
bashlerobot-train --help - 3فائن ٹیون شروع کریں
دستاویزات کی مثال ایک A100 پر بیچ 64 چلاتی ہے؛ کمپیوٹ گائیڈ کا اپنا A100 40 GB اینکر بیچ 16 ہے، اور 8، 24 GB کے برابر ہے۔ یہاں جان بوجھ کر کوئی شیڈیولر فلیگ نہیں ہے، نیچے دیکھیں۔
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/so100_pick_place \ --batch_size=8 \ --steps=20000 \ --save_freq=2000 \ --log_freq=200 \ --seed=1000 \ --output_dir=outputs/train/smolvla_pick_place \ --job_name=smolvla_pick_place \ --policy.device=cuda \ --wandb.enable=true - 4صرف لاس نہیں، لاگ لائن پڑھیں
ہر --log_freq سٹیپس پر lerobot loss, grdn, lr, updt_s, data_s, smp/s اور، CUDA پر، mem_gb پرنٹ کرتا ہے۔ mem_gb بتاتا ہے کہ آیا بیچ فٹ ہوتا ہے، lr بتاتا ہے کہ آیا شیڈیول کم ہو رہا ہے، اور data_s کا updt_s کے قریب آنا اس بات کا مطلب ہے کہ ڈیٹا لوڈر رکاوٹ ہے، نہ کہ GPU۔
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5چیک پوائنٹس جمع کریں جن کا آپ موازنہ کر سکیں
save_freq کا ڈیفالٹ 20000 ہے، لہذا 20000 سٹیپ کا رن ایک چیک پوائنٹ چھوڑتا ہے اور اس کے مقابلے کے لیے کچھ نہیں۔ اسے 2000 پر سیٹ کریں۔ ہب پر پش کرنے کے لیے --policy.repo_id کی ضرورت ہے۔
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6اگر مشین بند ہو جائے تو دوبارہ شروع کریں
--config_path کو چیک پوائنٹ کے ساتھ موجود train_config.json کی طرف اشارہ کریں۔ lerobot کسی موجودہ output_dir میں شروع ہونے سے انکار کرتا ہے جب تک کہ آپ دوبارہ شروع نہ کر رہے ہوں، لہذا آپ غلطی سے کسی رن کو اوور رائٹ نہیں کر سکتے۔
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
وہ فلیگز جو دراصل نتائج کو تبدیل کرتے ہیں
| فلیگ | یہ کیا کرتا ہے | 24 GB پر |
|---|---|---|
| --batch_size | ہر سٹیپ پر نمونے، VRAM میں تقریباً لکیری | 4 to 8 |
| --steps | کل آپٹیمائزر سٹیپس | 20000 first pass |
| --policy.scheduler_decay_steps | کوسائن ڈیکے کی لمبائی، پہلے سے سیٹ 30000 | صرف 30000 سے اوپر اثر انداز ہوتا ہے |
| --policy.use_amp | مکسڈ پریسیشن؛ SmolVLA میں کوئی dtype فیلڈ نہیں ہے | جب میموری کم ہو تو true |
| --num_workers | ڈیٹا لوڈر کے عمل، ڈیفالٹ 4 | بڑھائیں جب تک data_s بڑھنا بند نہ کر دے |
| --dataset.eval_split | ہر ٹاسک کے لیے روکے گئے ایپی سوڈز کا حصہ | 0.1, with --eval_steps |
| --policy.freeze_vision_encoder | ویژن ٹاور کو منجمد رکھتا ہے | true on 24 GB |
| --policy.train_expert_only | صرف ~100 M ماہر کو گریڈینٹس ملتے ہیں | true first |
SmolVLA ایک کوسائن شیڈول پری سیٹ کرتا ہے: scheduler_warmup_steps = 1000، scheduler_decay_steps = 30000، scheduler_decay_lr = 2.5e-6۔ پرانی نصیحت کے مطابق 20000 سٹیپ کا رن اس لیے درمیانی زوال میں رک جاتا ہے۔ 0.6.1 میں ایسا نہیں ہوتا: CosineDecayWithWarmupSchedulerConfig.build() کو --steps دیا جاتا ہے، اور num_decay_steps کے نیچے یہ دونوں کو دوبارہ پیمانہ کرتا ہے، وارم اپ 1000 سے 666 اور زوال 30000 سے 20000 تک، ایسا کرتے ہوئے Auto-scaling LR scheduler پرنٹ کرتا ہے۔ یہ کبھی اوپر کی طرف دوبارہ پیمانہ نہیں کرتا: زوال کو min(current_step, decay_steps) کے ساتھ کلیمپ کیا جاتا ہے، لہذا سٹاک --steps=100000 سٹیپ 30000 سے آخر تک، رن کے 70 فیصد حصے کے لیے، فرش پر رہتا ہے۔ صرف اس لمبے حصے کو اب بھی --policy.scheduler_decay_steps کی ضرورت ہے۔ lr کالم وہ جگہ ہے جہاں آپ چیک کرتے ہیں۔
وہ ڈیفالٹس جو آپ کو ورثے میں ملتے ہیں اگر آپ کچھ نہیں چھوتے
ایک کنفگ lerobot میں اپنا آپٹیمائزر اور شیڈولر پری سیٹ رکھتا ہے، اور جب تک آپ use_policy_training_preset=false سیٹ نہیں کرتے، وہ پری سیٹس غالب رہتے ہیں۔ SmolVLA ٹریننگ کے بارے میں لوگ جو آدھے سوال پوچھتے ہیں ان کا جواب ایک ایسے ڈیفالٹ سے ملتا ہے جس کے بارے میں انہیں معلوم نہیں تھا۔
| سیٹنگ | lerobot 0.6.1 میں ڈیفالٹ | تعریف شدہ |
|---|---|---|
| چنک سائز / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (فلو میچنگ ڈینوائز) | 10 | SmolVLAConfig |
| آپٹیمائزر_lr | 1e-4 | SmolVLAConfig |
| شیڈولر_وارم_سٹیپس | 1000 | SmolVLAConfig |
| شیڈولر_ڈیکے_سٹیپس | 30000 | SmolVLAConfig |
| شیڈولر_ڈیکے_lr | 2.5e-6 | SmolVLAConfig |
| فریز_ویژن_اینکوڈر | true | SmolVLAConfig |
| صرف_ماہر_ٹرین_کریں | true | SmolVLAConfig |
| بیچ_سائز / سٹیپس | 8 / 100000 | TrainPipelineConfig |
| سیڈ / سیو_فریک / num_workers | 1000 / 20000 / 4 | TrainPipelineConfig |
وہ دو لائنیں جو لوگوں کو حیران کرتی ہیں وہ ہیں freeze_vision_encoder اور train_expert_only، دونوں درست۔ باکس سے باہر آپ تقریباً 100 M پیرامیٹرز کو تربیت دیتے ہیں، 450 M کو نہیں، یہی وجہ ہے کہ یہ 24 GB پر فٹ ہو جاتا ہے۔ LeRobot کا اپنا ریفرنس رن چار-GPU H100 کلسٹر پر دونوں کو غلط کر دیتا ہے؛ ایک 24 GB کارڈ پر یہ ایک ورکنگ رن کو میں بدل دیتا ہے۔
جب آپ میموری سے محدود ہوں تو گائیڈ کا مشورہ ہے کہ بیچ سائز کو کم کریں اور مؤثر بیچ کو بحال کرنے کے لیے گریڈینٹ ایکومولیشن کا استعمال کریں۔ lerobot 0.6.1 میں کوئی گریڈینٹ ایکومولیشن نہیں ہے: TrainPipelineConfig میں ایسا کوئی فیلڈ نہیں ہے اور یہ سٹرنگ ریلیز شدہ پیکیج میں کہیں بھی ظاہر نہیں ہوتی۔ AY-Robots فارم SmolVLA کے لیے 8 کی گریڈینٹ ایکومولیشن ویلیو دکھاتا ہے اور اسے بھی لاگو نہیں کرتا۔ 24 GB پر آپ کے لیورز ہیں --batch_size، دو فریز ڈیفالٹس، اور --policy.use_amp۔
رن میں کتنا وقت لگتا ہے، اور کتنے مراحل کافی ہیں
LeRobot تقریباً 50 ایپیسوڈ ڈیٹا سیٹ پر پانچ ای پوکس کے لیے وال-کلاک اینکرز شائع کرتا ہے، تقریباً 45000 فریمز 30 fps پر۔ دستاویزات کے مطابق، یہ اعداد و شمار صرف اندازے کے لیے ہیں، لیکن یہ ایک گھنٹے اور ایک دن کی توقع کے درمیان فرق ہیں۔
| سیٹ اپ | پالیسی | بیچ | وال کلاک |
|---|---|---|---|
| سنگل L4 / A10G (24 GB) | smolvla | 4 | تقریباً 3 سے 6 گھنٹے |
| سنگل A100 40 GB | smolvla | 16 | تقریباً 1 سے 2 گھنٹے |
| 4 x H100 80 GB ایکسیلریٹ کے ساتھ | smolvla | 32 | تقریباً 1 سے 2 گھنٹے |
| سنگل RTX 4090 / RTX 3090 (24 GB) | act | 8 | تقریباً 30 سے 60 منٹ |
قاعدہ یہ ہے کہ ڈیٹا سیٹ پر 5 سے 10 ایپوکس ہوں، نہ کہ ایک مقررہ قدموں کی تعداد: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size))۔ حوالہ جاتی ڈیٹا سیٹ پر جس کی دستاویزات نشاندہی کرتی ہیں، lerobot/svla_so100_pickplace، میٹا ڈیٹا 50 ایپیسوڈز اور 19631 فریمز کی اطلاع دیتا ہے: بیچ 8 فی ایپوک تقریباً 2454 قدم دیتا ہے، لہذا 20000 قدم تقریباً 8 ایپوکس ہیں۔ بیچ کو آدھا کریں اور وہی بجٹ آدھے ایپوکس خریدتا ہے، لہذا جب بھی آپ --batch_size کو چھوئیں تو اسے دوبارہ کریں۔
فائن ٹیونڈ پالیسی کو بازو پر دوبارہ چلانا
lerobot-rollout \
--strategy.type=base \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--task="Grasp the cube and put it in the box." \
--policy.path=${HF_USER}/smolvla_pick_placeفی ایکشن سٹیپ 245 ملی سیکنڈ کو غلط سمجھنا آسان ہے: پالیسی chunk_size = 50 ایکشنز فی فارورڈ پاس خارج کرتی ہے اور ان میں سے n_action_steps = 50 کو انجام دیتی ہے، لہٰذا، آپ اس لاگت کو کتنی بار ادا کرتے ہیں، یہ ان کنٹرولز سے طے ہوتا ہے، نہ کہ سروس کو کتنی بار کمانڈ ملتی ہے۔ یہی وہ ہے جو ایکشن چنکنگ فراہم کرتا ہے، اور یہی وجہ ہے کہ 245 ملی سیکنڈ کا ماڈل 30 ہرٹز بازو کو چلا سکتا ہے۔ جو باقی بچتا ہے وہ چنک کے آخر میں انفرنس لیٹنسی ہے۔
| پیمائش (SmolVLA، حقیقی SO-100) | ہم وقت | غیر ہم وقت |
|---|---|---|
| تکمیل کا وقت، پک اینڈ پلیس، 10 آزمائشیں | 13.75 s | 9.70 s |
| مقررہ وقت کی ونڈو میں پک اینڈ پلیس سائیکل | 9 | 19 |
| تینوں کاموں پر اوسط کامیابی کی شرح | 78.3 % | 73.3 % |
تیسری قطار وہ ہے جسے زیادہ تر تحریریں نظر انداز کر دیتی ہیں۔ غیر ہم وقت انفرنس تقریباً 30 فیصد تیز ہے اور ایک مقررہ ونڈو میں تھرو پٹ کو تقریباً دوگنا کر دیتی ہے، اور مقالہ کامیابی کی شرحوں کو موازنہ کے قابل قرار دیتا ہے، جو اوسطاً ایسا ہی ہے۔ اس کے نیچے، چھانٹنا 70 سے 50 فیصد تک گر گیا جبکہ پک اینڈ پلیس میں 5 کا اضافہ ہوا۔ lerobot 0.6.1 اسی بائنری میں دوسرا لیور رکھتا ہے: --inference.type=rtc رول آؤٹ کو ریئل ٹائم چنکنگ میں تبدیل کرتا ہے، جس کی اسکرپٹ کا اپنا استعمال بلاک سست VLAs، Pi0، Pi0.5 اور SmolVLA کے لیے تجویز کرتا ہے۔
کنٹرول لوپ ماڈل کے لحاظ سے فی ایکشن سٹیپ 20 سے 485 ملی سیکنڈ کا ہوتا ہے، اور اس کے اوپر پبلک انٹرنیٹ راؤنڈ ٹرپس ایک فعال پالیسی کو ہچکچاہٹ والی پالیسی میں بدل دیتے ہیں۔ ریموٹ انفرنس سست پک اینڈ پلیس کے لیے قابل عمل ہے، تیز رد عمل والی حرکت کے لیے نہیں: اگر کام کو فوری اصلاحات کی ضرورت ہو، تو GPU کو بازو کے ساتھ ایک ہی LAN پر ہونا چاہیے۔
ٹریننگ رن کے لیے موضوع سے ہٹ کر، لیکن یہ کسی بھی ہائپر پیرامیٹر سے زیادہ SO-100 پروجیکٹس کو ختم کرتا ہے۔ Feetech STS3215 سروو SO-100 اور SO-101 میں 7.4 V پر چلتے ہیں؛ 12 V انہیں تباہ کر دیتا ہے۔ LeKiwi 7.4 V بازو کو 12 V بیس کے ساتھ ملاتا ہے، اور اسی طرح غلط بیرل جیک غلط ساکٹ میں چلا جاتا ہے۔
ایک ہی چیک پوائنٹ تک دو راستے
آپ مشین، ماحول اور ڈیبگنگ کے مالک ہیں۔ واحد کلاؤڈ انحصار بیس چیک پوائنٹ کا ہب ڈاؤن لوڈ ہے۔ یہ صحیح راستہ ہے اگر آپ پالیسی میں ترمیم کرنا چاہتے ہیں، اگر ڈیٹا آپ کے نیٹ ورک سے باہر نہیں جا سکتا، یا اگر کارڈ بیکار ہے۔
- آپ CUDA وہیل، ڈرائیور، ffmpeg بلڈ اور ڈیٹا لوڈر کو کنٹرول کرتے ہیں۔
- آپ configuration_smolvla.py کو پیچ کر سکتے ہیں اور اسی دوپہر کو دوبارہ تربیت دے سکتے ہیں۔
- آپ بجلی اور وقت کی مد میں ادائیگی کرتے ہیں، فی رن نہیں، اور TorchCodec کو خود ڈیبگ کرتے ہیں۔
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/so100_pick_place \
--batch_size=8 --steps=20000 \
--save_freq=2000 --seed=1000 \
--output_dir=outputs/train/smolvla_pick_place \
--job_name=smolvla_pick_place \
--policy.device=cuda --wandb.enable=trueایک فارم کے پیچھے وہی رن: آپ ماڈل اور ڈیٹا سیٹ کا انتخاب کرتے ہیں، بیک اینڈ مطلوبہ VRAM کے مطابق GPU کرائے پر لیتا ہے، ٹرینر چلاتا ہے اور چیک پوائنٹس کو آبجیکٹ اسٹوریج میں لکھتا ہے۔ ڈیٹا سیٹ Hugging Face repo id، عوامی ڈائریکٹری، یا آپ کی مشین سے آ سکتا ہے۔ SmolVLA on SO-100 سے شروع کریں، یا ٹریننگ پیج پر میٹرکس سے۔
| فیلڈ | پلیٹ فارم SmolVLA کے لیے بھیجتا ہے ڈیفالٹ | نوٹ |
|---|---|---|
| بیچ سائز | 2 | 24 GB ٹیر کے لیے قدامت پسند |
| لرننگ ریٹ | 1e-4 | lerobot پری سیٹ |
| زیادہ سے زیادہ مراحل | 20000 | LeRobot دستاویزات میں حوالہ رن |
| گریڈینٹ جمع | 8 | فارم میں دکھایا گیا، لاگو نہیں کیا گیا |
| اضافی کنٹرولز | seed, logFreq | سیڈ رن کو دہرانے کے قابل بناتا ہے |
- 24 GB ٹیر پر 2 سے 5 گھنٹے، تقریباً 1 سے 3 USD فی رن۔
- /cli پر ٹرمینل سے اور /mcp پر AI ایجنٹس سے وہی آپریشنز۔
- انفرنس پوڈز ایک بیکار واچ ڈاگ رکھتے ہیں، لہذا ایک بھولا ہوا پوڈ خاموشی سے بلنگ کرنے کے بجائے خود کو تباہ کر دیتا ہے۔
- ابھی تک کوئی بازو نہیں؟ /live ایک فزیکل SO-100 کو سٹریم کرتا ہے جسے آپ سائن اپ کیے بغیر چلا سکتے ہیں۔
کیو میں پھنسی ہوئی جاب ایک اسپاٹ مارکیٹ کی علامت ہے، کوئی بگ نہیں: ٹریننگ جاب کیو میں پھنسی ہوئی۔ مرحلہ وار: اپنی پہلی پالیسی کو تربیت دیں اور ٹریننگ دستاویزات۔
جب SmolVLA غلط انتخاب ہو
اس بات کا امتحان کہ آیا SmolVLA پہلی صحیح رن تھی، یہ نہیں کہ آیا اس نے کام کیا، بلکہ یہ کہ آیا ناکامی نے آپ کو کچھ بتایا۔ 60 یا 70 فیصد تک پہنچیں اور ایک بڑا ماڈل اگلا معقول خرچ ہے: ڈیٹا میں سگنل ہوتا ہے۔ 10 فیصد تک پہنچیں اور ایک 3 B ماڈل بھی غالباً 10 فیصد تک پہنچ جائے گا، جو آپ نے بارہ کے بجائے تین ڈالر میں سیکھا۔

مزید خرچ کرنے سے پہلے پڑھنے کے قابل: Pi0.5 بمقابلہ SmolVLA اسی خیال پر مزید صلاحیت کے لیے، اور GR00T N1.7 بمقابلہ SmolVLA NVIDIA کے راستے کے لیے، دونوں 80 GB ٹیر پر 4 سے 12 USD فی رن۔ دوسرا طریقہ، ACT سستا بیس لائن ہے: 80 M پیرامیٹرز، 20 ms فی ایکشن سٹیپ، کوئی زبان کی کنڈیشنگ نہیں۔ یہ پانچوں موجود ہیں پالیسیوں کے صفحے؛ ارینا میں 85 ماڈلز اور 332 بینچ مارک نتائج ہیں۔

کسی بھی چیز کو پیمانے سے پہلے کی چیک لسٹ
- کیا
lrاپنی 2.5e-6 کی نچلی حد تک پہنچ گیا؟ 30000 مراحل سے نیچے lerobot زوال کو دوبارہ پیمانہ کرتا ہے اور سٹارٹ اپ پر ایسا کہتا ہے؛ اس سے اوپر،--policy.scheduler_decay_stepsخود سیٹ کریں۔ - ایک سے زیادہ چیک پوائنٹ، اور
--dataset.eval_splitکے ساتھ روکے گئے ایپی سوڈز تاکہ ایول لاس کا کوئی مطلب ہو۔ - کیا پالیسی بالکل حرکت کرتی ہے؟ ایک بے حرکت بازو کے ساتھ گرتے ہوئے نقصان کی مخصوص وجوہات ہیں: نقصان گرتا ہے، پالیسی کچھ نہیں کرتی۔
- کیا یہ منظر کی تبدیلی سے بچ پاتی ہے؟ اگر نہیں: پالیسی صرف ایک سیٹ اپ میں کام کرتی ہے۔
- کیا آپ نے سیڈ لکھا تھا؟ lerobot کا ڈیفالٹ 1000 ہے، لہذا دو غیر چھوئے ہوئے رن موازنہ کے قابل رہتے ہیں۔
- تب ہی: مزید ایپی سوڈز، مزید تغیر، یا ایک بڑا ماڈل۔ اسی ترتیب میں۔
یہ ماڈلز کیوں موجود ہیں اور زبان کے ان پٹ کے ساتھ کیا کرتے ہیں، اس کے لیے، پس منظر ہے؛ اسمبلی کو کے ذریعے چلاتا ہے سے پہلے رن تک۔ مکمل چیک پوائنٹ کے لیے، ؛ اگر بازو کبھی ظاہر نہ ہو، ۔
اپنے بازو پر SmolVLA کو تربیت دیں
ماڈل اور بازو کا انتخاب کریں اور گائیڈ آپ کو درست ڈیفالٹس، ڈیٹا سیٹ فارمیٹ اور رن کی لاگت بتائے گا۔ SmolVLA 24 GB ٹیر پر 1 سے 3 USD فی رن کے حساب سے موجود ہے۔
تربیتی گائیڈز کھولیںکیا میں واقعی SmolVLA کو RTX 4090 پر فائن ٹیون کر سکتا ہوں؟▾
جی ہاں۔ LeRobot کی کمپیوٹ گائیڈ SmolVLA کو AdamW کے ساتھ بیچ 8 پر تقریباً 10 سے 16 GB کی چوٹی VRAM پر رکھتی ہے اور 24 GB کنزیومر کارڈز کو اس کے لیے آرام دہ قرار دیتی ہے۔ دستاویزات کی مثال میں بیچ 64 کو ایک A100 کے ساتھ جوڑا گیا ہے۔ میموری بیچ کے ساتھ تقریباً لکیری طور پر بڑھتی ہے، لہذا 4 یا 8 استعمال کریں اور mem_gb پر نظر رکھیں۔
مجھے دراصل کتنے ایپی سوڈز کی ضرورت ہے؟▾
AY-Robots کم از کم 30 مقرر کرتا ہے۔ LeRobot کی دستاویزات تقریباً 50 کی سفارش کرتی ہیں اور رپورٹ کرتی ہیں کہ ایک ہی کام کے 25 ایپی سوڈز نے خراب کارکردگی کا مظاہرہ کیا۔ ساخت تعداد سے بہتر ہے: حوالہ سیٹ 5 کیوب پوزیشنز پر مشتمل تھا جس میں ہر ایک کے 10 ایپی سوڈز تھے، اور یہی تکرار ہے جو عمومیت پیدا کرتی ہے۔
دستاویزات میں بیچ 64 لکھا ہے، پلیٹ فارم بیچ 2 بھیجتا ہے۔ کون سا صحیح ہے؟▾
دونوں، مختلف ہارڈ ویئر کے لیے۔ دستاویزات کی مثال بیچ 64 استعمال کرتی ہے اور ایک A100 پر 20000 سٹیپس کے لیے تقریباً 4 گھنٹے کا وقت بتاتی ہے؛ کمپیوٹ گائیڈ کا A100 40 GB اینکر بیچ 16 ہے۔ بیچ 2 وہ ہے جو AY-Robots 24 GB ٹیر پر بھیجتا ہے۔ مقامی طور پر 4 سے 8 درمیانی ہے، اور اس کے ساتھ ای پوک کی حسابیات بدل جاتی ہیں۔
SO-100 پر پہلی رن کے لیے SmolVLA یا ACT؟▾
ACT اگر کام ایک تکراری حرکت ہے اور آپ تیز ترین لوپ چاہتے ہیں: 20 ms فی ایکشن سٹیپ، 80 M پیرامیٹرز، کوئی زبان کی کنڈیشنگ نہیں۔ SmolVLA اگر آپ زبان کی کنڈیشنگ، ایک چیک پوائنٹ میں کئی ٹاسک سٹرنگز، اور ایک پری ٹرینڈ بیس چاہتے ہیں۔ دونوں 24 GB ٹیر پر ہیں، لہذا انتخاب کام کا ہے، بجٹ کا نہیں۔
کیا مجھے --policy.scheduler_decay_steps سیٹ کرنا ہوگا؟▾
صرف تب جب --steps 30000 سے زیادہ ہو۔ SmolVLA 30000 سٹیپس پر کوسائن ڈیکے کو پری سیٹ کرتا ہے، اور lerobot 0.6.1 اسے خود ہی ایک مختصر رن کے لیے نیچے ری اسکیل کرتا ہے، جب ایسا ہوتا ہے تو "Auto-scaling LR scheduler" لاگ کرتا ہے۔ یہ کبھی اوپر اسکیل نہیں کرتا، لہذا سٹاک --steps=100000 آخری 70000 سٹیپس کو 2.5e-6 فلور پر چھوڑ دیتا ہے۔
Sources
- SmolVLA: سستی اور موثر روبوٹکس کے لیے ایک ویژن-لینگویج-ایکشن ماڈل
- SmolVLA: موثر ویژن-لینگویج-ایکشن ماڈل (Hugging Face بلاگ)
- lerobot/smolvla_base ماڈل کارڈ
- LeRobot دستاویزات: SmolVLA
- LeRobot دستاویزات: LeRobot ٹریننگ کے لیے کمپیوٹ HW گائیڈ
- LeRobot دستاویزات: انسٹالیشن
- LeRobot دستاویزات: LeRobotDataset v3.0 اور v2.1 کنورٹر
- LeRobot دستاویزات: غیر ہم وقت ساز انفرنس
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (سٹریٹیجیز اور RTC انفرنس)
- lerobot v0.6.1: pyproject.toml (ایکسٹراز اور کنسول انٹری پوائنٹس)
- PyPI پر lerobot
- lerobot/svla_so100_pickplace ڈیٹا سیٹ (50 ایپی سوڈز، 19631 فریمز، v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started