【网络加速】TensorRT 7 开发指南-中文_Plus版
文章目录
前言:
TensorRT 7 开发指南-中文_Plus版,会有一个完整的系列。前面的基础理论以翻译为主,外加实战及理解。
参考:
《NVIDIA TensorRT Developer Guide》
SWE-SWDOCTRT-001-DEVG_v7.2.1 | October 2020
TensorRT交流群
我建立了一个,TensorRT微信交流群,
关注公众号:菜鸡Ai
后台回复:加群
备注:学校|公司+昵称+TensorRT 会有小哥哥拉你进群。
什么是TensorRT?
NVIDIA®TensorRT的核心™ 是一个C++库,它有助于NVIDIA图形处理单元(GPU)的高性能推理,重点关注在GPU上快速高效地运行完成模型推理。
TensorFlow,他是内在集成了TensorRT,可以就在框架内的加速推理。Pytorch等框架,需要通过中间工具转换也能完成,但要注意一些常见坑。
TensorRT通过结合层和优化内核选择来优化网络,以提高延迟、吞吐量、能效和内存消耗。如果应用程序指定,它将额外优化网络,以较低的精度运行,进一步提高性能并减少内存需求。
经过TensorRT量化,优化神经网络计算,生成一个轻量级的运行时引擎(这是您唯一需要部署到生产环境中的东西),然后它将最大限度地提高这些GPU平台上的吞吐量、延迟和性能。
TensorRT的好处
在训练神经网络之后,TensorRT可以将网络压缩、优化和部署,而不需要框架的开销。
TensorRT结合层,优化内核选择,并根据指定的精度(FP32、FP16或INT8)执行标准化和转换到优化的矩阵数学,以提高延迟、吞吐量和效率。
对于深度学习推理,有5个关键因素用于衡量软件:
1.1.1 吞吐量
1.1.2 效率
每单位功率传输的吞吐量,通常用性能/瓦表示,服务器、数据中心等必须在固定的电源预算内运行。
1.1.3 延迟
执行推理的时间,越短越好,FPS>=25 基本可以实现实时推理
1.14 准确度
经过训练的神经网络传递正确答案的能力。对于基于图像分类的用法,关键指标表示为前5个或前1个百分比。
1.1.5 内存使用
训练框架也可以直接用来执行推理,但是性能上往往会比使用TensorRT优化解决方案要低得多。
在设计和实现部署架构时可能需要考虑的10个事情
1、你有一个网络还是多个网络?
例如,您是否正在开发基于单个网络(人脸检测)的功能或系统,您的系统也不会由不同模型的混合或级联组成,或者可能是由最终用户提供的集合模型的更通用的工具组成?
2、您将使用什么设备或计算元素来运行网络?CPU,GPU,其他,还是混合?如果模型要在GPU上运行,它是单一类型的GPU,还是需要设计一个可以在各种GPU上运行的应用程序?
3、数据如何到达模型?什么是数据管道?数据来自摄像机或传感器,来自一系列文件,还是通过网络连接上传?
4、将进行哪些预处理?数据的格式是什么?如果是图像,是否需要裁剪、旋转?如果是文本,它是什么字符集?是否允许所有字符作为模型的输入?有什么特别的代币吗?
5、您对延迟和吞吐量有什么要求?
6、你能批量处理多个请求吗?
7、您是否需要单个网络的多个实例来实现所需的总体系统吞吐量和延迟?
8、你将如何处理网络的输出?
9、需要哪些后处理步骤?
10、部署解决方案