ماتریس آموزش AY-Robots با پنج سیاست به عنوان سطر و چهار بازوی رباتیک به عنوان ستون، که هر سلول پیوندی به یک راهنمای تنظیم دقیق خاص است
Pi0.5تطبیق جریانآموزش VLALeRobotتنظیم دقیق

چگونه Pi0.5 را با داده‌های ربات خودتان آموزش دهیم

AY-Robots ResearchAugust 23, 2026۱۶ دقیقه مطالعه

Pi0.5، مدل VLA تطبیق جریان از Physical Intelligence، را با داده‌های ربات خودتان تنظیم دقیق کنید. دستورات واقعی برای openpi و lerobot pi05، مشکلات فرمت مجموعه داده، و محدودیت‌های VRAM و تأخیر.

Pi0.5 مدلی است که وقتی یک سیاست باید در اتاقی کار کند که هرگز ندیده است، به سراغ آن می‌روید. همچنین ناخوشایندترین از پنج سیاست‌های قابل آموزش در اینجا برای تنظیم دقیق به صورت دستی است: مخزن بالادستی ابتدا JAX است، پورت LeRobot استقرار را در نسخه 0.6.0 از lerobot-record خارج کرد و نصب پایه را برای آموزش بسیار کوچک کرد، و یک تنظیم دقیق کامل روی 4090 جا نمی‌شود. در ادامه: آنچه تطبیق جریان در استنتاج هزینه دارد، دو مسیر دستور، و عدد 485 میلی‌ثانیه که تصمیم می‌گیرد آیا نتیجه قابل استفاده است یا خیر.

آنچه باید بدانید

  • یک VLA تطبیق جریان: یک VLM PaliGemma 3B به علاوه یک متخصص عمل 300M که تکه‌های عمل پیوسته را رمزگشایی می‌کند. دو مسیر برای تنظیم دقیق آن، openpi و LeRobot pi05، با 0.65 امتیاز اختلاف در میانگین LIBERO.
  • تنظیم دقیق کامل به بیش از 70 گیگابایت VRAM نیاز دارد. openpi LoRA را در 22.5 گیگابایت، فقط در مسیر JAX خود، فهرست می‌کند.
  • مجموعه داده باید LeRobotDataset v3.0 با کوانتیل‌های q01 و q99 در meta/stats.json باشد، در غیر این صورت دسته اول خطا می‌دهد.
  • ابتدا نسخه lerobot خود را بررسی کنید: 0.6.0 بسته پایه را سبک کرد و استقرار را از lerobot-record خارج کرد.
  • در اینجا با سرعت 485 میلی‌ثانیه در هر گام عمل اجرا می‌شود، به 50 اپیزود نیاز دارد و هزینه آن حدود 4 تا 12 دلار آمریکا در هر اجرا است.

Pi0.5 واقعاً چیست

Physical Intelligence در اکتبر 2024 pi0 را منتشر کرد: یک مدل بینایی-زبان-عمل تطبیق جریان بر روی یک VLM از پیش آموزش‌دیده: PaliGemma با 3 میلیارد پارامتر به علاوه یک متخصص عمل 300M که از ابتدا مقداردهی اولیه شده است، در مجموع 3.3 میلیارد. این مقاله آموزش اولیه را بر روی بیش از 10,000 ساعت داده ربات در 7 پیکربندی ربات و 68 وظیفه گزارش می‌دهد. اطلاعات بیشتر در مقاله pi0.

Pi0.5 (arXiv 2504.16054, 22 آوریل 2025) آن ساختار را حفظ کرده و رژیم آموزشی را تغییر می‌دهد: داده‌های وب، تشخیص شیء، دستورالعمل‌های کلامی از انسان‌هایی که ربات را آموزش می‌دهند، برچسب‌های زیروظیفه، داده‌های بین‌جسمانی از ربات‌ها در خانه‌های متعدد. نتیجه یک ربات است که آشپزخانه‌ها را در خانه‌هایی تمیز می‌کند که در مجموعه آموزشی نبودند. فایل README openpi جزئیاتی را اضافه می‌کند که در عنوان نیست: Pi0.5 منتشر شده با عایق‌بندی دانش (arXiv 2505.23705) آموزش دیده است.

