openpi 机器人智能体快速上手指南:3步跑通 VLA 模型推理,4步微调部署
【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpi
openpi 是 Physical Intelligence 开源的机器人智能体项目,内置 π₀、π₀-FAST、π₀.₅ 三种 VLA 模型。本篇带你选模型、装环境、三步跑通推理,再用自己数据微调并部署。
它解决什么问题
VLA 模型是什么?把它理解成机器人的"眼睛、耳朵加双手":看相机图像、听语言指令,最后输出一串关节动作。openpi 把这类模型做成了开源、可直接微调的工程包,覆盖三类典型场景:
- 真实桌面操作:DROID Franka 专家模型能在新桌面场景里零样本完成"拿叉子"这类任务;ALOHA 双臂专家模型叠毛巾、开食品盒,拿到即跑。
- 仿真基准评测:想量化模型能力,可以跑 LIBERO 基准,π₀.₅-LIBERO 检查点在该基准上取得 SOTA 成绩。
- 远程控机:模型留在 GPU 服务器,通过 WebSocket 把动作流推给机器人端,本体不用装重型依赖。
三个场景背后是同一套资产:3 种模型结构,每类都提供经 10,000+ 小时机器人数据预训练的基础检查点,以及针对 DROID、ALOHA、LIBERO 微调好的专家检查点。
先选对模型
先看架构,再看检查点。openpi 提供 3 种模型结构:
- π₀:基于流匹配(一种扩散式方法)生成动作轨迹,推理表现稳定,是"求稳"的选择。
- π₀-FAST:基于 FAST 动作标记器的自回归模型,像语言模型一样逐个"吐"动作 token,速度更快。
- π₀.₅:π₀ 的升级版,用"知识绝缘"技术训练——类比给主干知识加一层隔离,微调新任务时不冲掉预训练能力,开放世界泛化更强。
基础检查点全部经 10,000+ 小时机器人数据预训练,适合作为微调起点;专家检查点已针对具体平台和任务调好,可直接推理。选型对照表如下:
| 模型 | 适合场景 | 直接推理 / 微调起点 | 数据规模 |
|---|---|---|---|
| π₀(base) | 通用桌面操作,求稳 | 微调起点 | 10,000+ 小时预训练 |
| π₀-FAST(base) | 对推理延迟敏感的任务 | 微调起点 | 10,000+ 小时预训练 |
| π₀.₅(base) | 开放环境、复杂指令跟随 | 微调起点 | 10,000+ 小时 + 知识绝缘训练 |
| π₀-FAST-DROID / π₀-DROID | DROID 真机桌面操作 | 直接推理(后者可再微调) | DROID 数据集微调 |
| π₀-ALOHA 系列(叠毛巾/开饭盒) | ALOHA 双臂固定任务 | 直接推理 | ALOHA 内部数据微调 |
| π₀.₅-LIBERO / π₀.₅-DROID | LIBERO 仿真基准 / DROID 真机 | 直接推理 | LIBERO、DROID 数据集微调 |
怎么挑:只想先看效果,直接选 DROID 或 LIBERO 的专家模型;有自己的任务数据,就从对应 base 检查点开始微调;环境越开放、指令越复杂,越建议选 π₀.₅ 系。✅
从安装到跑通第一步
环境要求:Ubuntu 22.04、NVIDIA GPU(推理 8GB 起步,LoRA 微调 22.5GB 起)、已装好 uv 的机器。系统环境不好搞的话,可以看 docs/docker.md 的 Docker 方案。三步走:
- 拉代码(记得带上子模块):
git clone --recurse-submodules https://gitcode.com/GitHub_Trending/op/openpi- 装依赖(
GIT_LFS_SKIP_SMUDGE=1是拉取 LeRobot 依赖的必要开关):
cd openpi && GIT_LFS_SKIP_SMUDGE=1 uv sync && GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .- 跑第一次推理:没有机器人也能测,这个客户端会构造随机观测并打印推理帧率:
uv run examples/simple_client/main.py --env DROID🎯 看到动作数字和推理速率输出,说明整条链路已通。想看代码版示例,参考 examples/inference.ipynb。
进阶玩法:训练你自己的机器人
微调链路是"数据转换 → 统计计算 → 启动训练 → 部署策略服务",下面以 π₀.₅ + LIBERO 为例。
① 转换数据为 LeRobot 格式
openpi 的训练只认 LeRobot 数据集格式,先把自己的数据转过去(纯 LIBERO 微调可跳过,官方已预转换):
uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
转换脚本很短,照着 examples/libero/convert_libero_data_to_lerobot.py 改成你自己的数据源即可。
② 计算归一化统计
训练前模型需要知道状态/动作的分布来做归一化,尺度不对损失就会发散(细节见 docs/norm_stats.md)。用你的训练配置名跑一遍:
uv run scripts/compute_norm_stats.py --config-name pi05_libero
③ 启动微调训练
在 src/openpi/training/config.py 确认数据处理与超参(LIBERO 示例配置注释很详细),数据到模型的映射在 src/openpi/policies/libero_policy.py。前面的0.9让 JAX 用到 90% 显存:
XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_libero --exp-name=my_experiment --overwrite
④ 部署策略服务
训练完把检查点挂到策略服务器上,完成 π₀ 推理部署,服务默认监听 8000 端口,等待机器人端发观测:
uv run scripts/serve_policy.py policy:checkpoint --policy.config=pi05_libero --policy.dir=checkpoints/pi05_libero/my_experiment/20000
两个扩展方向
🔌 WebSocket 远程推理:模型部署到远程 GPU 服务器,机器人端只装轻量的 openpi-client,观测发过去、动作流回来。机器人端不用装重型依赖,换 GPU 也不用动机器人代码,完整用法见 docs/remote_inference.md。
🐍 PyTorch 生态:π₀ 与 π₀.₅ 现在提供 PyTorch 实现,已在 LIBERO 上验证推理与微调(π₀-FAST、LoRA 暂不支持)。JAX 检查点可以转成 PyTorch 格式,之后走同一套 API;多 GPU 训练用 torchrun 起 DDP:
uv run examples/convert_jax_model_to_pytorch.py --checkpoint_dir /path/to/jax/checkpoint --config_name pi05_libero --output_path /path/to/converted uv run torchrun --standalone --nnodes=1 --nproc_per_node=2 scripts/train_pytorch.py pi0_aloha_sim --exp_name pytorch_ddp_test避坑指南
| 现象 | 解法 |
|---|---|
uv sync报依赖冲突 | 删掉.venv目录后重跑uv sync;仍失败就uv self update升级 uv |
| 训练显存不足 (OOM) | 命令前加XLA_PYTHON_CLIENT_MEM_FRACTION=0.9;多卡时用--fsdp-devices <n>开启分片并行 |
| 训练启动报缺 norm stats | 先用scripts/compute_norm_stats.py(带上配置名)算好归一化统计,再启动训练 |
openpi 的路线还在加速:更多机器人平台适配、PyTorch 特性补齐都在推进中。挑一个 DROID 专家模型,今天就把第一次推理跑通,下周轮到你的数据集上场。
【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考