5分钟跑通π₀:openpi机器人VLA模型从部署到微调的实战指南
【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpi
openpi 是 Physical Intelligence 团队为机器人学习发布的开源模型与工具集,主角是 π₀ 系列模型。它们属于 VLA 模型(Vision-Language-Action,视觉-语言-动作模型),简单说就是让机器人同时看懂画面、听懂指令、做出动作。项目不仅给出模型权重,还提供预训练了 10,000 多小时机器人数据的基础模型检查点、微调脚本和推理服务,一条完整的落地链路。
先搞懂:π₀ 与 π₀-FAST 的两种技术路线
π₀ 家族目前分两条路线,理解它们能帮你选对模型:
- π₀:基于流式扩散(flow-based)的 VLA,把动作序列当作"从噪声中逐步去噪"的生成过程。推理速度快,但对语言指令的遵循能力依赖预训练质量。
- π₀-FAST:自回归 VLA,先用 FAST 动作分词器把动作量化成 token,再像语言模型那样逐 token 预测,语言指令跟随表现更好,还能复用大模型解码技巧。
两类模型都提供基础检查点,既可以开箱推理,也可以微调到你自己的数据集上。
环境与部署 ⚙️
硬件与系统要求
项目目前只在 Ubuntu 22.04 上验证过,暂不支持其他系统。GPU 显存按用途划分:
| 用途 | 显存要求 | 示例 GPU |
|---|---|---|
| 推理 | > 8 GB | RTX 4090 |
| 微调(LoRA) | > 22.5 GB | RTX 4090 |
| 微调(全参) | > 70 GB | A100 (80GB) / H100 |
克隆仓库并一键安装依赖
按下面两步走:
- 克隆仓库(必须带上子模块,里面包含机器人平台的配套代码):
git clone --recurse-submodules https://gitcode.com/GitHub_Trending/op/openpi- 安装 uv 后,用两条命令完成环境搭建:
GIT_LFS_SKIP_SMUDGE=1 uv sync GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .这里的GIT_LFS_SKIP_SMUDGE=1是为了正确拉取 LeRobot 训练依赖,别漏掉。如果系统环境反复出问题,可以改走项目提供的 Docker 安装路线,步骤见 docs/。
跑通第一个推理任务 🚀
没有真实机器人也能验证流程:项目在examples/simple_client/提供了无机器人测试脚本,会生成随机观测并请求模型推理。或者自己用几行代码搞定——下面的例子加载 π₀.₅-DROID 专家检查点,传入观测图片和一句文本指令,返回一个动作块(action chunk,即机器人接下来要执行的一段动作序列):
from openpi.training import config as _config from openpi.policies import policy_config from openpi.shared import download config = _config.get_config("pi05_droid") checkpoint_dir = download.maybe_download("gs://openpi-assets/checkpoints/pi05_droid") # Create a trained policy. policy = policy_config.create_trained_policy(config, checkpoint_dir) # Run inference on a dummy example. example = { "observation/exterior_image_1_left": ..., "observation/wrist_image_left": ..., ... "prompt": "pick up the fork" } action_chunk = policy.infer(example)["actions"]检查点首次运行会自动下载并缓存到~/.cache/openpi,也可以用OPENPI_DATA_HOME环境变量改缓存位置。手上有 DROID 或 ALOHA 实机时,直接照 examples/droid/ 的逐步指南把模型接到你的平台上。
从基础模型到你的数据:三步完成 π₀ 微调
以 LIBERO 数据集为例,微调流程就三步,其他数据集同理:
- 把数据转成 LeRobot 数据集。训练流水线只消费 LeRobot 格式,项目里
examples/libero/convert_libero_data_to_lerobot.py是一份最小转换脚本,改成适配你的数据即可。 - 定义配置并启动训练,先算训练数据的归一化统计量,再开训:
uv run scripts/compute_norm_stats.py --config-name pi05_libero XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_libero --exp-name=my_experiment- 起策略服务器对接机器人,训练完直接用检查点起服务:
uv run scripts/serve_policy.py policy:checkpoint --policy.config=pi05_libero --policy.dir=checkpoints/pi05_libero/my_experiment/20000服务默认监听 8000 端口,你的机器人运行时只需把观测发过去、取回动作。
社区生态与延伸方向
- 现成的专家检查点:项目发布了多个针对 DROID Franka 和 ALOHA 平台的微调模型,覆盖 0-shot 折毛巾、开食品盒、拔笔盖等任务。虽然官方坦言不保证每个平台都能跑通,但 DROID 检查点在实践中泛化面较广,值得优先试。
- 远程推理服务:模型放在 GPU 较强的服务器上,机器人端只负责采集与执行,动作经 WebSocket 流式下发,方便把计算与机器人环境彻底解耦,接入方式见 docs/remote_inference.md。
- 平台适配示例:
examples/目录下还收录了 ALOHA 仿真/实机、LIBERO、UR5 等平台从数据转换到评测的完整 README,照着改就能迁移到自己的平台。 - PyTorch 支持:2025 年 9 月起 π₀ 与 π₀.₅ 提供 PyTorch 实现,推理与微调 API 和 JAX 版一致,还附了 JAX 检查点转 PyTorch 的脚本;注意 FAST、混合精度训练等特性暂不支持。
【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考