ویژگیpi0pi0.5
نوع ستون فقرات VLMgemma_2b (PaliGemma)gemma_2b (PaliGemma)
نوع متخصص عملgemma_300mgemma_300m
action_dim3232
افق عمل پیش‌فرض5050
حداکثر طول توکن48200
ورودی حالت گسستهfalsetrue, حالت به سطل‌هایی در اعلان گسسته شده است
نقطه بازرسی پایهgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
آنچه عمومی است، کل مقاله نیست

فایل README openpi صریحاً بیان می‌کند: مخزن فقط از سر تطبیق جریان (flow matching head) برای آموزش و استنتاج Pi0.5 پشتیبانی می‌کند. مقاله دو مرحله را توصیف می‌کند و کد فقط مرحله دوم را شامل می‌شود: پیش‌آموزش هر عمل را به عنوان توکن‌های گسسته از طریق توکنایزر FAST نمایش می‌دهد، و در زمان استقرار مدل یک زیروظیفه سطح بالا را قبل از هر بخش عمل استنتاج می‌کند. هیچ یک از این‌ها در مخزن نیست. کارت lerobot/pi05_base همان لیست را ارائه می‌دهد و RL را اضافه می‌کند، اگرچه مقاله Pi0.5 هیچ مرحله یادگیری تقویتی را توصیف نمی‌کند. پورت LeRobot این دامنه را به ارث می‌برد، و همچنین هر مربی میزبانی شده بر روی آن، از جمله مورد اینجا. مجوز نیز تقسیم شده است: صفحه مستندات Pi0.5 می‌گوید Apache 2.0، کارت lerobot/pi05_base با برچسب license: gemma مشخص شده است.

آنچه تطبیق جریان در مورد آموزش و استنتاج تغییر می‌دهد

یک سیاست که می‌توانید روی SO-100 آموزش دهید یا مستقیماً اقدامات را رگرس می‌کند (ACT) یا آن‌ها را توکن‌سازی کرده و به صورت خودرگرسیو رمزگشایی می‌کند (pi0-FAST). تطبیق جریان هیچ‌کدام از این‌ها را انجام نمی‌دهد: این روش یک میدان برداری را یاد می‌گیرد که نویز را به یک قطعه عمل تمیز منتقل می‌کند، سپس آن را انتگرال‌گیری می‌کند. مقاله pi0 از 10 گام انتگرال‌گیری با اندازه گام 0.1 استفاده می‌کند؛ پیکربندی pi05 LeRobot نیز همان num_inference_steps: int = 10 را دارد.

  • آموزش: تابع زیان یک قطعه عمل نویزدار را رگرس می‌کند. نیازی به تنظیم توکن‌ساز یا گسسته‌سازی زوایای مفصل شما نیست.
  • استنتاج: هر قطعه عمل، ده بار عبور رو به جلو از طریق متخصص عمل را هزینه دارد. این یک ویژگی ساختاری است، نه یک مشکل تنظیم.
  • خروجی: اعمال پیوسته با ابعاد 32، که به صورت داخلی پدگذاری شده‌اند، و تابع زیان بر روی ابعادی که ربات شما دارد اعمال می‌شود. یک بازوی 6-درجه آزادی به همراه گریپر از 7 بعد استفاده می‌کند.
python
# 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
از src/openpi/models/pi0_config.py در شاخه اصلی openpi، 23 آگوست 2026 خوانده شده است.

بک‌بون PaliGemma و گیت جلوی آن

PaliGemma (arXiv 2407.07726) یک رمزگذار بینایی SigLIP-So400m بر روی مدل زبان Gemma-2B با حدود 3 میلیارد پارامتر است. Pi0.5 توکن‌ساز خود را از آن به ارث می‌برد و این توکن‌ساز در یک مخزن دروازه‌دار قرار دارد. این رایج‌ترین راهی است که یک اجرای اولیه قبل از اولین گام آموزشی می‌میرد.

قبل از اجاره GPU، مجوز دروازه‌دار را بپذیرید

مستندات LeRobot pi05 به وضوح بیان می‌کنند: pi0.5 از توکن‌ساز دروازه‌دار google/paligemma-3b-pt-224 استفاده می‌کند، بنابراین ابتدا مجوز آن را در Hub بپذیرید و hf auth login را اجرا کنید. دسترسی به صورت دستی اعطا می‌شود، نه فوری. اگر این مرحله را نادیده بگیرید، یک اجرای ابری پولی را شروع کنید و برای یک پاد که نمی‌تواند توکن‌ساز را دانلود کند، هزینه پرداخت خواهید کرد.

