Ang training matrix ng AY-Robots na may limang policy bilang row at apat na robot arm bilang column, bawat cell ay link sa isang partikular na gabay sa fine-tuning
Pi0.5Flow MatchingPagsasanay ng VLALeRobotFine-Tuning

Paano Sanayin ang Pi0.5 sa Sarili Mong Data ng Robot

AY-Robots ResearchAugust 23, 202616 minuto ng pagbasa

I-fine-tune ang Pi0.5, ang flow-matching VLA mula sa Physical Intelligence, sa sarili mong data ng robot. Mga totoong command para sa openpi at lerobot pi05, mga bitag sa format ng dataset, mga limitasyon sa VRAM at latency.

Ang Pi0.5 ay ang modelo na ginagamit mo kapag ang isang patakaran ay kailangang gumana sa isang silid na hindi pa nito nakita. Ito rin ang pinakamahirap sa limang mga patakarang maaaring sanayin dito upang i-fine-tune nang mano-mano: ang upstream repository ay JAX muna, inilipat ng LeRobot port ang deployment palabas ng lerobot-record sa 0.6.0 at ginawang masyadong maliit ang base install para sa pagsasanay, at ang isang buong fine-tune ay hindi kasya sa isang 4090. Sa ibaba: kung ano ang flow matching na gastos sa inference, ang dalawang ruta ng command, at ang numerong 485 ms na nagpapasya kung magagamit ang resulta.

Ano ang kailangan mong malaman

  • Isang flow-matching VLA: isang 3B PaliGemma VLM kasama ang isang 300M action expert na nagde-decode ng tuloy-tuloy na action chunks. Dalawang ruta para i-fine-tune ito, openpi at LeRobot pi05, na may 0.65 puntos na agwat sa average ng LIBERO.
  • Ang buong fine-tuning ay nangangailangan ng higit sa 70 GB ng VRAM. Inilista ng openpi ang LoRA sa 22.5 GB, sa JAX path lamang nito.
  • Ang dataset ay dapat LeRobotDataset v3.0 na may q01 at q99 quantiles sa meta/stats.json, o magkakaroon ng error sa unang batch.
  • Suriin muna ang iyong bersyon ng lerobot: ginawa ng 0.6.0 na maging lightweight ang base package at inilipat ang deployment palabas ng lerobot-record.
  • Dito, tumatakbo ito sa 485 ms bawat action step, nangangailangan ng 50 episode, at nagkakahalaga ng humigit-kumulang 4 hanggang 12 USD bawat pagtakbo.

Ano talaga ang Pi0.5

Inilathala ng Physical Intelligence ang pi0 noong Oktubre 2024: isang flow matching modelo ng vision-language-action sa isang pretrained VLM: PaliGemma sa 3 bilyong parameter kasama ang isang 300M action expert na sinimulan mula sa simula, 3.3 bilyon sa kabuuan. Iniulat ng papel ang pre-training sa mahigit 10,000 oras ng data ng robot sa 7 configuration ng robot at 68 gawain. Higit pa sa artikulo ng pi0.

Pi0.5 (arXiv 2504.16054, 22 April 2025) pinanatili ang balangkas na iyon at binago ang diet sa pagsasanay: data mula sa web, object detection, verbal na instruksyon mula sa mga tao na nagtuturo sa robot, mga label ng subtask, cross-embodiment data mula sa mga robot sa maraming tahanan. Ang resulta ay isang robot na naglilinis ng mga kusina sa mga bahay na wala sa training set. Idinagdag ng openpi README ang isang detalye na hindi nabanggit sa pamagat: ang inilabas na pi0.5 ay sinanay na may knowledge insulation (arXiv 2505.23705).

Katangianpi0pi0.5
Variant ng VLM backbonegemma_2b (PaliGemma)gemma_2b (PaliGemma)
Variant ng action expertgemma_300mgemma_300m
action_dim3232
default na action_horizon5050
max_token_len48200
discrete_state_inputfalsetrue, ang state ay dinidiscretize sa mga bins sa prompt
Base checkpointgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Ang pampubliko ay hindi ang buong papel

