
Physical Intelligence کے فلو میچنگ 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 پر: PaliGemma 3 بلین پیرامیٹرز کے ساتھ اور ایک 300M ایکشن ایکسپرٹ جو شروع سے انیشلائز کیا گیا، کل 3.3 بلین۔ یہ مقالہ 7 روبوٹ کنفیگریشنز اور 68 ٹاسکس پر 10,000 گھنٹوں سے زیادہ روبوٹ ڈیٹا پر پری ٹریننگ کی اطلاع دیتا ہے۔ مزید pi0 مضمون میں۔
Pi0.5 (arXiv 2504.16054, 22 April 2025) اس ڈھانچے کو برقرار رکھتا ہے اور تربیت کی خوراک کو تبدیل کرتا ہے: ویب ڈیٹا، آبجیکٹ ڈیٹیکشن، انسانوں کی طرف سے روبوٹ کو کوچنگ دینے والی زبانی ہدایات، سب ٹاسک لیبلز، اور کئی گھروں میں روبوٹس سے کراس-ایمباڈیمنٹ ڈیٹا۔ اس کا نتیجہ ایک ایسا روبوٹ ہے جو ان گھروں میں کچن صاف کرتا ہے جو تربیتی سیٹ میں شامل نہیں تھے۔ openpi README ایک تفصیل کا اضافہ کرتا ہے جو عنوان میں نہیں ہے: جاری کردہ pi0.5 کو نالج انسولیشن (arXiv 2505.23705) کے ساتھ تربیت دی گئی تھی۔
| پراپرٹی | pi0 | pi0.5 |
|---|---|---|
| VLM backbone variant | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Action expert variant | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon default | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true، پرامپٹ میں اسٹیٹ کو بِنز میں تقسیم کیا گیا |
| Base checkpoint | 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) ایک SigLIP-So400m ویژن انکوڈر ہے جو Gemma-2B لینگویج ماڈل پر مبنی ہے، جس میں تقریباً 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 کے بجائے 90 فیصد GPU میموری استعمال کرنے دیتا ہے۔ 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
اوپن پائی کا PyTorch امپلیمینٹیشن pi0-FAST، مکسڈ پریسیشن، FSDP، LoRA یا EMA ویٹس کو سپورٹ نہیں کرتا، لہٰذا وہ LoRA جو 22.5 GB تک پہنچتا ہے صرف 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 اور Real-Time Chunking پیش کیے گئے ہیں، اور 6 جولائی 2026 کو 0.6.0 نے بیس پیکیج کو ہلکا پھلکا بنایا اور تعیناتی کو lerobot-rollout پر منتقل کر دیا۔
ایک چیز جو منتقل نہیں ہوئی: lerobot-train اور lerobot-record اگست 2025 میں 0.3.2 میں پہلے ہی انٹری پوائنٹس تھے۔ ایک ٹیوٹوریل جو اب بھی python -m lerobot.scripts.train کال کرتا ہے وہ ایک سال کی تبدیلیوں سے پہلے کا ہے اور باقی کے بارے میں بھی قابل اعتبار نہیں ہے۔
- 1صحیح ایکسٹرا کے ساتھ انسٹال کریں
0.6.0 کے بعد سے، بیس انسٹال صرف بنیادی ML انحصار رکھتا ہے، اور pi ایکسٹرا کوئی ڈیٹا سیٹ یا ٹریننگ کوڈ شامل نہیں کرتا، لہذا فائن ٹیون کے لیے ٹریننگ ایکسٹرا کی بھی ضرورت ہوتی ہے۔ پرانے ون لائنرز یہاں امپورٹ کے وقت ناکام ہو جاتے ہیں۔
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, cosine decay | optimizer_lr 2.5e-5 | 5e-5 |
| ٹریننگ سٹیپس | 30,000 | 100,000 | 30,000 |
| چیک پوائنٹ وقفہ | 1,000 steps | 20,000 steps | فارم میں نہیں |
| سیڈ | 42 | 1,000 | فارم میں |
| ایکشن چنک | action_horizon 50 | chunk_size 50, n_action_steps 50 | فارم میں نہیں |
| ویٹ ڈیٹا ٹائپ | bfloat16 | float32 until you pass --policy.dtype | فارم میں نہیں |
| گریڈینٹ ایکومولیشن | ایسا کوئی نوب نہیں، اس کے بجائے fsdp_devices | اب تک کی ہر ریلیز سے غائب | 16، اور اسے چھوڑ دیا گیا ہے |
کیا پورٹ وفادار ہے؟ LeRobot ٹیم نے LIBERO بیس ماڈل کو مزید 6k سٹیپس کے لیے فائن ٹیون کیا اور openpi کے حوالہ نمبروں سے چار سوئیٹس پر موازنہ کیا: 96.85 کے مقابلے میں 97.5 فیصد اوسط، Libero 10 پر آگے، Spatial پر پیچھے۔ یہ راستہ ٹولنگ کا انتخاب ہے، معیار کا نہیں۔
- اس کے پیچھے روبوٹ کی 10,000 گھنٹے سے زیادہ کی پری ٹریننگ ہے، لہذا آپ کے کام کے 50 ایپی سوڈ کافی ہو سکتے ہیں۔
- مسلسل ایکشنز: ٹیون کرنے کے لیے کوئی ٹوکنائزر نہیں، آپ کے جوائنٹ اینگلز پر کوئی ڈسکریٹائزیشن فلور نہیں۔
- LeRobot پورٹ LIBERO اوسط پر openpi کے 96.85 کے مقابلے میں 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 ملی سیکنڈ کی حقیقت، اور جہاں یہ قابل استعمال نہیں رہتی
یہ آپ کے منصوبے کا فیصلہ کرتا ہے، لہذا یہ لاگت کی جدول سے پہلے آتا ہے۔ فی ایکشن سٹیپ جو یہاں Pi0.5 کے لیے ماپا گیا ہے وہ 485 ملی سیکنڈ ہے۔ باقی چار کے مقابلے میں:
| پالیسی | فی ایکشن سٹیپ انفرنس | پیرامیٹرز | جی پی یو ٹیر | کم از کم ایپی سوڈز |
|---|---|---|---|---|
| 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 کے لیے کیا بھیجتا ہے |
|---|---|
| Base checkpoint | lerobot/pi05_base |
| Policy type | pi05 |
| Batch size | 1 |
| Learning rate | 5e-5 |
| Max steps | 30000 |
| Gradient accumulation | 16، لیکن نیچے دی گئی وارننگ دیکھیں۔ |
| Extra knobs in the form | seed, logFreq |
| Dataset format | LeRobot v3.0 |
| GPU tier | 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 رن پر لاگو ہوتا ہے۔
انفرنس اسی طرح کام کرتا ہے: پالیسی کو سروس فراہم کرنے کے لیے ایک پوڈ فراہم کیا جاتا ہے اور آپ کا مقامی کلائنٹ اس سے بات کرتا ہے۔ پوڈ میں ایک آئیڈل واچ ڈاگ ہوتا ہے اور خود کو تباہ کر دیتا ہے، تاکہ ایک بھولی ہوئی ٹیب خاموشی سے بل نہ کرے۔ لیٹنسی کی وارننگ لاگو ہوتی ہے، یہی وجہ ہے کہ ACT 20 ms پر اکثر ایک تیز کام جیت جاتا ہے۔
جب یہ کام نہیں کرتا
| علامت | سب سے زیادہ ممکنہ وجہ |
|---|---|
| رن شروع ہونے سے پہلے مسترد ہو گئی | ڈیٹا سیٹ v2.1 ہے لیکن Pi0.5 کو v3.0 چاہیے، یا GR00T کے لیے اس کے برعکس۔ |
| ImportError، datasets پیکیج غائب ہے | 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 or H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
| RTX 4090 or any 24 GB card | SmolVLA, ACT | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |

ایک شام وقف کرنے سے پہلے: GR00T N1.7 بمقابلہ Pi0.5 اور Pi0.5 بمقابلہ SmolVLA وہی اعداد و شمار کا آمنے سامنے موازنہ کرتے ہیں۔ ایرینا میں 85 VLA ماڈلز ہیں جن کے 332 بینچ مارک نتائج ہیں، ہر ایک اپنے ماخذ سے منسلک ہے، اور اس فیملی کے بارے میں پس منظر ہمارے 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