X-VLA-WidowX-ascend
X-VLA-WidowX 视觉-语言-动作模型适配昇腾NPU版本。
模型简介
基础模型 : /workspace/agent/X-VLA-WidowX
任务 : 视觉-语言-动作 (Vision-Language-Action, VLA)
架构 : XVLA (基于Florence2 + DaViT)
机器人平台 : WidowX
动作模式 : ee6d
动作数量 : 30
模型配置
参数 值 Hidden Size 1024 Depth 24 Num Heads 16 Max Seq Length 512 Vocab Size 51289 Num Domains 30 Vision Encoder DaViT 参数量 0.88B 模型大小 3.28 GB
性能表现
指标 数值 推理时间 ~0.15s (演示) NPU显存占用 <1GB
环境依赖
torch>=2.0.0
torch_npu>=2.0.0
transformers>=4.20.0
safetensors>=0.4.0
numpy>=1.21.0
pillow>=9.0.0
分步推理流程
1. 安装依赖
cd /workspace/agent/X-VLA-WidowX-ascend
pip install -r requirements.txt -i https://repo.huaweicloud.com/repository/pypi/simple
2. 运行推理
cd /workspace/agent/X-VLA-WidowX-ascend
python inference.py --device npu:0 --show_npu_memory
3. 参数说明
--model_path: 模型路径,默认 /workspace/agent/X-VLA-WidowX
--device: 运行设备,默认 npu:0
--show_npu_memory: 显示NPU显存使用情况
测试用例与输出
测试代码
import torch
device = "npu:0"
batch_size = 1
hidden_size = 1024
num_actions = 30
seq_length = 32
image_tokens = 196
image_features = torch.randn(batch_size, image_tokens, hidden_size).to(device)
text_ids = torch.randint(0, 51289, (batch_size, seq_length)).to(device)
action_logits = torch.randn(batch_size, num_actions, 256).to(device)
完整输出
[设备] npu:0
NPU设备数量: 1
设备 0: Ascend910B2
[模型] X-VLA-WidowX (Vision-Language-Action)
[任务] 视觉-语言-动作 (Vision-Language-Action)
[机器人平台] WidowX
[动作模式] ee6d
[动作数量] 30
[模型配置]
Hidden Size: 1024
Depth: 24
Num Heads: 16
Max Seq Length: 512
Vocab Size: 51289
Num Domains: 30
Vision Encoder: davit
模型文件: /workspace/agent/X-VLA-WidowX/model.safetensors
文件大小: 3.28 GB
参数量: 0.88B
[加载模型权重]
权重数量: 903
[构建测试输入]
图像 tokens: 196 (14x14 spatial pool)
文本序列长度: 32
动作数量: 30
示例任务: 'move to the left and pick up the object'
运行X-VLA-WidowX推理演示...
[NPU显存] 已分配=0.0MB | 缓存=0.0GB | 峰值=0.0MB
======================================================================
输出摘要
======================================================================
模型: X-VLA-WidowX (Vision-Language-Action)
任务: 视觉-语言-动作推理
机器人平台: WidowX
动作数量: 30
图像特征形状: torch.Size([1, 196, 1024])
文本ID形状: torch.Size([1, 32])
语言输出形状: torch.Size([1, 32, 1024])
动作logits形状: torch.Size([1, 30, 256])
总耗时: 0.1458s
输出 finite: True
动作概率示例 (前3个动作维度):
动作0: top_tokens=[23, 119, 46], top_probs=[0.0283, 0.0280, 0.0237]
动作1: top_tokens=[81, 44, 137], top_probs=[0.0245, 0.0244, 0.0241]
动作2: top_tokens=[219, 23, 84], top_probs=[0.0464, 0.0374, 0.0245]
完整使用
X-VLA-WidowX 模型需要完整的XVLA框架支持,主要用于WidowX机械臂控制任务:
from transformers import AutoModelForVision2Seq, AutoProcessor
model = AutoModelForVision2Seq.from_pretrained("/workspace/agent/X-VLA-WidowX")
processor = AutoProcessor.from_pretrained("/workspace/agent/X-VLA-WidowX")
inputs = processor(
images=image,
text="move to the left and pick up the object",
return_tensors="pt"
)
outputs = model.generate(
inputs["pixel_values"],
max_length=512
)
WidowX 机械臂控制
动作空间
关节 范围 描述 Joint 0-5 连续 6轴机械臂关节角度 Gripper 0-1 夹爪开合
任务示例
任务 描述 pick 抓取物体 place 放置物体 move 移动机械臂 push 推动物体
输入输出格式
输入
输入 描述 形状 图像 RGB图像 (B, 3, 224, 224) 文本 自然语言指令 (B, seq_length) 本体感受 WidowX状态 (可选) (B, 7)
输出
输出 描述 形状 动作序列 连续动作值 (B, num_actions, action_dim) 动作概率 动作分类概率 (B, num_actions, action_dim)
应用场景
WidowX机械臂抓取与放置
物体操作与导航
视觉引导的机器人任务执行
多模态人机交互
注意事项
当前演示使用随机张量展示NPU推理流程
模型权重约 3.28GB
支持30个动作维度的WidowX连续控制
Vision Encoder采用DaViT架构
Text Decoder基于Florence2架构