ONNX 模型库
返回模型

说明文档

MiniVLA

本仓库托管 MiniVLA —— 一个模块化且易于部署的视觉-语言-动作(VLA)模型,专为边缘硬件(如 Jetson Orin Nano)设计。
它包含模型检查点、兼容 Hugging Face 的 Qwen-0.5B 大语言模型,以及用于加速推理的 ONNX/TensorRT 导出文件。


🔎 简介

为了在本地设备上实现低延迟、高安全性的桌面机器人任务,本项目专注于解决轻量级多模态模型在边缘硬件上的部署和性能挑战。以 OpenVLA-Mini 为案例研究,我们提出了一种混合加速流水线,旨在缓解资源受限平台上的部署瓶颈。

我们复现了一个轻量级 VLA 模型,并通过将视觉编码器导出为 ONNX 和 TensorRT 引擎,显著降低了其端到端延迟和 GPU 显存占用。虽然我们观察到任务成功率有适度下降(在 LIBERO 桌面操作任务中约为 5-10%),但我们的结果仍然证明了在边缘端实现高效、实时 VLA 推理的可行性。


🏗️ 系统架构

MiniVLA 部署采用模块化微服务设计:

<p align="center"> <img src="./Results/System_Architecture.svg" width="100%" > </p>

  • 输入:图像 + 语言指令
  • 视觉编码器:DinoV2 / SigLIP → ONNX/TensorRT
  • LLM:Qwen 2.5 0.5B(Hugging Face / TensorRT-LLM)
  • 路由与降级:在本地推理和加速微服务之间进行负载均衡
  • 机器人动作:从预测的动作标记中解码

混合加速

