本文翻译于博客Speed up TensorFlow Inference on GPUs with TensorRT,这篇博客介绍了如何使用TensorRT加速TensorFlow模型的推理速度,作者为:
- Siddharth Sharma — Technical Product Marketing Manager, NVidia
- Sami Kama — Deep Learning Developer Technologist, NVidia
- Julie Bernauer — Pursuit Engineering Solution Architect, NVidia
- Laurence Moroney — Developer Advocate, Google
概述
NVIDIA®TensorRT™是一个深度学习平台,用于优化神经网络模型,加快数据中心,嵌入式芯片和汽车设备中运行的GPU加速平台的推理速度。NVIDIA提供的平台非常适合用于加速TensorFlow。这使得TensorFlow用户在使用TensorRT时具有极高的推理性能和近乎透明的工作流程。

TensorRT对神经网络图执行几项重要的转换和优化(图2)。首先,消除具有未使用的输出层以避免不必要的计算。接下来,在可能的情况下,对卷积,偏置和ReLU层进行融合以形成单个层。另一种转换是水平层融合或层聚合,以及聚合层到它们各自输出的划分。水平层融合通过对使用相同源tensor的层进行组合,并应用具有相似参数的相同操作来提高性能。请注意,这些图优化操作不会更改计算图中的基础计算:相反,它们会对计算图进行重新构建,使其可以更快,更有效地进行推理。

如果您已经将TensorRT与TensorFlow模型一起使用,那么您应该知道,在过去的版本中,使用TensorRT优化需要导出训练好的TensorFlow计算图。您还需要手动导入某些不受支持的TensorFlow图层,然后在TensorRT中运行完整图形。在大多数情况下,您再也不用这样做了。在新的工作流中,您可以通过使用简单的API在TensorFlow中应用TensorRT强大的FP16和INT8优化。现有的TensorFlow程序只需要几行新代码就可以使用这些优化。
在ResNet-50的基准测试钟,TensorRT将TensorFlow推断速度提高了8倍。这些性能改进仅需几行额外代码,并可与TensorFlow 1.7及更高版本一起使用。在本文中,我们将介绍新的工作流程和API,以帮助您开始使用它。
在TensorFlow graphs中应用tensorRT优化
如图3所示,在TensorFlow推理工作流中加入tensorRT优化需要一个额外操作,在这个额外操作(使用绿色进行高亮)中,TensorRT根据frozen TensorFlow graph构建优化后的推理图。

为了完成优化操作,TensorRT对frozen TensorFlow graph进行解析,选出图中可以进行优化的子图。之后,TensorRT对子图进行优化,并且在原TensorFlow graph中将需要优化的子图替换为TensorRT节点,图中其余部分保持不变。在推理过程中,TensorFlow将调用TensorRT来执行优化后的TensorRT节点。通过这种方法,开发人员可以继续使用灵活的TensorFlow功能集和TensorRT优化。
评论列表(0条)