极智AI | 教你使用深度学习模型调试器polygraphy

简介: 大家好,我是极智视界,本文讲解一下 深度学习模型调试器 polygraphy 的使用方法。

大家好,我是极智视界,本文讲解一下 深度学习模型调试器 polygraphy 的使用方法。

对于深度学习模型的部署,往往涉及多种框架之间的转换,一般是 训练框架 ( PyTorch、TensorFlow ... ) => 推理框架 ( TensorRT、OnnxRuntime ... ),每个框架都有不同的模型表示,所以这个过程中往往最关心的是转换之后不要掉精度。不过往往理想很丰满,现实不丰满,在出现掉精度的时候,总想有一个好用的工具能帮助我们定位是哪里出了问题,这个时候,polygraphy 就呼之欲出了。


1 polygraphy 介绍

polygraphy 是一个深度学习模型调试工具,包含 python API命令行工具 ,关于 polygraphy 的相关介绍其实比较少,它有的一些功能如下:

  • 使用多种后端运行推理计算,包括 TensorRT, onnxruntime, TensorFlow;
  • 比较不同后端的逐层计算结果;
  • 由模型恩建生成 TensorRT 引擎并序列化为.plan;
  • 查看模型网络的逐层信息;
  • 修改 Onnx 模型,如提取子图,计算图化简;
  • 分析 Onnx 转 TensorRT 失败原因,将原计算图中可以 / 不可以转 TensorRT 的子图分割保存;
  • 隔离 TensorRT 终端 错误 tactic;

polygraphy 的安装方式比较简单,直接 pip 安装即可:

pip install polygraphy

2 polygraphy 使用示例

这里介绍一个 polygraphy 使用的示例,对 onnxruntime 和 TensorRT 进行精度对比,流程差不多是这样的:

  • 首先生成一个 .onnx 文件;
  • 其次使用 polygraphy 生成一个 FP16 的 TRT 引擎,并对比使用 onnxruntime 和 TensorRT 的计算结果;
  • 然后使用 polygraphy 生成一个 FP32 的 TRT 引擎,将网络中所有层都标记为输出,并对比使用 onnxruntime 和 TensorRT 的计算结果 (逐层结果对比);

相关代码示意如下:

# 生成一个 .onnx 模型作为 polygraphy 的输入
# export model.onnx from pytorch
# or
# export model.onnx from tensorflow
# 使用上面生成的 model.onnx 构建 TensorRT 引擎,使用 FP16 精度同时在 TensorRT 和 onnxruntime 中运行
polygraphy run model.onnx \
    --onnxrt --trt \
    --workspace 100000000 \
    --save-engine=model_FP16.plan \
    --atol 1e-3 --rtol 1e-3 \
    --fp16 \
    --verbose \
    --trt-min-shapes 'x:0:[1,1,28,28]' \
    --trt-opt-shapes 'x:0:[4,1,28,28]' \
    --trt-max-shapes 'x:0:[16,1,28,28]' \
    --input-shapes 'x:0:[4,1,28,28]' \
    > result-run-FP16.txt
# 使用上面生成的 model.onnx 构建 TensorRT 引擎,使用 FP32 精度同时在 TensorRT 和 onnxruntime 中运行
# 输出所有层的计算结果作对比
polygraphy run model.onnx \
    --onnxrt --trt \
    --workspace 100000000 \
    --save-engine=model_FP32_MarkAll.plan \
    --atol 1e-3 --rtol 1e-3 \
    --verbose \
    --onnx-outputs mark all \
    --trt-outputs mark all \
    --trt-min-shapes 'x:0:[1,1,28,28]' \
    --trt-opt-shapes 'x:0:[4,1,28,28]' \
    --trt-max-shapes 'x:0:[16,1,28,28]' \
    --input-shapes 'x:0:[4,1,28,28]' \
    > result-run-FP32-MarkAll.txt

选取 FP16 推理对比结果进行展示,如下:


好了,以上分享了 教你使用深度学习模型调试器 polygraphy。希望我的分享能对你的学习有一点帮助。


logo_show.gif

相关文章
|
4月前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
2131 120
|
5月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
1060 109
|
4月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
601 120
|
5月前
|
人工智能 监控 Kubernetes
稳定支撑大规模模型调用,携程旅游的 AI 网关实践
为了进一步提升服务水平和服务质量,携程很早就开始在人工智能大模型领域进行探索。而随着工作的深入,大模型服务的应用领域不断扩大,公司内部需要访问大模型服务的应用也越来越多,不可避免的就遇到了几个问题,我们自然就会想到使用网关来对这些服务接入进行统一管理,并增加各种切面上的流量治理功能。
527 64
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
887 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
5月前
|
人工智能 负载均衡 API
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
大家好,我是Immerse,独立开发者、AGI实践者。分享编程、AI干货、开源项目与个人思考。关注公众号“沉浸式趣谈”,获取独家内容。Vercel新推出的AI Gateway,统一多模型API,支持自动切换、负载均衡与零加价调用,让AI开发更高效稳定。一行代码切换模型,告别接口烦恼!
682 1
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
|
5月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
450 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
4月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。

热门文章

最新文章