1.4。TensorRT提供什么功能?
TensorRT允许开发人员导入、校准、生成和部署优化的网络。网络可以直接从Caffe导入,也可以通过UFF或ONNX格式从其他框架导入。还可以通过编程方式创建它们,方法是实例化各个层并直接设置参数和权重。
用户还可以使用插件接口通过TensorRT运行定制层。GraphSurgeon实用程序提供了将TensorFlow节点映射到TensorRT中的自定义层的能力,从而支持使用TensorRT对许多TensorFlow网络进行推理。
TensorRT在所有支持的平台上提供c++实现,在x86、aarch64和ppc64le上提供Python实现。
TensorRT核心库的关键接口为:
网络定义
网络定义接口为应用程序提供了指定网络定义的方法。可以指定输入和输出张量,可以添加层,并且有一个接口用于配置每个受支持的层类型。以及层类型,如卷积层和递归层,以及插件层类型允许应用程序实现TensorRT不支持的功能。有关网络定义的更多信息,请参见网络定义API。
构建器
Builder接口允许从网络定义创建优化的引擎。它允许应用程序指定最大批处理和工作区大小、最小可接受的精度级别、用于自动调优的定时迭代计数,以及一个用于以8位精度运行网络的量化接口。有关构建器的更多信息,请参见构建器API。
引擎
引擎接口允许应用程序执行推理。它支持对引擎输入和输出的绑定进行同步和异步执行、分析、枚举和查询。一个引擎可以有多个执行上下文,允许使用一组经过训练的参数来同时执行多个批。有关该引擎的更多信息,请参见执行API。
TensorRT提供了用于导入经过训练的网络的解析器,以创建网络定义:
Caffe解析器
该解析器可用于解析在BVLC Caffe或NVCaffe 0.16中创建的Caffe网络。它还提供了为定制层注册插件工厂的功能。有关c++ Caffe解析器的详细信息,请参阅nv咖啡因解析器或Python Caffe解析器。
UFF的解析器
此解析器可用于解析UFF格式的网络。它还提供了注册插件工厂和为定制层传递字段属性的功能。有关c++ UFF解析器的详细信息,请参阅NvUffParser或Python UFF解析器。
ONNX解析器
这个解析器可用于解析ONNX模型。有关c++ ONNX解析器的详细信息,请参阅NvONNXParser或Python ONNX解析器。
限制:由于ONNX格式正在快速发展,您可能会遇到模型版本和解析器版本之间的版本不匹配。随TensorRT 5.1一起提供的ONNX解析器。x支持ONNX IR(中间表示)版本0.0.3,opset版本9。
注意:另外,一些TensorRT Caffe和ONNX解析器和插件可以在GitHub上找到。