极智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

相关文章
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
当大火的文图生成模型遇见知识图谱,AI画像趋近于真实世界
本文介绍了阿里云机器学习PAI团队开发的名为ARTIST的中文文图生成模型,该模型融合了知识图谱信息,能够生成更加符合常识的图像。ARTIST基于Transformer架构,将文图生成任务分为图像矢量量化和文本引导的图像序列生成两个阶段。在第一阶段,模型使用VQGAN对图像进行矢量量化;在第二阶段,通过GPT模型并结合知识图谱中的实体知识来生成图像序列。在MUGE中文文图生成评测基准上,ARTIST表现出色,其生成效果优于其他模型。此外,EasyNLP框架提供了简单易用的接口,用户可以基于公开的Checkpoint进行少量领域相关的微调,实现各种艺术创作。
|
2天前
|
机器学习/深度学习 人工智能 算法
【AI】从零构建深度学习框架实践
【5月更文挑战第16天】 本文介绍了从零构建一个轻量级的深度学习框架tinynn,旨在帮助读者理解深度学习的基本组件和框架设计。构建过程包括设计框架架构、实现基本功能、模型定义、反向传播算法、训练和推理过程以及性能优化。文章详细阐述了网络层、张量、损失函数、优化器等组件的抽象和实现,并给出了一个基于MNIST数据集的分类示例,与TensorFlow进行了简单对比。tinynn的源代码可在GitHub上找到,目前支持多种层、损失函数和优化器,适用于学习和实验新算法。
42 2
|
3天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:变分自编码器(VAE)
使用Python实现深度学习模型:变分自编码器(VAE)
11 2
|
3天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
18 3
|
4天前
|
机器学习/深度学习 人工智能 算法
AI大咖说-关于深度学习的一点思考
周志华教授探讨深度学习的成效,指出其关键在于大量数据、强大算力和训练技巧。深度学习依赖于函数可导性、梯度下降及反向传播算法,尽管硬件和数据集有显著进步,但核心原理保持不变。深度意味着增加模型复杂度,相较于拓宽,加深网络更能增强泛函表达能力,促进表示学习,通过逐层加工处理和内置特征变换实现抽象语义理解。周志华教授还提到了非神经网络的深度学习方法——深度森林。5月更文挑战第12天
29 5
|
4天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:自动编码器(Autoencoder)
使用Python实现深度学习模型:自动编码器(Autoencoder)
9 0
|
5天前
|
机器学习/深度学习 数据采集 人工智能
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
18 0
|
5天前
|
人工智能 NoSQL atlas
Fireworks AI和MongoDB:依托您的数据,借助优质模型,助力您开发高速AI应用
我们欣然宣布MongoDB与 Fireworks AI 正携手合作让客户能够利用生成式人工智能 (AI)更快速、更高效、更安全地开展创新活动
2537 1
|
5天前
|
机器学习/深度学习 人工智能 算法
构建高效AI系统:深度学习优化技术解析
【5月更文挑战第12天】 随着人工智能技术的飞速发展,深度学习已成为推动创新的核心动力。本文将深入探讨在构建高效AI系统中,如何通过优化算法、调整网络结构及使用新型硬件资源等手段显著提升模型性能。我们将剖析先进的优化策略,如自适应学习率调整、梯度累积技巧以及正则化方法,并讨论其对模型训练稳定性和效率的影响。文中不仅提供理论分析,还结合实例说明如何在实际项目中应用这些优化技术。
|
5天前
|
人工智能 vr&ar
[译][AI Research] AI 模型中的“it”是数据集
模型效果的好坏,最重要的是数据集,而不是架构,超参数,优化器。

热门文章

最新文章

http://www.vxiaotou.com