TensorRT 推理可解释性实战:从精度诊断到计算图可视化
发布时间:2026/9/12 4:36:09 锦皓数字建站

TensorRT 推理可解释性实战从精度诊断到计算图可视化【免费下载链接】TensorRTNVIDIA® TensorRT™ is an SDK for high-performance deep learning inference on NVIDIA GPUs. This repository contains the open source components of TensorRT.项目地址: https://gitcode.com/GitHub_Trending/tens/TensorRT模型部署上线后结果偏了 0.3 个点比跑不起来更让人头疼。日志里只有一串张量名说不清精度丢在哪一层。TensorRT 推理可解释性工具链把模型内部变成可检查的对象Polygraphy 用一条命令定位问题层TRT Engine ExplorerTREX一种引擎分析工具画出优化后的计算图ONNX GraphSurgeon 负责插调试节点。下面从 30 分钟跑通一次精度对比开始。快还不够三个必须看见模型内部的场景精度损失是最常见的一种。开 FP16 或 INT8 之后吞吐上去了但分类分数、检测框 IoU 悄悄下滑。传统排查只能人肉猜层而模型部署精度损失排查真正需要的证据藏在层与层之间。性能波动是第二种。同一个引擎昨天 2 毫秒、今天 5 毫秒却拿不出逐层耗时数据只能对着 GPU 利用率图打转。第三种更隐蔽TensorRT 会把多个原始层融合成一个 kernel 执行日志里原来的层名消失了。结果异常时你连该怀疑谁都对不上号。30 分钟上手跑一次精度对比环境准备只要一句话安装 TensorRT Python 包及调试工具依赖后polygraphy --help能看到命令即就绪。真正干活的是下面这条 TensorRT 精度诊断命令polygraphy debug precision \ --model /path/to/model.onnx \ --fp16 \ --check python compare_outputs.py \ --artifacts-dir precision_debug_artifacts关键参数说明--model输入模型用 ONNX 格式已编译的引擎文件不可修改不能用它--fp16开启低精度模式也可用--int8、--tf32工具会逐批把部分层强制拉回高精度再试找出哪些层必须高精度--check验证脚本每轮构建后跑推理由脚本判断输出是否达标--artifacts-dir存放中间引擎和精度报告的目录--mode默认bisect二分查找层数多时收敛快linear则一次多标一层适合精细排查报告生成后先看两处按精度损失幅度排序的前几层以及 Q/DQ 节点附近的层。Q/DQ 指量化/反量化节点负责把高精度数值压成低精度表示再还原量化模型里它们通常是精度热点。示例和更多命令用法都放在 tools/Polygraphy/ 目录里。计算图可视化从总览到细节的 3 个层级TensorRT 计算图可视化分三级由粗到细推进。第一级总览图。加载引擎画一张简化 plan graph连续的逐元素操作合并成单节点先看清主计算路径from trex import Engine, ReportCard card ReportCard(Engine(sample.engine)) card.draw_plan_graph(simplifiedTrue)图里按精度着色FP32 张量蓝色、FP16 橙色、FP8 紫色。颜色突变的位置往往就是精度转换发生的地方。第二级详细模式。在扩展视图里打开detailedTrue并加show_tensor_shapesTrue融合操作展开为原子操作每个节点标注输入输出形状可以直接回答这个 kernel 到底吞了哪几层。第三级耗时标注。加上show_timingTrue每个节点标出执行时间占比耗时尖峰一眼可见。配合 samples/sampleProgressMonitor/ 的推理进度监控还能在运行中盯住异常的层。问题卡住时逐层隔离与热点定位 整模型级别的手段给不出答案时换思路把可疑区域单独拎出来。做法一插调试节点。用 ONNX GraphSurgeon 在关键层后插一个 Identity 节点把中间输出提升为网络输出编译后直接比对这一层前后的差异import onnx, onnx_graphsurgeon as gs graph gs.import_onnx(onnx.load(model.onnx)) node graph.nodes[conv5].outputs[0] graph.layer(namedebug_conv5, opIdentity, inputs[node], outputs[gs.Variable(debug_out)]) onnx.save(gs.export_onnx(graph), model_debug.onnx)做法二双引擎对比。分别编译带调试节点和不带节点的引擎用polygraphy inspect逐张量比较输出差异首次出现的那一层就是嫌疑对象。相关模型编辑能力都在 tools/onnx-graphsurgeon/ 里。对量化模型优先检查上文提到的 Q/DQ 节点舍入误差在这里最集中。Polygraphy 的surgeon子命令还能把子图直接导出成独立小模型进一步缩小复现用例。老手的 3 个习惯版本一致性Polygraphy、TREX 和 TensorRT 核心库必须同版本混用的典型症状是API 找不到或图解析报错。用官方 Docker 镜像拉起一套环境最省心。调试会话复用debug类命令支持--save-debug-replay保存会话状态再用--load-debug-replay恢复省掉重复构建引擎的耗时。大模型省内存TREX 加载引擎时可以只读计算图结构、跳过权重数据内存占用大幅下降超过 10GB 的模型再按层区间分段分析即可。一句话收尾结构问题看计算图精度问题跑debug precision卡住了就切子图隔离。更多工具细节见 tools/Polygraphy/ 目录内文档想参与工具改进可参考 CONTRIBUTING.md。【免费下载链接】TensorRTNVIDIA® TensorRT™ is an SDK for high-performance deep learning inference on NVIDIA GPUs. This repository contains the open source components of TensorRT.项目地址: https://gitcode.com/GitHub_Trending/tens/TensorRT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。