TensorRT cheat sheet

本文详细介绍了如何通过TensorRT进行精度检查、性能分析、时间优化、资源管理、算法选择和引擎维护,包括使用polygraphy检查精度、nsightsystems分析耗时、TimingCache节省构建时间、DynamicShape优化、多流并发提高GPU利用、Context复用和CUDA优化技巧。还涵盖了引擎更新、内存控制和库依赖管理的方法。
部署运行你感兴趣的模型镜像

TensorRT 备忘清单

问题方案
如何检验TensorRT上计算结果的精度,找出精度不足的layer, 进行计算图优化使用polygraphy
如何分析不同layer的推理时间, 找出耗时较大的layer通过nsight systems得到运行阶段的timeline,并可视化
engine构建时间太长,怎么节约多次构建时的时间使用Timing Cache
Dynamic Shape模式在min-opt-max跨度较大时性能下降1. 构建期间创建多个OptimizationProfile, 每个profile范围要尽量小,方便TensorRT优化
2. 推理时根据数据形状选择相应的Profile, 缺点是会增加显存占用
怎样重叠计算和数据拷贝时间,增加GPU利用率MultiStream,使用CUDA stream和CUDA event进行异步调用,同时使用Pinned memory
怎样使一个engine供多个线程使用使用多个Context, 多个Context可以基于同一个engine独立的进行推理计算
怎样优化Kernel的调用,减少Launch Bound的发生
也就是CPU发起函数调用,到GPU真正执行所花费的时间过大, 大部分时间浪费在准备工作和数据拷贝等步骤上
1. 使用Cuda Graph
2. 将大部分Launch准备工作提前完成
3. CUDA工作流优化
某些Layer的算法导致较大的误差,如何屏蔽掉该选择通过算法选择器完成
1. 先通过ploygraph等工具发现某些层的Tactic结果不理想
2. 通过算法选择器屏蔽掉这些层
3. 重新构建engine
想更新模型的权重,但又不想重新构建engine使用Refit
构建期/运行期显存占用过大,怎么减少BuilderConfig中,默认开启了cuBLAS、cuBLASLt、cuDNN三个库的算子备选方案。TensorRT优选kernel的时候,会从中选择性能最好的实现来放入engine。
可以人工屏蔽其中一种或多种库,从而禁止从这些库中选择算法来实现,可以节约内存和显存占用,减少engine构建时间
缺点是可能会导致engine性能下降或构建失败。后续版本TensorRT会彻底断开对外部库的依赖

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值