
本教程旨在提供 VLA(Vision-Language-Action)模型的优化量化和推理方法,以及针对新机器人、任务和环境的参考微调流程。我们构建了一个自包含的仿真环境,结合场景生成和领域随机化(MimicGen)对性能和准确性进行严格验证。
主要涵盖以下技术点:
- VLA 模型的量化和推理优化
- 原始 OpenVLA-7B 权重的准确性验证
- 基于合成数据生成的参考微调工作流程
- 在 Jetson AGX Orin 上使用 LoRA 进行设备端训练,以及在 A100/H100 实例上进行完全微调
- 在示例积木堆叠任务中通过领域随机化达到 85% 的准确率

1. 量化测试
已在 NanoLLM 的流式 VLM 管道中添加对 OpenVLA 的支持,使用 MLC 在 INT4/FP8 量化下运行,并利用 TensorRT 以 FP16 精度执行视觉编码器。
首先,我们在 BridgeData V2 数据集上测试模型。该数据集也是模型的训练集之一,用于在部署时验证量化和推理是否正确。以下命令会启动容器、下载数据集和模型(如有必要),并在首次运行时进行量化。我们使用归一化均方误差(NRMSE)来衡量模型预测动作值与数据集真实值之间的准确度,以消除动作空间各个维度范围不一致带来的偏差。
我们在 HuggingFace Hub 上抽取了原始 Bridge 数据集的 100 个 episode 子集进行测试,无需下载完整的约 400 GB 数据集。
INT4 量化:
jetson-containers run $(autotag nano_llm) \
python3 -m nano_llm.vision.vla --api mlc \
--model openvla/openvla-7b \
--quantization q4f16_ft \
--dataset dusty-nv/bridge_orig_ep100 \
--dataset-type rlds \
--max-episodes 10 \
--save-stats /data/benchmarks/openvla_bridge_int4.json
FP8 量化:
jetson-containers run $(autotag nano_llm) \
python3 -m nano_llm.vision.vla --api mlc \
--model openvla/openvla-7b \
--quantization q8f16_ft \
--dataset dusty-nv/bridge_orig_ep100 \
--dataset-type rlds \
--max-episodes 10 \
--save-stats /data/benchmarks/openvla_bridge_fp8.json
FP16 精度:
jetson-containers run $(autotag nano_llm) \
python3 -m nano_llm.vision.vla --api hf \
--model openvla/openvla-7b \
--dataset dusty-nv/bridge_orig_ep100 \
--dataset-type rlds \
--max-episodes 10 \
--save-stats /data/benchmarks/openvla_bridge_fp16.json
- 使用
--save-stats可以将逐帧指标和平均值保存到文件; - 使用
--max-episodes可以限制处理的 episode 数量。









