
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) क्या है, उन संख्याओं में जिनकी आप जांच कर सकते हैं
स्मॉलवीएलए एक फ्लो मैचिंग पॉलिसी है जिसे एक छोटे विजन लैंग्वेज मॉडल पर लगाया गया है। इसका बैकबोन SmolVLM2-500M-Video-Instruct है; पेपर इसके लैंग्वेज मॉडल की केवल पहली 16 परतों को रखता है, प्रत्येक कैमरा फ्रेम को इमेज टाइलिंग के बजाय पिक्सेल शफल के साथ 64 विजुअल टोकन तक सीमित करता है, और हर दूसरे ब्लॉक में क्रॉस अटेंशन को सेल्फ अटेंशन लेयर के साथ इंटरलीव करता है। अनुमान लागत एक डिज़ाइन बाधा थी, न कि बाद का विचार।
| गुण | मान | स्रोत |
|---|---|---|
| कुल पैरामीटर | लगभग 450 M | paper |
| एक्शन एक्सपर्ट | लगभग 100 M, फ्लो मैचिंग | paper |
| वीएलएम बैकबोन | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| उपयोग की गई वीएलएम परतें | लैंग्वेज मॉडल की पहली 16 | num_vlm_layers = 16 |
| प्रति फ्रेम विजुअल टोकन | 64, पिक्सेल शफल, कोई टाइलिंग नहीं | paper |
| प्रीट्रेनिंग | 481 सामुदायिक डेटासेट, 22.9 K एपिसोड, 10.6 M फ्रेम्स; 4 जीपीयू पर ग्लोबल बैच 256 पर 200000 स्टेप्स | paper |
बेंचमार्क ही वह कारण हैं कि लोग 450 M मॉडल पर ध्यान क्यों देते हैं। LIBERO पर यह 7 B के OpenVLA के लिए 76.5 और 3.3 B के रोबोटिक्स-प्रीट्रेन्ड Pi0 के लिए 86.0 के मुकाबले औसतन 87.3 प्रतिशत है; Meta-World पर, 47.9 के मुकाबले 57.3। वास्तविक SO-100 हार्डवेयर पर, मल्टी-टास्क ट्रेनिंग पिक एंड प्लेस पर 75 प्रतिशत, स्टैकिंग पर 90, सॉर्टिंग पर 70 देती है, जिसका औसत 78.3 है, जहाँ एसीटी प्रति कार्य प्रशिक्षित का औसत 48.3 था। वही पंक्तियाँ हर प्रकाशित वीएलए के बगल में हैं स्मॉलवीएलए एरिना एंट्री और एसीटी बनाम स्मॉलवीएलए तुलना।
स्मॉलवीएलए हर चीज़ में 3 B मॉडल से बेहतर नहीं है। पेपर की अपनी SO-101 तालिका इसका प्रमाण है: वितरण में 90 प्रतिशत सफलता, उससे बाहर 50 प्रतिशत, एक ऐसे प्लेटफॉर्म पर जिस पर इसे कभी प्रीट्रेन नहीं किया गया था। यह जो दावा करता है, और जिसका समर्थन करता है, वह यह है कि Pi0 के मुकाबले यह 6 गुना कम मेमोरी पर लगभग 40 प्रतिशत तेजी से प्रशिक्षित होता है।
24 GB कार्ड पहली बार चलाने के लिए सही क्यों है
LeRobot इस काम के लिए एक कंप्यूट साइज़िंग गाइड प्रदान करता है, जो रेपो में सबसे उपयोगी पेज है। यह नीतियों को बैकबोन साइज़ के अनुसार समूहित करता है और प्रति समूह एक VRAM एनवेलप देता है, जिसे बैच साइज़ 8 पर AdamW (जो lerobot का डिफ़ॉल्ट है) के साथ मापा जाता है। केवल ऑप्टिमाइज़र स्टेट ही एक सामान्य फॉरवर्ड और बैकवर्ड पास की तुलना में 30 से 100 प्रतिशत अधिक जोड़ता है, इसलिए ये केवल वज़न के आंकड़े नहीं हैं।
| समूह | नीतियाँ | पीक VRAM (बैच 8, AdamW) | स्टार्टर GPU |
|---|---|---|---|
| लाइट BC | act, vqbet, tdmpc | लगभग 2 से 6 GB | RTX 3060, L4 |
| डिफ्यूजन | diffusion, multi_task_dit | लगभग 8 से 14 GB | RTX 4070+, L4 |
| स्मॉल VLA | smolvla | लगभग 10 से 16 GB | RTX 4080+, L4, A10G |
| लार्ज VLA | pi0, pi0_fast, pi05, xvla, wall_x | लगभग 24 से 40 GB | A100 40 GB+ |
| मल्टीमॉडल | groot, eo1 | लगभग 24 से 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 लापरवाह एपिसोड को हरा देते हैं, इतने बड़े अंतर से जिसे कोई हाइपरपैरामीटर बंद नहीं कर सकता।
लेरोबोट 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मूल लेरोबोट इंस्टाल पतला है और भारी निर्भरताओं को एक्स्ट्रा के पीछे रखता है: स्मोलवीएलए ट्रांसफॉर्मर, num2words और एक्सेलेरेट जोड़ता है, ट्रेनिंग डेटासेट स्टैक और wandb, कोर_स्क्रिप्ट्स हार्डवेयर और विज़ुअलाइज़ेशन निर्भरताएँ। लिनक्स पर इंस्टाल पाथ आपके CUDA व्हील को भी तय करता है: PyPI डिफ़ॉल्ट 580.65 के ड्राइवर फ्लोर के साथ एक cu130 व्हील है, इसलिए पुराने ड्राइवर पर पहले cu128 इंडेक्स से टॉर्च इंस्टॉल करें, फिर लेरोबोट।
--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 स्टेप्स पर लेरोबोट लॉस, 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यदि मशीन बंद हो जाए तो फिर से शुरू करें
चेकपॉइंट के बगल में train_config.json पर --config_path को इंगित करें। लेरोबोट मौजूदा output_dir में शुरू होने से मना कर देता है जब तक कि आप फिर से शुरू नहीं कर रहे हों, इसलिए आप गलती से किसी रन को ओवरराइट नहीं कर सकते।
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
वे फ़्लैग जो वास्तव में परिणाम बदलते हैं
| Flag | यह क्या करता है | 24 GB पर |
|---|---|---|
| --batch_size | प्रति स्टेप नमूने, VRAM में लगभग रैखिक | 4 to 8 |
| --steps | कुल ऑप्टिमाइज़र स्टेप्स | 20000 first pass |
| --policy.scheduler_decay_steps | कोसाइन क्षय की लंबाई, प्रीसेट 30000 | Only bites above 30000 |
| --policy.use_amp | मिश्रित परिशुद्धता; SmolVLA में कोई dtype फ़ील्ड नहीं है | true when memory is tight |
| --num_workers | डेटालोडर प्रक्रियाएँ, डिफ़ॉल्ट 4 | Raise until data_s stops climbing |
| --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` कॉलम वह जगह है जहाँ आप जाँच करते हैं।
यदि आप कुछ भी नहीं छूते हैं तो आपको मिलने वाले डिफ़ॉल्ट
एक पॉलिसी कॉन्फ़िग लेरोबोट में अपना ऑप्टिमाइज़र और शेड्यूलर प्रीसेट रखता है, और जब तक आप सेट नहीं करते use_policy_training_preset=false तब तक वे प्रीसेट जीतते हैं। SmolVLA प्रशिक्षण के बारे में लोग जो आधे सवाल पूछते हैं, उनका जवाब एक ऐसे डिफ़ॉल्ट से मिलता है जिसके बारे में उन्हें पता नहीं था।
| सेटिंग | लेरोबोट 0.6.1 में डिफ़ॉल्ट | इसमें परिभाषित |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (फ्लो मैचिंग डीनोइज़) | 10 | SmolVLAConfig |
| optimizer_lr | 1e-4 | SmolVLAConfig |
| scheduler_warmup_steps | 1000 | SmolVLAConfig |
| scheduler_decay_steps | 30000 | SmolVLAConfig |
| scheduler_decay_lr | 2.5e-6 | SmolVLAConfig |
| freeze_vision_encoder | true | SmolVLAConfig |
| train_expert_only | true | SmolVLAConfig |
| batch_size / steps | 8 / 100000 | TrainPipelineConfig |
| seed / save_freq / 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 एपिसोड वाले डेटासेट पर पांच युगों के लिए वॉल-क्लॉक एंकर प्रकाशित करता है, जो 30 fps पर लगभग 45000 फ़्रेम हैं। दस्तावेज़ कहते हैं कि ये परिमाण के आंकड़े हैं, लेकिन वे एक घंटे और एक दिन की अपेक्षा के बीच का अंतर हैं।
| सेटअप | पॉलिसी | बैच | वास्तविक समय |
|---|---|---|---|
| सिंगल L4 / A10G (24 GB) | smolvla | 4 | about 3 to 6 h |
| सिंगल A100 40 GB | smolvla | 16 | about 1 to 2 h |
| एक्सेलरेट के साथ 4 x H100 80 GB | smolvla | 32 | about 1 to 2 h |
| सिंगल RTX 4090 / RTX 3090 (24 GB) | act | 8 | about 30 to 60 min |
नियम डेटासेट पर 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 परियोजनाओं को समाप्त कर देता है। SO-100 और SO-101 में Feetech STS3215 सर्वो 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 रेपो आईडी, सार्वजनिक , या आपकी मशीन से आ सकता है। से शुरू करें, या पर मैट्रिक्स से।
| फ़ील्ड | प्लेटफ़ॉर्म SmolVLA के लिए डिफ़ॉल्ट भेजता है | नोट |
|---|---|---|
| बैच आकार | 2 | 24 GB टियर के लिए रूढ़िवादी |
| लर्निंग रेट | 1e-4 | लेरोबोट प्रीसेट |
| अधिकतम स्टेप्स | 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 against SmolVLA उसी विचार पर अधिक क्षमता के लिए, और GR00T N1.7 against 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 में उपलब्ध है।
प्रशिक्षण मार्गदर्शिकाएँ खोलेंक्या मैं वास्तव में RTX 4090 पर SmolVLA को फाइन-ट्यून कर सकता हूँ?▾
हाँ। 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: कुशल विजन-लैंग्वेज-एक्शन मॉडल (हगिंग फेस ब्लॉग)
- 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