一起养成写作习气!这是我参与「日新计划 6 月更文应战」的第20天,点击检查活动详情。
欢迎重视我的大众号 [极智视界],获取我的更多笔记共享
大家好,我是极智视界,本文解说一下 深度学习模型调试器 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 -i https://pypi.douban.com/simple nvidia-pyindex
pip install -i https://pypi.douban.com/simple 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。希望我的共享能对你的学习有一点协助。
【大众号传送】
《极智AI | 教你运用深度学习模型调试器 polygraphy》