Polygraphy 介绍
polygraphy 是一个深度学习模型调试工具,蕴含 python API 和 命令行工具,它的性能如下:
应用多种后端运行推理计算,包含 TensorRT, onnxruntime, TensorFlow;
比拟不同后端的逐层计算结果;
由模型生成 TensorRT 引擎并序列化为.plan;
查看模型网络的逐层信息;
批改 Onnx 模型,如提取子图,计算图化简;
剖析 Onnx 转 TensorRT 失败起因,将原计算图中能够 / 不能够转 TensorRT 的子图宰割保留;
隔离 TensorRT 终端 谬误 tactic;
装置
源码装置:
Github 地址:Polygraphy
依据本人的 cuda 以及 cudnn 版本抉择对应的 tensorrt 版本,并将源码 clone 下来
应用 anaconda 创立虚拟环境 (注:polygraphy 不反对 python2.x)
conda create -n polygraphy python=3.7
在 polygraphy 目录进入创立的虚拟环境 执行
python -m pip install colored polygraphy –extra-index-url pypi.ngc.nvidia.com
make install
实现 polygraphy 的装置
简略装置
应用 anaconda 创立虚拟环境 (注:polygraphy 不反对 python2.x)
conda create -n polygraphy python=3.7
进入创立的虚拟环境执行
pip install -i pypi.douban.com/simple nvidia-pyindex
python -m pip install colored polygraphy –extra-index-url pypi.ngc.nvidia.com
装置 colored 是为了让 cli 输入更加清晰显著
实现装置
装置依赖
Polygraphy 对其余 Python 包没有硬依赖。然而,蕴含的大部分性能 的确须要其余 Python 包。就比方对 onnx 和 trt 模型推理比照就须要装置 onnxruntime 和 nvidia-tensorrt 包。
主动装置依赖
当运行的程序须要哪些包时,程序会主动去装置对应的包要启用此性能能够在环境变量中做如下设置:export POLYGRAPHY_AUTOINSTALL_DEPS=1
手动装置
如果你将 tensorrt 源码 clone 到了本地,那么能够在 tools/Polygraphy/polygraphy/backend 目录下的文件夹找到 requirement.txt,依据该文件你能够装置对应的包。
python -m pip install -r polygraphy/backend//requirements.txt
如果须要其余软件包,将记录正告或谬误。您能够应用以下办法手动装置其余软件包:
python -m pip install <package_name>
简略应用
在 polygraphy\example 目录下寄存有多个示例,包含 Python API,CLI,当初来简略介绍一下 Polygraphy/examples/cli/run/01_comparing_frameworks 这个示例:
首先筹备一个 onnx 模型
input name : data
input shape : batchsize x 3 x 224 x 224
应用 polygraphy 生成 trt 引擎,并将 onnxruntime 和 trt 的计算结果进行比照
polygraphy run yawn_224.onnx --onnxrt --trt --workspace 256M --save-engine yawn-test.plan --fp16 --verbose --trt-min-shapes 'data:[1,3,224,224]' --trt-opt-shapes 'data:[3,3,224,224]' --trt-max-shapes 'data:[8,3,224,224]' > test.txt
# 命令解析
polygraphy run yawn_224.onnx # 应用 onnx 模型
--onnxrt --trt # 应用 onnxruntime 和 trt 后端进行推理
--workspace 256M # 应用 256M 空间用于生成.plan 文件
--save-engine yawn-test.plan # 保留文件
--fp16 # 开启 fp16 模式
--verbose # 显示生成细节
--trt-min-shapes 'data:[1,3,224,224]' # 设定 最小输出形态
--trt-opt-shapes 'data:[3,3,224,224]' # 设定 最佳输出形态
--trt-max-shapes 'data:[8,3,224,224]' # 设定 最大输出形态
> test.txt # 将终端显示重定向 test.txt 文件中