TF-TRT 与 UFF-TensorRT
Posted
技术标签:
【中文标题】TF-TRT 与 UFF-TensorRT【英文标题】:TF-TRT vs UFF-TensorRT 【发布时间】:2020-05-04 05:57:10 【问题描述】:我发现我们可以通过多种方式优化 Tensorflow 模型。如果我记错了,请告诉我。
1- 使用TF-TRT,此 API 由 tensorflow 开发,并将 TensoRT 集成到 Tensorflow,此 API 称为:
从 tensorflow.python.compiler.tensorrt 导入 trt_convert as trt
此 API 可以应用于任何 tensorflow 模型(新旧版本模型)而不会出现任何转换错误,因为如果此 API 不支持任何新层,请不要考虑将这些层用于 TensorRT 引擎,这些层将保留用于TensorFlow 引擎并在 TensorFlow 上运行。对吧?
2- 使用TensorRT,此API由NVIDA开发,独立于Tenorflow库(未集成到Tensorflow),此API称为:
将 tensorrt 导入为 trt
如果我们想使用这个api,首先我们必须使用uff-convertor将tensorflow图转换为UFF,然后将UFF图解析到这个API。 在这种情况下,如果 Tensorflow 图有不受支持的层,我们必须为这些层使用插件或自定义代码,对吧?
3- 我不知道,当我们使用 Tensorflow 模型时,为什么我们使用 UFF 转换器然后使用 TensorRT,我们可以直接使用 TF-TRT API,对吗?如果是这样,您是否从这两种方法测试了 Tensorflow 优化模型以获得相同的性能?这种 UFF 转换器方法有什么好处?
我对以上两种情况有一些疑问:
4- 我使用两种情况转换 ssd_mobilenet_v2,在情况 1 中,我的速度略有提高,但在情况 2 中,我取得了更大的进步,为什么? 我的观点是,在案例 1 中,API 只考虑转换精度(FP32 到 FP16)并将可能的层合并在一起,但在案例 2 中,图形被 UFF 清理,例如删除任何冗余节点,如 Asserts 和Identity 然后转换成 tensorrt 图吧?
5- 当我们将训练好的模型文件(如.ckpt
和.meta
, ... 转换为冻结推理图(.pb file
)时,这些层不会从图中删除?只有损失状态和优化器状态,...被删除?
【问题讨论】:
【参考方案1】:在此处复制带有答案的帖子:https://github.com/NVIDIA/TensorRT/issues/341
【讨论】:
以上是关于TF-TRT 与 UFF-TensorRT的主要内容,如果未能解决你的问题,请参考以下文章
无法在 tensorflow r1.14 中导入“tensorflow.contrib.tensorrt”
极智AI | TensorRT Parser 构建模型推理方法