قبل از شروع: فرمت مجموعه داده، اپیزودها، سخت‌افزار

Pi0.5 در LeRobot یک مجموعه داده LeRobot را در طرح‌بندی v3.0 می‌خواند، که با lerobot 0.4.0 در اکتبر 2025 معرفی شد: اپیزودهای متعدد در هر فایل Parquet و MP4 به جای یک فایل برای هر اپیزود، با مرزهایی در meta/episodes/ به جای نام فایل‌ها. با استفاده از کلاینت دسکتاپ ضبط کنید یا اولین مجموعه داده خود را ضبط کنید را دنبال کنید تا آن را داشته باشید.

حالتحافظه GPU مورد نیازنمونه GPU
استنتاجmore than 8 GBRTX 4090
تنظیم دقیق، LoRAmore than 22.5 GBRTX 4090
تنظیم دقیق، کاملmore than 70 GBA100 80 GB or H100
تله نسخه که یک روز زمان می‌برد

Pi0.5 و SmolVLA به LeRobot v3.0 نیاز دارند. GR00T N1.7 و GR00T N1.5 به v2.0 یا v2.1 نیاز دارند و روی مجموعه داده v3.0 از کار می‌افتند. یک جلسه ضبط نمی‌تواند بدون تبدیل، هر دو را تغذیه کند و خطا نمی‌گوید "نسخه مجموعه داده اشتباه است". به مجموعه داده رد شد: v3 مورد نیاز است مراجعه کنید.

bash
# 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
از مستندات LeRobotDataset v3.0.

پلتفرم حداقل 50 اپیزود برای Pi0.5 می‌خواهد، همان حداقل برای GR00T و ACT. پیش‌آموزش کار اصلی را انجام می‌دهد، بنابراین 50 اپیزود تمیز بهتر از 200 اپیزود نامرتب است. تازه کار هستید؟ با راهنمای جمع‌آوری داده شروع کنید.

صفحه سیاست‌های AY-Robots که پنج سیاست قابل آموزش را بر اساس پارامترها، رده GPU، تأخیر و حداقل اپیزودها مقایسه می‌کند.
Pi0.5 در رده A100 و H100 با ۴۸۵ میلی‌ثانیه در هر گام عملیاتی و حداقل ۵۰ اپیزود قرار می‌گیرد.

مسیر A: تنظیم دقیق با مخزن openpi