Malinaw ang openpi README: sinusuportahan lamang ng repository ang flow matching head, para sa pagsasanay at inference ng pi0.5. Inilalarawan ng papel ang dalawang yugto at ang code ay nagdadala lamang ng pangalawa: ang pre-training ay kumakatawan sa bawat aksyon bilang discrete tokens sa pamamagitan ng FAST tokenizer, at sa deployment ang modelo ay naghihinuha ng isang high-level na subtask bago ang bawat action chunk. Wala sa mga iyon ang nasa repository. Ang lerobot/pi05_base card ay nagbibigay ng parehong listahan at nagdaragdag ng RL, bagaman ang pi0.5 na papel ay hindi naglalarawan ng anumang reinforcement learning stage. Minana ng LeRobot port ang saklaw na iyon, at gayundin ang bawat hosted trainer dito, kabilang ang ang narito. Hati rin ang paglilisensya: sinasabi ng pi05 doc page na Apache 2.0, ang lerobot/pi05_base card ay may tag na license: gemma.

Ano ang binabago ng flow matching tungkol sa pagsasanay at inference

Ang patakaran na maaari mong sanayin sa isang SO-100 ay direktang nagre-regress ng mga aksyon (ACT) o nagta-tokenize at nagde-decode ng mga ito nang autoregressively (pi0-FAST). Ang flow matching ay hindi ginagawa ang alinman sa mga ito: natututo ito ng isang vector field na naglilipat ng ingay sa isang malinis na bahagi ng aksyon, pagkatapos ay isinasama ito. Ang pi0 paper ay gumagamit ng 10 integration steps sa step size na 0.1; ang pi05 config ng LeRobot ay nagtataglay ng parehong num_inference_steps: int = 10.

  • Pagsasanay: ang loss ay nagre-regress ng isang maingay na bahagi ng aksyon. Walang tokenizer na kailangang i-tune, walang discretisation ng iyong mga joint angle.
  • Inference: isang bahagi ng aksyon ang nagkakahalaga ng sampung forward pass sa pamamagitan ng action expert. Ito ay structural, hindi isang problema sa pag-tune.
  • Output: tuloy-tuloy na mga aksyon ng dimension 32, na may internal padding, ang loss ay kinukuha sa mga dimension na mayroon ang iyong robot. Ang isang 6-DoF na braso kasama ang gripper ay gumagamit ng 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
Nabasa mula sa src/openpi/models/pi0_config.py sa openpi main branch, 23 August 2026.

Ang PaliGemma backbone, at ang gate sa harap nito

Ang PaliGemma (arXiv 2407.07726) ay isang SigLIP-So400m vision encoder sa isang Gemma-2B language model, na may humigit-kumulang 3B na parameter. Minana ng Pi0.5 ang tokenizer nito, at ang tokenizer na iyon ay nasa isang gated repository. Ito ang pinakakaraniwang paraan kung paano nabibigo ang unang pagpapatakbo, bago ang unang hakbang sa pagsasanay.

Tanggapin ang gated license bago ka umarkila ng GPU

Malinaw na sinasaad ng LeRobot pi05 docs: ginagamit ng pi0.5 ang gated google/paligemma-3b-pt-224 tokenizer, kaya tanggapin ang lisensya nito sa Hub at patakbuhin ang hf auth login muna. Ang access ay ibinibigay nang manu-mano, hindi agad-agad. Laktawan ito, magsimula ng isang bayad na cloud run, at magbabayad ka para sa isang pod na hindi makapag-download ng tokenizer.

Bago ka magsimula: format ng dataset, mga episode, hardware

Ang Pi0.5 sa LeRobot ay nagbabasa ng isang LeRobot dataset sa v3.0 layout, na inilabas kasama ng lerobot 0.4.0 noong Oktubre 2025: maraming episode bawat Parquet at MP4 file sa halip na isang file bawat episode, na may mga hangganan sa meta/episodes/ sa halip na mga filename. Mag-record gamit ang desktop client o sundin ang i-record ang iyong unang dataset at mayroon ka na nito.

ModeKinakailangang memorya ng GPUHalimbawang GPU
Inferencemore than 8 GBRTX 4090
Fine-tuning, LoRAmore than 22.5 GBRTX 4090
Fine-tuning, buomore than 70 GBA100 80 GB or H100
Ang bitag ng bersyon na nagkakahalaga ng isang araw

Ang Pi0.5 at SmolVLA ay nangangailangan ng LeRobot v3.0. Ang GR00T N1.7 at GR00T N1.5 ay nangangailangan ng v2.0 o v2.1 at nagka-crash sa isang v3.0 dataset. Hindi kayang pakainin ng isang recording session ang pareho nang walang conversion, at hindi sinasabi ng error na "maling bersyon ng dataset". Tingnan ang dataset rejected: kailangan ang 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
Mula sa dokumentasyon ng LeRobotDataset v3.0.

