关键概念:
网络定义:
网络定义由一系列层和一组张量组成;
层:
每一层从一组输入张量计算一组输出张量。 图层具有参数,例如卷积大小,跨度和卷积滤波器权重。
张量:
张量既可以是网络的输入,也可以是图层的输出。 张量具有指定其精度的数据类型,例如16位和32位浮点数以及三个维度,例如通道,宽度和高度。 输入张量的尺寸由应用程序定义,输出张量由构建器推断。 支持的维度是N(P_1 P_2 ...)CHW,其中P_1,P_2等是索引维度。 张量总共可以有最多Dims :: MAX_DIMENSIONS个维度,其中该常量设置为8。
每个图层和张量都有一个名称,在分析或读取TensorRT构建日志时非常有用。
使用NvCaffeParser时,张量和图层名称将从NVCaffe原型文件中获取。
TensorRT API:
TensorRT API允许开发人员导入,校准,生成和部署优化的网络。 网络可以直接从NVCaffe或通过UFF格式从其他框架导入。 它们也可以通过实例化各个图层并直接设置参数和权重来以编程方式创建。
除了C ++中的主要API之外。 TensorRT包含TensorRT python API绑定。 TensorRT python API目前支持除RNN之外的所有功能。 它引入了与NumPy数组对于图层权重的兼容性,并通过使用PyCUDA,输入和输出数据。 还提供了一组实用函数来解决开发人员可能面临的常见任务,包括NVCaffe模型解析,从流中解析UFF模型,以及从UFF文件加载和编写PLAN文件。 这些位于tensorrt.utils
Python例子:
Python接口支持以前仅通过C ++接口才可用的所有功能。 这些包括:
- the NvCaffeParser
- 用于图形定义的nvinfer API
- 建造者创建优化的推理引擎
- 用于执行引擎的推理时界面
- 用于注册自定义层实现的调用
可以在{PYTHON_PACKAGE_DIR} / tensorrt / examples目录中找到Python示例。
TensorRT软件包附带了一些示例应用程序实现。 这些可以根据您是否在系统中安装TensorRT或仅为用户来找到。
Python工作流程:
为以下用例提供了示例应用程序:
1.有一个现有的TensorFlow™(或其他UFF兼容框架)模型,开发人员可以试用TensorRT,将TensorFlow模型转换为TensorRT
2.有一个NVCaffe模型,开发人员想用TensorRT来尝试。将NVCaffe模型转换为TensorRT
3.开发人员希望将TensorRT引擎部署为更大型应用程序的一部分,如Web后端。
4.开发人员希望尝试使用受UFF支持且未受NVCaffe培训的框架来训练TensorRT。
TensorRT感觉好强大,毕竟是对新的PasCal和VoltaGPU才有的功能。