AY-Robots پر SmolVLA ماڈل کا صفحہ پیرامیٹر کی گنتی، GPU ٹیر، فی ایکشن سٹیپ انفرنس لیٹنسی اور کم از کم ایپیسوڈ کی گنتی دکھا رہا ہے
SmolVLALeRobotVLA تربیتفائن ٹیوننگSO-100

SmolVLA کو 24 GB GPU پر کیسے تربیت دیں (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 منٹ پڑھنے کا وقت

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-Instructvlm_model_name
استعمال شدہ VLM تہیںلینگویج ماڈل کی پہلی 16num_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
لائٹ BCact, vqbet, tdmpcabout 2 to 6 GBRTX 3060, L4
ڈیفیوژنdiffusion, multi_task_ditabout 8 to 14 GBRTX 4070+, L4
چھوٹا VLAsmolvlaabout 10 to 16 GBRTX 4080+, L4, A10G
بڑا VLApi0, pi0_fast, pi05, xvla, wall_xabout 24 to 40 GBA100 40 GB+
ملٹی موڈلgroot, eo1about 24 to 40 GBA100 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 رن، دوپہر کا کھانا ہے۔

AY-Robots لاگت کی جدول: فی پالیسی کارڈ، چلنے کا وقت، فی رن قیمت، درکار ایپی سوڈز
SmolVLA اور ACT 24 GB کی قطار میں ہیں، جبکہ تین 3 B ماڈلز 80 GB کی قطار میں ہیں۔
3 B ماڈل کے بجائے SmolVLA سے آغاز کرنا
جو آپ حاصل کرتے ہیں
  • ایسے ہارڈ ویئر پر فٹ بیٹھتا ہے جو آپ کے پاس پہلے سے موجود ہو سکتا ہے: بیچ 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 مسترد کر دیا گیا۔

bash
# 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
کنورٹر lerobot کے اندر شامل ہے، لہذا اضافی کچھ بھی انسٹال کرنے کی ضرورت نہیں ہے۔ پیکیج میں دوسری سمت میں کوئی کنورٹر نہیں ہے۔

اس بارے میں مزید یہاں ہے اعلیٰ معیار کا VLA تربیتی ڈیٹا کیسے جمع کیا جائے۔ مختصر ورژن: ایک کام کے 30 سے 50 صاف ایپی سوڈز، جان بوجھ کر تغیر کے ساتھ، تین کے 200 لاپرواہ ایپی سوڈز کو اس فرق سے ہرا دیتے ہیں جسے کوئی ہائپر پیرامیٹر بند نہیں کر سکتا۔

lerobot 0.6.1 انسٹال کریں

bash
# 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
PyPI کا راستہ۔ ٹرینر کو پیچ کرنے کے لیے، ریپو کو کلون کریں اور اس کے بجائے pip install -e ".[smolvla,training]" استعمال کریں۔

بنیادی lerobot انسٹال پتلا ہے اور بھاری انحصار کو اضافی پیکجز کے پیچھے رکھتا ہے: smolvla ٹرانسفارمرز، num2words اور accelerate شامل کرتا ہے، training ڈیٹا سیٹ اسٹیک اور wandb، core_scripts ہارڈویئر اور ویژولائزیشن کے انحصار۔ لینکس پر انسٹالیشن کا راستہ آپ کے CUDA وہیل کا بھی تعین کرتا ہے: PyPI کا ڈیفالٹ cu130 وہیل ہے جس میں ڈرائیور کی کم از کم حد 580.65 ہے، لہذا پرانے ڈرائیور پر پہلے cu128 انڈیکس سے ٹارچ انسٹال کریں، پھر lerobot۔

policy.path اور policy.type ایک جیسے فلیگ نہیں ہیں۔

--policy.path=lerobot/smolvla_base پہلے سے تربیت یافتہ 450 M چیک پوائنٹ کو لوڈ کرتا ہے اور اسے فائن ٹیون کرتا ہے۔ --policy.type=smolvla ایک نیا SmolVLA بناتا ہے، اور کنفگ کا ڈیفالٹ load_vlm_weights = False کا مطلب ہے کہ یہ SmolVLM2 کے بیک بون وزن کو بھی نہیں کھینچتا جب تک کہ آپ نہ کہیں۔ اگر آپ اسے غلط کرتے ہیں تو رن خوشی سے تربیت پاتا ہے، لاگت وہی رہتی ہے، اور کچھ بھی قابل منتقلی نہیں سیکھتا۔

ٹریننگ رن، کمانڈ بہ کمانڈ

  1. 1
    ہب کے خلاف تصدیق کریں

    بیس چیک پوائنٹ ہب سے آتا ہے، اور آپ کا ڈیٹا سیٹ بھی شاید وہیں سے آتا ہے۔

    bash
    hf auth login
  2. 2
    آپشنز کو ایک بار پڑھیں

    پائپ لائن اور پالیسی کنفگ کا ہر فیلڈ ایک فلیگ ہے۔ سورس میں گہرائی میں جانے سے پہلے اسے سرسری طور پر دیکھ لیں۔

    bash
    lerobot-train --help
  3. 3
    فائن ٹیون شروع کریں

    دستاویزات کی مثال ایک A100 پر بیچ 64 چلاتی ہے؛ کمپیوٹ گائیڈ کا اپنا A100 40 GB اینکر بیچ 16 ہے، اور 8، 24 GB کے برابر ہے۔ یہاں جان بوجھ کر کوئی شیڈیولر فلیگ نہیں ہے، نیچے دیکھیں۔

    bash
    lerobot-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. 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. 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. 6
    اگر مشین بند ہو جائے تو دوبارہ شروع کریں

    --config_path کو چیک پوائنٹ کے ساتھ موجود train_config.json کی طرف اشارہ کریں۔ lerobot کسی موجودہ output_dir میں شروع ہونے سے انکار کرتا ہے جب تک کہ آپ دوبارہ شروع نہ کر رہے ہوں، لہذا آپ غلطی سے کسی رن کو اوور رائٹ نہیں کر سکتے۔

    bash
    lerobot-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
شیڈول: 0.6.1 کیا سنبھالتا ہے اور کیا نہیں

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_steps50 / 50SmolVLAConfig
num_steps (فلو میچنگ ڈینوائز)10SmolVLAConfig
آپٹیمائزر_lr1e-4SmolVLAConfig
شیڈولر_وارم_سٹیپس1000SmolVLAConfig
شیڈولر_ڈیکے_سٹیپس30000SmolVLAConfig
شیڈولر_ڈیکے_lr2.5e-6SmolVLAConfig
فریز_ویژن_اینکوڈرtrueSmolVLAConfig
صرف_ماہر_ٹرین_کریںtrueSmolVLAConfig
بیچ_سائز / سٹیپس8 / 100000TrainPipelineConfig
سیڈ / سیو_فریک / num_workers1000 / 20000 / 4TrainPipelineConfig

وہ دو لائنیں جو لوگوں کو حیران کرتی ہیں وہ ہیں 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)smolvla4تقریباً 3 سے 6 گھنٹے
سنگل A100 40 GBsmolvla16تقریباً 1 سے 2 گھنٹے
4 x H100 80 GB ایکسیلریٹ کے ساتھsmolvla32تقریباً 1 سے 2 گھنٹے
سنگل RTX 4090 / RTX 3090 (24 GB)act8تقریباً 30 سے 60 منٹ
<code>--steps</code> منتخب کرنے سے پہلے ایپوک کا حساب لگائیں