Ang platform ay nangangailangan ng hindi bababa sa 50 episode para sa Pi0.5, kapareho ng bilang para sa GR00T at ACT. Ang pre-training ang gumagawa ng mabigat na trabaho, kaya mas mahusay ang 50 malinis na episode kaysa sa 200 na hindi maayos. Bago ka rito? Magsimula sa ang gabay sa pagkolekta ng data.

Ang pahina ng mga patakaran ng AY-Robots na naghahambing sa limang trainable na patakaran ayon sa mga parameter, GPU tier, latency at minimum na episode
Ang Pi0.5 ay nasa A100 at H100 tier sa 485 ms bawat action step, na may minimum na 50 episode.

Ruta A: fine-tune gamit ang openpi repository

Ang reference implementation: JAX muna, sinubukan lamang sa Ubuntu 22.04, pinapatakbo ng mga config object sa halip na mga flag. Isang PyTorch path ang dumating noong Setyembre 2025, na-validate sa LIBERO. Tatlong hakbang: i-convert ang iyong data, tukuyin ang isang config, i-train at i-serve.

  1. 1
    I-clone at i-install

    Gumagamit ang openpi ng uv. Ang GIT_LFS_SKIP_SMUDGE ang nagpapahintulot sa LeRobot na maging dependency nang walang 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
    I-convert ang iyong data sa isang LeRobot dataset

    Ang upstream ay nagpapadala ng mga converter para sa LIBERO at DROID at inaasahan kang umangkop ng isa. Ang trabaho ay ang key mapping.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    Magdagdag ng training config

    Ang mga config ay TrainConfig entries sa src/openpi/training/config.py. Ang isang ito ay umaangkop sa pi05_droid_finetune, na ang weight loader ay nakaturo sa 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
    I-compute ang norm stats

    Tumatakbo laban sa pangalan ng config, hindi sa dataset. Ang paglaktaw nito ang klasikong unang pagkabigo dito.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    I-train

    Pinapayagan ng variable ang JAX na gumamit ng 90 porsiyento ng memorya ng GPU sa halip na ang default na 75. Sa isang 80 GB card, ito ang nagpapasya kung magpapatuloy ang pagtakbo.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    I-serve ito

    Nakikinig ang server sa port 8000 at sumasagot sa mga observation query; ang iyong robot runtime ang client.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Ang PyTorch path ay hindi ang JAX path

Ang implementasyon ng PyTorch ng openpi ay hindi sumusuporta sa pi0-FAST, mixed precision, FSDP, LoRA o EMA weights, kaya ang LoRA na umaabot sa 22.5 GB ay JAX lamang, sa pamamagitan ng mga variant na gemma_2b_lora at gemma_300m_lora. Mas masahol pa: kinokopya ng setup ang mga patched file sa iyong naka-install na transformers 4.53.2, at nagbabala ang README na sa default hardlink mode ng uv, permanenteng binabago nito ang transformers sa uv cache at maaaring kumalat sa ibang proyekto. I-undo ito gamit ang uv cache clean transformers.

Ruta B: fine-tune gamit ang lerobot pi05

Ang LeRobot port ay nagbabalot ng parehong weights sa CLI na ginagamit mo na para sa ACT at SmolVLA. Ang lahat ng nasa ibaba ay sinuri laban sa lerobot 0.6.1, ang release mula noong 3 Agosto 2026, at ang mga dokumento ng pi05 noong 23 Agosto 2026. Mahalaga ang mga bersyon dito: dumating ang v3.0 datasets kasama ang 0.4.0 noong Oktubre 2025, ang 0.5.0 blog ng 9 Marso 2026 ay nagpapakita ng pi0-FAST at Real-Time Chunking, at ginawa ng 0.6.0 noong 6 Hulyo 2026 na maging lightweight ang base package at inilipat ang deployment sa lerobot-rollout.

