Pi0 与 Pi0.5 模型微调:Physical Intelligence 开源机器人学习平台
Pi0 和 Pi0.5 是 Physical Intelligence 团队开发的业界领先的视觉-语言-动作(Vision-Language-Action, VLA)模型系列。这些模型通过大规模机器人数据预训练,能够通过微调快速适应特定的机器人任务和应用场景。
本指南基于 Physical Intelligence 官方的 OpenPI 框架,详细介绍如何使用预训练的 Pi0/Pi0.5 模型在自定义数据集上进行高效微调。
模型系列概述
OpenPI 仓库目前提供三种类型的模型:
模型 类型 | 描述 | 特点 | 适用场景 |
---|---|---|---|
π₀ (Pi0) | 基于流匹配的视觉-语言-动作模型 | 流式生成,高质量动作预测 | 复杂操作任务,高精度要求 |
π₀-FAST | 基于 FAST 动作标记器的自回归 VLA | 自回归生成,快速推理 | 实时控制,低延迟需求 |
π₀.₅ (Pi0.5) | π₀ 的升级版本,具备更好的开放世界泛化能力 | 知识隔离训练,增强泛化 | 多样化环境,跨域应用 |
注意:所有模型都基于 10,000+ 小时的机器人数据进行预训练,提供基础模型检查点供微调使用。
先决条件与环境准备
系统要求
最低配置:
- Python 3.11+(推荐使用 uv 包管理器)
- GPU: 训练需要 NVIDIA GPU(推荐 A100/H100)
- 内存: 32GB+ 系统 RAM
- 存储: 100GB+ 可用磁盘空间
推荐配置:
- 硬件: NVIDIA A100/H100 或多卡设置
- 存储: NVMe SSD 固态硬盘
- 网络: 稳定的网络连接用于模型和数据下载
环境安装与配置
使用 uv 包管理器(推荐)
# 克隆 OpenPI 官方仓库
git clone https://github.com/Physical-Intelligence/openpi.git
cd openpi
# 使用 uv 安装依赖(自动创建虚拟环境)
uv sync
# 验证安装
uv run python -c "from openpi.policies import policy_config; print('OpenPI 环境配置成功!')"
传统 pip 安装
# 克隆仓库
git clone https://github.com/Physical-Intelligence/openpi.git
cd openpi
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
# 或 venv\Scripts\activate # Windows
# 安装依赖
pip install -e .
# 验证安装
python -c "from openpi.policies import policy_config; print('OpenPI 环境配置成功!')"
数据集准备
使用艾欧平台导出数据
艾欧数据平台提供完整的数据导出功能,一键将标注数据导出为 OpenPI 支持的 LeRobot 格式:
导出流程:
- 选择导出格式: 在艾欧平台中选择 LeRobot 或 HDF5 格式导出
- 筛选数据: 根据项目、时间、质量等级等维度筛选需要的数据
- 批量导出: 支持大规模数据集的批量导出处理
- 格式转换: 将导出的数据转换为 OpenPI 所需 LeRobot 格式
数据格式要求
OpenPI 支持多种数据格式,数据集需要包含:
- 观察数据: 图像、状态信息等
- 动作数据: 机器人执行的动作序列
- 语言指令: 任务描述(可选,用于语言条件化任务)
数据集配置
OpenPI 使用配置文件来定义数据集和训练参数。您需要:
- 创建数据集配置: 在配置文件中定义数据路径、格式等
- 数据预处理: 计算归一化统计信息
- 验证数据: 确保数据格式正确
# 计算数据集的归一化统计信息(必需步骤)
uv run scripts/compute_norm_stats.py <config_name>
# 示例:为自定义配置计算统计信息
uv run scripts/compute_norm_stats.py my_custom_config
支持的数据格式
OpenPI 支持多种机器人数据格式,包括:
- HuggingFace 数据集
- LeRobot 格式数据
- HDF5 格式数据
- 从艾欧平台导出的数据(通过格式转换支持)
模型训练实践
使用艾欧平台进行训练(推荐)
艾欧数据平台提供完整的模型训练功能,支持 OpenPI 等多种机器人学习模型的训练:
平台训练优势:
- 无代码训练: 通过可视化界面完成整个训练流程,无需编程经验
- 灵活算力选择: 支持私有云和公有云算力资源,按需分配
- 实时监控: 提供训练指标、模型输出、系统日志的实时监控
- 自动化管理: 支持检查点管理、断点续训、参数调整等功能
训练流程
-
数据准备: 选择已导出的数据集或上传外部数据
-
模型配置: 选择 Pi0/Pi0.5 模型并配置训练参数
-
训练监控: 实时查看训练进度和模型表现
-
模型导出: 训练完成后获取模型检查点
本地 JAX 版本训练
如需在本地环境进行训练,OpenPI 主要使用 JAX 进行训练,提供最佳性能和稳定性:
# 设置 JAX 内存分配(推荐)
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.9
# 基础训练命令
uv run scripts/train.py <config_name> --exp_name <实验名称>
# 示例:训练 Pi0 模型
uv run scripts/train.py pi0_aloha_sim --exp_name my_pi0_experiment
# 多GPU 训练(使用 FSDP)
uv run scripts/train.py <config_name> --exp_name <实验名称> --fsdp-devices <GPU数量>
# 示例:使用 4 张 GPU 训练
uv run scripts/train.py pi0_aloha_sim --exp_name my_experiment --fsdp-devices 4
PyTorch 版本训练
OpenPI 也支持 PyTorch 训练,但需要先进行环境配置: