atlasleong/smolvla_base-npu
模型介绍
文件和版本
Pull Requests
讨论
分析

smolvla_base 交付包

本交付包包含 SmolVLA(SmolVLM2-500M 视觉-语言-动作策略)在昇腾 NPU 上的离线推理交付物。 SmolVLA 是一个视觉-语言-动作(Vision-Language-Action)策略,输入多路摄像头图像、机器人本体状态与一条自然语言指令,输出一段连续动作块,用于机器人操作任务的闭环控制。

模型简介

  • 架构:LeRobot SmolVLAPolicy = SmolVLM2-500M 视觉语言骨干(16 层 VLM + 交叉注意力专家层)+ 动作专家头(flow matching)。
  • 输入:3 路摄像头图像(camera1/camera2/camera3,各 3×256×256)、6 维机器人状态、语言指令 token(最长 48)。
  • 输出:policy_outputs(原始流匹配动作采样,形状 (1, chunk_size, max_action_dim))与 actions(裁剪到真实动作维度的动作块)。
  • 语言指令示例:put the red block in the blue bowl。
  • 权重形态:model.safetensors 中内嵌视觉语言骨干权重;policy_preprocessor.json / policy_postprocessor.json 描述归一化与反归一化映射。

环境依赖

  • 昇腾 CANN 运行环境(torch_npu 可用),逻辑设备 npu:0。
  • 运行时不访问网络(HF_HUB_OFFLINE=1、TRANSFORMERS_OFFLINE=1)。
  • 依赖见 requirements.txt;torch 与 torch_npu 由昇腾工作镜像提供,不在此处固定。

安装依赖(在已具备 torch/torch_npu 的环境中):

pip install --ignore-installed --no-deps -r requirements.txt

分步推理

在任务根目录下执行:

python delivery/inference.py [--output-dir PATH]

脚本会按以下步骤执行:

  1. 设置离线环境变量(HF_HUB_OFFLINE=1、TRANSFORMERS_OFFLINE=1、TOKENIZERS_PARALLELISM=false),并加载本地 delivery/common.py 中的加载器。
  2. 从本地 model/ 加载策略:PreTrainedConfig.from_pretrained("model") 读取配置,SmolVLAPolicy.from_pretrained("model") 构建策略(视觉语言骨干权重内嵌于 model.safetensors,使用本地 base_model/smolvlm2_500m_local 目录构建 VLM 骨架)。
  3. 使用固定随机种子构造确定性输入:3 路 3×256×256 随机图像、6 维状态、指令 token。
  4. 将策略与输入放到逻辑设备 npu:0,以 torch.inference_mode() 运行一次确定性前向。
  5. 打印严格设备标记与语义输出:
PROMPT=put the red block in the blue bowl
INPUT_DEVICE=npu:0
MODEL_DEVICE=npu:0
OUTPUT_DEVICE=npu:0
CPU_FALLBACK=false
EXIT_CODE=0

若指定 --output-dir,还会将 policy_outputs.npy 与 actions.npy 保存到该目录。

测试用例

用例输入预期输出验收方式
固定种子推理3 路随机图像 + 6 维状态 + 固定指令policy_outputs 形状 (1, chunk_size, max_action_dim),actions 形状 (1, chunk_size, action_dim)检查形状、dtype、NaN/Inf,两次前向一致
设备归属同上全部张量驻留 npu:0,无 CPU 回退检查 INPUT_DEVICE / MODEL_DEVICE / OUTPUT_DEVICE 标记

输出结果

输出形状说明
policy_outputs(1, chunk_size, max_action_dim)原始流匹配动作采样(float32)
actions(1, chunk_size, action_dim)裁剪后的真实动作块(float32)

assets/ 目录存放交付包随附的静态资源。

Agent 使用截图

以下图片由真实 Model Agent 对话记录、npu-smi 设备日志和最终 NPU 推理日志 以无头浏览器渲染生成;每张 PNG 均有同名 .provenance.json,记录源证据哈希。

Model Agent 完整适配工作流

Model Agent 完整适配工作流

昇腾 NPU 设备调用

昇腾 NPU 设备调用

模型最终适配验收结果

模型最终适配验收结果

说明

  • 推理仅在逻辑设备 npu:0 上进行,不读取或修改 ASCEND_RT_VISIBLE_DEVICES,不启用 CPU 回退。
  • 该交付包面向模型审计与迁移验证,使用固定随机种子的确定性输入以保证可复现。

原模型仓库

  • 原仓库地址:https://ai.gitcode.com/hf_mirrors/lerobot/smolvla_base
  • 固定版本:c83c3163b8ca9b7e67c509fffd9121e66cb96205

精度限制与社区跟进

已评估 11 组 NPU 精度配置;最佳方案将连续误差控制在 max_abs_error=0.009187,但 10 个样本仍残留 1 个动作离散翻转,未达到零翻转门槛。仓库按最大适配努力发布,不声明精度 PASSED,后续由社区继续研究临界 argmax 数值稳定性。