openpi 实战指南:3 步搭环境,跑通 VLA 机器人模型 π₀ 的推理与微调
openpi 实战指南3 步搭环境跑通 VLA 机器人模型 π₀ 的推理与微调【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpiopenpi 是 Physical Intelligence 团队开源的一套机器人大脑。它把看画面、读指令、出动作这件事封装成了现成的视觉-语言-动作模型VLAVision-Language-Action你不用从零训网络拉下代码就能让机器人听懂人话并规划出一连串动作。本文带你把环境搭好、第一次推理跑通再用你自己的数据把模型微调成本机专属策略最后把它部署到机器人之外的服务器上。先搞清楚openpi 到底给你的是什么这一节帮你建立全局印象仓库里有哪些模型、哪些能直接用的检查点免得后面读代码时摸不着头脑。打开仓库的 src/openpi/models/你会发现三套模型区别在于动作是怎么被读出来的π₀用流匹配头直接流出一段连续动作动作平滑是微调的主力底座。π₀-FAST自回归路线靠 FAST 动作分词器把动作切成 token一个接一个地读出来指令跟随更准。π₀.₅π₀ 的升级款引入了知识隔离knowledge insulation训练法在没见过的开放场景里泛化更稳本仓库目前只为它支持流匹配头。三套底座都是在上万小时10k hours机器人数据上预训练出来的所以你拿到的起点已经见过海量操作。检查点分两类都默认自动从gs://openpi-assets下载、缓存到~/.cache/openpi用环境变量OPENPI_DATA_HOME可以改缓存位置类型代表检查点用途底座basepi0_base/pi0_fast_base/pi05_base拿来微调专家expertpi0_fast_droid/pi05_droid/pi05_libero拿来直接推理专家expertpi0_aloha_towel/pi0_aloha_tupperware/pi0_aloha_pen_uncap叠毛巾、开饭盒取物、拔笔帽等具体任务硬件与环境要求这一节先对一下账你的显卡够不够、系统支不支持省得装到一半才发现跑不动。只支持 Ubuntu 22.04必须配 NVIDIA 显卡。显存按模式区分下表为单卡估算多卡可通过训练配置里的fsdp_devices摊薄单卡压力但当前训练脚本暂不支持多机使用模式显存要求参考显卡推理 8 GBRTX 4090微调LoRA 22.5 GBRTX 4090微调全参数 70 GBA100 (80GB) / H100从零搭环境这一节给三条命令走完安装跟着敲就能得到一个能 import openpi 的虚拟环境。第 1 步把代码和子模块一起拉下来子模块里放着第三方机器人栈克隆时用--recurse-submodules带上后面才能直接跑示例。git clone --recurse-submodules https://gitcode.com/GitHub_Trending/op/openpi仓库已经在手上只想补子模块的话单独跑这条就行git submodule update --init --recursive第 2 步用 uv 装依赖项目用 uv 管 Python 依赖装好 uv 后跑下面两条。GIT_LFS_SKIP_SMUDGE1这个环境变量必须挂着否则 LeRobot 这个依赖拉不下来。GIT_LFS_SKIP_SMUDGE1 uv sync GIT_LFS_SKIP_SMUDGE1 uv pip install -e .第 3 步嫌系统麻烦就用 Docker如果依赖和系统环境老打架Docker 能帮你绕开还能顺便免装 ROS。官方给了两套安装脚本scripts/docker/install_docker_ubuntu22.sh和scripts/docker/install_nvidia_container_toolkit.sh装完镜像一条命令起容器docker compose -f scripts/docker/compose.yml up --build更多细节看 Docker 安装文档。第一次推理怎么跑这一节用几十行代码把喂观察、出动作这条最短链路跑通让你直观看到模型吐出来的是一整段动作序列。以 π₀-FAST-DROID 为例配一个夹起叉子的指令模型就会返回一个动作块from openpi.training import config as _config from openpi.policies import policy_config from openpi.shared import download config _config.get_config(pi0_fast_droid) checkpoint_dir download.maybe_download(gs://openpi-assets/checkpoints/pi0_fast_droid) policy policy_config.create_trained_policy(config, checkpoint_dir) example { observation/exterior_image_1_left: ..., # 外部相机画面 observation/wrist_image_left: ..., # 腕部相机画面 prompt: pick up the fork, # 自然语言指令 } action_chunk policy.infer(example)[actions]想交互着玩可以打开 examples/inference.ipynb。手上暂时没有机器人也别慌examples/simple_client/里有个脚本会自己造一个随机观察来跑推理用来验证链路是否通——具体见 simple client 说明。用你自己的数据微调 π₀这一节按转数据 → 定配置开训 → 起服务推理三步走以 LIBERO 数据集为样例换成你的数据只要照着改。第一步把数据转成 LeRobot 格式训练吃的是 LeRobot 数据集。仓库给了个最小转换脚本改成你的字段就能用uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/libero/data如果你就是在 LIBERO 上微调这步能跳——官方配置已经指向一份现成的转换结果。脚本里对数据映射、处理方式的注释在 src/openpi/policies/libero_policy.py 和 src/openpi/training/config.py 里都写得很细。第二步算统计量再开训训练前要先把动作和状态的归一化统计量算出来否则直接报错uv run scripts/compute_norm_stats.py --config-name pi05_libero接着正式开训XLA_PYTHON_CLIENT_MEM_FRACTION0.9让 JAX 吃到 90% 显存默认只有 75%--overwrite让你重跑同名配置时能覆盖旧检查点XLA_PYTHON_CLIENT_MEM_FRACTION0.9 uv run scripts/train.py pi05_libero --exp-namemy_experiment --overwrite训练进度会打到终端并存进checkpoints目录也能上 Weights Biases 看板盯着。若你的机器本来就在预训练混合集里可以复用预训练的归一化统计量做法见 norm_stats 说明。第三步起策略服务器做推理训练完把某个迭代的检查点挂成一个服务默认监听 8000 端口等外部把观察推过来uv run scripts/serve_policy.py policy:checkpoint --policy.configpi05_libero --policy.dircheckpoints/pi05_libero/my_experiment/20000LIBERO 的评估有配套的 Docker 化流程服务 评测脚本一起跑见 LIBERO 示例。把模型搬到机器人之外这一节讲远程推理模型跑在带强卡的服务器上机器人那边只发观察、收动作靠 WebSocket 串起来既让机器人省显存又把两套依赖环境隔离开。服务器端一条命令即可起服务--env决定加载哪套检查点uv run scripts/serve_policy.py --env DROID机器人端装个依赖极少的openpi-client在 packages/openpi-client/ 下pip install -e .即可然后建个客户端把观察推过去from openpi_client import websocket_client_policy client websocket_client_policy.WebsocketClientPolicy(hostlocalhost, port8000) action_chunk client.infer(observation)[actions] # 返回 (动作步数, 动作维度)一般不必每步都请求通常每 N 步取一个动作块中间那几步按块里的动作开环执行。完整做法见 远程推理文档 和 DROID 机器人端示例。能延伸到哪平台与生态这一节点到为止你想往哪个方向接仓库里现成有哪些口子。换平台ALOHA 真机、ALOHA 仿真、UR5、LIBERO 各有 README讲清怎么把上面的推理/微调流程接到自家硬件。PyTorch 版π₀ 和 π₀.₅ 现在同时提供 PyTorch 实现API 与 JAX 版一致只需把检查点路径换成转换后的 PyTorch 版本即可。转换用examples/convert_jax_model_to_pytorch.py训练可用scripts/train_pytorch.py支持单卡、单机多卡、多机。注意 PyTorch 版暂不支持 π₀-FAST、混合精度、FSDP、LoRA 和 EMA。接进自己的运行时openpi-client就是为嵌进任何机器人代码库设计的依赖少、上手快。常见坑速查这一节挑了最常被问到的几个卡点遇到先对一遍别急着翻 issue。uv sync报依赖冲突删掉.venv重新uv sync还不行就uv self update升级 uv。训练显存爆了先设XLA_PYTHON_CLIENT_MEM_FRACTION0.9或更高仍不够就用--fsdp-devices 卡数开分片数据并行或干脆关掉 EMA。训练时报缺 norm stats开训前忘跑scripts/compute_norm_stats.py补上即可。策略服务器连不上确认服务在跑、端口对得上再查客户端与服务端的网络和防火墙。CUDA / GPU 报错你其实不需要系统级 CUDAuv 会自己装有时反而要把系统里那套 CUDA 卸掉避免版本打架Docker 场景记得装好 nvidia-container-toolkit。训练 loss 发散去查norm_stats.json里q01/q99/std有些很少被用到的维度数值过小归一化后动作会爆大可手动修一下。【免费下载链接】openpi项目地址: https://gitcode.com/GitHub_Trending/op/openpi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考