尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Model Optimizer FAR3D ONNX 后训练量化实战:INT8/FP8 编码器 + TensorRT 11.1 部署与 Argoverse 2 精度评估

发布时间:2026/9/26 10:11:34

资讯中心
01
ARTICLE

Model Optimizer FAR3D ONNX 后训练量化实战:INT8/FP8 编码器 + TensorRT 11.1 部署与 Argoverse 2 精度评估

Model Optimizer FAR3D ONNX 后训练量化实战:INT8/FP8 编码器 + TensorRT 11.1 部署与 Argoverse 2 精度评估
【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载本文基于 Model Optimizer 仓库中的 FAR3D 示例examples/onnx_ptq/far3d完整介绍一套面向自动驾驶 3D 目标检测场景的端到端 ONNX 量化工作流将 FAR3D 的 VoVNet 图像编码器后训练量化为 INT8 或 FP8解码器保持导出时的混合 FP16/FP32 精度在 TensorRT 11.1 下构建引擎并在 Argoverse 2 验证集上评估 mAP 与加速比。读完本文你将掌握 FAR3D Argoverse 2 环境搭建、元数据与校准数据准备、AutoCast 与 Model Optimizer PTQ 量化、TensorRT 引擎构建以及精度/性能评估的完整实操方案。一、工作流总览FAR3D 示例属于 Model Optimizer 仓库中 ONNX 后训练量化PTQ工具链的一部分参见 examples/onnx_ptq/README.md与 PETR、BEVFormer 等自动驾驶感知示例并列。其核心思路是只量化编码器FAR3D 中开销最大的 VoVNet 图像编码器被量化为 INT8 或 FP8保留解码器精度解码器沿用 ONNX 导出时的混合 FP16/FP32 精度避免引入额外误差两容器分工evaluator 容器负责数据准备、ONNX 导出、校准数据生成与精度评估ModelOpt 容器负责 AutoCast、量化与 TensorRT 引擎构建真实数据集评估在 Argoverse 2 传感器验证集上以 mAP 和归一化加速比作为最终指标。该工作流沿用了 NVIDIA DL4AGX 仓库中 FAR3D TensorRT 方案 的既定流程本示例为其补充了 Model Optimizer 的量化与精度评估环节。1.1 双容器分工与构建PETR 与 FAR3D 共享同一个 Dockerfile 的两个构建目标见 examples/onnx_ptq/Dockerfileevaluator 目标基于 digest 固定的nvcr.io/nvidia/pytorch:22.06-py3包含 OpenMMLab 旧版技术栈mmcv-full1.7.0、mmdet2.28.2、torch1.13.1cu117见 requirements-evaluator.txt用于源设置、元数据、导出、校准与精度评估modelopt 目标基于nvcr.io/nvidia/pytorch:26.07-py3安装Model-Optimizer[onnx]与onnxruntime-gpu[cuda,cudnn]~1.24.2并强制固定tensorrt11.1.0.106用于 AutoCast、量化与 TensorRT 引擎构建。从仓库根目录构建docker build --target evaluator -f examples/onnx_ptq/Dockerfile -t modelopt-onnx-evaluator . docker build --target modelopt -f examples/onnx_ptq/Dockerfile -t modelopt-onnx-trt11 .两个容器需挂载同一个工作区以便交接 ONNX 模型、校准 batch 与 TensorRT 引擎。容器内运行前需设置以下环境变量export CUDNN_LIB_DIR/usr/lib/x86_64-linux-gnu/ export LD_LIBRARY_PATH${CUDNN_LIB_DIR}:${LD_LIBRARY_PATH}注意TensorRT 引擎必须在 TensorRT 11.1.0.106 上构建并在同一 GPU 架构上评估序列化引擎不跨 TensorRT 版本或 GPU 架构移植详见下文。二、第 1 步准备 FAR3D 与 Argoverse 22.1 下载数据集并启动 evaluator在宿主机下载 Argoverse 2 传感器验证集然后以只读方式挂载原始数据集、以可写方式挂载工作区启动 evaluator 容器docker run --rm -it --gpusall --ipchost \ --user $(id -u):$(id -g) -e HOME/tmp \ -e USER$(id -un) -e LOGNAME$(id -un) \ -v /path/to/workspace:/workspace \ -v /path/to/av2_sensor:/data/av2:ro \ modelopt-onnx-evaluator这里把原始数据集以:ro只读挂载保证验证过程不会被意外改动。2.2 克隆固定版本 DL4AGX 并打补丁克隆 pinned 的 DL4AGX 树并应用其官方 FAR3D 导出补丁这是整个工作流中唯一一处源码补丁git clone https://github.com/NVIDIA/DL4AGX.git /workspace/DL4AGX git -C /workspace/DL4AGX checkout 9f7b29104c253d5bc68334e7b83b3eecb72d4572 git -C /workspace/DL4AGX submodule update --init \ AV-Solutions/far3d-trt/dependencies/Far3D \ AV-Solutions/far3d-trt/dependencies/mmdetection3d git -C /workspace/DL4AGX/AV-Solutions/far3d-trt/dependencies/Far3D \ apply ../../patch/far3d.patch同时下载 FAR3D 官方 checkpointiter_82548.pth。推荐的目录布局是原始数据集保持只读生成的元数据存到工作区/workspace/DL4AGX/AV-Solutions/far3d-trt/ ├── data/av2/ │ └── val - /data/av2/val └── weights/iter_82548.pthcd /workspace/DL4AGX/AV-Solutions/far3d-trt # 替换 DL4AGX 的数据集根目录符号链接使生成的元数据保留在工作区 unlink data/av2 mkdir -p data/av2 weights ln -s /data/av2/val data/av2/val这样data/av2/val指向只读的原始验证集而prepare_metadata.py生成的元数据文件落在工作区可在容器间共享。三、第 2 步元数据、ONNX 导出与校准数据3.1 生成 Argoverse 2 验证元数据prepare_metadata.pyexamples/onnx_ptq/far3d/prepare_metadata.py接收数据集根目录做两件事调用 DL4AGX 的create_av2_infos生成av2_val_infos.pkl先写入av2_val_infos_mini.pkl再改名避免覆盖冲突遍历val/*/annotations.feather为每帧标注追加log_id后合并输出val_anno.feather。该脚本对已存在的输出文件会主动抛出FileExistsError拒绝覆盖保证结果可复现。运行方式cd /workspace/DL4AGX/AV-Solutions/far3d-trt export PYTHONPATH$PWD/dependencies/Far3D python /opt/Model-Optimizer/examples/onnx_ptq/far3d/prepare_metadata.py data/av23.2 导出 ONNX使用 DL4AGX 自带的导出脚本将 FAR3D 的编码器导出为far3d.encoder.onnx、解码器导出为far3d.decoder.onnxpython tools/export_onnx.py \ dependencies/Far3D/projects/configs/far3d.py \ weights/iter_82548.pth3.3 从数据加载器直接生成校准数据prepare_calibration.pyexamples/onnx_ptq/far3d/prepare_calibration.py直接从验证集数据加载器生成校准 batch无需临时 TensorRT 引擎或解码器校准数据。关键参数参数默认值说明config—必填FAR3D 的 mmcv 配置文件路径encoder_onnx—必填编码器 ONNX 路径用于推导输入规格output_dir—必填校准 batch 输出目录--num-samples512期望生成的校准 batch 数--sample-skip-interval20采样间隔按(interval-1, num*interval, interval)步长取样运行python /opt/Model-Optimizer/examples/onnx_ptq/far3d/prepare_calibration.py \ dependencies/Far3D/projects/configs/far3d.py \ far3d.encoder.onnx calibration/encoder脚本底层用到了 examples/onnx_ptq/quantization_utils.py 中的NpzCalibrationWriter它会先读取 ONNX 图输入dtype 与形状校验每次写入的 batch 与输入规格严格匹配多一维或少一维都会报错再以batch_0000.npz递增编号落盘最终以batch_0000.npz至batch_0511.npz共 512 个文件结束。若最终数量不等于--num-samples脚本会抛出RuntimeError杜绝静默缺数据。四、第 3 步AutoCast 与 PTQ 量化、引擎构建切换到modelopt-onnx-trt11容器并挂载同一工作区后进入工程目录执行量化。4.1 AutoCast生成 FP16 对照基线首先用 Model Optimizer 的 AutoCast 工具把编码器从 FP32 转换到混合 FP16作为精度与性能的对照基线python -m modelopt.onnx.autocast \ --onnx_path far3d.encoder.onnx \ --output_path far3d.encoder.fp16.onnx \ --calibration_data calibration/encoder/batch_0000.npz \ --low_precision_type fp16 --keep_io_types --providers cuda:0 cpuAutoCast 的 CLI 入口见 modelopt/onnx/autocast/main.py--low_precision_type别名-t指定目标精度仅支持fp16/bf16默认fp16--calibration_data别名-d支持单 batch NPZ 文件、多 batch NPZ 目录或 Polygraphy JSON多 batch 会聚合统计量使转换决策更稳健--keep_io_types保留模型输入输出数据类型不变--providers cuda:0 cpu指定参考运行的执行提供者顺序另有--nodes_to_exclude/--op_types_to_exclude/--nodes_to_include/--op_types_to_include等正则匹配选项可精确控制哪些节点/算子留在 FP32 或强制进入低精度见 convert.py 中convert_to_mixed_precision与autocast的实现FP16 需要 opset ≥ 13BF16 需要 opset ≥ 22。4.2 用 Model Optimizer 量化 VoVNet 编码器quantize_vovnet.pyexamples/onnx_ptq/quantize_vovnet.py是 FAR3D/PETR 共用的 VoVNet 编码器量化脚本内部调用modelopt.onnx.quantization.quantizefor precision in int8 fp8; do python /opt/Model-Optimizer/examples/onnx_ptq/quantize_vovnet.py \ far3d.encoder.onnx calibration/encoder \ --precision $precision --output far3d.encoder.${precision}.onnx done该脚本的关键实现点源码可核对 quantize_vovnet.py--precision限定int8或fp8默认int8校准方法固定为max执行提供者为[cuda:0, cpu]通过 quantization_utils.py 中的find_vovnet_nodes_to_exclude自动定位精度敏感节点VoVNet OSA4_5 阶段以及 FPNlateral_convs下游的全部节点将其从量化范围中排除保持 FP16从而保住小目标检测精度使用NpzCalibrationReader流式读取batch_*.npz避免一次性载入全部校准数据量化在 ONNX 的临时副本上进行temporary_onnx_copy保证外部数据相对路径有效且不污染源模型。补充说明本仓库通用的 PTQ 入口是python -m modelopt.onnx.quantization见 examples/onnx_ptq/README.md支持fp8/int8/int4与max/entropy/awq_clip/rtn_dq等校准方法并可用--calibrate_per_node对大模型做逐节点校准以降低显存占用quantize_vovnet.py是针对 VoVNet 编码器做了节点排除与数据流适配的专用封装。4.3 用 trtexec 构建引擎对 FP16/INT8/FP8 三种编码器精度和解码器分别构建引擎for precision in fp16 int8 fp8; do trtexec --onnxfar3d.encoder.${precision}.onnx \ --saveEnginefar3d.encoder.${precision}.engine --skipInference done trtexec --onnxfar3d.decoder.onnx \ --saveEnginefar3d.decoder.mixed.engine --skipInference两个要点TensorRT 11.1 使用 typed ONNX 图因此无需--fp16或--stronglyTyped这类显式标记序列化引擎不可跨 TensorRT 版本或 GPU 架构移植换环境必须重新构建。五、第 4 步在 evaluator 容器中评估用相同挂载重启modelopt-onnx-evaluator对三种精度组合逐一评估cd /workspace/DL4AGX/AV-Solutions/far3d-trt export PYTHONPATH$PWD/dependencies/Far3D for precision in fp16 int8 fp8; do python /opt/Model-Optimizer/examples/onnx_ptq/far3d/evaluate.py \ dependencies/Far3D/projects/configs/far3d.py \ far3d.encoder.${precision}.engine far3d.decoder.mixed.engine doneevaluate.pyexamples/onnx_ptq/far3d/evaluate.py的评估逻辑值得展开编码器与解码器均通过 trt_runner.py 的TensorRTRunner加载反序列化引擎、枚举 IO tensor 并映射到 torch dtype、分配 256 字节对齐的 CUDA 缓冲区通过execute_async_v3在独立 CUDA 流上异步执行解码器由Far3DDecoderRunner驱动它维护memory_embedding、memory_reference_point、memory_egopose、memory_velo、memory_timestamp五组时序状态跨场景切换时自动重置并回读*_out输出更新状态从而正确复现 FAR3D 的递归解码每个 batch 的相机内外参、ego pose、lidar2img 等被搬到 CUDA 后送入 pipeline编码器输出特征直接拼接进解码器输入结果以LiDARInstance3DBoxes组织后交给dataset.evaluate输出 3D 检测 mAP。冒烟测试加上--max-samples 2可只跑 2 个样本同时覆盖递归解码器状态的执行路径。完整验证集包含 23,522 帧如果未跑满整个数据集脚本会打印已处理样本数并跳过数据集级指标。六、参考精度与性能文档给出的参考数据基于TensorRT 11.1.0.106、NVIDIA RTX 6000 Ada Generation GPU、512 个校准 batch测得6.1 精度Argoverse 2 验证集 mAPEncoderDecodermAPFP16Mixed FP16/FP320.241INT8Mixed FP16/FP320.235FP8Mixed FP16/FP320.239可见 INT8 与 FP8 相对 FP16 基线的 mAP 损失都很小约 0.002–0.006其中 FP8 更接近 FP16。6.2 性能归一化到 FP16 管线性能测量仅在引擎层面进行并归一化到 FP16 管线每次比较 一次编码器前向 同一导出解码器前向只改变编码器精度。测量方式为 TensorRT 11.1.0.106 RTX 6000 Ada每个引擎组件交错运行 5 次取trtexec报告的 GPU Compute Time 中位数关闭数据传输、开启 CUDA Graphs各组件时间求和后再归一化只报告加速比PipelineINT8 speedup vs. FP16FP8 speedup vs. FP16FAR3D1.69x1.40x七、仓库中的支撑实现与延伸阅读通用 ONNX PTQ 工具链与高级特性逐节点校准、自定义算子量化、Autotune 等examples/onnx_ptq/README.md共享的校准数据读写与 VoVNet 精度敏感节点识别examples/onnx_ptq/quantization_utils.pyTensorRT 引擎的通用运行时封装含状态张量与对齐缓冲区管理examples/onnx_ptq/trt_runner.py双目标 Dockerfile 与依赖固定examples/onnx_ptq/Dockerfile、requirements-evaluator.txt同类的自动驾驶 3D 检测量化示例PETR、BEVFormerAutoCast 精度转换的实现细节modelopt/onnx/autocast/main.py、convert.py。适用前提与限制本工作流依赖 digest 固定的两个容器镜像、TensorRT 11.1.0.106 与特定 GPU 架构数据准备依赖 DL4AGX 的固定 commit9f7b2910...与官方导出补丁换用其他 TensorRT 版本、GPU 或 FAR3D 版本时需要重新验证量化配置与参考指标。赞分享【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载相关推荐Model-Optimizer ONNX 后训练量化PTQ实战指南从 INT8/FP8/INT4 量化到 TensorRT 部署Model Optimizer ONNX 后训练量化PTQ实战指南从 INT8/FP8/INT4 量化到 TensorRT 部署 导读 本文围绕 exam使用 Model Optimizer 对 Hugging Face 模型进行后训练量化PTQNVFP4/FP8/INT4/INT8 全流程实战指南使用 Model Optimizer 对 Hugging Face 模型进行后训练量化PTQNVFP4/FP8/INT4/INT8 全流程实战指南 本文以Model Optimizer 实战从 NVIDIA Hugging Face Model Hub 一键部署 FP8 量化模型到 TensorRT-LLM、vLLM 与 SGLangModel Optimizer 实战从 NVIDIA Hugging Face Model Hub 一键部署 FP8 量化模型到 TensorRT LLM、v上一篇FoundationDB 4.0 版本发布说明深度解析API 400 新特性、fdbcli 增强与事务子系统优化下一篇BiliTools哔哩哔哩工具箱2026年最强大的跨平台B站资源管理工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。