Isang bagay ang hindi nagbago: ang lerobot-train at lerobot-record ay mga entry point na noong 0.3.2, Agosto 2025. Ang isang tutorial na tumatawag pa rin sa python -m lerobot.scripts.train ay mas matanda pa sa isang taon ng mga pagbabago at hindi dapat pagkatiwalaan sa iba pa.

  1. 1
    I-install gamit ang tamang extras

    Mula 0.6.0, ang base install ay naglalaman lamang ng core ML dependencies, at ang pi extra ay hindi nagdaragdag ng dataset o training code, kaya ang isang fine-tune ay nangangailangan din ng training extra. Ang mga mas lumang one-liners ay nabibigo dito sa import time.

    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
    Mag-authenticate

    Tanggapin ang lisensya ng paligemma-3b-pt-224 sa isang browser, pagkatapos ay mag-log in sa makina na nagsasanay.

    bash
    hf auth login
  3. 3
    Magdagdag ng quantile statistics

    Ang Pi0.5 ay nagno-normalize ng STATE at ACTION gamit ang quantiles, kaya ang meta/stats.json ay nangangailangan ng q01 at q99. Ang mga mas lumang dataset ay naglalaman lamang ng 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
    I-fine-tune mula sa lerobot/pi05_base

    Itakda ang batch size sa kung ano ang kayang suportahan ng iyong card; ang mga docs ay gumagamit ng 64 sa LIBERO sa 80 GB. Ipasa ang bfloat16 nang eksplisito, ang default ng config ay 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
    Patakbuhin ito sa braso

    Sa 0.6.x ito ay lerobot-rollout: ang lerobot-record ay tumatanggi sa isang policy at tinatanggihan ang mga pangalan ng eval_ dataset. Ang Base ay nagmamaneho ng braso, ang sentry ay nagre-record ng rollout.

    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
FlagAno ang ginagawa nitoTandaan
--policy.type=pi05pinipili ang Pi0.5kinakailangan sa pretrained_path, iwasan sa --policy.path
--policy.pretrained_pathnaglo-load lamang ng weightsmga pangalan ng feature mula sa iyong dataset, nire-reset ang mga nakaimbak na setting
--policy.pathweights kasama ang checkpoint config.jsonang mga nakaimbak na setting tulad ng n_action_steps ay namamana
--policy.n_action_stepsmga hakbang na ginagamit bawat chunkbumabalik sa 50, hindi kailanman lalampas sa chunk_size (default 50)
--policy.train_expert_onlypinipigilan ang VLM, sinasanay ang expertdefault false, mas kaunting memory, may kaunting gastos sa tagumpay
--policy.gradient_checkpointingmuling kalkulahin sa halip na i-store ang activationsdefault false, ang unang paraan kapag hindi magkasya ang isang run
--peft.method_type=LORALoRA adapters sa halip na buong weightsnangangailangan ng peft extra, ang dokumentadong halimbawa ay SmolVLA
--policy.rtc_training_max_delayaction-prefix conditioning para sa RTCmain branch lang, wala sa 0.6.1, dapat manatili sa ibaba ng chunk_size
--rename_mapnagmamapa ng mga column ng dataset sa mga policy featurekinakailangan kapag magkaiba ang iyong camera keys
Ang error na karaniwang nararanasan ng karamihan sa mga unang run

Kung walang quantiles, makakakuha ka ng ValueError: QUANTILES normalization mode requires q01 and q99 stats sa batch one. Muling kalkulahin ang stats, ngunit ang resulta ay mapupunta sa $HF_LEROBOT_HOME/your_dataset, hindi sa cache na binabasa ng --dataset.repo_id, kaya mag-train gamit ang --dataset.root na nakaturo doon o i-push sa Hub. O laktawan ang quantiles gamit ang --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', tulad ng ginagawa ng LIBERO reference command.

Tatlong set ng defaults, at alin ang nakakarating sa trainer

Ang TrainConfig ng openpi ang reperensiya, ang PI05Config ng LeRobot ang ginagamit ng lerobot-train kapag wala kang sinabi, at ang form dito ay nagpapadala ng ikatlong set. Ang nakakagulat ay ang learning rate: parehong umaabot sa 2.5e-5 ang mga default ng upstream, habang ang sariling pi05_libero config ng openpi at ang platform na ito ay nagpapataas nito sa 5e-5.

Pagtatakdaopenpi TrainConfiglerobot pi05 and lerobot-trainAY-Robots ang ipinapadala
Laki ng Batch3281
Pinakamataas na Learning Rate2.5e-5, cosine decayoptimizer_lr 2.5e-55e-5
Mga Hakbang sa Pagsasanay30,000100,00030,000
Interval ng Checkpoint1,000 steps20,000 stepswala sa form
Seed421,000nasa form
Action Chunkaction_horizon 50chunk_size 50, n_action_steps 50wala sa form
Weight dtypebfloat16float32 hanggang ipasa mo ang --policy.dtypewala sa form
Gradient Accumulationwalang ganoong kontrol, fsdp_devices sa halipwala sa bawat release sa ngayon16, at ito ay tinanggal

Tapat ba ang port? Ang LeRobot team ay nag-fine-tune ng LIBERO base model para sa karagdagang 6k na hakbang at inihambing ito sa mga reference number ng openpi sa apat na suite: 97.5 porsiyentong average laban sa 96.85, nangunguna sa Libero 10, nahuhuli sa Spatial. Ang ruta ay isang pagpipilian sa tooling, hindi sa kalidad.

Pag-fine-tune ng Pi0.5 sa sarili mong data
Mga Kalamangan
  • Mahigit 10,000 oras ng robot pre-training ang nasa likod nito, kaya ang 50 episode ng iyong gawain ay maaaring sapat na.
  • Tuloy-tuloy na aksyon: walang tokenizer na i-tune, walang discretisation floor sa iyong joint angles.
  • Ang LeRobot port ay nakakuha ng 97.5 porsiyento sa LIBERO average laban sa 96.85 ng openpi, kaya ang mas user-friendly na CLI ay walang nasusukat na gastos.
  • Parameter-efficient na mga landas sa magkabilang panig: ang JAX LoRA variants ng openpi, ang PEFT integration ng LeRobot.
Mga Kompromiso
  • Ang buong fine-tuning ay nangangailangan ng higit sa 70 GB. Ang 22.5 GB na LoRA figure ay ang JAX number ng openpi; wala pang nai-publish para sa pi05 sa ilalim ng PEFT.
  • 485 ms bawat action step, pinakamabagal sa limang narito: dalawang beses ng SmolVLA, dalawampu't apat na beses ng ACT.
  • Kinakailangan ang LeRobot v3.0, kaya ang dataset na naitala para sa isang GR00T run ay kailangang i-convert, at vice versa.
  • Ang mga bagong opsyon ay unang lumalabas sa main: ang training-time RTC at MEM memory ay wala sa 0.6.1, kaya ang pinakabagong docs ay maaaring mangahulugan ng pag-install mula sa git.

Ang katotohanan ng 485 ms, at kung saan ito humihinto sa pagiging kapaki-pakinabang

Ito ang nagpapasya sa iyong proyekto, kaya ito ay nauuna sa talahanayan ng gastos. Ang bawat hakbang ng aksyon na sinukat dito para sa Pi0.5 ay 485 ms. Laban sa iba pang apat:

PatakaranInference bawat hakbang ng aksyonMga ParameterAntas ng GPUMinimum na episode
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
Ang pahina ng AY-Robots na paghahambing ng GR00T N1.7 laban sa Pi0.5, na may mga parameter, antas ng GPU, latency at format ng dataset
Parehong antas ng GPU, parehong minimum na episode, iba't ibang bersyon ng dataset, tatlong beses na agwat sa latency.
Ang Inference ay Kailangang Nasa Tabi ng mga Servo

Ang control loop sa limang modelong ito ay tumatakbo ng 20 hanggang 485 ms bawat hakbang ng aksyon. Ang mga round trip sa pampublikong internet, na idinagdag sa 485 ms, ay nagiging sanhi upang ang isang gumaganang patakaran ay maging nag-aalangan. Ang remote inference ay magagawa para sa mabagal na pick-and-place, hindi para sa mabilis na reaktibong paggalaw. Mas gugustuhin naming sabihin iyon kaysa magbenta ng demo na gumagana lamang sa isang LAN. Kung humihinto ang iyong braso sa pagitan ng mga chunk, magsimula sa paghinto ng patakaran sa gitna ng paggalaw.

May sagot ang upstream, at kalahati nito ay nasa release na na maaari mong i-install. Ang Real-Time Chunking ay bumubuo ng susunod na chunk habang isinasagawa pa rin ng braso ang kasalukuyan, pagkatapos ay ginagabayan ang mga magkakapatong na hakbang ng bagong chunk upang manatiling malapit sa bahaging naisagawa na, upang hindi huminto o umalog ang braso sa pinagdugtungan. Ang inference-time form na kasama sa 0.4.2 changelog para sa Pi0, Pi0.5 at SmolVLA ay isang rollout flag, hindi isang retrain:

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
Ang execution_horizon ay kung gaano karaming hakbang ng nakaraang chunk ang kailangang sang-ayunan ng bago; ang mga dokumento ng RTC ay nagbibigay ng 8 hanggang 12 bilang karaniwang saklaw. Ang default na inference backend ay --inference.type=sync.

Hindi nito pinapabilis ang modelo. Itinatago nito ang agwat: ang 485 ms ay ginugugol pa rin, ngunit wala sa kritikal na landas, kaya hindi nauubusan ang queue sa pagitan ng mga chunk. Ang variant ng training-time mula sa arXiv 2512.05964 ay mas malalim: natututo ang modelo na mag-condition sa isang malinis na action prefix, kaya sa inference ang overlap ay hard-inpainted na may per-action flow timesteps sa halip na guided, at nawawala ang guidance backward pass. Sa panahon ng training, kumukuha ito ng prefix length bawat halimbawa at kinukuha ang flow loss sa natitirang postfix. Ang flag na iyon ay nasa main lamang, hindi sa 0.6.1, at ang delay na iyong sinasanay ay kailangang manatili sa ibaba ng chunk_size.

Dalawang paraan para makakuha ng Pi0.5 checkpoint

Umuupa o nagmamay-ari ka ng 80 GB card, nag-i-install ng isa sa mga stack sa itaas, nagko-convert ng iyong dataset at binabantayan ang pagpapatakbo. Hawak mo ang bawat kontrol: JAX LoRA ng openpi, PEFT adapters ng LeRobot, relative actions, custom key mappings. Hawak mo rin ang bawat pagkabigo.

  • Hardware: A100 80 GB o H100, o isang 24 GB card sa JAX LoRA path ng openpi.
  • Setup: isang hapon para sa unang pagpapatakbo, karamihan ay key mapping at ang gated tokenizer.
  • Wala sa hosted form: PEFT adapters, relative actions, training-time RTC, MEM memory.
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
Ang command na hindi pinapatakbo ng hosted form, at hindi mai-install ng pip: ang training-time RTC ay isang main branch flag.

Kapag hindi ito gumagana

SintomasPinakamalamang na sanhi
Tinanggihan ang pagpapatakbo bago ito magsimulaDataset v2.1 ngunit gusto ng Pi0.5 ang v3.0, o kabaligtaran para sa GR00T
ImportError, nawawala ang datasets packagelerobot 0.6.x without the training extra
ValueError tungkol sa q01 at q99 sa batch oneWalang quantiles sa meta/stats.json; i-recompute o gamitin ang MEAN_STD
CUDA out of memory sa hakbang 0Buong fine-tune sa ibaba ng 70 GB; subukan ang checkpointing o train_expert_only
401 o gated repo errorHindi tinanggap ang lisensya ng PaliGemma tokenizer
Bumaba ang loss, walang ginagawa ang robotNormalisation mismatch, o kinokopya ng patakaran ang estado
Humihinto ang braso sa pagitan ng mga chunkPer-step latency plus round trip; nauubusan ang chunk queue
Gumagana sa isang setup, nabibigo sa ibaMasyadong kaunting episodes, o lahat sa isang configuration

Magkano ang gastos ng isang run

Ang Pi0.5 ay nasa mamahaling tier dahil nangangailangan ito ng 80 GB card, at nagbabago ang mga spot price, kaya ang figure ay isang range sa halip na isang presyo. Para sa maraming SO-100 na gawain, sanayin SmolVLA o ACT sa 24 GB tier muna, kumpirmahin na matututunan ang gawain, pagkatapos ay gumugol ng A100 oras dito. Sanayin ang iyong unang policy ay nagpapakita ng mas murang proseso, at pagpepresyo ay naglalaman ng kasalukuyang mga tier.

TierMga PolicyKaraniwang runPresyo kada orasGastos kada run
A100 80 GB o H100Pi0.5, GR00T N1.7, GR00T N1.53 hanggang 6 na oras1.20 hanggang 2.00 USDmga 4 hanggang 12 USD
RTX 4090 o anumang 24 GB cardSmolVLA, ACT2 hanggang 5 oras0.30 hanggang 0.60 USDmga 1 hanggang 3 USD
Ang talahanayan ng gastos ng AY-Robots na nagpapakita kung aling GPU ang kailangan ng bawat patakaran, ang karaniwang oras ng pagtakbo at presyo, at kung gaano karaming episode ang kailangan bago maging kapaki-pakinabang ang isang patakaran.
Ang parehong dalawang antas sa pahina ng produkto: Ang Pi0.5 ay umuupa ng 80 GB card, habang ang SmolVLA at ACT ay kasya sa isang 4090.