قاعدہ یہ ہے کہ ڈیٹا سیٹ پر 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 کو چھوئیں تو اسے دوبارہ کریں۔

فائن ٹیونڈ پالیسی کو بازو پر دوبارہ چلانا

bash
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 s9.70 s
مقررہ وقت کی ونڈو میں پک اینڈ پلیس سائیکل919
تینوں کاموں پر اوسط کامیابی کی شرح78.3 %73.3 %

تیسری قطار وہ ہے جسے زیادہ تر تحریریں نظر انداز کر دیتی ہیں۔ غیر ہم وقت انفرنس تقریباً 30 فیصد تیز ہے اور ایک مقررہ ونڈو میں تھرو پٹ کو تقریباً دوگنا کر دیتی ہے، اور مقالہ کامیابی کی شرحوں کو موازنہ کے قابل قرار دیتا ہے، جو اوسطاً ایسا ہی ہے۔ اس کے نیچے، چھانٹنا 70 سے 50 فیصد تک گر گیا جبکہ پک اینڈ پلیس میں 5 کا اضافہ ہوا۔ lerobot 0.6.1 اسی بائنری میں دوسرا لیور رکھتا ہے: --inference.type=rtc رول آؤٹ کو ریئل ٹائم چنکنگ میں تبدیل کرتا ہے، جس کی اسکرپٹ کا اپنا استعمال بلاک سست VLAs، Pi0، Pi0.5 اور SmolVLA کے لیے تجویز کرتا ہے۔

انفرنس کو سروس کے ساتھ ہونا چاہیے

کنٹرول لوپ ماڈل کے لحاظ سے فی ایکشن سٹیپ 20 سے 485 ملی سیکنڈ کا ہوتا ہے، اور اس کے اوپر پبلک انٹرنیٹ راؤنڈ ٹرپس ایک فعال پالیسی کو ہچکچاہٹ والی پالیسی میں بدل دیتے ہیں۔ ریموٹ انفرنس سست پک اینڈ پلیس کے لیے قابل عمل ہے، تیز رد عمل والی حرکت کے لیے نہیں: اگر کام کو فوری اصلاحات کی ضرورت ہو، تو GPU کو بازو کے ساتھ ایک ہی LAN پر ہونا چاہیے۔

7.4 V، 12 V نہیں

ٹریننگ رن کے لیے موضوع سے ہٹ کر، لیکن یہ کسی بھی ہائپر پیرامیٹر سے زیادہ 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 کو خود ڈیبگ کرتے ہیں۔
bash
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
ایک ہی بلاک میں مکمل دستی راستہ، lerobot 0.6.1۔

جب SmolVLA غلط انتخاب ہو

اس بات کا امتحان کہ آیا SmolVLA پہلی صحیح رن تھی، یہ نہیں کہ آیا اس نے کام کیا، بلکہ یہ کہ آیا ناکامی نے آپ کو کچھ بتایا۔ 60 یا 70 فیصد تک پہنچیں اور ایک بڑا ماڈل اگلا معقول خرچ ہے: ڈیٹا میں سگنل ہوتا ہے۔ 10 فیصد تک پہنچیں اور ایک 3 B ماڈل بھی غالباً 10 فیصد تک پہنچ جائے گا، جو آپ نے بارہ کے بجائے تین ڈالر میں سیکھا۔

AY-Robots ٹریننگ میٹرکس: پانچ پالیسیاں قطاروں کے طور پر، چار روبوٹ بازو کالموں کے طور پر
ہر سیل اپنی ایک گائیڈ ہے۔ SmolVLA کے پاس چاروں بازوؤں میں سے ہر ایک کے لیے ایک ہے۔

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

AY-Robots پالیسیوں کا موازنہ: پیرامیٹرز، GPU ٹیر، لیٹنسی، کم از کم ایپی سوڈز
وہ چار نمبر جو ایک رن کا فیصلہ کرتے ہیں۔

کسی بھی چیز کو پیمانے سے پہلے کی چیک لسٹ

  1. کیا lr اپنی 2.5e-6 کی نچلی حد تک پہنچ گیا؟ 30000 مراحل سے نیچے lerobot زوال کو دوبارہ پیمانہ کرتا ہے اور سٹارٹ اپ پر ایسا کہتا ہے؛ اس سے اوپر، --policy.scheduler_decay_steps خود سیٹ کریں۔
  2. ایک سے زیادہ چیک پوائنٹ، اور --dataset.eval_split کے ساتھ روکے گئے ایپی سوڈز تاکہ ایول لاس کا کوئی مطلب ہو۔
  3. کیا پالیسی بالکل حرکت کرتی ہے؟ ایک بے حرکت بازو کے ساتھ گرتے ہوئے نقصان کی مخصوص وجوہات ہیں: نقصان گرتا ہے، پالیسی کچھ نہیں کرتی۔
  4. کیا یہ منظر کی تبدیلی سے بچ پاتی ہے؟ اگر نہیں: پالیسی صرف ایک سیٹ اپ میں کام کرتی ہے۔
  5. کیا آپ نے سیڈ لکھا تھا؟ lerobot کا ڈیفالٹ 1000 ہے، لہذا دو غیر چھوئے ہوئے رن موازنہ کے قابل رہتے ہیں۔
  6. تب ہی: مزید ایپی سوڈز، مزید تغیر، یا ایک بڑا ماڈل۔ اسی ترتیب میں۔

یہ ماڈلز کیوں موجود ہیں اور زبان کے ان پٹ کے ساتھ کیا کرتے ہیں، اس کے لیے، پس منظر ہے؛ اسمبلی کو کے ذریعے چلاتا ہے سے پہلے رن تک۔ مکمل چیک پوائنٹ کے لیے، ؛ اگر بازو کبھی ظاہر نہ ہو، ۔

اپنے بازو پر 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 فلور پر چھوڑ دیتا ہے۔

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started