پیاده‌سازی مرجع: ابتدا JAX، فقط روی اوبونتو 22.04 آزمایش شده، با اشیاء پیکربندی به جای پرچم‌ها هدایت می‌شود. یک مسیر PyTorch در سپتامبر 2025 ارائه شد که روی LIBERO اعتبارسنجی شده است. سه مرحله: داده‌های خود را تبدیل کنید، یک پیکربندی تعریف کنید، آموزش دهید و سرویس‌دهی کنید.

  1. 1
    کلون و نصب کنید

    openpi از uv استفاده می‌کند. GIT_LFS_SKIP_SMUDGE چیزی است که به LeRobot اجازه می‌دهد بدون LFS blobs به عنوان یک وابستگی وارد شود.

    bash
    git 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. 2
    داده‌های خود را به یک مجموعه داده LeRobot تبدیل کنید

    بالادست مبدل‌هایی برای LIBERO و DROID ارائه می‌دهد و انتظار دارد شما یکی را تطبیق دهید. کار اصلی نگاشت کلید است.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    یک پیکربندی آموزشی اضافه کنید

    پیکربندی‌ها ورودی‌های TrainConfig در src/openpi/training/config.py هستند. این یکی pi05_droid_finetune را با لودر وزن که به pi05_base اشاره می‌کند، تطبیق می‌دهد.

    python
    TrainConfig(
        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. 4
    محاسبه آمارهای نرمال

    بر اساس نام پیکربندی اجرا می‌شود، نه مجموعه داده. نادیده گرفتن آن اولین خطای رایج در اینجا است.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    آموزش دهید

    این متغیر به JAX اجازه می‌دهد تا ۹۰ درصد از حافظه GPU را به جای ۷۵ درصد پیش‌فرض استفاده کند. در یک کارت ۸۰ گیگابایتی، این موضوع تعیین می‌کند که آیا اجرا موفقیت‌آمیز خواهد بود یا خیر.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    سرویس‌دهی کنید

    سرور روی پورت ۸۰۰۰ گوش می‌دهد و به درخواست‌های مشاهده پاسخ می‌دهد؛ زمان اجرای ربات شما کلاینت است.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
مسیر PyTorch، مسیر JAX نیست

پیاده‌سازی PyTorch اوپن‌پای از pi0-FAST، دقت ترکیبی (mixed precision)، FSDP، LoRA یا وزن‌های EMA پشتیبانی نمی‌کند، بنابراین LoRA که به ۲۲.۵ گیگابایت می‌رسد، فقط JAX است، از طریق واریانت‌های gemma_2b_lora و gemma_300m_lora. بدتر اینکه: این تنظیمات فایل‌های پچ‌شده را روی ترنسفورمرز ۴.۵۳.۲ نصب‌شده شما کپی می‌کند، و فایل README هشدار می‌دهد که با حالت هاردلینک پیش‌فرض uv، این به طور دائمی ترنسفورمرز را در کش uv تغییر می‌دهد و می‌تواند به پروژه‌های دیگر نشت کند. آن را با uv cache clean transformers خنثی کنید.

مسیر B: تنظیم دقیق با lerobot pi05

پورت LeRobot همان وزن‌ها را در CLI که قبلاً برای ACT و SmolVLA استفاده می‌کنید، بسته‌بندی می‌کند. تمام موارد زیر در برابر lerobot 0.6.1، نسخه‌ای که از ۳ اوت ۲۰۲۶ منتشر شده است، و مستندات pi05 در ۲۳ اوت ۲۰۲۶ بررسی شده است. نسخه‌ها در اینجا اهمیت دارند: مجموعه داده‌های v3.0 با نسخه 0.4.0 در اکتبر ۲۰۲۵ عرضه شدند، وبلاگ 0.5.0 در ۹ مارس ۲۰۲۶، pi0-FAST و Real-Time Chunking را معرفی می‌کند، و 0.6.0 در ۶ ژوئیه ۲۰۲۶، بسته پایه را سبک کرد و استقرار را به lerobot-rollout منتقل کرد.

یک چیز تغییر نکرد: lerobot-train و lerobot-record از قبل در نسخه 0.3.2، اوت ۲۰۲۵، نقاط ورودی بودند. یک آموزش که هنوز python -m lerobot.scripts.train را فراخوانی می‌کند، یک سال از تغییرات را پشت سر گذاشته است و در مورد بقیه نیز قابل اعتماد نیست.

  1. 1
    نصب با افزونه‌های صحیح

    از نسخه 0.6.0، نصب پایه فقط وابستگی‌های اصلی یادگیری ماشین را شامل می‌شود و افزونه pi هیچ کد مجموعه داده یا آموزشی اضافه نمی‌کند، بنابراین برای تنظیم دقیق به افزونه training نیز نیاز است. دستورات تک‌خطی قدیمی‌تر در زمان import با خطا مواجه می‌شوند.

    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. 2
    احراز هویت

    مجوز paligemma-3b-pt-224 را در یک مرورگر بپذیرید، سپس در دستگاهی که آموزش می‌دهد وارد شوید.

    bash
    hf auth login
  3. 3
    افزودن آمار کوانتیل

    Pi0.5 مقادیر STATE و ACTION را با استفاده از کوانتیل‌ها نرمال‌سازی می‌کند، بنابراین meta/stats.json به q01 و q99 نیاز دارد. مجموعه‌داده‌های قدیمی‌تر فقط min، max، mean و std را شامل می‌شوند.

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    تنظیم دقیق از lerobot/pi05_base

    اندازه بچ را به مقداری تنظیم کنید که کارت گرافیک شما تحمل می‌کند؛ مستندات از 64 در LIBERO با 80 گیگابایت استفاده می‌کنند. bfloat16 را به صراحت ارسال کنید، پیش‌فرض پیکربندی float32 است.

    bash
    lerobot-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. 5
    اجرای آن روی بازو

    در نسخه 0.6.x این دستور lerobot-rollout است: lerobot-record یک policy را رد می‌کند و نام‌های مجموعه داده eval_ را نمی‌پذیرد. Base بازو را هدایت می‌کند، sentry رول‌اوت را ضبط می‌کند.

    bash
    lerobot-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=pi05Pi0.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_onlyVLM را فریز می‌کند، expert را آموزش می‌دهدپیش‌فرض 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ستون‌های مجموعه داده را به ویژگی‌های policy نگاشت می‌کندزمانی که کلیدهای دوربین شما متفاوت است، مورد نیاز است
خطایی که بیشتر اجراهای اول با آن مواجه می‌شوند

بدون کوانتیل‌ها، در بچ اول با خطای ValueError: QUANTILES normalization mode requires q01 and q99 stats مواجه می‌شوید. آمار را دوباره محاسبه کنید، اما نتیجه در $HF_LEROBOT_HOME/your_dataset قرار می‌گیرد، نه کشی که --dataset.repo_id می‌خواند، بنابراین با --dataset.root که به آنجا اشاره می‌کند آموزش دهید یا به Hub پوش کنید. یا کوانتیل‌ها را با --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}' نادیده بگیرید، همانطور که دستور مرجع LIBERO انجام می‌دهد.

سه مجموعه از پیش‌فرض‌ها، و کدام یک به trainer می‌رسند

TrainConfig از openpi مرجع است، PI05Config از LeRobot چیزی است که lerobot-train وقتی شما چیزی نمی‌گویید استفاده می‌کند، و فرم اینجا مجموعه سومی را ارسال می‌کند. نکته غافلگیرکننده نرخ یادگیری است: هر دو پیش‌فرض بالادستی در 2.5e-5 به اوج می‌رسند، در حالی که پیکربندی pi05_libero خود openpi و این پلتفرم آن را به 5e-5 افزایش می‌دهند.

تنظیمTrainConfig از openpipi05 و lerobot-train از lerobotAY-Robots ارسال می‌کند
اندازه بچ3281
حداکثر نرخ یادگیری2.5e-5, کاهش کسینوسیoptimizer_lr 2.5e-55e-5
گام‌های آموزش30,000100,00030,000
فاصله نقطه بازرسی1,000 گام20,000 گامدر فرم نیست
سید421,000در فرم است
بخش عملaction_horizon 50chunk_size 50, n_action_steps 50در فرم نیست
نوع داده وزنbfloat16float32 until you pass --policy.dtypeدر فرم نیست
تجمع گرادیانچنین گزینه‌ای وجود ندارد، به جای آن fsdp_devicesتاکنون در هیچ نسخه‌ای وجود نداشته است16، و حذف شده است

آیا پورت قابل اعتماد است؟ تیم LeRobot مدل پایه LIBERO را برای 6 هزار گام دیگر تنظیم دقیق کرد و با اعداد مرجع openpi در چهار مجموعه مقایسه کرد: میانگین 97.5 درصد در مقابل 96.85، جلوتر در Libero 10، عقب‌تر در Spatial. این مسیر یک انتخاب ابزاری است، نه کیفیتی.

تنظیم دقیق Pi0.5 روی داده‌های خودتان
مزایا
  • بیش از 10,000 ساعت پیش‌آموزش ربات پشت آن است، بنابراین 50 اپیزود از وظیفه شما می‌تواند کافی باشد.
  • اعمال پیوسته: بدون توکنایزر برای تنظیم، بدون محدودیت گسسته‌سازی روی زوایای مفصل شما.
  • پورت LeRobot در میانگین LIBERO امتیاز 97.5 درصد را در مقابل 96.85 openpi کسب می‌کند، بنابراین CLI کاربرپسندتر هیچ هزینه قابل اندازه‌گیری ندارد.
  • مسیرهای کارآمد پارامتر در هر دو طرف: نسخه‌های JAX LoRA از openpi، یکپارچه‌سازی PEFT از LeRobot.
