LeRobot documentation

π₀ (Pi0)

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

π₀ (Pi0)

π₀ — это модель Vision-Language-Action для общего управления роботами от Physical Intelligence. Реализация в LeRobot адаптирована из их открытого репозитория OpenPI.

Обзор модели

π₀ представляет собой прорыв в робототехнике, являясь первой универсальной фундаментальной моделью для роботов, разработанной Physical Intelligence. В отличие от традиционных программ для роботов, которые являются узкими специалистами, запрограммированными на выполнение повторяющихся движений, π₀ спроектирована как универсальная политика, способная понимать визуальные входные данные, интерпретировать инструкции на естественном языке и управлять различными роботами при выполнении разнообразных задач.

An overview of Pi0

Видение физической интеллигентности

Как отмечает Physical Intelligence, хотя ИИ добился впечатляющих успехов в цифровых областях — от игры в шахматы до открытия лекарств, — человеческий интеллект по-прежнему значительно превосходит ИИ в физическом мире. Если перефразировать парадокс Моравека, то выигрыш в партии в шахматы представляет собой «простую» задачу для ИИ, тогда как складывание рубашки или уборка стола требуют решения одних из самых сложных инженерных задач, когда-либо задуманных. π₀ представляет собой первый шаг к разработке искусственного физического интеллекта, который позволит пользователям просто просить роботов выполнять любые задачи, как это возможно с большими языковыми моделями.

Архитектура и подход

π₀ объединяет несколько ключевых инноваций:

  • Flow Matching: использует новый метод для дополнения предобученных VLM непрерывными выходными действиями с помощью flow matching (варианта диффузионных моделей)
  • Обучение с переносом между embodiments: обучено на данных с 8 различных роботизированных платформ, включая UR5e, Bimanual UR5e, Franka, Bimanual Trossen, Bimanual ARX, Mobile Trossen и Mobile Fibocom
  • Предобучение в масштабе интернета: наследует семантические знания из предобученной модели «зрение-язык» с 3 млрд параметров
  • Управление с высокой частотой: выдает команды для двигателей с частотой до 50 Гц для манипуляций в реальном времени

Требования к установке

  1. Установите LeRobot, следуя нашему Руководству по установке.

  2. Установите зависимости Pi0, выполнив:

    pip install -e ".[pi]"

Данные для обучения и возможности

π₀ обучен на крупнейшем на сегодняшний день наборе данных о взаимодействии роботов, объединяющем три ключевых источника данных:

  1. Предобучение в масштабе интернета: Визуально-языковые данные из веба для семантического понимания
  2. Набор данных X-Embodiment: открытые наборы данных для манипуляций роботами
  3. Набор данных Physical Intelligence: крупный и разнообразный набор данных для задач с высокой ловкостью, охватывающий 8 различных роботов

Использование

Чтобы использовать π₀ в LeRobot, укажите тип политики как:

policy.type=pi0

Обучение

Для обучения π₀ можно использовать стандартный скрипт обучения LeRobot с соответствующей конфигурацией:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0 \
    --output_dir=./outputs/pi0_training \
    --job_name=pi0_training \
    --policy.pretrained_path=lerobot/pi0_base \
    --policy.repo_id=your_repo_id \
    --policy.compile_model=true \
    --policy.gradient_checkpointing=true \
    --policy.dtype=bfloat16 \
    --policy.freeze_vision_encoder=false \
    --policy.train_expert_only=false \
    --steps=3000 \
    --policy.device=cuda \
    --batch_size=32

Ключевые параметры обучения

  • --policy.compile_model=true: Включает компиляцию модели для ускорения обучения
  • --policy.gradient_checkpointing=true: значительно снижает потребление памяти во время обучения
  • --policy.dtype=bfloat16: Используйте обучение с смешанной точностью для повышения эффективности
  • --batch_size=32: Размер батча для обучения, подберите его в соответствии с объёмом памяти вашей GPU
  • --policy.pretrained_path=lerobot/pi0_base: Базовая модель π₀, которую вы хотите дообучить. Доступные варианты:
  • --policy.optimizer_fused=true: Использует слиянный AdamW для более быстрых шагов оптимизатора; этот флаг игнорируется при возобновлении запуска

Параметры обучения

ПараметрПо умолчаниюОписание
freeze_vision_encoderfalseНе замораживайте визуальный энкодер
train_expert_onlyfalseНе замораживайте VLM, обучайте все параметры

💡 Совет: установка train_expert_only=true замораживает VLM и обучает только action expert и проекции, что позволяет выполнять дообучение с меньшим потреблением памяти.

Относительные действия

По умолчанию π₀ предсказывает абсолютные действия. Вы можете включить относительные действия, чтобы модель предсказывала смещения относительно текущего состояния робота. Это может повысить стабильность обучения для определённых конфигураций.

Чтобы использовать относительные действия, сначала пересчитайте статистику набора данных в относительном пространстве через CLI:

lerobot-edit-dataset \
    --repo_id your_dataset \
    --new_repo_id your_dataset \
    --operation.type recompute_stats \
    --operation.overwrite true \
    --operation.relative_action true \
    --operation.chunk_size 50 \
    --operation.relative_exclude_joints "['gripper']" \
    --push_to_hub true

Или эквивалентно на Python:

from lerobot.datasets import LeRobotDataset, recompute_stats

dataset = LeRobotDataset("your_dataset")
recompute_stats(dataset, relative_action=True, chunk_size=50, relative_exclude_joints=["gripper"])
dataset.push_to_hub()

chunk_size должен совпадать с chunk_size вашей политики (по умолчанию 50 для π₀). relative_exclude_joints содержит имена суставов, которые должны оставаться в абсолютном пространстве (например, команды захвата). Используйте --push_to_hub true, чтобы загрузить обновлённую статистику в Hub.

Затем обучите модель с включёнными относительными действиями:

lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=pi0 \
    --policy.use_relative_actions=true \
    --policy.relative_exclude_joints='["gripper"]' \
    ...

Лицензия

Эта модель распространяется по лицензии Apache 2.0 License, что соответствует исходному репозиторию OpenPI.

Update on GitHub