TF-TRT 与 UFF-TensorRT

TF-TRT vs UFF-TensorRT

我发现我们可以通过多种方式优化 Tensorflow 模型。如果我说错了,请告诉我。

1- 使用 TF-TRT,此 API 开发人员由 tensorflow 开发,并将 TensoRT 集成到 Tensorflow 中,此 API 称为:

from tensorflow.python.compiler.tensorrt import trt_convert as trt

这个API可以应用于任何tensorflow模型(新旧版本模型),没有任何转换错误,因为如果这个API不支持任何新层,不考虑这些层用于 TensorRT 引擎,这些层保留用于 Tensorflow 引擎和 Tensorflow 上的 运行。对吧?

2- 使用 TensorRT,此 API 由 NVIDA 开发,独立于 Tenorflow 库(未集成到 Tensorflow),此 API 称为:

import tensorrt as 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 graph,对吧?

5- 当我们将 .ckpt.meta 等训练模型文件转换为冻结推理图 (.pb file) 时,这些层不会从图中移除?只有损失状态和优化器状态,​​...被删除?

重复 post 并在此处提供答案:https://github.com/NVIDIA/TensorRT/issues/341