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的主要内容,如果未能解决你的问题,请参考以下文章

如何检查张量流保存模型中的图形定义

极智AI | 初识 TensorRT Plugin

无法在 tensorflow r1.14 中导入“tensorflow.contrib.tensorrt”

极智AI | TensorRT Parser 构建模型推理方法

我的NVIDIA开发者之旅 - 极智AI | TensorRT API 构建模型推理流程

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL