
Додатково налаштуйте Pi0.5, VLA з зіставленням потоків від Physical Intelligence, на власних даних робота. Реальні команди для openpi та lerobot pi05, пастки формату набору даних, обмеження VRAM та затримки.
Pi0.5 — це модель, до якої ви звертаєтеся, коли політика має працювати в кімнаті, яку вона ніколи не бачила. Це також найнезручніша з п'яти навчальних політик тут, щоб доналаштувати вручну: вихідний репозиторій спочатку JAX, порт LeRobot перемістив розгортання з lerobot-record у версії 0.6.0 і зробив базову інсталяцію занадто малою для навчання, а повне доналаштування не поміщається на 4090. Нижче: що зіставлення потоків коштує під час висновку, два маршрути команд і число 485 мс, яке вирішує, чи є результат придатним для використання.
Що потрібно знати
- •VLA зі зіставленням потоків: 3B PaliGemma VLM плюс 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 USD за запуск.
Що таке Pi0.5 насправді
Physical Intelligence опублікувала pi0 у жовтні 2024 року: зіставлення потоків модель зору-мови-дії на попередньо навченій VLM: PaliGemma з 3 мільярдами параметрів плюс 300M експерт з дій, ініціалізований з нуля, загалом 3.3 мільярда. У статті повідомляється про попереднє навчання на понад 10 000 годин даних роботів у 7 конфігураціях роботів та 68 завданнях. Більше в статті про pi0.
Pi0.5 (arXiv 2504.16054, 22 April 2025) зберігає цей скелет і змінює дієту навчання: веб-дані, виявлення об'єктів, усні інструкції від людей, які навчають робота, мітки підзадач, дані з різних втілень від роботів у багатьох будинках. Результатом є робот, який прибирає кухні в будинках, що не були в навчальному наборі. README openpi додає деталь, якої немає в назві: випущений pi0.5 був навчений з ізоляцією знань (arXiv 2505.23705).
| Властивість | pi0 | pi0.5 |
|---|---|---|
| Варіант VLM backbone | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Варіант експерта з дій | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon за замовчуванням | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, state discretized into bins in the prompt |
| Базовий чекпоінт | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
README openpi чітко зазначає: репозиторій підтримує лише flow matching head, як для навчання, так і для висновку pi0.5. Стаття описує дві стадії, а код містить лише другу: попереднє навчання представляє кожну дію як дискретні токени через токенізатор FAST, а під час розгортання модель виводить підзадачу високого рівня перед кожним блоком дій. Жодна з них не знаходиться в репозиторії. Картка lerobot/pi05_base надає той самий список і додає RL, хоча стаття pi0.5 взагалі не описує жодної стадії навчання з підкріпленням. Порт LeRobot успадковує цю область, як і кожен розміщений на ньому тренажер, включаючи той, що тут. Ліцензування також розділене: сторінка документації pi05 вказує Apache 2.0, картка lerobot/pi05_base позначена license: gemma.
Що змінює flow matching у навчанні та висновку
Політика, яку можна навчити на SO-100, або безпосередньо регресує дії (політика) або токенізує їх і декодує авторегресивно (pi0-FAST). Зіставлення потоків не робить ні того, ні іншого: воно вивчає векторне поле, яке переносить шум до чистого ACT) або токенізує їх і декодує авторегресивно (pi0-FAST). Зіставлення потоків не робить ні того, ні іншого: воно вивчає векторне поле, яке переносить шум до чистого фрагмента дії, а потім інтегрує його. У статті про pi0 використовується 10 кроків інтеграції з розміром кроку 0.1; конфігурація pi05 LeRobot містить ті самі `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 та шлюз перед нею
PaliGemma (arXiv 2407.07726) — це візуальний енкодер SigLIP-So400m на мовній моделі Gemma-2B, близько 3 мільярдів параметрів. Pi0.5 успадковує його токенізатор, і цей токенізатор знаходиться в закритому репозиторії. Це найпоширеніший спосіб, яким перший запуск завершується невдачею, ще до першого кроку навчання.
Документація 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 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Платформа вимагає щонайменше 50 епізодів для Pi0.5, такий самий мінімум, як для GR00T та ACT. Попереднє навчання виконує основну роботу, тому 50 чистих епізодів кращі за 200 недбалих. Новачок у цьому? Почніть з посібника зі збору даних.

Маршрут A: доналаштування за допомогою репозиторію openpi
Еталонна реалізація: спочатку JAX, протестована лише на Ubuntu 22.04, керована об'єктами конфігурації, а не прапорцями. Шлях PyTorch з'явився у вересні 2025 року, перевірений на 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Додати конфігурацію навчання
Конфігурації — це записи TrainConfig у src/openpi/training/config.py. Ця адаптує 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 використовувати 90 відсотків пам'яті GPU замість стандартних 75. На карті з 80 ГБ це вирішує, чи виживе запуск.
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 від openpi не підтримує pi0-FAST, змішану точність, FSDP, LoRA або ваги EMA, тому LoRA, що досягає 22.5 ГБ, доступна лише для JAX, через варіанти gemma_2b_lora та gemma_300m_lora. Гірше: налаштування копіює виправлені файли поверх встановлених вами transformers 4.53.2, а файл README попереджає, що в режимі жорстких посилань за замовчуванням uv це назавжди змінює transformers у кеші uv і може просочитися в інші проєкти. Скасуйте це за допомогою uv cache clean transformers.
Маршрут B: доналаштування за допомогою lerobot pi05
Порт LeRobot обгортає ті самі ваги в CLI, які ви вже використовуєте для ACT та SmolVLA. Все нижче було перевірено на відповідність lerobot 0.6.1, випуску від 3 серпня 2026 року, та документації pi05 від 23 серпня 2026 року. Версії тут мають значення: набори даних v3.0 з'явилися з версією 0.4.0 у жовтні 2025 року, блог 0.5.0 від 9 березня 2026 року представляє pi0-FAST та Real-Time Chunking, а версія 0.6.0 від 6 липня 2026 року зробила базовий пакет легким і перенесла розгортання до lerobot-rollout.
Одна річ не змінилася: lerobot-train та lerobot-record вже були точками входу у версії 0.3.2, серпень 2025 року. Посібник, який досі викликає 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 - 4Тонке налаштування з lerobot/pi05_base
Встановіть розмір пакету відповідно до можливостей вашої відеокарти; у документації використовується 64 на LIBERO з 80 ГБ. Передайте 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_. Base керує рукою, sentry записує розгортання.
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, що вказує туди, або завантажте до Hub. Або пропустіть квантилі за допомогою --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', як це робить еталонна команда LIBERO.
Три набори значень за замовчуванням, і які з них досягають тренера
TrainConfig від openpi є еталоном, PI05Config від LeRobot використовується lerobot-train за замовчуванням, а форма тут надсилає третій набір. Сюрпризом є швидкість навчання: обидва вихідні значення за замовчуванням досягають піку 2.5e-5, тоді як власна конфігурація pi05_libero від openpi та ця платформа підвищують її до 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 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 протягом додаткових 6 тис. кроків і порівняла її з еталонними показниками openpi на чотирьох наборах: 97.5 відсотка в середньому проти 96.85, випереджаючи на Libero 10, відстаючи на Spatial. Цей шлях є вибором інструментарію, а не якості.
- Понад 10,000 годин попереднього навчання робота, тому 50 епізодів вашого завдання може бути достатньо.
- Безперервні дії: немає токенізатора для налаштування, немає обмежень дискретизації на кутах ваших суглобів.
- Порт LeRobot набирає 97.5 відсотка в середньому по LIBERO проти 96.85 від openpi, тому більш зручний CLI не коштує нічого вимірного.
- Параметрично ефективні шляхи з обох сторін: варіанти JAX LoRA від openpi, інтеграція PEFT від LeRobot.
- Повне доналаштування потребує понад 70 ГБ. Значення LoRA 22.5 ГБ є показником JAX від openpi; для pi05 під PEFT нічого не опубліковано.
- 485 мс на крок дії, найповільніший з п'яти тут: вдвічі повільніше за SmolVLA, у двадцять чотири рази повільніше за ACT.
- Потрібен LeRobot v3.0, тому набір даних, записаний для запуску GR00T, потребує конвертації, і навпаки.
- Нові опції спочатку з'являються в основній гілці: пам'ять RTC та MEM під час навчання відсутні у версії 0.6.1, тому найновіша документація може означати встановлення з git.
Реальність 485 мс і де вона перестає бути придатною для використання
Це визначає ваш проєкт, тому йде перед таблицею витрат. на крок дії, виміряна тут для Pi0.5, становить 485 мс. Порівняно з іншими чотирма:
| Політика | Висновок на крок дії | Параметри | Рівень 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 мс перетворюють робочу політику на нерішучу. Віддалений висновок є життєздатним для повільного захоплення та розміщення, але не для швидкого реактивного руху. Ми краще скажемо це, ніж продамо демонстрацію, яка працює лише в локальній мережі. Якщо ваша рука зупиняється між фрагментами, почніть з зависання політики під час руху.
Вищестоящий розробник має відповідь, і половина її вже є у випуску, який ви можете встановити. Розбиття на фрагменти в реальному часі (Real-Time Chunking) генерує наступний фрагмент, поки рука ще виконує поточний, а потім направляє кроки нового фрагмента, що перекриваються, щоб вони залишалися близькими до вже виконаної частини, щоб рука не зупинялася або не смикалася на стику. Форма часу висновку, що постачається в журналі змін 0.4.2 для Pi0, Pi0.5 та SmolVLA, є прапорцем розгортання, а не перенавчання:
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 ГБ, встановлюєте один із вищезгаданих стеків, конвертуєте свій набір даних і контролюєте запуск. Ви зберігаєте всі налаштування: JAX LoRA від openpi, адаптери PEFT від LeRobot, відносні дії, власні зіставлення клавіш. Ви також зберігаєте всі невдачі.
- Апаратне забезпечення: A100 80 ГБ або H100, або карта на 24 ГБ для JAX LoRA від openpi.
- Налаштування: один день для першого запуску, переважно зіставлення клавіш та закритий токенізатор.
- Недоступно у розміщеній формі: адаптери 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Ви обираєте модель і набір даних у формі навчання, бекенд орендує GPU на спотовому ринку за необхідним обсягом VRAM, запускає тренажер і записує контрольні точки в об'єктне сховище. 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, проти 256, які використовує конфігурація pi05_libero від openpi. Варто знати це, перш ніж читати криву втрат. Це налаштування застосовується до запусків GR00T N1.7 та GR00T N1.5.
Висновок працює так само: створюється под для обслуговування політики, і ваш локальний клієнт спілкується з ним. Под має сторожовий таймер бездіяльності та самознищується, тому забута вкладка не призводить до прихованих рахунків. Застосовується застереження щодо затримки, тому ACT з 20 мс часто виграє швидке завдання.
Коли це не працює
| Симптом | Найімовірніша причина |
|---|---|
| Запуск відхилено до початку | Набір даних v2.1, але Pi0.5 вимагає v3.0, або навпаки для GR00T |
| ImportError, відсутній пакет datasets | lerobot 0.6.x без додаткових компонентів для навчання |
| ValueError щодо q01 та q99 для першого пакету | Відсутні квантилі в meta/stats.json; перерахуйте або використовуйте MEAN_STD |
| CUDA out of memory на кроці 0 | Повне доналаштування менше 70 ГБ; спробуйте контрольні точки або train_expert_only |
| Помилка 401 або помилка закритого репозиторію | Ліцензія токенізатора PaliGemma не прийнята |
| Втрати падають, робот нічого не робить | Невідповідність нормалізації, або політика копіює стан |
| Рука зупиняється між фрагментами | Затримка на крок плюс час передачі; черга фрагментів вичерпується |
| Працює в одному налаштуванні, не працює в іншому | Занадто мало епізодів, або всі в одній конфігурації |
- Набір даних відхилено: потрібна версія v3
- Недостатньо пам'яті під час навчання
- Втрати зменшуються, але політика нічого не робить
- Політика зависає посередині руху
- Політика працює лише в одній конфігурації
- Завдання навчання застрягло в черзі
Скільки коштує один запуск
Pi0.5 знаходиться в дорогому рівні, оскільки йому потрібна карта на 80 ГБ, а спотові ціни змінюються, тому цифра є діапазоном, а не фіксованою ціною. Для багатьох завдань SO-100 спочатку навчайте SmolVLA або ACT на рівні 24 ГБ, спочатку переконайтеся, що завдання взагалі можна навчити, а потім витрачайте на нього години 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 against Pi0.5 та Pi0.5 against SmolVLA порівнюють ті самі показники. Arena містить 85 VLA моделей з 332 результатами бенчмарків, кожен з яких пов'язаний зі своїм джерелом, а довідкова інформація про сімейство знаходиться в нашому огляді VLA.
Навчайте Pi0.5 без створення стеку
Виберіть набір даних та гіперпараметри у формі. Бекенд орендує карту на 80 ГБ на спотовому ринку, запускає тренажер та записує контрольні точки в об'єктне сховище. Посібники для SO-100, SO-101, Koch v1.1 та LeKiwi.
Відкрити посібники з навчанняЧи можу я доналаштувати Pi0.5 на RTX 4090?▾
Не повне доналаштування: openpi вказує понад 70 ГБ для цього, тому потрібна A100 80 ГБ або H100. Його показник LoRA 22.5 ГБ належить до шляху JAX; реалізація PyTorch не має LoRA. Інтеграція PEFT від LeRobot існує, але її задокументований приклад — SmolVLA, і жодних даних про VRAM для pi05 не опубліковано.
Скільки епізодів мені потрібно?▾
П'ятдесят, той самий мінімум, що й для 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 на main та lerobot 0.6.1, випуск від 3 серпня 2026 року, обидва прочитані 23 серпня 2026 року. Набори даних v3.0 з'явилися з 0.4.0 у жовтні 2025 року. 0.6.0 зробив базовий пакет легким, тому lerobot[pi] сам по собі більше не встановлює стек для навчання, і перемістив розгортання до lerobot-rollout. RTC під час навчання доступний лише на main; розміщений тут тренажер працює на 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