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

X-VLA-WidowX-ascend

X-VLA-WidowX 视觉-语言-动作模型适配昇腾NPU版本。

模型简介

  • 基础模型: /workspace/agent/X-VLA-WidowX
  • 任务: 视觉-语言-动作 (Vision-Language-Action, VLA)
  • 架构: XVLA (基于Florence2 + DaViT)
  • 机器人平台: WidowX
  • 动作模式: ee6d
  • 动作数量: 30

模型配置

参数值
Hidden Size1024
Depth24
Num Heads16
Max Seq Length512
Vocab Size51289
Num Domains30
Vision EncoderDaViT
参数量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轴机械臂关节角度
Gripper0-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机械臂抓取与放置
  • 物体操作与导航
  • 视觉引导的机器人任务执行
  • 多模态人机交互

注意事项

  1. 当前演示使用随机张量展示NPU推理流程
  2. 模型权重约 3.28GB
  3. 支持30个动作维度的WidowX连续控制
  4. Vision Encoder采用DaViT架构
  5. Text Decoder基于Florence2架构