franka_droid 机器人配置。你会先运行一次合成 observation,
再使用已采集的样本和 Python API。每个示例返回 15 个动作,每个动作包含 8 个值。
allenai/MolmoAct2 是面向多种机器人形态的基础 checkpoint,用于后续机器人任务微调。
本页示例检查推理和输入处理流程,不代表机器人上的任务成功率。
Ai2 在微调模型合集中发布了面向具体部署场景的 checkpoint。快速开始
你需要 Linux、Python 3.12 或更新版本、uv,以及支持 BF16 且有足够空闲显存加载模型的
NVIDIA GPU。CUDA 环境见安装说明。以下命令在 PhyAI 仓库根目录运行。
1
安装 PhyAI
2
下载 checkpoint
norm_stats.json。PhyAI 使用 trust_remote_code=True 从这个本地目录加载 processor。如果已经下载好模型,将 MOLMOACT2_CHECKPOINT 设为已有目录。后续命令继续在同一个
shell 中运行,保留这个变量和已激活的环境。3
运行一次推理
用
nvidia-smi 选择可用的 GPU。下面的命令使用 GPU 0:--synthetic 生成相机图像,并使用所选机器人配置的平均状态,因此首次运行无需准备
observation 文件。脚本加载模型、预测动作,并保存后处理后的数组。日志中会出现:4
读取结果
(1, 15, 8) float32 True,表示一次 observation、15 个未来动作,
每个动作包含 8 个值。对于 franka_droid,这些值依次是 joint_0 到 joint_6,
最后是 gripper;checkpoint 中的控制模式为 absolute joint pose。运行已采集的 observation
官方 DROID 样本 提供一张外部相机图像、一张腕部相机图像,以及对应的状态。 只下载这两张图像,并保存样本中的状态:使用自己的相机图像和状态
将样本文件替换为同一时刻采集的 observation。对于franka_droid,重复传入的
--image 参数须按下表排列:
提供 RGB 图像;CLI 会将图像文件转换为 RGB。Python 输入使用形状为
(height, width, 3) 的 uint8 数组,缩放和裁剪由 processor 处理。
使用自己采集的数据时,第 2 路应传入对应的第二台外部相机图像。
将测得的状态保存为 float32 NumPy .npy 数组,形状为 (8,) 或 (1, 8),
顺序为 [joint_0, joint_1, ..., joint_6, gripper]。传入原始状态值;processor
负责按 checkpoint 归一化并编码为离散状态 token。
状态和动作的约定必须与所选 checkpoint 及机器人配置一致。
选择其他机器人配置
--norm-tag 决定相机顺序、状态和动作的归一化统计、控制模式,以及动作序列长度,
必须与 observation 匹配。为其他机器人准备数据前,先查看可用 tag 及对应维度:
使用 Python API
将下面的代码保存为仓库根目录下的run_molmoact2_api.py。它使用前面设置的
checkpoint 变量和准备好的样本文件。相机字典明确指定每一路对应的图像;你也可以传入
有序图像列表。
run_molmoact2_api.py
(1, 15, 8) torch.float32 cpu。在这组配置下,engine.step()
返回的是经过维度补齐的归一化动作,形状为 (1, 15, 32)。processor.postprocess()
移除补齐维度、截取所需动作步数,并按 tag 的统计数据反归一化。
在应用中,让 engine 和 processor 持续处理多次 observation,应用结束时再关闭 engine。
推理参数
运行
python examples/molmoact2/run_molmoact2.py --help 查看全部输入参数。
使用 Python API 时,在 MolmoAct2Request 中设置 num_steps,在
MolmoAct2Processor.from_pretrained() 中设置 n_action_steps。
CUDA Graph 捕获动作速度计算。图像和文本前处理、prefill 在图外执行,首次请求还包含
捕获过程。复用 engine 可以复用兼容的已捕获图。要关闭 Python 示例中的捕获,设置
RuntimeConfig(use_cuda_graph=False)。
排查问题
连续动作推理要求 checkpoint 包含 action expert,且
action_mode 为
"continuous" 或 "both"。底层 API 还提供 MolmoAct2GenerationRequest,用于贪心生成
token ID;本页动作示例使用 MolmoAct2Request 及对应的 processor。
如需在本地进程之外部署,见并行服务。
