
Выполните тонкую настройку 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 апреля 2025) сохраняет эту структуру и изменяет режим обучения: веб-данные, обнаружение объектов, устные инструкции от людей, обучающих робота, метки подзадач, кросс-телесные данные от роботов во многих домах. В результате робот убирает кухни в домах, которые не входили в обучающий набор. Файл README openpi добавляет деталь, которой нет в названии: выпущенный pi0.5 был обучен с изоляцией знаний (arXiv 2505.23705).
| Свойство | pi0 | pi0.5 |
|---|---|---|
| Вариант основы VLM | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Вариант эксперта по действиям | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| Горизонт действия по умолчанию | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, состояние дискретизировано в бины в промпте |
| Базовая контрольная точка | 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.
Что согласование потоков меняет в обучении и инференсе
Политику, политику которую можно обучить на SO-100, либо напрямую регрессирует действия (ACT) или токенизирует их и декодирует авторегрессивно (pi0-FAST). Сопоставление потоков не делает ни того, ни другого: оно изучает векторное поле, которое переносит шум в чистый фрагмент действия, затем интегрирует его. В статье о pi0 используется 10 шагов интегрирования с размером шага 0.1; конфигурация pi05 LeRobot содержит тот же `num_inference_steps: int = 10`.
- Обучение: функция потерь регрессирует зашумленный фрагмент действия. Нет токенизатора для настройки, нет дискретизации углов ваших суставов.
- Инференс: один фрагмент требует десяти прямых проходов через эксперта по действиям. Это структурная особенность, а не проблема настройки.
- Выход: непрерывные действия размерности 32, внутренне дополненные, потери рассчитываются по тем размерностям, которые есть у вашего робота. Рука с 6-степенями свободы плюс захват использует 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 |
|---|---|---|
| Инференс | более 8 ГБ | RTX 4090 |
| Дообучение, LoRA | более 22.5 ГБ | RTX 4090 |
| Дообучение, полное | более 70 ГБ | A100 80 GB или H100 |
Pi0.5 и SmolVLA требуют LeRobot v3.0. GR00T N1.7 и GR00T N1.5 требуют v2.0 или v2.1 и вызывают сбой на наборе данных v3.0. Одна сессия записи не может использоваться для обоих без преобразования, и ошибка не сообщает "wrong dataset version". См. набор данных отклонен: требуется 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, 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 еще на 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, нуждается в конвертации, и наоборот.
- Новые опции сначала появляются в main: память 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 на шаге 0 | Полная донастройка ниже 70 ГБ; попробуйте контрольные точки или train_expert_only |
| Ошибка 401 или закрытого репозитория | Лицензия токенизатора PaliGemma не принята |
| Потери падают, робот ничего не делает | Несоответствие нормализации, или политика копирует состояние |
| Рука останавливается между чанками | Задержка на шаг плюс время туда-обратно; очередь чанков иссякает |
| Работает в одной настройке, не работает в другой | Слишком мало эпизодов, или все в одной конфигурации |
- Набор данных отклонен: требуется v3
- Недостаточно памяти во время обучения
- Потери падают, но политика ничего не делает
- Политика зависает в середине движения
- Политика работает только в одной конфигурации
- Задание на обучение застряло в очереди
Сколько стоит один запуск
Pi0.5 находится в дорогом ценовом сегменте, потому что для него требуется карта на 80 ГБ, а спотовые цены меняются, поэтому указана не фиксированная цена, а диапазон. Для многих задач SO-100 сначала обучите SmolVLA или ACT на уровне 24 ГБ, убедитесь, что задача вообще поддается обучению, а затем потратьте на нее часы A100. Обучите свою первую политику описывает этот более дешевый цикл, а цены содержат текущие уровни.
| Уровень | Политики | Типичный запуск | Цена за час | Стоимость за запуск |
|---|---|---|---|---|
| A100 80 ГБ или H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | от 3 до 6 часов | от 1.20 до 2.00 USD | примерно от 4 до 12 USD |
| RTX 4090 или любая карта на 24 ГБ | SmolVLA, ACT | от 2 до 5 часов | от 0.30 до 0.60 USD | примерно от 1 до 3 USD |

Прежде чем посвятить этому вечер: GR00T N1.7 против Pi0.5 и Pi0.5 против SmolVLA представляют одни и те же числа в сравнении. В Арене содержится 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 из статьи?▾
Нет. Оба поддерживают только головку действия flow matching. Этап предварительного обучения с дискретными токенами с токенизатором действий FAST и предсказанием высокоуровневых подзадач не был выпущен, а карта lerobot/pi05_base добавляет RL в этот список, хотя в статье pi0.5 не описывается этап обучения с подкреплением. Вы обучаете низкоуровневую политику, обусловленную предоставленной вами языковой строкой, а не модель, которая сама декомпозирует длинную задачу.
Для каких версий написано это руководство?▾
openpi в основной ветке и lerobot 0.6.1, релиз от 3 августа 2026 года, оба прочитаны 23 августа 2026 года. Наборы данных v3.0 появились с 0.4.0 в октябре 2025 года. Версия 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