
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 लाग्छ।
धेरैजसो मानिसहरू जो भिजन भाषा कार्य मोडेल वास्तविक हातमा चाहन्छन्, हार्डवेयर लाइनमा रोकिन्छन्। 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 हो; शोधपत्रले यसको भाषा मोडेलका पहिलो १६ तहहरू मात्र राखेको छ, प्रत्येक क्यामेरा फ्रेमलाई इमेज टाइलिङको सट्टा पिक्सेल शफलको साथ ६४ भिजुअल टोकनमा सीमित गर्दछ, र प्रत्येक दोस्रो ब्लकमा सेल्फ एटेन्सन लेयरसँग क्रस एटेन्सनलाई अन्तर-मिश्रित गर्दछ। इन्फरेन्स लागत डिजाइनको एक बाधा थियो, न कि पछि सोचिएको कुरा।
| विशेषता | मान | स्रोत |
|---|---|---|
| कुल प्यारामिटरहरू | लगभग 450 M | शोधपत्र |
| एक्शन विशेषज्ञ | लगभग 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 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 प्रतिशत दिन्छ, जहाँ ACT प्रति कार्य प्रशिक्षित ACT को औसत 48.3 थियो। उही पङ्क्तिहरू SmolVLA एरेना प्रविष्टि र ACT बनाम SmolVLA तुलना मा प्रकाशित प्रत्येक VLA सँगै छन्।
SmolVLA सबै कुरामा 3 B मोडेल भन्दा राम्रो छैन। शोधपत्रको आफ्नै SO-101 तालिकाले यो देखाउँछ: वितरणमा 90 प्रतिशत सफलता, र यसबाट बाहिर 50 प्रतिशत, जुन प्लेटफर्ममा यसलाई कहिल्यै प्रिट्रेन गरिएको थिएन। यसले दाबी गर्ने र समर्थन गर्ने कुरा के हो भने Pi0 को तुलनामा यसले 6 गुणा कम मेमोरीमा लगभग 40 प्रतिशत छिटो तालिम दिन्छ।
२४ GB कार्ड किन पहिलो रनको लागि सही छ
LeRobot ले यसका लागि रिपोमा सबैभन्दा उपयोगी पृष्ठ, कम्प्युट साइजिंग गाइड प्रदान गर्दछ। यसले नीतिहरूलाई ब्याकबोन साइज अनुसार समूहबद्ध गर्दछ र प्रत्येक समूहको लागि एक VRAM इन्भेलप दिन्छ, जुन AdamW, lerobot को पूर्वनिर्धारित सेटिङ, प्रयोग गरी ब्याच साइज 8 मा मापन गरिएको हो। अप्टिमाइजरको अवस्थाले मात्र सामान्य फर्वार्ड र ब्याकवर्ड पास भन्दा ३० देखि १०० प्रतिशत थप गर्दछ, त्यसैले यी केवल वजन-मात्रका आंकडाहरू होइनन्।
| समूह | Policies | पीक VRAM (ब्याच 8, AdamW) | सुरुवाती GPU हरू |
|---|---|---|---|
| लाइट BC | act, vqbet, tdmpc | लगभग २ देखि ६ GB | RTX 3060, L4 |
| डिफ्युजन | diffusion, multi_task_dit | लगभग ८ देखि १४ GB | RTX 4070+, L4 |
| सानो VLA | smolvla | लगभग १० देखि १६ GB | RTX 4080+, L4, A10G |
| ठूलो VLA | pi0, pi0_fast, pi05, xvla, wall_x | लगभग २४ देखि ४० GB | A100 40 GB+ |
| बहुमोडल | groot, eo1 | लगभग २४ देखि ४० GB | A100 40 GB+ |
ब्याच 8 मा दश देखि सोह्र गिगाबाइटको तर्क छ: २४ GB कार्डले त्यो र डेटालोडर दुवैलाई समेट्छ। AY-Robots ले SmolVLA लाई RTX 4090 वा कुनै पनि २४ GB कार्डमा राख्छ, न्यूनतम ३० एपिसोडहरू, LeRobot v3.0 डेटा, प्रति कार्य चरणमा २४५ ms। भाडामा लिँदा, त्यो प्रति घण्टा ०.३० देखि ०.६० USD मा २ देखि ५ घण्टा हुन्छ, लगभग १ देखि ३ USD प्रति फाइन-ट्यूनिङ रन, ८० GB टियर GR00T र Pi0.5 लाई चाहिने ४ देखि १२ 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 रेकर्डिङलाई रूपान्तरण गर्नुपर्छ (dataset rejected v3)।
- प्रति कार्य चरण 245 ms एक सक्षम पिक एन्ड प्लेस नियन्त्रक हो, प्रतिक्रियात्मक होइन।
- डक्स उदाहरणले A100 मा ब्याच 64 चलाउँछ; 24 GB मा तपाईंले वाल क्लकको लागि ब्याच साट्नुहुन्छ।
चरण 0: डेटासेटले रनको निर्णय गर्छ, फ्ल्यागहरूले होइन
रेकर्डिङ खराब भएमा तलका कुनै पनि कुराले फरक पार्दैन। LeRobot SmolVLA पृष्ठ स्पष्ट छ: सन्दर्भ डेटासेट 5 घन स्थितिहरूमा 50 एपिसोडहरू थियो, प्रति स्थिति 10, र 25 एपिसोडहरूमा समान कार्य खराब प्रदर्शन गर्यो। भिन्नता अनुसारको पुनरावृत्तिले सामान्यीकरण गर्छ, कच्चा एपिसोड गणनाले गर्दैन। कहिल्यै रेकर्ड गर्नुभएको छैन? यहाँबाट सुरु गर्नुहोस् आफ्नो पहिलो डेटासेट रेकर्ड गर्नुहोस्, सँग डेस्कटप क्लाइन्ट, जसले टेलिओपरेशन सत्रबाट LeRobot ढाँचामा लेख्छ, वा डेटासेट डाइरेक्टरी बाट एउटा लिनुहोस्।
- AY-Robots मा कम्तिमा ३० एपिसोडहरू, LeRobot सन्दर्भ रेसिपीका लागि लगभग ५०।
- रोलआउटमा तपाईंले अपेक्षा गर्ने हरेक भिन्नता, धेरै पटक दोहोर्याइएको।
- एउटा कार्य स्ट्रिङ, रेकर्ड र रोलआउट समयमा समान रूपमा लेखिएको। मोडेल त्यो पाठमा आधारित हुन्छ।
- स्थिर क्यामेराहरू। रेकर्डिङ र रोलआउटको बीचमा सारिएको क्यामेरा नै सफा लस कर्भले गतिहीन हात दिने सबैभन्दा सामान्य कारण हो।
- एउटा होल्ड-आउट भिन्नता जुन तपाईंले कहिल्यै तालिम दिनुभएन, ताकि तपाईंसँग परीक्षण गर्नको लागि केही इमानदार होस्।
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 प्रशिक्षण डेटा कसरी सङ्कलन गर्ने मा। छोटो संस्करण: जानाबुझी भिन्नताका साथ एउटै कार्यका ३० देखि ५० सफा एपिसोडहरूले तीनवटा कार्यका २०० लापरवाह एपिसोडहरूलाई हराउँछन्, यस्तो मार्जिनले कुनै पनि हाइपरप्यारामिटरले बन्द गर्दैन।
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 इन्डेक्सबाट torch स्थापना गर्नुहोस्, त्यसपछि lerobot।
--policy.path=lerobot/smolvla_base loads the pretrained 450 M checkpoint and fine-tunes it. --policy.type=smolvla builds a fresh SmolVLA, and the config default load_vlm_weights = False means it does not even pull the SmolVLM2 backbone weights unless you ask. Get it wrong and the run trains happily, costs the same, and learns nothing transferable.
तालिम सञ्चालन, कमाण्ड अनुसार
- 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यदि मेसिन बन्द भयो भने पुनः सुरु गर्नुहोस्
चेकपोइन्टको छेउमा रहेको train_config.json मा --config_path लाई देखाउनुहोस्। 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 पहिलो पास |
| --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 |
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 मा पूर्वनिर्धारित | परिभाषित |
|---|---|---|
| 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 |
| भिजन इन्कोडर फ्रिज गर्नुहोस् | 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 एपिसोडको डेटासेटमा पाँच इपोकका लागि वाल-क्लॉक एङ्करहरू प्रकाशित गर्छ, जुन 30 fps मा लगभग 45000 फ्रेम हुन्छ। डक्सले भन्छ, यो परिमाणको क्रमका आंकडाहरू हुन्, तर तिनीहरू एक घण्टा र एक दिनको अपेक्षा बीचको भिन्नता हुन्।
| सेटअप | नीति | ब्याच | वाल क्लक |
|---|---|---|---|
| एकल 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 ms लाई गलत बुझ्न सजिलो छ: नीतिले उत्सर्जन गर्छ chunk_size = 50 कार्यहरू प्रति फरवार्ड पास र कार्यान्वयन गर्छ n_action_steps = 50 ती मध्ये, त्यसैले तपाईंले त्यो लागत कति पटक तिर्नुहुन्छ भन्ने कुरा ती नबहरूद्वारा सेट गरिन्छ, सर्भोहरूले कति पटक आदेश पाउँछन् भन्ने कुराले होइन। यही हो कार्य चंकिङ किन्छ, र किन 245 ms को मोडेलले 30 Hz को हात चलाउन सक्छ। बाँकी रहेको छ अनुमान विलम्बता चंकको अन्त्यमा।
| मापन (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 ms हुन्छ, र सार्वजनिक-इन्टरनेट राउन्ड ट्रिपहरूले काम गर्ने नीतिलाई हिचकिचाउने नीतिमा परिणत गर्छ। टाढाको अनुमान ढिलो पिक एण्ड प्लेसका लागि सम्भव छ, तर छिटो प्रतिक्रियात्मक गतिको लागि होइन: यदि कार्यलाई द्रुत सुधारहरू चाहिन्छ भने, 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 repo id, सार्वजनिक निर्देशिका, वा तपाईंको मेसिनबाट आउन सक्छ। SO-100 मा SmolVLA बाट सुरु गर्नुहोस्, वा तालिम पृष्ठ मा रहेको म्याट्रिक्सबाट।
| फिल्ड | प्लेटफर्मले 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 सही पहिलो रन थियो कि थिएन भन्ने परीक्षण यो सफल भयो कि भएन भन्ने होइन, तर असफलताले तपाईंलाई केही बतायो कि बताएन भन्ने हो। ६० वा ७० प्रतिशतमा पुग्नुभयो भने ठूलो मोडेल अर्को उचित खर्च हो: डेटाले संकेत बोक्छ। १० प्रतिशतमा पुग्नुभयो भने ३ B मोडेल पनि १० प्रतिशतमा पुग्ने सम्भावना बढी हुन्छ, जुन तपाईंले बाह्र डलरको सट्टा तीन डलरमा सिक्नुभयो।

थप खर्च गर्नु अघि पढ्न लायक: Pi0.5 SmolVLA विरुद्ध एउटै विचारमा थप क्षमताका लागि, र GR00T N1.7 SmolVLA विरुद्ध NVIDIA मार्गका लागि, दुवै ८० GB टियर प्रति रन ४ देखि १२ USD मा। अर्को तरिका, ACT सस्तो आधारभूत हो: ८० M प्यारामिटरहरू, प्रति कार्य चरण २० ms, कुनै भाषा कन्डिसनिङ छैन। सबै पाँचवटा यहाँ छन् नीति पृष्ठ; एरिना सँग ८५ मोडेल र ३३२ बेन्चमार्क परिणामहरू छन्।

कुनै पनि कुरा मापन गर्नु अघिको चेकलिस्ट
- के
lrयसको 2.5e-6 न्यूनतम बिन्दुमा पुग्यो? 30000 स्टेप्स भन्दा कममा lerobot ले क्षयलाई पुनः मापन गर्छ र स्टार्टअपमा त्यसो भन्छ; त्यो भन्दा माथि,--policy.scheduler_decay_stepsआफैं सेट गर्नुहोस्। - एक भन्दा बढी चेकपोइन्ट, र
--dataset.eval_splitसँग राखिएका एपिसोडहरू ताकि मूल्याङ्कन हानि (eval loss) को केही अर्थ होस्। - के नीति (policy) अलिकति पनि चल्छ? गतिहीन हातको साथ घट्दो हानि (falling loss) का विशेष कारणहरू छन्: हानि घट्छ, नीतिले केही गर्दैन।
- के यसले दृश्य परिवर्तनमा पनि काम गर्छ? यदि गर्दैन भने: नीतिले एउटै सेटअपमा मात्र काम गर्छ।
- के तपाईंले सीड (seed) लेख्नुभयो? 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: कुशल दृष्टि-भाषा-कार्य मोडेल (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