مبادله‌ها
  • تنظیم دقیق کامل به بیش از 70 گیگابایت نیاز دارد. رقم 22.5 گیگابایت LoRA عدد JAX از openpi است؛ هیچ عددی برای pi05 تحت PEFT منتشر نشده است.
  • 485 میلی‌ثانیه در هر گام عمل، کندترین در بین پنج مورد اینجا: دو برابر SmolVLA، بیست و چهار برابر ACT.
  • LeRobot v3.0 مورد نیاز است، بنابراین یک مجموعه داده که برای اجرای GR00T ضبط شده است، نیاز به تبدیل دارد و بالعکس.
  • گزینه‌های جدید ابتدا در main قرار می‌گیرند: حافظه RTC و MEM زمان آموزش در 0.6.1 نیستند، بنابراین جدیدترین مستندات می‌تواند به معنای نصب از git باشد.

واقعیت 485 میلی‌ثانیه، و جایی که دیگر قابل استفاده نیست

این پروژه شما را تعیین می‌کند، بنابراین قبل از جدول هزینه می‌آید. به ازای هر گام عملیاتی که در اینجا برای Pi0.5 اندازه‌گیری شده، 485 میلی‌ثانیه است. در مقایسه با چهار مورد دیگر:

سیاستاستنتاج به ازای هر گام عملیاتیپارامترهارده GPUحداقل اپیزودها
ACT20 ms~80 MRTX 4090 or any 24 GB card50
GR00T N1.7152 ms~3 BA100 80 GB or H100 80 GB50
GR00T N1.5165 ms~3 BA100 80 GB or H100 80 GB50
SmolVLA245 ms~450 MRTX 4090 or any 24 GB card30
Pi0.5485 ms~3 BA100 80 GB or H100 80 GB50
صفحه مقایسه AY-Robots برای GR00T N1.7 در برابر Pi0.5، با پارامترها، رده GPU، تأخیر و فرمت مجموعه داده
همان رده GPU، همان حداقل اپیزود، نسخه متفاوت مجموعه داده، شکاف تأخیر سه برابری.
استنتاج باید در کنار سرووها قرار گیرد

حلقه کنترل در این پنج مدل، ۲۰ تا ۴۸۵ میلی‌ثانیه در هر گام عملیاتی اجرا می‌شود. رفت و برگشت‌های اینترنت عمومی علاوه بر ۴۸۵ میلی‌ثانیه، یک سیاست کاری را به سیاستی مردد تبدیل می‌کند. استنتاج از راه دور برای عملیات کند برداشت و جابجایی (pick-and-place) قابل اجرا است، نه برای حرکت‌های واکنشی سریع. ما ترجیح می‌دهیم این را بگوییم تا اینکه یک دمو بفروشیم که فقط روی شبکه محلی (LAN) کار می‌کند. اگر بازوی شما بین تکه‌ها مکث می‌کند، از توقف سیاست در میانه حرکت شروع کنید.

بالادست (Upstream) پاسخی دارد، و نیمی از آن در نسخه‌ای که می‌توانید نصب کنید، موجود است. تکه‌بندی بلادرنگ (Real-Time Chunking) تکه بعدی را در حالی که بازو هنوز در حال اجرای تکه فعلی است، تولید می‌کند، سپس گام‌های همپوشان تکه جدید را هدایت می‌کند تا نزدیک به بخش از قبل اجرا شده باقی بماند، به طوری که بازو در محل اتصال متوقف یا دچار لرزش نشود. فرم زمان استنتاج در تغییرات نسخه 0.4.2 برای Pi0، Pi0.5 و SmolVLA ارائه شده و یک پرچم rollout است، نه نیاز به بازآموزی:

bash
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
execution_horizon تعداد گام‌هایی از تکه قبلی است که تکه جدید باید با آن همخوانی داشته باشد؛ مستندات RTC محدوده معمول را ۸ تا ۱۲ ذکر می‌کنند. بک‌اند پیش‌فرض استنتاج --inference.type=sync است.

