深度学习最终BOSS——TensorRT

TensorRT深度学习推理优化流程详解
本文详细介绍了使用TensorRT进行深度学习推理的流程,包括创建Runtime、Engine、Context,管理输入输出,创建CUDA流,进行异步推理以及资源释放。重点讲解了关键接口如NetworkDefinition、BuilderConfiguration、ExecutionContext和Logger的作用。此外,还提到了CUDA流的并发执行和日志管理,以及解析ONNX模型的Parser。整个过程强调了性能优化和资源管理的重要性。

API学习

创建Runtime->创建Engine->创建Context->获取输入输出索引->创建buffers->为输入输出开辟GPU显存->创建cuda流->从CPU到GPU(拷贝input数据)->异步推理->从GPU到CPU(拷贝output数据)->同步cuda流->释放资源

使用流程:

Tensor RT C++ 使用流程_我为什么这么菜.的博客-CSDN博客

TensorRT 在所有支持的平台上提供 C++ 实现,在 Linux 上提供 Python 实现。 Windows 或 QNX 目前不支持 Python。

TensorRT的关键接口是:网络定义  Network Definition,为应用程序提供了定义网络的方法,可以指定输入和输出张量,并且可以添加和配置层,例如卷积层和循环层,插件层类型同样允许应用程序实现TensortRT本身不支持的功能(通过Network可以完成神经网络中的操作)。

优化配置文件 Optimization Profile 优化配置文件指定对动态维度的约束

构建器配置 Builder Configuration (Config) 构建器配置接口指定了创建引擎的详细信息。它允许应用程序指定  优化配置文件、最大工作空间大小、最小可接受精度水平、自动调整的时序迭代计数以及用于量化网络以 8 位精度运行的接口。

构建器Builder Builder 接口允许根据网络定义和构建器配置创建优化引擎。

引擎 Engine 允许应用程序执行推理,支持同步和一步执行、分析、枚举和查询引擎输入和输出绑定,单个引擎可以有多个执行上下文,允许使用一组经过训练的参数同时执行多个推理。(构造图纸,一切的思路源泉,其他的都是框架容器)

什么是执行上下文?(execution context) 可以理解为多线程执行?

ExecutionContext(执行上下文)综述 - 大师兄石头 - 博客园

ONNX解析器 parser 用于解析ONNX模型

C++ API 与 Python API  理论上,C++ API 和 Python API 在支持您的需求方面应该接近相同。 C++ API 应该用于任何对性能至关重要的场景,以及安全很重要的情况,例如在汽车中。 Python API 的主要好处是数据预处理和后处理易于使用,因为您可以使用各种库,如 NumPy 和 SciPy。

(实用还是选择C++) 

Developer Guide :: NVIDIA Deep Learning TensorRT Documentation

CUDA Runtime API :: CUDA Toolkit DocumentationCUDAStream: CUDA Runtime API :: CUDA Toolkit Documentation 

 **************************************************************************************************************什么是Logger?

日志组件,用于管理builder,engine和runtime的日志信息。

该类为 TensorRT 工具和示例提供了一个通用接口来将信息记录到控制台,并支持记录两种类型的消息:- 具有相关严重性(信息、警告、错误或内部错误/致命)的调试消息 - 测试通过/失败消息与直接发送到 stdout/stderr 相比,让所有样本都使用此类进行日志记录的优势在于,控制样本输出的详细程度和格式的逻辑集中在一个位置。 将来,可以扩展此类以支持将测试结果转储到某种标准格式(例如,JUnit XML)的文件中,并提供额外的元数据(例如,对测试运行的持续时间进行计时)。

logger会作为一个必须的参数传递给builder runtime parser的实例化接口:

IBuilder* builder = createInferBuilder(gLogger);
IRuntime* runtime = createInferRuntime(gLogger);
auto parser = nvonnxparser::createParser(*network, gLogger);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值