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

X-VLA-WidowX(昇腾 NPU 适配)

2toINF/X-VLA-WidowX 是视觉-语言-动作(VLA)跨具身策略(1138M,WidowX BridgeDataV2 微调), 基于 Florence-2 视觉编码器 + SoftPromptedTransformer 流匹配动作头, 输入语言指令 + 3 视图图像 + 本体状态,输出 30 步 × 20 维动作块。

本项目完成其在**华为昇腾 NPU(Ascend 910B)**上的推理适配与验证。

模型规格

项目说明
模型架构XVLA(Florence-2 + SoftPromptedTransformer 流匹配动作头)
参数量1138M
输入语言 token[1,50] + 3 视图图像[1,3,3,224,224] + domain_id + proprio[1,20]
输出动作块 [1, 30, 20](30 步 × 20 维)
权重格式model.safetensors(3.52GB)

环境要求

# 必须 transformers 4.57.6(5.15 对 Florence2 远程代码不兼容)
/workspace/tf4venv/bin/pip install "transformers==4.57.6"

推理

cd /workspace/X-VLA-WidowX
/workspace/tf4venv/bin/python inference.py \
    --model_path /workspace/2toINF_X-VLA-WidowX_src --device npu:0

参数

参数说明默认值
--model_path权重目录/workspace/2toINF_X-VLA-WidowX_src
--device推理设备(npu:0 / cpu)npu:0
--output输出动作块 npystdout

验证结果(Ascend 910B, npu:0)

输入:语言指令 + 3 视图图像 + 本体状态(确定性合成输入,参考实现方案)

[info] model loaded: XVLA (1137.8M)
[info] 输入: 语言[1,50] + 3视图图像[1,3,3,224,224] + proprio[1,20]
============================================================
[info] 输出动作块形状: (1, 30, 20)
[info] finite=True | 范围: min=... max=...
============================================================

X-VLA-WidowX 在 NPU 上完成动作块预测(输出 (1,30,20)、全 finite), NPU 确定性前向链路完整跑通。

适配说明(参考社区 X-VLA-WidowX-NPU 方案)

  • transformers 4.57.6:Florence2 远程代码在 5.15 不兼容,需 transformers 4.57.6。
  • _attn_implementation="eager":Florence2 子配置默认 None, 必须显式设 eager(否则 FLORENCE2_ATTENTION_CLASSES[None] KeyError)。
  • 去掉 del lm_head/decoder:官方 __init__ 直接 del lm_head/decoder 会令 transformers 4.57.6 的 tie_weights()/get_output_embeddings() 崩溃, 已改为加载后保留(参考实现做法)。
  • 位置参数 forward_vlm:model.forward_vlm(input_ids, image_input, image_mask)。
  • action_space.preprocess 归一化 + t=0 确定性前向。
  • 设备解析 resolve_device():NPU 可用性检测,失败自动回退 CPU。
  • 模型权重不推送到仓库:*.safetensors 已加入 .gitignore。

目录结构

.
├── README.md          # 模型卡片(本文件)
├── inference.py       # NPU 推理脚本
└── assets/            # 适配过程截图素材

引用

  • 模型:https://huggingface.co/2toINF/X-VLA-WidowX
  • 参考实现:https://ai.gitcode.com/qionner/X-VLA-WidowX