
फिजिकल इंटेलिजेंस के फ्लो-मैचिंग VLA, Pi0.5 को अपने रोबोट डेटा पर फाइन-ट्यून करें। openpi और lerobot pi05 के लिए वास्तविक कमांड, डेटासेट प्रारूप की चुनौतियाँ, VRAM और विलंबता सीमाएँ।
Pi0.5 वह मॉडल है जिसका उपयोग आप तब करते हैं जब किसी नीति को ऐसे कमरे में काम करना होता है जिसे उसने पहले कभी नहीं देखा है। यह पाँच में से सबसे अजीब भी है प्रशिक्षित करने योग्य नीतियाँ यहाँ फाइन-ट्यून हाथ से करने के लिए: अपस्ट्रीम रिपॉजिटरी पहले JAX है, LeRobot पोर्ट ने 0.6.0 में lerobot-record से डिप्लॉयमेंट को बाहर कर दिया और बेस इंस्टाल को प्रशिक्षण के लिए बहुत छोटा बना दिया, और एक पूर्ण फाइन-ट्यून 4090 पर फिट नहीं होता है। नीचे: फ्लो मैचिंग अनुमान पर क्या लागत आती है, दो कमांड मार्ग, और 485 ms की संख्या जो तय करती है कि परिणाम प्रयोग करने योग्य है या नहीं।
आपको क्या जानने की आवश्यकता है
- •एक फ्लो-मैचिंग VLA: एक 3B PaliGemma VLM और एक 300M एक्शन एक्सपर्ट जो निरंतर एक्शन चंक्स को डिकोड करता है। इसे फाइन-ट्यून करने के दो मार्ग, openpi और LeRobot pi05, LIBERO औसत पर 0.65 अंक अलग हैं।
- •पूर्ण फाइन-ट्यूनिंग के लिए 70 GB से अधिक VRAM की आवश्यकता होती है। openpi केवल अपने JAX पाथ पर LoRA को 22.5 GB पर सूचीबद्ध करता है।
- •डेटासेट LeRobotDataset v3.0 होना चाहिए जिसमें meta/stats.json में q01 और q99 क्वांटाइल हों, अन्यथा बैच एक त्रुटि देगा।
- •पहले अपना lerobot संस्करण जांचें: 0.6.0 ने बेस पैकेज को हल्का बना दिया और lerobot-record से डिप्लॉयमेंट को बाहर कर दिया।
- •यहाँ यह प्रति एक्शन स्टेप 485 ms पर चलता है, 50 एपिसोड चाहता है, और प्रति रन लगभग 4 से 12 USD खर्च होता है।
Pi0.5 वास्तव में क्या है
फिजिकल इंटेलिजेंस ने अक्टूबर 2024 में pi0 प्रकाशित किया: एक फ्लो मैचिंग विजन-लैंग्वेज-एक्शन मॉडल एक प्रीट्रेन्ड VLM पर: 3 बिलियन पैरामीटर वाला PaliGemma और स्क्रैच से इनिशियलाइज़ किया गया 300M एक्शन एक्सपर्ट, कुल 3.3 बिलियन। पेपर 7 रोबोट कॉन्फ़िगरेशन और 68 कार्यों में 10,000 घंटे से अधिक रोबोट डेटा पर प्री-ट्रेनिंग की रिपोर्ट करता है। अधिक जानकारी pi0 लेख में।
Pi0.5 (arXiv 2504.16054, 22 अप्रैल 2025) उस ढांचे को बरकरार रखता है और प्रशिक्षण आहार को बदलता है: वेब डेटा, वस्तु पहचान, रोबोट को प्रशिक्षित करने वाले मनुष्यों से मौखिक निर्देश, उपकार्य लेबल, कई घरों में रोबोट से क्रॉस-एम्बॉडीमेंट डेटा। इसका परिणाम यह है कि एक रोबोट उन घरों में रसोई की सफाई करता है जो प्रशिक्षण सेट में नहीं थे। openpi README एक विवरण जोड़ता है जो शीर्षक में नहीं है: जारी किया गया pi0.5 ज्ञान इन्सुलेशन (arXiv 2505.23705) के साथ प्रशिक्षित किया गया था।
| गुणधर्म | pi0 | pi0.5 |
|---|---|---|
| VLM बैकबोन वेरिएंट | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| एक्शन एक्सपर्ट वेरिएंट | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| एक्शन होराइजन डिफ़ॉल्ट | 50 | 50 |
| max_token_len | 48 | 200 |
| डिस्क्रीट स्टेट इनपुट | false | true, state discretized into bins in the prompt |
| बेस चेकपॉइंट | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
openpi README स्पष्ट है: रिपॉजिटरी केवल फ्लो मैचिंग हेड का समर्थन करती है, pi0.5 प्रशिक्षण और अनुमान दोनों के लिए। पेपर दो चरणों का वर्णन करता है और कोड केवल दूसरे को वहन करता है: प्री-ट्रेनिंग FAST टोकनाइज़र के माध्यम से प्रत्येक क्रिया को डिस्क्रीट टोकन के रूप में प्रस्तुत करती है, और डिप्लॉयमेंट पर मॉडल प्रत्येक एक्शन चंक से पहले एक उच्च-स्तरीय उपकार्य का अनुमान लगाता है। इनमें से कोई भी रिपॉजिटरी में नहीं है। lerobot/pi05_base कार्ड वही सूची देता है और RL जोड़ता है, हालांकि pi0.5 पेपर में सुदृढीकरण सीखने के किसी भी चरण का वर्णन नहीं है। LeRobot पोर्ट उस दायरे को विरासत में लेता है, और उस पर हर होस्टेड ट्रेनर भी, जिसमें यहां वाला भी शामिल है। लाइसेंसिंग भी विभाजित है: pi05 डॉक पेज Apache 2.0 कहता है, lerobot/pi05_base कार्ड को license: gemma टैग किया गया है।
फ्लो मैचिंग प्रशिक्षण और अनुमान के बारे में क्या बदलता है
एक पॉलिसी जिसे आप SO-100 पर प्रशिक्षित कर सकते हैं, या तो सीधे क्रियाओं को रिग्रेस करता है (ACT) या उन्हें टोकनाइज़ करता है और ऑटोरेग्रेसिव रूप से डिकोड करता है (pi0-FAST)। फ्लो मैचिंग इनमें से कोई भी नहीं करता है: यह एक वेक्टर फ़ील्ड सीखता है जो शोर को एक स्वच्छ एक्शन चंक, फिर उसे एकीकृत करता है। pi0 पेपर 0.1 के स्टेप साइज़ पर 10 इंटीग्रेशन स्टेप्स का उपयोग करता है; LeRobot का pi05 कॉन्फ़िग वही num_inference_steps: int = 10 वहन करता है।
- प्रशिक्षण: लॉस एक नॉइज़्ड एक्शन चंक को रिग्रेस करता है। ट्यून करने के लिए कोई टोकनाइज़र नहीं, आपके जॉइंट एंगल्स का कोई डिस्क्रीटाइज़ेशन नहीं।
- अनुमान: एक चंक में एक्शन एक्सपर्ट के माध्यम से दस फॉरवर्ड पास लगते हैं। यह संरचनात्मक है, ट्यूनिंग समस्या नहीं।
- आउटपुट: आयाम 32 की निरंतर क्रियाएं, आंतरिक रूप से पैडेड, आपके रोबोट के आयामों पर लिया गया लॉस। एक 6-DoF आर्म प्लस ग्रिपर 7 का उपयोग करता है।
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
dtype: str = "bfloat16"
paligemma_variant: _gemma.Variant = "gemma_2b"
action_expert_variant: _gemma.Variant = "gemma_300m"
action_dim: int = 32
action_horizon: int = 50
max_token_len: int = None # 200 if pi05 else 48
pi05: bool = False # flips discrete_state_input to Trueपलिगेमा बैकबोन, और उसके सामने का गेट
PaliGemma (arXiv 2407.07726) एक Gemma-2B भाषा मॉडल पर आधारित SigLIP-So400m विजन एनकोडर है, जिसमें लगभग 3B पैरामीटर हैं। Pi0.5 अपने टोकेनाइज़र को इनहेरिट करता है, और वह टोकेनाइज़र एक गेटेड रिपॉजिटरी में रहता है। यह सबसे आम तरीका है जिससे पहली बार रन विफल होता है, पहले प्रशिक्षण चरण से भी पहले।
LeRobot pi05 डॉक्स इसे स्पष्ट रूप से बताते हैं: pi0.5 गेटेड google/paligemma-3b-pt-224 टोकेनाइज़र का उपयोग करता है, इसलिए हब पर इसके लाइसेंस को स्वीकार करें और पहले hf auth login चलाएँ। एक्सेस मैन्युअल रूप से दिया जाता है, तुरंत नहीं। इसे छोड़ दें, एक सशुल्क क्लाउड रन शुरू करें, और आप एक ऐसे पॉड के लिए भुगतान करेंगे जो टोकेनाइज़र डाउनलोड नहीं कर सकता।
शुरू करने से पहले: डेटासेट प्रारूप, एपिसोड, हार्डवेयर
LeRobot में Pi0.5 एक LeRobot डेटासेट को v3.0 लेआउट में पढ़ता है, जो अक्टूबर 2025 में lerobot 0.4.0 के साथ आया था: प्रति Parquet और MP4 फ़ाइल में कई एपिसोड, प्रति एपिसोड के बजाय, meta/episodes/ में सीमाओं के साथ, फ़ाइलनामों में नहीं। डेस्कटॉप क्लाइंट के साथ रिकॉर्ड करें या अपना पहला डेटासेट रिकॉर्ड करें का अनुसरण करें और आपके पास यह होगा।
| मोड | आवश्यक GPU मेमोरी | उदाहरण GPU |
|---|---|---|
| इनफेरेंस | more than 8 GB | RTX 4090 |
| फाइन-ट्यूनिंग, LoRA | more than 22.5 GB | RTX 4090 |
| फाइन-ट्यूनिंग, पूर्ण | more than 70 GB | A100 80 GB or H100 |
Pi0.5 और SmolVLA को LeRobot v3.0 चाहिए। GR00T N1.7 और GR00T N1.5 को v2.0 या v2.1 चाहिए और वे v3.0 डेटासेट पर क्रैश हो जाते हैं। एक रिकॉर्डिंग सत्र बिना रूपांतरण के दोनों को फीड नहीं कर सकता, और त्रुटि में "गलत डेटासेट संस्करण" नहीं लिखा होता है। डेटासेट अस्वीकृत: v3 आवश्यक देखें।
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>
# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ... -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsetsप्लेटफ़ॉर्म को Pi0.5 के लिए कम से कम 50 एपिसोड चाहिए, जो GR00T और ACT के समान न्यूनतम सीमा है। प्री-ट्रेनिंग ही मुख्य काम करती है, इसलिए 50 साफ़-सुथरे एपिसोड 200 अव्यवस्थित एपिसोड से बेहतर होते हैं। इसमें नए हैं? शुरुआत करें डेटा संग्रह मार्गदर्शिका.

मार्ग A: openpi रिपॉजिटरी के साथ फाइन-ट्यून करें
संदर्भ कार्यान्वयन: पहले JAX, केवल Ubuntu 22.04 पर परीक्षण किया गया, फ्लैग के बजाय कॉन्फ़िग ऑब्जेक्ट्स द्वारा संचालित। सितंबर 2025 में एक PyTorch पाथ आया, जिसे LIBERO पर मान्य किया गया। तीन चरण: अपना डेटा परिवर्तित करें, एक कॉन्फ़िग परिभाषित करें, प्रशिक्षित करें और सेवा दें।
- 1क्लोन करें और इंस्टॉल करें
openpi uv का उपयोग करता है। GIT_LFS_SKIP_SMUDGE वह है जो LeRobot को LFS ब्लब्स के बिना एक निर्भरता के रूप में आने देता है।
bashgit clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git cd openpi GIT_LFS_SKIP_SMUDGE=1 uv sync GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . - 2अपने डेटा को LeRobot डेटासेट में परिवर्तित करें
अपस्ट्रीम LIBERO और DROID के लिए कन्वर्टर भेजता है और आपसे एक को अनुकूलित करने की अपेक्षा करता है। काम कुंजी मैपिंग है।
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3एक प्रशिक्षण कॉन्फ़िग जोड़ें
कॉन्फ़िग src/openpi/training/config.py में TrainConfig प्रविष्टियाँ हैं। यह pi05_droid_finetune को अनुकूलित करता है, जिसमें वेट लोडर pi05_base की ओर इंगित करता है।
pythonTrainConfig( name="pi05_so100", model=pi0_config.Pi0Config( pi05=True, action_dim=32, # pi05 is trained with 32-dim actions action_horizon=16, ), # Copy LeRobotLiberoDataConfig in the same file and rewrite the key # mapping for your camera names, then reference your copy here. data=LeRobotLiberoDataConfig( repo_id="your_hf_username/my_so100_dataset", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader( "gs://openpi-assets/checkpoints/pi05_base/params" ), batch_size=32, num_train_steps=20_000, ) - 4सामान्य आँकड़े गणना करें
यह कॉन्फ़िग नाम के विरुद्ध चलता है, डेटासेट के विरुद्ध नहीं। इसे छोड़ना यहाँ की क्लासिक पहली विफलता है।
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5प्रशिक्षित करें
यह वेरिएबल JAX को डिफ़ॉल्ट 75 के बजाय GPU मेमोरी का 90 प्रतिशत उपयोग करने देता है। 80 GB कार्ड पर यह तय करता है कि रन जीवित रहेगा या नहीं।
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6इसे सेवा दें
सर्वर पोर्ट 8000 पर सुनता है और अवलोकन प्रश्नों का उत्तर देता है; आपका रोबोट रनटाइम क्लाइंट है।
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
openpi का PyTorch कार्यान्वयन pi0-FAST, मिक्स्ड प्रेसिजन, FSDP, LoRA या EMA वेट्स का समर्थन नहीं करता है, इसलिए 22.5 GB तक पहुँचने वाला LoRA केवल JAX के माध्यम से gemma_2b_lora और gemma_300m_lora वेरिएंट के साथ उपलब्ध है। इससे भी बुरा: सेटअप आपकी स्थापित transformers 4.53.2 पर पैच की गई फ़ाइलों को कॉपी करता है, और README चेतावनी देता है कि uv के डिफ़ॉल्ट हार्डलिंक मोड के साथ यह uv कैश में transformers को स्थायी रूप से संशोधित करता है और अन्य प्रोजेक्ट्स में लीक हो सकता है। इसे uv cache clean transformers के साथ पूर्ववत करें।
मार्ग B: lerobot pi05 के साथ फाइन-ट्यून करें
LeRobot पोर्ट उन्हीं वेट्स को CLI में लपेटता है जिनका उपयोग आप पहले से ही ACT और SmolVLA के लिए करते हैं। नीचे दी गई सभी जानकारी lerobot 0.6.1 (3 अगस्त 2026 से जारी) और 23 अगस्त 2026 को pi05 डॉक्स के विरुद्ध जाँची गई थी। यहाँ संस्करण महत्वपूर्ण हैं: v3.0 डेटासेट अक्टूबर 2025 में 0.4.0 के साथ आए, 9 मार्च 2026 के 0.5.0 ब्लॉग में pi0-FAST और रियल-टाइम चंकिंग प्रस्तुत किया गया, और 6 जुलाई 2026 को 0.6.0 ने बेस पैकेज को हल्का बनाया और डिप्लॉयमेंट को lerobot-rollout में स्थानांतरित कर दिया।
एक चीज़ नहीं बदली: lerobot-train और lerobot-record अगस्त 2025 में 0.3.2 में पहले से ही एंट्री पॉइंट थे। एक ट्यूटोरियल जो अभी भी python -m lerobot.scripts.train को कॉल करता है, वह एक साल के बदलावों से पहले का है और बाकी जानकारी के लिए भी उस पर भरोसा नहीं किया जाना चाहिए।
- 1सही एक्स्ट्रा के साथ इंस्टॉल करें
0.6.0 के बाद से, बेस इंस्टॉल में केवल कोर एमएल डिपेंडेंसी होती हैं, और पाई एक्स्ट्रा कोई डेटासेट या ट्रेनिंग कोड नहीं जोड़ता है, इसलिए फाइन-ट्यून के लिए ट्रेनिंग एक्स्ट्रा की भी आवश्यकता होती है। पुराने वन-लाइनर यहां इम्पोर्ट के समय विफल हो जाते हैं।
bash# policy dependencies plus the training stack pip install 'lerobot[pi,training]' # from a source checkout pip install -e ".[pi,training]" # driving an SO-100 afterwards needs the robot extras too pip install 'lerobot[core_scripts,feetech]' - 2प्रमाणीकरण करें
एक ब्राउज़र में paligemma-3b-pt-224 लाइसेंस स्वीकार करें, फिर ट्रेनिंग करने वाली मशीन पर लॉग इन करें।
bashhf auth login - 3क्वांटाइल सांख्यिकी जोड़ें
Pi0.5, STATE और ACTION को क्वांटाइल के साथ सामान्य करता है, इसलिए meta/stats.json को q01 और q99 की आवश्यकता होती है। पुराने डेटासेट में केवल min, max, mean, std होते हैं।
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4lerobot/pi05_base से फाइन-ट्यून करें
बैच साइज़ को उतना सेट करें जितना आपका कार्ड संभाल सके; डॉक्स में LIBERO पर 80 GB के साथ 64 का उपयोग किया गया है। bfloat16 को स्पष्ट रूप से पास करें, कॉन्फ़िग डिफ़ॉल्ट float32 है।
bashlerobot-train \ --dataset.repo_id=${HF_USER}/my_so100_dataset \ --policy.type=pi05 \ --policy.pretrained_path=lerobot/pi05_base \ --policy.gradient_checkpointing=true \ --policy.dtype=bfloat16 \ --policy.device=cuda \ --policy.push_to_hub=false \ --output_dir=./outputs/pi05_so100 \ --job_name=pi05_so100 \ --batch_size=4 \ --num_workers=8 \ --steps=30000 \ --save_freq=5000 \ --seed=1000 - 5इसे आर्म पर चलाएं
0.6.x में यह lerobot-rollout है: lerobot-record एक पॉलिसी को अस्वीकार करता है और eval_ डेटासेट नामों को खारिज करता है। बेस आर्म को चलाता है, सेंट्री रोलआउट को रिकॉर्ड करता है।
bashlerobot-rollout \ --strategy.type=base \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \ --task="Put lego brick into the transparent box" \ --duration=60 # same run, recorded into an eval_ dataset lerobot-rollout \ --strategy.type=sentry \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --dataset.repo_id=${HF_USER}/eval_so100 \ --dataset.single_task="Put lego brick into the transparent box" \ --duration=600
| फ्लैग | यह क्या करता है | नोट |
|---|---|---|
| --policy.type=pi05 | Pi0.5 का चयन करता है | pretrained_path के साथ आवश्यक है, --policy.path के साथ छोड़ दें |
| --policy.pretrained_path | केवल वज़न लोड करता है | आपके डेटासेट से फ़ीचर नाम, संग्रहीत सेटिंग्स रीसेट हो जाती हैं |
| --policy.path | वज़न और चेकपॉइंट config.json | संग्रहीत सेटिंग्स जैसे n_action_steps विरासत में मिलती हैं |
| --policy.n_action_steps | प्रति चंक खपत किए गए स्टेप्स | 50 पर वापस आता है, कभी भी chunk_size (डिफ़ॉल्ट 50) से ऊपर नहीं |
| --policy.train_expert_only | VLM को फ्रीज करता है, विशेषज्ञ को प्रशिक्षित करता है | डिफ़ॉल्ट false, कम मेमोरी, सफलता में कुछ लागत |
| --policy.gradient_checkpointing | एक्टिवेशन स्टोर करने के बजाय फिर से गणना करें | डिफ़ॉल्ट false, जब कोई रन फिट नहीं होगा तो पहला लीवर |
| --peft.method_type=LORA | पूर्ण वज़न के बजाय LoRA एडेप्टर | peft एक्स्ट्रा की आवश्यकता है, प्रलेखित उदाहरण SmolVLA है |
| --policy.rtc_training_max_delay | RTC के लिए एक्शन-प्रीफिक्स कंडीशनिंग | केवल मुख्य ब्रांच, 0.6.1 में नहीं, chunk_size से नीचे रहना चाहिए |
| --rename_map | डेटासेट कॉलम को पॉलिसी फ़ीचर पर मैप करता है | जब आपके कैमरा कीज़ भिन्न हों तब आवश्यक |
क्वांटाइल के बिना आपको बैच एक पर ValueError: QUANTILES normalization mode requires q01 and q99 stats मिलता है। सांख्यिकी को फिर से गणना करें, लेकिन परिणाम $HF_LEROBOT_HOME/your_dataset में आता है, न कि उस कैश में जिसे --dataset.repo_id पढ़ता है, इसलिए --dataset.root को वहां इंगित करके या हब पर पुश करके प्रशिक्षित करें। या --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}' के साथ क्वांटाइल को छोड़ दें, जैसा कि LIBERO संदर्भ कमांड करता है।
डिफ़ॉल्ट के तीन सेट, और कौन से ट्रेनर तक पहुँचते हैं
openpi का TrainConfig संदर्भ है, LeRobot का PI05Config वह है जिसका उपयोग lerobot-train तब करता है जब आप कुछ नहीं कहते हैं, और यहां का फॉर्म एक तीसरा सेट भेजता है। आश्चर्य सीखने की दर है: दोनों अपस्ट्रीम डिफ़ॉल्ट 2.5e-5 पर चरम पर होते हैं, जबकि openpi का अपना pi05_libero कॉन्फ़िग और यह प्लेटफ़ॉर्म इसे 5e-5 तक बढ़ाता है।
| सेटिंग | openpi TrainConfig | lerobot pi05 और lerobot-train | AY-Robots भेजता है |
|---|---|---|---|
| बैच आकार | 32 | 8 | 1 |
| पीक लर्निंग रेट | 2.5e-5, कोसाइन डीके | optimizer_lr 2.5e-5 | 5e-5 |
| प्रशिक्षण चरण | 30,000 | 100,000 | 30,000 |
| चेकपॉइंट अंतराल | 1,000 चरण | 20,000 चरण | फॉर्म में नहीं |
| सीड | 42 | 1,000 | फॉर्म में |
| एक्शन चंक | action_horizon 50 | chunk_size 50, n_action_steps 50 | फॉर्म में नहीं |
| वेट डीटाइप | bfloat16 | float32 जब तक आप --policy.dtype पास नहीं करते | फॉर्म में नहीं |
| ग्रेडिएंट एक्यूमुलेशन | ऐसा कोई नॉब नहीं, इसके बजाय fsdp_devices | अब तक हर रिलीज़ से अनुपस्थित | 16, और इसे हटा दिया गया है |
क्या पोर्ट विश्वसनीय है? LeRobot टीम ने LIBERO बेस मॉडल को अतिरिक्त 6k चरणों के लिए फाइन-ट्यून किया और openpi के संदर्भ संख्याओं के साथ चार सुइट्स पर तुलना की: 96.85 के मुकाबले 97.5 प्रतिशत औसत, Libero 10 पर आगे, Spatial पर पीछे। यह मार्ग एक टूलिंग विकल्प है, गुणवत्ता का नहीं।
- इसके पीछे 10,000 घंटे से अधिक का रोबोट प्री-ट्रेनिंग है, इसलिए आपके कार्य के 50 एपिसोड पर्याप्त हो सकते हैं।
- निरंतर क्रियाएं: ट्यून करने के लिए कोई टोकनाइज़र नहीं, आपके जॉइंट एंगल्स पर कोई डिस्क्रीटाइजेशन फ्लोर नहीं।
- LeRobot पोर्ट openpi के 96.85 के मुकाबले LIBERO औसत पर 97.5 प्रतिशत स्कोर करता है, इसलिए अधिक अनुकूल CLI की कोई मापने योग्य लागत नहीं है।
- दोनों तरफ पैरामीटर-कुशल पथ: openpi के JAX LoRA वेरिएंट, LeRobot का PEFT एकीकरण।
- पूर्ण फाइन-ट्यूनिंग के लिए 70 GB से अधिक की आवश्यकता होती है। 22.5 GB LoRA आंकड़ा openpi का JAX नंबर है; PEFT के तहत pi05 के लिए कोई प्रकाशित नहीं है।
- प्रति एक्शन स्टेप 485 ms, यहां पांच में सबसे धीमा: SmolVLA का दोगुना, ACT का चौबीस गुना।
- LeRobot v3.0 आवश्यक है, इसलिए GR00T रन के लिए रिकॉर्ड किए गए डेटासेट को बदलने की आवश्यकता है, और इसके विपरीत।
- नए विकल्प पहले मुख्य पर आते हैं: प्रशिक्षण-समय RTC और MEM मेमोरी 0.6.1 में नहीं हैं, इसलिए नवीनतम डॉक्स का मतलब गिट से इंस्टॉल करना हो सकता है।
485 ms की वास्तविकता, और जहाँ यह अनुपयोगी हो जाता है
यह आपके प्रोजेक्ट का निर्धारण करता है, इसलिए यह लागत तालिका से पहले आता है। प्रति क्रिया चरण Pi0.5 के लिए यहाँ मापा गया 485 ms है। अन्य चार के मुकाबले:
| पॉलिसी | प्रति क्रिया चरण अनुमान | पैरामीटर्स | GPU टियर | न्यूनतम एपिसोड |
|---|---|---|---|---|
| ACT | 20 ms | ~80 M | RTX 4090 or any 24 GB card | 50 |
| GR00T N1.7 | 152 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| GR00T N1.5 | 165 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| SmolVLA | 245 ms | ~450 M | RTX 4090 or any 24 GB card | 30 |
| Pi0.5 | 485 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |

इन पांच मॉडलों में नियंत्रण लूप प्रति एक्शन स्टेप 20 से 485 मिलीसेकंड तक चलता है। 485 मिलीसेकंड के ऊपर सार्वजनिक-इंटरनेट राउंड ट्रिप एक काम करने वाली नीति को एक झिझकने वाली नीति में बदल देती है। रिमोट इन्फ्रेंसिंग धीमी पिक-एंड-प्लेस के लिए व्यवहार्य है, न कि तेज़ प्रतिक्रियाशील गति के लिए। हम ऐसा कहना पसंद करेंगे बजाय इसके कि एक ऐसा डेमो बेचें जो केवल LAN पर काम करता हो। यदि आपकी भुजा चंक्स के बीच रुकती है, तो नीति मध्य-गति में जम जाती है से शुरू करें।
अपस्ट्रीम के पास एक जवाब है, और इसका आधा हिस्सा पहले से ही उस रिलीज़ में है जिसे आप इंस्टॉल कर सकते हैं। रियल-टाइम चंकिंग अगले चंक को तब उत्पन्न करता है जब भुजा अभी भी वर्तमान वाले को निष्पादित कर रही होती है, फिर नए चंक के ओवरलैपिंग चरणों को पहले से निष्पादित भाग के करीब रहने के लिए मार्गदर्शन करता है, ताकि भुजा जोड़ पर रुके या झटके न। Pi0, Pi0.5 और SmolVLA के लिए 0.4.2 चेंजलॉग में शिप किया गया इन्फ्रेंस-टाइम फॉर्म एक रोलआउट फ्लैग है, न कि रिट्रेन:
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/my_policy \
--inference.type=rtc \
--inference.rtc.execution_horizon=10 \
--inference.rtc.max_guidance_weight=10.0 \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM1 \
--robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
--task="Put lego brick into the transparent box" \
--duration=60यह मॉडल को तेज़ नहीं बनाता है। यह अंतर को छुपाता है: 485 मिलीसेकंड अभी भी खर्च होते हैं, लेकिन महत्वपूर्ण पथ से हटकर, ताकि चंक्स के बीच कतार खाली न हो। arXiv 2512.05964 से प्रशिक्षण-समय का संस्करण और आगे जाता है: मॉडल एक स्वच्छ एक्शन प्रीफिक्स पर कंडीशन करना सीखता है, इसलिए इन्फ्रेंस पर ओवरलैप को निर्देशित करने के बजाय प्रति-एक्शन फ्लो टाइमस्टेप्स के साथ हार्ड-इनपेंट किया जाता है, और मार्गदर्शन बैकवर्ड पास गायब हो जाता है। प्रशिक्षण के दौरान यह प्रति उदाहरण एक प्रीफिक्स लंबाई का नमूना लेता है और शेष पोस्टफिक्स पर फ्लो लॉस लेता है। वह फ्लैग केवल मुख्य पर रहता है, 0.6.1 में नहीं, और जिस देरी के लिए आप प्रशिक्षण देते हैं वह chunk_size से कम रहना चाहिए।
Pi0.5 चेकपॉइंट प्राप्त करने के दो तरीके
आप 80 GB कार्ड किराए पर लेते हैं या उसके मालिक हैं, ऊपर दिए गए स्टैक में से किसी एक को इंस्टॉल करते हैं, अपने डेटासेट को परिवर्तित करते हैं और रन की निगरानी करते हैं। आप हर नियंत्रण रखते हैं: openpi का JAX LoRA, LeRobot के PEFT एडेप्टर, सापेक्ष क्रियाएं, कस्टम कुंजी मैपिंग। आप हर विफलता को भी बनाए रखते हैं।
- हार्डवेयर: A100 80 GB या H100, या openpi के JAX LoRA पाथ पर 24 GB कार्ड।
- सेटअप: पहले रन के लिए एक दोपहर, मुख्य रूप से कुंजी मैपिंग और गेटेड टोकेनाइज़र।
- होस्टेड फॉर्म पर नहीं: PEFT एडेप्टर, सापेक्ष क्रियाएं, प्रशिक्षण-समय RTC, MEM मेमोरी।
lerobot-train \
--dataset.repo_id=${HF_USER}/my_so100_dataset \
--policy.type=pi05 \
--policy.pretrained_path=lerobot/pi05_base \
--policy.rtc_training_max_delay=10 \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--batch_size=4 --steps=30000 --seed=1000आप प्रशिक्षण फॉर्म में मॉडल और डेटासेट चुनते हैं, बैकएंड आवश्यक VRAM के अनुसार स्पॉट मार्केट पर एक GPU किराए पर लेता है, ट्रेनर चलाता है और ऑब्जेक्ट स्टोरेज में चेकपॉइंट लिखता है। Pi0.5 यहां केवल क्लाउड-आधारित है। SO-100, SO-101, Koch v1.1 और LeKiwi के लिए गाइड मौजूद हैं।
| सेटिंग | प्लेटफ़ॉर्म Pi0.5 के लिए क्या भेजता है |
|---|---|
| बेस चेकपॉइंट | lerobot/pi05_base |
| पॉलिसी प्रकार | pi05 |
| बैच आकार | 1 |
| लर्निंग रेट | 5e-5 |
| अधिकतम स्टेप्स | 30000 |
| ग्रेडिएंट एक्यूमुलेशन | 16, लेकिन नीचे चेतावनी देखें |
| फॉर्म में अतिरिक्त नियंत्रण | seed, logFreq |
| डेटासेट प्रारूप | LeRobot v3.0 |
| GPU टियर | A100 80 GB या H100 80 GB |
ट्रेनर 16 का ग्रेडिएंट एक्यूमुलेशन मान भेजता है और lerobot 0.5.1 के पास इसे प्राप्त करने के लिए कोई फ्लैग नहीं है, इसलिए इसे छोड़ दिया जाता है। किसी भी जारी किए गए lerobot में यह नहीं है: यह नियंत्रण केवल मुख्य पर मौजूद है, जैसे --accelerator.gradient_accumulation.steps। यहां प्रभावी बैच आकार 1 है, जबकि openpi का pi05_libero कॉन्फ़िग 256 का उपयोग करता है। लॉस कर्व पढ़ने से पहले यह जानना महत्वपूर्ण है। यह नियंत्रण GR00T N1.7 और GR00T N1.5 रन पर लागू होता है।
अनुमान उसी तरह काम करता है: एक पॉड को पॉलिसी को सेवा देने के लिए प्रावधानित किया जाता है और आपका स्थानीय क्लाइंट उससे बात करता है। पॉड में एक निष्क्रिय वॉचडॉग होता है और वह खुद को नष्ट कर देता है, ताकि एक भूला हुआ टैब चुपचाप बिल न करे। विलंबता की चेतावनी लागू होती है, यही कारण है कि 20 ms पर ACT अक्सर एक तेज़ कार्य जीतता है।
जब यह काम नहीं करता है
| लक्षण | सबसे संभावित कारण |
|---|---|
| रन शुरू होने से पहले अस्वीकृत | डेटासेट v2.1 लेकिन Pi0.5 को v3.0 चाहिए, या GR00T के लिए इसका उलटा |
| ImportError, डेटासेट पैकेज गायब है | प्रशिक्षण अतिरिक्त के बिना lerobot 0.6.x |
| बैच एक पर q01 और q99 के बारे में ValueError | meta/stats.json में कोई क्वांटाइल नहीं; पुनर्गणना करें या MEAN_STD का उपयोग करें |
| स्टेप 0 पर CUDA मेमोरी से बाहर | 70 GB से कम का पूर्ण फाइन-ट्यून; चेकपॉइंटिंग या train_expert_only का प्रयास करें |
| 401 या गेटेड रेपो त्रुटि | PaliGemma टोकेनाइज़र लाइसेंस स्वीकार नहीं किया गया |
| लॉस गिरता है, रोबोट कुछ नहीं करता है | सामान्यीकरण बेमेल, या पॉलिसी स्थिति की प्रतिलिपि बनाती है |
| आर्म चंक्स के बीच रुकता है | प्रति-स्टेप विलंबता प्लस राउंड ट्रिप; चंक क्यू सूख जाता है |
| एक सेटअप में काम करता है, दूसरे में विफल रहता है | बहुत कम एपिसोड, या सभी एक ही कॉन्फ़िगरेशन में |
- डेटासेट अस्वीकृत: v3 आवश्यक
- प्रशिक्षण के दौरान मेमोरी से बाहर
- हानि कम होती है लेकिन नीति कुछ नहीं करती
- नीति गति के बीच में रुक जाती है
- नीति केवल एक सेटअप में काम करती है
- प्रशिक्षण कार्य कतार में अटका हुआ
एक रन की लागत क्या है
Pi0.5 महंगी श्रेणी में आता है क्योंकि इसे 80 GB कार्ड की आवश्यकता होती है, और स्पॉट कीमतें बदलती रहती हैं, इसलिए यह आंकड़ा एक मूल्य के बजाय एक सीमा है। कई SO-100 कार्यों के लिए, पहले SmolVLA या ACT को पहले 24 GB श्रेणी पर प्रशिक्षित करें, पुष्टि करें कि कार्य सीखने योग्य है या नहीं, फिर उस पर A100 घंटे खर्च करें। अपनी पहली नीति को प्रशिक्षित करें उस सस्ते लूप का अनुसरण करता है, और मूल्य निर्धारण वर्तमान श्रेणियों को दर्शाता है।
| श्रेणी | नीतियाँ | विशिष्ट रन | प्रति घंटा मूल्य | प्रति रन लागत |
|---|---|---|---|---|
| A100 80 GB या H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 से 6 घंटे | 1.20 to 2.00 USD | लगभग 4 से 12 USD |
| RTX 4090 या कोई भी 24 GB कार्ड | SmolVLA, ACT | 2 से 5 घंटे | 0.30 to 0.60 USD | लगभग 1 से 3 USD |

एक शाम समर्पित करने से पहले: GR00T N1.7 बनाम Pi0.5 और Pi0.5 बनाम SmolVLA वही संख्याएँ आमने-सामने रखती हैं। अखाड़ा में 332 बेंचमार्क परिणामों के साथ 85 VLA मॉडल हैं, प्रत्येक अपने स्रोत से जुड़ा हुआ है, और परिवार की पृष्ठभूमि हमारे VLA अवलोकन में है।
स्टैक बनाए बिना Pi0.5 को प्रशिक्षित करें
एक फॉर्म में डेटासेट और हाइपरपैरामीटर चुनें। बैकएंड स्पॉट मार्केट पर 80 GB कार्ड किराए पर लेता है, ट्रेनर चलाता है और चेकपॉइंट्स को ऑब्जेक्ट स्टोरेज में लिखता है। SO-100, SO-101, Koch v1.1 और LeKiwi के लिए गाइड।
प्रशिक्षण गाइड खोलेंक्या मैं RTX 4090 पर Pi0.5 को फाइन-ट्यून कर सकता हूँ?▾
पूर्ण फाइन-ट्यून नहीं: openpi इसके लिए 70 GB से अधिक सूचीबद्ध करता है, इसलिए एक A100 80 GB या एक H100। इसका 22.5 GB LoRA आंकड़ा JAX पथ से संबंधित है; PyTorch कार्यान्वयन में कोई LoRA नहीं है। LeRobot का PEFT एकीकरण मौजूद है, लेकिन इसका प्रलेखित उदाहरण SmolVLA है और pi05 के लिए कोई VRAM आंकड़ा प्रकाशित नहीं किया गया है।
मुझे कितने एपिसोड की आवश्यकता है?▾
पचास, GR00T और ACT के समान न्यूनतम; केवल SmolVLA 30 पर कम जाता है। बेस चेकपॉइंट में 10,000 घंटे से अधिक का प्री-ट्रेनिंग होता है, इसलिए फाइन-ट्यून कुछ भी नहीं सीखने के बजाय अनुकूलित होता है: 50 स्वच्छ, विविध एपिसोड एक कॉन्फ़िगरेशन से दो सौ को हराते हैं।
--policy.path और --policy.pretrained_path में क्या अंतर है?▾
--policy.path वज़न और चेकपॉइंट के config.json को लोड करता है, इसलिए n_action_steps जैसी संग्रहीत सेटिंग्स विरासत में मिलती हैं और --policy.type को छोड़ देना चाहिए। --policy.pretrained_path केवल वज़न लोड करता है: सुविधा नाम आपके डेटासेट से आते हैं, संग्रहीत सेटिंग्स रीसेट होती हैं, --policy.type आवश्यक है। यही कारण है कि LIBERO कमांड n_action_steps=10 और empty_cameras=1 को स्पष्ट रूप से पास करता है; अन्यथा वे 50 और 0 पर वापस आ जाते हैं।
क्या खुला संस्करण मुझे पेपर से पूर्ण Pi0.5 देता है?▾
नहीं। दोनों केवल फ्लो मैचिंग एक्शन हेड का समर्थन करते हैं। FAST एक्शन टोकेनाइज़र और उच्च-स्तरीय सबटास्क भविष्यवाणी के साथ असतत-टोकन प्री-ट्रेनिंग चरण जारी नहीं किए गए थे, और lerobot/pi05_base कार्ड उस सूची में RL जोड़ता है, भले ही pi0.5 पेपर में कोई रीइन्फोर्समेंट लर्निंग चरण वर्णित नहीं है। आप एक भाषा स्ट्रिंग पर आधारित एक निम्न-स्तरीय नीति को प्रशिक्षित करते हैं जिसे आप प्रदान करते हैं, न कि एक मॉडल जो एक लंबे कार्य को स्वयं विघटित करता है।
यह गाइड किन संस्करणों के विरुद्ध लिखी गई है?▾
मुख्य पर openpi और lerobot 0.6.1, 3 अगस्त 2026 से जारी, दोनों 23 अगस्त 2026 को पढ़े गए। v3.0 डेटासेट अक्टूबर 2025 में 0.4.0 के साथ आए। 0.6.0 ने बेस पैकेज को हल्का बना दिया, इसलिए lerobot[pi] अकेले अब प्रशिक्षण स्टैक स्थापित नहीं करता है, और परिनियोजन को lerobot-rollout में स्थानांतरित कर दिया। प्रशिक्षण-समय RTC केवल मुख्य पर है; यहाँ होस्ट किया गया ट्रेनर 0.5.1 चलाता है।
Sources
- Physical-Intelligence/openpi: open-source models and packages for robotics
- openpi training configs, including pi05_libero and pi05_droid_finetune
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- pi0.5: a Vision-Language-Action Model with Open-World Generalization
- Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better
- PaliGemma: A versatile 3B VLM for transfer
- Training-Time Action Conditioning for Efficient Real-Time Chunking
- LeRobot pi05 documentation on the main branch, including training-time RTC
- LeRobot documentation: parameter efficient fine-tuning with PEFT
- LeRobotDataset v3.0 format documentation
- LeRobot release notes: v0.3.2 through v0.6.1, with the v0.6.0 breaking changes
- LeRobot v0.5.0: Scaling Every Dimension
- lerobot/pi05_base model card
- LeRobot documentation: Real-Time Chunking (RTC)
- openpi Pi0Config: the model defaults pi0 and pi05 inherit
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started