乐趣区

关于腾讯:腾讯联合英伟达开源TensorRT插件自动生成工具TPAT

2022 年 3 月 25 日,腾讯联结英伟达开发的 TensorRT 插件主动生成工具 TPAT 正式发表开源。
TensorRT 是以后利用最广的 GPU 推理框架,但因为反对的算子数量无限,用户面临手写插件以反对算子的痛点。TPAT 可能反对凋谢神经网络替换 (ONNX) 格局所有的算子,端到端生成 TensorRT 插件,在解放人力老本的同时,性能比照手写毫不逊色。
Github 地址:https://github.com/Tencent/TPAT

背景

TensorRT 是当今最快的 GPU 推理引擎,能够让深度学习模型在 GPU 上实现低提早、高吞吐量的部署,反对 Caffe,TensorFlow,Mxnet,Pytorch 等支流深度学习框架,由英伟达开发保护。业界简直所有 GPU 推理业务都在应用 TensorRT。

然而 TensorRT 也存在缺点,即它的部署流程比拟繁琐,因而算法工程师提供的模型须要交由零碎工程师来部署上线,十分耗时耗力。在传统的 TensorRT 工作流里,手写插件往往是最耗时的一部分。

TensorRT 手写算子插件难点

    1. TensorRT 官网只反对很无限的罕用算子 (Conv/FC/BN/Relu…),对于不反对的算子,须要用户手写插件来实现;
    1. 插件的编写须要 GPU 和 cuda 常识,英伟达的工程师也通常须要 1~2 周工夫来编写一个算子实现;模型中如果蕴含多个不反对算子,就须要更多工夫来一一编写和调试插件。

TPAT 概览

TPAT 实现了 TensorRT 插件的全自动生成,TensorRT 的部署和上线能根本流程化不再须要人工参加。手写插件的步骤将由 TPAT 代替,TPAT 全自动生成一个算子插件耗时仅须要 30-60 分钟的工夫(该工夫用于搜寻算子的高性能 CUDA Kernel),TensorRT 会因而成为一个真正端到端的推理框架。

TPAT 亮点

  • 覆盖度:反对 onnx/tensorflow/pyTorch 所有的算子
  • 全自动:端到端全自动生成用户指定的 TensorRT Plugin
  • 高性能:大部分算子上性能超过手写 Plugin

架构设计

TPAT 局部算子性能数据

咱们应用 TPAT 主动生成 TensorRT-7.2 不反对的算子,并且用 TPAT 优化 TensorRT-7.2 原生实现性能较差的算子;

比照手写 Plugin

优化 TensorRT 原生算子

咱们对外部业务模型里的局部算子进行了测试,TPAT 的性能简直全面超过 CUDA 工程师手写,并且端到端的设计可能大幅缩小人力投入;对于 TensorRT 原生的算子实现,TPAT 的体现也并不逊色,AutoTune 的特点可能优化 TensorRT 里体现不那么好的原生算子实现。

TPAT 开源

后续 TPAT 的开源打算:

  • 对于算子的多精度进行反对,包含 Float16,Int8.
  • 利用 TPAT 进行子图的优化
  • 对于动静形态的反对

附录:TPAT 应用案例

应用 TPAT 反对 Onehot 算子(TensorRT-7.2.2.3)

输出包含了 onehot 算子的 ONNX_Model、Onehot 算子的名字、batch_size
TPAT 借助 TVM 的 Relay 和 AutoScheduler 组件,生成高性能的 CUDA Kernel;
通过模板填充后间接生成可用的 onehot 算子 Plugin 的动态链接库。

退出移动版