Bago maglaan ng isang gabi: GR00T N1.7 laban sa Pi0.5 at Pi0.5 laban sa SmolVLA ay nagpapakita ng parehong mga numero nang direkta. Ang Arena ay naglalaman ng 85 modelo ng VLA na may 332 resulta ng benchmark, bawat isa ay naka-link sa pinagmulan nito, at ang background tungkol sa pamilya ay nasa aming pangkalahatang-ideya ng VLA.

Sanayin ang Pi0.5 nang hindi binubuo ang stack

Piliin ang dataset at ang mga hyperparameter sa isang form. Ang backend ay umuupa ng 80 GB card sa spot market, pinapatakbo ang trainer at isinusulat ang mga checkpoint sa object storage. Mga gabay para sa SO-100, SO-101, Koch v1.1 at LeKiwi.

Buksan ang mga gabay sa pagsasanay
Maaari ko bang i-fine-tune ang Pi0.5 sa isang RTX 4090?

Hindi isang buong fine-tune: ang openpi ay naglilista ng higit sa 70 GB para doon, kaya isang A100 80 GB o isang H100. Ang 22.5 GB na LoRA figure nito ay kabilang sa JAX path; ang PyTorch implementation ay walang LoRA. Mayroon ang PEFT integration ng LeRobot, ngunit ang dokumentadong halimbawa nito ay SmolVLA at walang VRAM figure na inilathala para sa pi05.

Ilang episode ang kailangan ko?

Limampu, ang parehong pinakamababang bilang tulad ng GR00T at ACT; tanging ang SmolVLA lamang ang mas mababa, sa 30. Ang base checkpoint ay nagdadala ng higit sa 10,000 oras ng pre-training, kaya ang fine-tune ay umaangkop sa halip na matuto mula sa wala: 50 malinis, iba't ibang episode ang mas mahusay kaysa sa dalawang daan mula sa isang configuration.

Ano ang pagkakaiba sa pagitan ng --policy.path at --policy.pretrained_path?

--policy.path ay naglo-load ng mga weights at ang config.json ng checkpoint, kaya ang mga nakaimbak na setting tulad ng n_action_steps ay namamana at ang --policy.type ay dapat alisin. Ang --policy.pretrained_path ay naglo-load lamang ng mga weights: ang mga pangalan ng feature ay nagmumula sa iyong dataset, ang mga nakaimbak na setting ay nire-reset, ang --policy.type ay kinakailangan. Iyan ang dahilan kung bakit ang LIBERO command ay nagpapasa ng n_action_steps=10 at empty_cameras=1 nang tahasan; kung hindi, babalik sila sa 50 at 0.

Nagbibigay ba ang open version sa akin ng buong Pi0.5 mula sa papel?

Hindi. Pareho silang sumusuporta lamang sa flow matching action head. Ang discrete-token pre-training stage na may FAST action tokenizer at ang high-level subtask prediction ay hindi inilabas, at ang lerobot/pi05_base card ay nagdaragdag ng RL sa listahang iyon kahit na ang pi0.5 paper ay hindi naglalarawan ng reinforcement learning stage. Nagsasanay ka ng isang low-level na patakaran na nakakondisyon sa isang language string na iyong ibinibigay, hindi isang modelo na nagde-decompose ng isang mahabang gawain mismo.

Aling mga bersyon ang batayan ng gabay na ito?

Ang openpi sa main at lerobot 0.6.1, ang release mula noong 3 Agosto 2026, parehong nabasa noong 23 Agosto 2026. Ang mga v3.0 dataset ay dumating kasama ng 0.4.0 noong Oktubre 2025. Ginawa ng 0.6.0 na maging lightweight ang base package, kaya ang lerobot[pi] lamang ay hindi na nag-i-install ng training stack, at inilipat ang deployment sa lerobot-rollout. Ang Training-time RTC ay nasa main lamang; ang hosted trainer dito ay nagpapatakbo ng 0.5.1.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started