این کار مدل را سریع‌تر نمی‌کند. بلکه شکاف را پنهان می‌کند: ۴۸۵ میلی‌ثانیه همچنان صرف می‌شود، اما خارج از مسیر بحرانی، بنابراین صف بین تکه‌ها خالی نمی‌ماند. نوع زمان آموزش از arXiv 2512.05964 فراتر می‌رود: مدل یاد می‌گیرد که بر اساس یک پیشوند عملیاتی تمیز شرطی شود، بنابراین در زمان استنتاج، همپوشانی با گام‌های زمانی جریان (flow timesteps) برای هر عمل به جای هدایت شدن، به سختی نقاشی می‌شود (hard-inpainted)، و گذر برگشتی هدایت ناپدید می‌شود. در طول آموزش، طول پیشوند را برای هر مثال نمونه‌برداری می‌کند و افت جریان را روی پسوند باقی‌مانده اعمال می‌کند. این پرچم فقط در main وجود دارد، نه در 0.6.1، و تأخیری که برای آن آموزش می‌دهید باید کمتر از chunk_size باشد.

دو راه برای دریافت یک چک‌پوینت Pi0.5

شما یک کارت ۸۰ گیگابایتی را اجاره می‌کنید یا مالک آن هستید، یکی از پشته‌های بالا را نصب می‌کنید، مجموعه داده خود را تبدیل می‌کنید و بر اجرای آن نظارت می‌کنید. شما هر کنترل‌کننده‌ای را در اختیار دارید: JAX LoRA از openpi، آداپتورهای PEFT از LeRobot، اقدامات نسبی، نگاشت‌های کلید سفارشی. شما همچنین هر شکستی را تجربه می‌کنید.

  • سخت‌افزار: A100 80 GB یا H100، یا یک کارت ۲۴ گیگابایتی در مسیر JAX LoRA از openpi.
  • راه‌اندازی: یک بعدازظهر برای اولین اجرا، عمدتاً نگاشت کلید و توکنایزر دروازه‌دار.
  • در فرم میزبانی‌شده موجود نیست: آداپتورهای PEFT، اقدامات نسبی، RTC زمان آموزش، حافظه MEM.
bash
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
دستوری که هیچ فرم میزبانی‌شده‌ای اجرا نمی‌کند و pip نمی‌تواند نصب کند: RTC زمان آموزش یک پرچم شاخه اصلی است.

زمانی که کار نمی‌کند

علامتمحتمل‌ترین علت
اجرا قبل از شروع رد شدمجموعه داده v2.1 است اما Pi0.5 نسخه v3.0 را می‌خواهد، یا برعکس برای GR00T
ImportError، بسته datasets گم شده استlerobot 0.6.x بدون افزونه آموزش
ValueError در مورد q01 و q99 در بچ اولهیچ کوانتیلی در meta/stats.json وجود ندارد؛ دوباره محاسبه کنید یا از MEAN_STD استفاده کنید
CUDA در گام 0 از حافظه خارج شدتنظیم دقیق کامل زیر 70 GB؛ چک‌پوینت‌گذاری یا train_expert_only را امتحان کنید
خطای 401 یا مخزن دروازه‌دارمجوز توکنایزر PaliGemma پذیرفته نشده است
افت (Loss) کاهش می‌یابد، ربات کاری نمی‌کندعدم تطابق نرمال‌سازی، یا سیاست وضعیت را کپی می‌کند
بازو بین تکه‌ها مکث می‌کندتأخیر در هر گام به علاوه رفت و برگشت؛ صف تکه‌ها خالی می‌شود
در یک تنظیم کار می‌کند، در دیگری شکست می‌خوردتعداد اپیزودها خیلی کم است، یا همه در یک پیکربندی هستند

هزینه یک اجرا چقدر است

Pi0.5 در رده گران‌قیمت قرار می‌گیرد زیرا به یک کارت 80 GB نیاز دارد و قیمت‌های لحظه‌ای متغیر هستند، بنابراین این رقم یک محدوده است نه یک قیمت. برای بسیاری از وظایف SO-100، ابتدا SmolVLA یا ACT را روی رده 24 GB آموزش دهید، ابتدا تأیید کنید که آیا وظیفه اصلاً قابل یادگیری است، سپس ساعت‌های A100 را روی آن صرف کنید. اولین سیاست خود را آموزش دهید آن حلقه ارزان‌تر را طی می‌کند، و قیمت‌گذاری رده‌های فعلی را نشان می‌دهد.

