K-ON111111/X-VLA-WidowX
模型介绍
文件和版本
Pull Requests
讨论
分析

X-VLA-WidowX — 昇腾 NPU 适配模型

赛事: 昇腾 Model Agent 模型适配大赛(第二季) 引擎: torch_npu + Florence2(trust_remote_code) 硬件: Ascend 910B 系列(实测 Ascend910B4) 标签: npu ascend pytorch transformers

📖 模型简介

属性值
原始模型2toINF/X-VLA-WidowX
架构XVLA(Florence-2 视觉语言编码器 + 扩散动作 transformer)
参数量932M
任务类型机器人 VLA(Vision-Language-Action)
输入格式图像 + 语言指令
输出格式动作序列 [num_actions, dim_action](ee6d,30×20)

🔧 环境依赖与代码获取

⚠️ 本仓库不包含模型权重(交付件仅 inference.py / readme.md / requirements.txt / assets/), 推理前必须先从原始模型仓单独下载权重(含 modeling_xvla.py 等自定义代码)。

依赖清单(requirements.txt):

  • torch / torch_npu(昇腾 NPU 环境)
  • transformers、huggingface_hub
  • json-numpy、opencv-python、pillow、numpy

代码获取:inference.py 首次运行会自动对本地 configuration_florence2.py / modeling_florence2.py / modeling_xvla.py 注入 transformers 5.x / NPU 兼容补丁(forced_bos_token_id、_supports_sdpa、_tied_weights_keys)。

🚀 推理步骤

# 1. 安装依赖
pip install -r requirements.txt -i https://repo.huaweicloud.com/repository/pypi/simple/

# 2. 下载模型权重(仓库不含权重,必须单独下载)
git clone https://gitcode.com/hf_mirrors/2toINF/X-VLA-WidowX.git .
git lfs pull

# 3. 运行 NPU 推理(合成图像 + 指令)
python3 inference.py --model_path . --device npu:0

🧪 测试用例

用例 1: 视觉语言动作生成

python3 inference.py --model_path . --device npu:0

预期输出:

[Model Agent] ✅ 模型加载完成 → npu:0
[Model Agent] 📊 输入: 图像 + 指令 'pick up the object'
[Model Agent] ✅ 推理完成 → 动作 30 步 x 20 维, 耗时 7725 ms
[Model Agent] 📈 动作[0]前5: [0.028, -0.01, 0.007, 0.179, 0.071]
[Model Agent] ✅ 结果已保存 → inference_result.json

📁 目录结构

.
├── inference.py          # NPU 推理脚本
├── readme.md             # 本文件
├── requirements.txt      # 依赖清单
└── assets/               # 截图素材

📝 适配说明

本模型由 昇腾 Model Agent 自动完成 NPU 适配。 X-VLA(Florence-2 视觉语言 + 扩散动作)迁移至昇腾 NPU:

  • inference.py 注入 3 个 transformers 5.x 兼容补丁(forced_bos_token_id / _supports_sdpa / _tied_weights_keys);
  • 模型统一 bf16(含视觉编码器 conv bias,否则混合精度报错),处理器补 pad_token;
  • proprio 按 action_space 的 dim_proprio(20)构造(缺失会导致扩散 transformer 维度不匹配);
  • 调用 torch_npu,generate_actions 扩散采样生成 30 步 × 20 维动作。