跳到主要内容π0 微调指南:基于开源与私有数据集的 OpenPI 实践及国产机械臂部署 | 极客日志PythonAI算法
π0 微调指南:基于开源与私有数据集的 OpenPI 实践及国产机械臂部署
综述由AI生成介绍 Physical Intelligence 开源的π0 模型及其微调方法。涵盖π0 基础模型与 FAST 版本的区别、预训练权重使用、远程推理配置。详细说明了如何将 Libero 和 ALOHA 数据集转换为 LeRobot 格式,定义训练配置,并在真实环境中采集数据。包含环境安装依赖解决(如 lerobot 冲突)、训练流程监控及模型部署到国产机械臂的实际案例,适用于具身智能开发者进行 VLA 模型定制。
GopherDev30 浏览 前言
25 年 2 月 4 日,Physical Intelligence (π) 宣布正式开源π0 及π0-FAST。该模型基于超过 10,000 小时的机器人数据进行了预训练。
GitHub 代码仓库包含四个方面:
- π0 本身的代码和权重
- 特定平台上特定任务的微调 checkpoint
- 推理代码
- 微调代码

第一部分 如何基于各种开源数据集微调π0
1.1 π0 及π0-FAST 对外开源的具体内容:2 套代码、4+3 套权重且支持远程推理
1.1.1 开源基础模型π0 及π0-FAST,可自行微调
-
π0 基础模型的代码及权重
可用于微调的扩散π0「标准的预训练π0 模型,该模型在 OXE 和他们的 7 个机器人平台上进行训练」。
其对应的 checkpoint 路径为:s3://openpi-assets/checkpoints/pi0_base
注意,这个π0 基础版本身就已经具备了一定的指令跟随能力
-
π0-FAST 基础模型的代码及权重
可用于微调的π0_FAST——基于 FAST 分词器的自回归模型。
该模型使用 FAST tokenizer 通过自回归离散化实现控制。
它提供了更好的语言跟踪性能,但推理成本更高 (根据他们的经验,大约高出 4-5 倍),如果你更喜欢使用 discretization 而不是流匹配,这是一个不错的选择。
其对应的 checkpoint 路径为:s3://openpi-assets/checkpoints/pi0_fast_base
1.1.2 已经微调好的模型分类:可直接推理——π0 DROID/π0 ALOHA/π0 Libero
且他们还提供了专门为 ALOHA 和 DROID 平台上一些简单任务做了微调的 checkpoint,相当于在 ALOHA 和 DROID 收集的相对较小的数据集上进行了微调。
-
π0 DROID:在 DROID 数据集上微调过的扩散π0
DROID 数据集由 Franka 机械臂在不同环境中执行的不同任务组成的开源数据集。
其对应的 checkpoint 路径为:s3://openpi-assets/checkpoints/pi0_droid
推理速度比π0-FAST-DROID 快,但可能不遵循语言命令。
-
π0-FAST DROID:在 DROID 数据集微调过的π0-FAST
可以在 DROID 机器人平台上的新场景中执行各种简单的零样本桌面操控任务。
其对应的 checkpoint 路径为:s3://openpi-assets/checkpoints/pi0_fast_droid
-
π0 ALOHA:含三套权重
根据 ALOHA(适合灵巧操作的低成本双臂系统) 数据进行了微调。
- 折叠毛巾:s3://openpi-assets/checkpoints/pi0_aloha_towel
- 从容器中取出食物:s3://openpi-assets/checkpoints/pi0_aloha_tupperware
- 打开笔帽:s3://openpi-assets/checkpoints/pi0_aloha_pen_uncap
-
π0 Libero
此检查点针对 Libero 基准进行了微调,并且可以在 Libero 任务上进行开箱即用的评估。
1.1.3 对预训练模型进行推理:还可连远程 GPU 进行推理
以下是跑π0-FAST-DROID 模型的预训练检查点示例:
from openpi.training config
openpi.policies policy_config
openpi.shared download
config = config.get_config()
checkpoint_dir = download.maybe_download()
policy = policy_config.create_trained_policy(config, checkpoint_dir)
example = {
: ...,
: ...,
:
}
action_chunk = policy.infer(example)[]
import
from
import
from
import
"pi0_fast_droid"
"s3://openpi-assets/checkpoints/pi0_fast_droid"
"observation/exterior_image_1_left"
"observation/wrist_image_left"
"prompt"
"pick up the fork"
"actions"
此外,特别值得一提的是:他们还提供了远程推理的示例和代码。
安装 openpi-client:
cd $OPENPI_ROOT/packages/openpi-client
pip install -e .
from openpi_client import image_tools
from openpi_client import websocket_client_policy
client = websocket_client_policy.WebsocketClientPolicy(host="localhost", port=8000)
for step in range(num_steps):
observation = {
"observation/image": image_tools.convert_to_uint8(image_tools.resize_with_pad(img, 224, 224)),
"observation/wrist_image": image_tools.convert_to_uint8(image_tools.resize_with_pad(wrist_img, 224, 224)),
"observation/state": state,
"prompt": task_instruction,
}
action_chunk = client.infer(observation)["actions"]
uv run scripts/serve_policy.py --env=[DROID | ALOHA | LIBERO]
uv run scripts/serve_policy.py policy:checkpoint --policy.config=pi0_fast_droid --policy.dir=s3://openpi-assets/checkpoints/pi0_fast_droid
export SERVER_ARGS="--env ALOHA_SIM"
docker compose -f examples/simple_client/compose.yml up --build
1.2 安装与运行
1.2.1 如何安装本 openpi 开源库
要运行此存储库中的模型,需要至少具有以下规格的 NVIDIA GPU。
| 模式 | 所需内存 | 示例 GPU |
|---|
| 推理 | > 8 GB | RTX 4090 |
| 微调(LoRA) | > 22.5 GB | RTX 4090 |
| 微调(完整版) | > 70 GB | A100(80GB)/H100 |
PS,他们说该 repo 已在 Ubuntu 22.04 上测试过,其他操作系统可能不支持。
以下是安装过程:
使用 uv 来管理 Python 依赖项。
GIT_LFS_SKIP_SMUDGE=1 uv sync
GIT_LFS_SKIP_SMUDGE=1 uv pip install -e
git clone --recurse-submodules [email protected]:Physical-Intelligence/openpi.git
git submodule update --init --recursive
1.2.2 如何把该库的 ALOHA sim 环境跑起来
uv venv --python 3.10 examples/aloha_sim/.venv
source examples/aloha_sim/.venv/bin/activate
uv pip sync examples/aloha_sim/requirements.txt
uv pip install -e packages/openpi-client
MUJOCO_GL=egl python examples/aloha_sim/main.py
uv run scripts/serve_policy.py --env ALOHA_SIM
1.3 基于自己的数据集微调π0 基础模型
1.3.1 利用 Libero 数据集微调π0 基础模型的三个步骤
Physical Intelligence (π) 认为,1 到 20 小时的数据足以微调各种任务。
第一步,将 Libero 数据集转换为 LeRobot 数据集 v2.0 格式
作者提供了一个脚本 convert_libero_data_to_lerobot.py,用于将 Libero 数据转换为 LeRobot 数据集 v2.0 格式。
uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/libero/data
第二步,定义使用自定义数据集的训练配置,并运行训练
提供 pi0_aloha_pen_uncap 配置作为示例。
XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi0_fast_libero --exp-name=my_experiment --overwrite
uv run scripts/serve_policy.py policy:checkpoint --policy.config=pi0_fast_libero --policy.dir=checkpoints/pi0_fast_libero/my_experiment/20000
1.3.2 在 UR5 数据集上微调 pi0
第二部分 进一步实战:如何基于你自己的私有数据集微调π0
2.1 如何在真实环境中采集数据,一步一步微调π0 然后部署到机械臂上
2.1.1 准备环境、硬件、安装依赖、采集环境
cd project_root
GIT_LFS_SKIP_SMUDGE=1 uv sync
GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .
sudo apt update
sudo apt install git
git clone https://github.com/Physical-Intelligence/openpi.git
在源码中,新建并切换到 pi0 环境(openpi 0.1.0 明确要求 Python >= 3.11):
conda create -n pi0 python=3.11 -y
conda activate pi0
修改 pyproject.toml,解决 lerobot 依赖冲突问题。
2.1.2 数据的采集与转换
从 convert_aloha_data_to_lerobot.py 脚本中可以看出,Aloha 机器人的数据是以 HDF5 格式存储的,并且需要转换成 LeRobot 数据集格式才能用于训练。
uv run examples/aloha_real/convert_aloha_data_to_lerobot.py --raw-dir /path/to/your/episodes --repo-id your-org/your-dataset-name
cd /path/to/openpi-main
source examples/aloha_real/.venv/bin/activate
roslaunch aloha ros_nodes.launch
2.1.3 定义训练配置
下面是一个很好的示例配置 pi0_aloha_pen_uncap。
base_config = DataConfig(
local_files_only=False,
),
weight_loader = weight_loaders.CheckpointWeightLoader("s3://openpi-assets/checkpoints/pi0_base/params"),
num_train_steps = 20_000,
repack_transforms = _transforms.Group(
inputs=[
_transforms.RepackTransform({
"images": { "cam_high": "observation.images.cam_high", ... },
"state": "observation.state",
"actions": "action",
})
]
),
TrainConfig(
name="pi0_your_custom_task",
model=pi0.Pi0Config(),
data=LeRobotAlohaDataConfig(
repo_id="your-org/your-dataset-name",
assets=AssetsConfig(...),
default_prompt="你的任务指令",
)
)
2.1.4 开始训练
uv run scripts/train.py --config pi0_your_custom_task --exp_name your_experiment_name
2.1.5 测试和部署训练好的模型
启动 ROS 节点,并在另一个终端运行机器人控制程序:
python -m examples.aloha_real.main
uv run scripts/serve_policy.py --env ALOHA --checkpoint_path ./checkpoints/pi0_your_custom_task/your_experiment_name/latest/params --default_prompt "你的任务指令"
2.2 部分实际落地实践:过程中涉及微调 openpi
团队内部从 24 年 q3 开始,一直给各种工厂做场景落地和定制开发。
2.2.1 一周,完成 openpi 在国产臂上的部署:含训练和推理,最终自主抓零食
长沙具身分部在短短 3 天内,便把 openpi 在国产 piper 机械臂上部署好了,并完成数据的采集。
于 7.10-7.11 两天完成了训练、推理。
2.2.2 openpi 自主做智能分拣,即便被分拣物品被换了位置,也能分拣
昨天通过 openpi 抓零食,今天又训了一个任务,openpi 自主做智能分拣。
即便被分拣物体被交换了位置,也能成功分拣,毕竟 vla 还是比单纯 il 更智能些。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online