TensorRT 是由 Nvidia 推出的 GPU 推理引擎(GIE: GPU Inference Engine)。和通用的深度学习框架不同,TensorRT 只提供前向传播,即推理的功能,而没有训练的功能。实际上,训练的场景下,资源通常不会特别紧张,因为是离线的操作(不要求实时反馈),即使出现了一时的资源不足也可以通过增加计算时长来弥补,所以训练框架的资源消耗一般不会有很强的优化。而网络的部署通常对资源更加敏感,算力与内存都是需要考虑的因素。TensorRT 是一个旨在极致优化 GPU 资源使用的深度学习推理计算框架。其工作主要分为两个阶段:建造阶段(build phase)和执行阶段(compile phase)。
在建造阶段,TensorRT 接收外部提供的网络定义(也可包含权值 weights)和超参数,根据当前编译的设备进行网络运行的优化(optimization), 并生成推理引擎 inference engine(可以以 PLAN 形式存在在硬盘上);
在执行阶段,通过运行推理引擎调用 GPU 计算资源——整个流程如图 1 所示: