
SmolVLA हे 450 M पॅरामीटरचे VLA आहे जे एकाच 24 GB कार्डवर फाइन-ट्यून होते. वास्तविक lerobot 0.6.1 कमांड्स, प्रत्यक्ष डीफॉल्ट्स, दिवसभर वेळ खाणारे अडथळे आणि एका रनचा खर्च किती येतो.
एका स्क्रीनमध्ये SmolVLA
- •450 M पॅरामीटर्स, त्यापैकी सुमारे 100 M हे फ्लो मॅचिंग ॲक्शन एक्सपर्ट आहेत. lerobot फक्त त्या एक्सपर्टला प्रशिक्षित करते आणि VLM ला गोठवून ठेवते, म्हणूनच ते एका कार्डवर बसते.
- •LeRobot च्या कम्प्यूट मार्गदर्शिकेनुसार, AdamW सह बॅच 8 वर smolvla ग्रुपला अंदाजे 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 | paper |
| ॲक्शन एक्सपर्ट | about 100 M, flow matching | paper |
| VLM बॅकबोन | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| वापरलेले VLM लेयर्स | first 16 of the language model | num_vlm_layers = 16 |
| प्रति फ्रेम व्हिज्युअल टोकन्स | 64, pixel shuffle, no tiling | paper |
| प्रीट्रेनिंग | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | 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 टक्के मिळते, जिथे ACT प्रति टास्क प्रशिक्षित ACT ची सरासरी 48.3 होती. तेच रो प्रत्येक प्रकाशित VLA च्या बाजूला आहेत SmolVLA एरिना एंट्री आणि ACT विरुद्ध SmolVLA तुलना.
SmolVLA प्रत्येक बाबतीत 3 B मॉडेलपेक्षा चांगले नाही. शोधनिबंधातील SO-101 टेबल हेच सांगते: ज्या प्लॅटफॉर्मवर ते कधीही प्रीट्रेन केले नव्हते, त्यावर वितरणात 90 टक्के यश, आणि त्याबाहेर 50 टक्के. ते जे दावा करते आणि समर्थन करते ते असे की Pi0 च्या तुलनेत ते 6 पट कमी मेमरीवर सुमारे 40 टक्के वेगाने प्रशिक्षित होते.
24 GB कार्ड पहिली रनसाठी योग्य का आहे?
LeRobot या कामासाठी एक कम्प्यूट साईझिंग गाईड पुरवते, जी रेपोमधील सर्वात उपयुक्त पृष्ठ आहे. ती पॉलिसींना बॅकबोन आकारानुसार गटबद्ध करते आणि प्रत्येक गटासाठी एक VRAM एनव्हलप देते, जे AdamW सह बॅच साईझ 8 वर मोजले जाते, जो lerobot चा डिफॉल्ट आहे. ऑप्टिमायझरची स्थिती एकट्यानेच केवळ फॉरवर्ड आणि बॅकवर्ड पासपेक्षा 30 ते 100 टक्के अधिक जागा घेते, त्यामुळे हे केवळ वजनाचे आकडे नाहीत.
| गट | पॉलिसीज | पीक VRAM (बॅच 8, AdamW) | स्टार्टर GPUs |
|---|---|---|---|
| Light BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Diffusion | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| Small VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| Large VLA | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| Multimodal | 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 रेकॉर्डिंग रूपांतरित करावे लागेल (dataset rejected 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 वर क्रॅश होतात. एकदा रेकॉर्ड करा, नंतर मॉडेल्सची तुलना करण्याची योजना करा आणि तुम्हाला एका मार्गाने किंवा दुसऱ्या मार्गाने रूपांतरित करावे लागेल: dataset rejected 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 लॉस, 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 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` कॉलममध्ये तुम्ही तपासू शकता.
तुम्ही काहीही न केल्यास तुम्हाला मिळणारे डिफॉल्ट्स
एक lerobot मधील कॉन्फिग स्वतःचे ऑप्टिमायझर आणि शेड्यूलर प्रीसेट घेऊन येते, आणि जोपर्यंत तुम्ही use_policy_training_preset=false सेट करत नाही, तोपर्यंत ते प्रीसेट्स प्रभावी ठरतात. SmolVLA प्रशिक्षणाबद्दल लोक विचारत असलेल्या अर्ध्या प्रश्नांची उत्तरे त्यांना माहीत नसलेल्या डिफॉल्टमुळे मिळतात.
| सेटिंग | lerobot 0.6.1 मधील डिफॉल्ट | यामध्ये परिभाषित |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (flow matching denoise) | 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 फ्रेम्स आहेत. दस्तऐवज म्हणतात की हे अंदाजे आकडे आहेत, परंतु ते एक तास आणि एक दिवसाची अपेक्षा करण्यातील फरक दर्शवतात.
| सेटअप | पॉलिसी | बॅच | एकूण वेळ |
|---|---|---|---|
| Single L4 / A10G (24 GB) | smolvla | 4 | सुमारे 3 ते 6 तास |
| Single A100 40 GB | smolvla | 16 | सुमारे 1 ते 2 तास |
| 4 x H100 80 GB with accelerate | smolvla | 32 | सुमारे 1 ते 2 तास |
| Single 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 वर असणे आवश्यक आहे.
एकाच चेकपॉईंटपर्यंत पोहोचण्याचे दोन मार्ग
तुम्ही मशीन, वातावरण आणि डीबगिंगचे मालक आहात. एकमेव क्लाउड अवलंबित्व म्हणजे बेस चेकपॉईंटचे हब डाउनलोड. जर तुम्हाला पॉलिसीमध्ये बदल करायचा असेल, डेटा तुमच्या नेटवर्कमधून बाहेर जाऊ शकत नसेल किंवा कार्ड निष्क्रिय असेल तर हा योग्य मार्ग आहे.
- तुम्ही 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 रेपो आयडीवरून, सार्वजनिक डिरेक्टरी, किंवा तुमच्या मशीनमधून येऊ शकतो. येथे सुरुवात करा SO-100 वर SmolVLA, किंवा प्रशिक्षण पृष्ठावरील मॅट्रिक्सवर.
| क्षेत्र | प्लॅटफॉर्म SmolVLA साठी पाठवते ते डीफॉल्ट | टीप |
|---|---|---|
| batch size | 2 | 24 GB टियरसाठी पुराणमतवादी |
| learning rate | 1e-4 | लेरोबोट प्रीसेट |
| max steps | 20000 | LeRobot डॉक्समधील संदर्भ रन |
| gradient accumulation | 8 | फॉर्ममध्ये दर्शविले आहे, लागू केलेले नाही |
| extra knobs | 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` सह बाजूला ठेवलेले एपिसोड्स जेणेकरून इव्हॅल लॉसला काही अर्थ असेल.
- धोरण (policy) अजिबात हलते का? स्थिर हाताने कमी होणाऱ्या लॉसची विशिष्ट कारणे आहेत: लॉस कमी होतो, धोरण काहीही करत नाही.
- ते दृश्यातील बदलातून टिकून राहते का? नसल्यास: धोरण (policy) फक्त एकाच सेटअपमध्ये कार्य करते.
- तुम्ही सीड (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 आहे. AY-Robots 24 GB टियरवर बॅच 2 पाठवते. स्थानिक पातळीवर 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