K-ON111111/SimVLA-LIBERO
模型介绍
文件和版本
Pull Requests
讨论
分析

YuankaiLuo/SimVLA-LIBERO — 昇腾 NPU 适配模型

赛事: 昇腾 Model Agent 模型适配大赛(第二季) 引擎: torch_npu + transformers(SigLIP 视觉塔 + SoftPromptedTransformer 动作头) 硬件: Ascend 310P / 910B 标签: npu ascend pytorch robotics vision-language-action

📖 模型简介

SimVLA 是统一的视觉-语言-动作(VLA)基础模型,LIBERO 版本面向 LIBERO 基准测试。 架构为 SmolVLM 视觉塔(SigLIP 12 层)+ 视觉投影 connector + SoftPromptedTransformer 动作头(24 层,dim_action=7 / dim_propio=8 / dim_time=32,libero_joint 动作模式)。 输入 3 视图观测图像 + 6 维机器人状态,输出 7 维关节动作。

属性值
原始模型https://huggingface.co/YuankaiLuo/SimVLA-LIBERO
视觉塔SigLIP(12 层,768 hidden,patch 16)
动作头SoftPromptedTransformer(24 层,1024 hidden,16 heads)
任务类型机器人视觉-语言-动作(VLA)
输入格式3 视图图像(384x384)+ 6 维状态
输出格式7 维关节动作(libero_joint)

🔧 环境依赖

pip install -r requirements.txt -i https://repo.huaweicloud.com/repository/pypi/simple/

🚀 推理步骤

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

# 1. 下载模型权重(仓库不含权重,必须单独下载)
git clone https://gitcode.com/hf_mirrors/YuankaiLuo/SimVLA-LIBERO.git ./SimVLA-LIBERO

# 2. 运行 NPU 推理
python3 inference.py --model_path ./SimVLA-LIBERO \
  --image obs.png --steps 5 --device npu:0 --output inference_result.json

🧪 测试用例

用例 1: 图像 → 7 维关节动作

python3 inference.py --model_path ./SimVLA-LIBERO \
  --image test_obs.png --steps 5 --device npu:0 --output inference_result.json

预期输出:

[Model Agent] ✅ NPU 设备就绪: Ascend310P3
[Model Agent] ✅ 模型加载完成 → npu:0
[Model Agent] ✅ 动作生成完成: 形状 (1, 1, 7), 推理耗时 0.040s
[Model Agent] ✅ 结果已保存 → inference_result.json

推理结果摘要:

{
  "model": "YuankaiLuo/SimVLA-LIBERO",
  "engine": "torch_npu",
  "device": "npu:0",
  "action_mode": "libero_joint",
  "action_shape": [1, 1, 7],
  "inference_time_s": 0.04
}

📁 目录结构

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

📝 适配说明

本模型由 昇腾 Model Agent 自动完成 NPU 适配:

  • 权重自包含(model.safetensors 含 SigLIP 视觉塔 + connector + 动作头), inference.py 自建模型结构并加载权重(无需外部 modeling 代码)
  • connector 适配:modality_projection.proj 为 12288→960 Linear,视觉特征取 前 16 个 patch token 展平后输入
  • SDPA 兼容补丁:torch_npu 不支持 F.scaled_dot_product_attention, 全局替换为手动 matmul 实现
  • 视觉塔 position_embedding 1024 个位置(512x512 输入无 cls)
  • 已在 Ascend 310P3 上实跑验证通过(图像 → 7 维动作),输出合法