<p align="center"> <img src="./Results/MiniVLA_Architecture.svg" width="100%" > </p>

  • 视觉编码器加速:PyTorch → ONNX → TensorRT,部署为微服务(/vision/encode
  • LLM 加速:Hugging Face → TensorRT-LLM 引擎,部署为微服务(/llm/generate
  • 主进程:编排请求、确保降级机制、输出机器人动作

📦 内容

  • models/ 包含原始 MiniVLA 模型检查点,基于 Stanford-ILIAD/minivla-vq-libero90-prismatic。 特别感谢 Stanford ILIAD 团队的开源贡献。

  • qwen25-0_5b-trtllm/ 转换为 TensorRT-LLM 格式的 Qwen-0.5B 语言模型。

  • qwen25-0_5b-with-extra-tokenizer/ 兼容 Hugging Face 的 Qwen-0.5B 模型,带有扩展的分词器。

  • tensorRT/ 视觉编码器加速文件:

    • vision_encoder_fp16.onnx
    • vision_encoder_fp16.engine

🔗 相关项目

如需完整实现和代码,请访问配套的 GitHub 仓库: 👉 https://github.com/Zhenxintao/MiniVLA

🚀 使用方法

加载 Hugging Face Qwen-0.5B

from transformers import AutoTokenizer, AutoModelForCausalLM

model_name = "xintaozhen/MiniVLA/qwen25-0_5b-with-extra-tokenizer"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)

调用 TensorRT 视觉编码器(HTTP API)

import requests

url = "http://vision.svc:8000/vision/encode"
image_data = {"image": "base64_encoded_image"}
response = requests.post(url, json=image_data)
vision_embedding = response.json()

调用 TensorRT-LLM(HTTP API)

import requests

url = "http://llm.svc:8810/llm/generate"
payload = {"prompt": "Close the top drawer of the cabinet."}
response = requests.post(url, json=payload)
generated_actions = response.json()

🔑 主要贡献

  • 构建了端到端在线推理框架,包含 FastAPI 服务(/act),将离线基准测试代码转化为可实时部署的系统
  • 复现了轻量级 OpenVLA-Mini 并提出了混合加速流水线
  • 视觉编码器导出为 TensorRT,降低了感知延迟和 GPU 显存占用。
  • 提升了GPU 显存效率:将平均利用率从约 67% 降至约 43%,峰值使用从约 85% 降至约 65%,使得在 8 GB 显存限制下(类似于 Jetson 类设备)部署成为可能。
  • 集成了 Qwen 2.5 0.5B 的 Hugging Face 和 TensorRT-LLM 格式。
  • 设计了带有路由和降级机制的模块化系统架构,确保系统鲁棒性。
  • 在 Jetson Orin Nano 上演示了高效的边缘端 VLA 推理,在 LIBERO 任务中仅有适度的性能下降(5-10%)。

🖥️ 设备与性能

目标部署平台:Jetson Orin Nano(16 GB / 8 GB 版本)

为了模拟和可复现性,实验在配备以下配置的本地工作站上进行:

  • GPU:NVIDIA GeForce RTX 4060 Laptop GPU(8 GB 显存)
  • 驱动 / CUDA:驱动 550.144.03,CUDA 12.4
  • 操作系统:Ubuntu 22.04 LTS

⚠️ 注意:虽然实验在 RTX 4060 上运行,但其 GPU 显存(8 GB)与入门级 Jetson 设备相当,是评估边缘部署可行性的合适代理。

GPU 显存利用率(长序列任务)

模型变体 平均 GPU 利用率 峰值 GPU 利用率
原始 MiniVLA(PyTorch,无 TRT) ~67% ~85%
MiniVLA + TensorRT 视觉加速 ~43% ~65%

观察结果:

  • 混合加速流水线(TensorRT 视觉 + VLA 主进程)将平均 GPU 利用率降低了约 24%峰值使用降低了约 20%
  • 这表明更好的GPU 显存效率,允许在资源受限的设备上稳定运行更长序列的任务。

nvidia-smi 输出示例

原始模型:

GPU Memory-Usage: 4115MiB / 8188MiB
GPU-Util: 67% (peak 85%)

使用 TensorRT 视觉加速:

GPU Memory-Usage: 4055MiB / 8188MiB
GPU-Util: 43% (peak 65%)

📑 许可证

在此指定许可证(例如 Apache 2.0、MIT,或与 MiniVLA / Qwen 许可证相同)。


📚 引用

如果您在研究或部署中使用 MiniVLA,请引用:

@misc{MiniVLA2025,
  title   = {MiniVLA: A Modular Vision-Language-Action Model for Edge Deployment},
  author  = {Xintao Zhen},
  year    = {2025},
  url     = {https://huggingface.co/xintaozhen/MiniVLA}
}

我们也感谢并致谢 Stanford-ILIAD/minivla-vq-libero90-prismatic 的作者,该模型是本仓库所含检查点的基础。


xintaozhen/MiniVLA

作者 xintaozhen

image-text-to-text transformers
↓ 0 ♥ 4

创建时间: 2025-09-07 22:10:11+00:00

更新时间: 2025-09-11 19:48:14+00:00

在 Hugging Face 上查看

文件 (32)

.gitattributes
README.md
Results/MiniVLA_Architecture.svg
Results/System_Architecture.svg
models/minivla-vq-libero90-prismatic/.gitattributes
models/minivla-vq-libero90-prismatic/README.md
models/minivla-vq-libero90-prismatic/checkpoints/step-150000-epoch-67-loss=0.0934.pt
models/minivla-vq-libero90-prismatic/config.json
models/minivla-vq-libero90-prismatic/config.yaml
models/minivla-vq-libero90-prismatic/dataset_statistics.json
models/minivla-vq-libero90-prismatic/run-metrics.jsonl
qwen25-0_5b-trtllm/ckpt/config.json
qwen25-0_5b-trtllm/ckpt/rank0.safetensors
qwen25-0_5b-trtllm/engine_v1013_sp256/config.json
qwen25-0_5b-trtllm/engine_v1013_sp256/rank0.engine
qwen25-0_5b-trtllm/tokenizer/added_tokens.json
qwen25-0_5b-trtllm/tokenizer/merges.txt
qwen25-0_5b-trtllm/tokenizer/special_tokens_map.json
qwen25-0_5b-trtllm/tokenizer/tokenizer.json
qwen25-0_5b-trtllm/tokenizer/tokenizer_config.json
qwen25-0_5b-trtllm/tokenizer/vocab.json
qwen25-0_5b-with-extra-tokenizer/added_tokens.json
qwen25-0_5b-with-extra-tokenizer/config.json
qwen25-0_5b-with-extra-tokenizer/generation_config.json
qwen25-0_5b-with-extra-tokenizer/merges.txt
qwen25-0_5b-with-extra-tokenizer/model.safetensors
qwen25-0_5b-with-extra-tokenizer/special_tokens_map.json
qwen25-0_5b-with-extra-tokenizer/tokenizer.json
qwen25-0_5b-with-extra-tokenizer/tokenizer_config.json
qwen25-0_5b-with-extra-tokenizer/vocab.json
tensorRT/vision_encoder_fp16.engine
tensorRT/vision_encoder_fp16.onnx ONNX