ردهسیاست‌هااجرای معمولقیمت هر ساعتهزینه هر اجرا
A100 80 GB یا H100Pi0.5, GR00T N1.7, GR00T N1.53 تا 6 hours1.20 تا 2.00 USDحدود 4 تا 12 USD
RTX 4090 یا هر کارت 24 GBSmolVLA, ACT2 تا 5 hours0.30 تا 0.60 USDحدود 1 تا 3 USD
جدول هزینه‌های AY-Robots که نشان می‌دهد هر سیاست به کدام GPU نیاز دارد، زمان اجرا و قیمت معمول، و تعداد اپیزودهای مورد نیاز قبل از مفید شدن یک سیاست
همان دو رده در صفحه محصول: Pi0.5 کارت ۸۰ گیگابایتی را اجاره می‌کند، SmolVLA و ACT روی یک ۴۰۹۰ جا می‌شوند.

قبل از اختصاص یک شب: و همان اعداد را رو در رو مقایسه می‌کنند. شامل ۸۵ مدل VLA با ۳۳۲ نتیجه بنچمارک است که هر کدام به منبع خود لینک شده‌اند، و اطلاعات پس‌زمینه در مورد این خانواده در .

آموزش Pi0.5 بدون نیاز به ساختن پشته

مجموعه داده و هایپرپارامترها را در یک فرم انتخاب کنید. بک‌اند یک کارت ۸۰ گیگابایتی را در بازار لحظه‌ای اجاره می‌کند، ترینر را اجرا کرده و چک‌پوینت‌ها را در فضای ذخیره‌سازی اشیاء می‌نویسد. راهنماهایی برای SO-100، SO-101، Koch v1.1 و LeKiwi.

باز کردن راهنماهای آموزش
آیا می‌توانم Pi0.5 را روی یک RTX 4090 فاین‌تیون کنم؟

یک فاین‌تیون کامل خیر: openpi بیش از ۷۰ گیگابایت برای آن لیست می‌کند، بنابراین یک A100 80 GB یا یک H100. رقم ۲۲.۵ گیگابایتی LoRA آن به مسیر JAX تعلق دارد؛ پیاده‌سازی PyTorch LoRA ندارد. ادغام PEFT در LeRobot وجود دارد، اما مثال مستند آن SmolVLA است و هیچ رقم VRAM برای pi05 منتشر نشده است.

به چند اپیزود نیاز دارم؟

پنجاه، همان حداقل GR00T و ACT؛ فقط SmolVLA کمتر است، در ۳۰. چک‌پوینت پایه بیش از ۱۰,۰۰۰ ساعت پیش‌آموزش را حمل می‌کند، بنابراین فاین‌تیون به جای یادگیری از صفر، تطبیق می‌یابد: ۵۰ اپیزود تمیز و متنوع بهتر از دویست اپیزود از یک پیکربندی است.

تفاوت بین --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 را ارسال می‌کند؛ در غیر این صورت به ۵۰ و ۰ بازمی‌گردند.

آیا نسخه باز، Pi0.5 کامل مقاله را به من می‌دهد؟

خیر. هر دو فقط از سر عملگر تطبیق جریان پشتیبانی می‌کنند. مرحله پیش‌آموزش توکن گسسته با توکن‌ساز عملگر FAST و پیش‌بینی زیروظیفه سطح بالا منتشر نشدند، و کارت lerobot/pi05_base RL را به آن لیست اضافه می‌کند، حتی با وجود اینکه مقاله pi0.5 هیچ مرحله یادگیری تقویتی را توصیف نمی‌کند. شما یک سیاست سطح پایین را آموزش می‌دهید که بر اساس یک رشته زبانی که شما ارائه می‌دهید شرطی شده است، نه مدلی که یک وظیفه طولانی را خودش تجزیه کند.

این راهنما بر اساس کدام نسخه‌ها نوشته شده است؟

openpi در main و lerobot 0.6.1، انتشار از ۳ اوت ۲۰۲۶، هر دو در ۲۳ اوت ۲۰۲۶ خوانده شدند. مجموعه داده‌های v3.0 با 0.4.0 در اکتبر ۲۰۲۵ رسیدند. 0.6.0 بسته پایه را سبک کرد، بنابراین lerobot[pi] به تنهایی دیگر پشته آموزشی را نصب نمی‌کند و استقرار را به lerobot-rollout منتقل کرد. RTC زمان آموزش فقط در main است؛ ترینر میزبانی شده در اینجا 0.5.1 را اجرا می‌کند.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started