CUDA与TensorRT(5)之TensorRT介绍

这篇具有很好参考价值的文章主要介绍了CUDA与TensorRT(5)之TensorRT介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. TensorRT及其工作流程介绍

TensorRT基本介绍

TensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个C++推理框架。我们利用Pytorch、TF或者其他框架训练好的模型,可以转化为TensorRT的格式,然后利用TensorRT推理引擎去运行我们这个模型,从而提升这个模型在英伟达GPU上运行的速度。速度提升的比例是比较可观的。

  1. 高性能深度学习推理 优化器和加速库;
  2. 低延迟和高吞吐量;
  3. 部署到超大规模数据中心、嵌入式或汽车产品。

tensorrt和cuda的区别,深度学习,深度学习,caffe,人工智能
TensorRT是由C++、CUDA、python三种语言编写成的一个库,其中核心代码为C++和CUDA,Python端作为前端与用户交互。当然,TensorRT也是支持C++前端的,如果我们追求高性能,C++前端调用TensorRT是必不可少的。

下面是网上有人总结的具体TensorRT的加速效果

  • SSD检测模型,加速3倍(Caffe)
  • CenterNet检测模型,加速3-5倍(Pytorch)
  • LSTM、Transformer(细op),加速0.5倍-1倍(TensorFlow)
  • resnet系列的分类模型,加速3倍左右(Keras)
  • GAN、分割模型系列比较大的模型,加速7-20倍左右(Pytorch)
TensorRT工作流程

tensorrt和cuda的区别,深度学习,深度学习,caffe,人工智能
训练框架得到的模型通过第二步的一系列转换优化,得到一个序列存下来,然后实际线上运行的时候再通过反序列出TRT的engine模型进行运行。

第二步中TensorRT优化策略介绍
  • 算子融合(层与张量融合):简单来说就是通过融合一些计算op或者去掉一些多余op来减少数据流通次数以及显存的频繁使用来提速
  • 量化:量化即IN8量化或者FP16以及TF32等不同于常规FP32精度的使用,这些精度可以显著提升模型执行速度并且不会保持原先模型的精度
  • 内核自动调整:根据不同的显卡构架、SM数量、内核频率等(例如1080TI和2080TI),选择不同的优化策略以及计算方式,寻找最合适当前构架的计算方式
  • 动态张量显存:我们都知道,显存的开辟和释放是比较耗时的,通过调整一些策略可以减少模型中这些操作的次数,从而可以减少模型运行的时间
  • 多流执行:使用CUDA中的stream技术,最大化实现并行操作
TensorRT基本使用流程
  1. 创建Builder
  2. 创建Network
  3. 使用API or Parser 构建network
  4. 优化网络
  5. 序列化和反序列化模型
  6. 传输计算数据(host->device)
  7. 执行计算
  8. 传输计算结果(device->host)

其中1–4属于上面的第二步,6–8属于第四步,下面是具体的代码过程:
tensorrt和cuda的区别,深度学习,深度学习,caffe,人工智能


然后具体的代码案例可到其开源代码中的sample文件夹中进行查看。

2. 进阶:Dynamic Shape模式介绍

TRT 6.0 版本之前,只支持固定大小输入。

implicit(隐式) batch
Build 阶段设置
IBuilder:: createNetwork();
IBuilder:: setMaxBatchSize(maxBatchSize);
(这里面的maxBatchSize根据显卡显存确定)
Infer阶段
enqueue(batchSize, data, stream, nullptr);
(在infer阶段batchSize不必对应上面的maxBatchSize,可以是具体运行中的batch)

TRT6.0 后,支持动态大小输入。

explicit(显式) batch

Build 阶段设置
  IBuilder::createNetworkV2(1U <<
  static_cast(NetworkDefinitionCreationFlag::kEXPLICIT_BATCH))
  builder->setMaxBatchSize(maxBatchSize);
(以上几步没有变化)

IOptimizationProfile* profile = builder.createOptimizationProfile();
profile->setDimensions(“foo”, OptProfileSelector::kMIN, Dims3(3,100,200); // 运行中使用到的最小batch
profile->setDimensions(“foo”, OptProfileSelector::kOPT, Dims3(3,150,250); // 运行中最多使用的batch
profile->setDimensions(“foo”, OptProfileSelector::kMAX, Dims3(3,200,300); // 运行中使用到的最大batch
config.addOptimizationProfile(profile)
context.setOptimizationProfile(0)

Infer阶段

context->setBindingDimensions(i, input_dim);
context->allInputDimensionsSpecified();
context->enqueueV2(data, stream, nullptr);


3. TensorRT模型转换

ONNX :https://github.com/NVIDIA/TensorRT/tree/main/parsers

Pytorch:https://github.com/NVIDIA-AI-IOT/torch2trt
  对于pytorch还可以通过pytorch->onnx->TRT

TensorFlow
https://github.com/tensorflow/tensorflow/tree/1cca70b80504474402215d2a4e55bc44621
b691d/tensorflow/compiler/tf2tensorrt

Tencent Forward:https://github.com/Tencent/Forward文章来源地址https://www.toymoban.com/news/detail-562567.html

到了这里,关于CUDA与TensorRT(5)之TensorRT介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pytorch搭建squeezenet网络的整套工程,及其转tensorrt进行cuda加速

    本来,前辈们用caffe搭建了一个squeezenet的工程,用起来也还行,但考虑到caffe的停更后续转trt应用在工程上时可能会有版本的问题所以搭建了一个pytorch版本的。 以下的环境搭建不再细说,主要就是pyorch,其余的需要什么pip install什么。 squeezenet的网络结构及其具体的参数如下

    2024年02月09日
    浏览(41)
  • Orin 安装CUDA CUDNN TensorRT Opencv和输入法的环境配置

    有两种方法可以安装CUDA环境 在刷机完成的Orin,执行如下命令: 注释–如果在执行第三行命令,报错的话,先查看nvidia-l4t-apt-source.list 将其修改为 修改完后,重新执行上面那三行命令 CUDA 检查是否安装成功 运行命令 输出结果 如果报错,需要把nvcc添加到环境变量,方法如下

    2024年02月10日
    浏览(42)
  • yolov7的 TensorRT c++推理,win10, cuda11.4.3 ,cudnn8.2.4.15,tensorrt8.2.1.8。

    yolov7的 tensorrt8 推理, c++ 版本 环境 win10 vs2019 opencv4.5.5 cuda_11.4.3_472.50_win10.exe cudnn-11.4-windows-x64-v8.2.4.15 TensorRT-8.2.1.8.Windows10.x86_64.cuda-11.4.cudnn8.2.zip RTX2060推理yolov7, FP32 耗时 28ms  ,FP16 耗时 8ms,单帧对应总耗时30ms 和 10ms。 推理yolov7-tiny,FP32 耗时 8ms  ,FP16 耗时 2ms。 tensorr

    2024年02月15日
    浏览(46)
  • Win11基于WSL2安装CUDA、cuDNN和TensorRT(2023-03-01)

    如果有小伙伴看了2023-03-05更新,发现设置环境变量后运行cuda代码在链接过程中仍然会有报错问题啥的,那我这里建议,先别管2023-03-05更新的内容了,还是按照我博客里的安装步骤一步一步往下安装,用 sudo apt install nvidia-cuda-toolkit 命令去安装nvcc,也不需要配置环境变量了。

    2024年02月02日
    浏览(54)
  • ubuntu20.04显卡驱动cuda cudnn conda TensorRT安装及配置

    如果要使用 TensorRT ,请注意CUDA 支持的最高算力要大于等于GPU本身的算力, 可以先看3小节 conda和pip换源直接看2.3小节 本人已在ubuntu20.04下安装成功。其他版本步骤应该差不多 如果帖子有帮助,感谢一键三连, ^_^ 部署有问题的小伙伴欢迎留言和加 Q 裙- 472648720 BEV各算法环境部

    2024年01月22日
    浏览(57)
  • Jetson Xavier NX 上查看CUDA、Cudnn、Tensorrt、Opencv的版本及配置信息

    以上功能都可以通过jtop实现,下面是如何安装jtop: 启动后界面如下,可以查看到开发板资源使用情况,接着 点击info 如果安装成功,可以查看到 CUDA、cuDNN、opencv和TensorRT等版本信息 注意!如果是Jetpack5.0.0以上版本可能会看不到很多信息,因为稳定版本不支持,需要安装最新

    2024年02月15日
    浏览(118)
  • CUDA11.1、cuDNN8.6.0、Tensorrt8.5.3,ubuntu20.04安装过程记录

    CUD11.1 下载地址:CUDA Toolkit Archive | NVIDIA Developer  安装: 对于不是sudo用户,可以不执行sudo,不过没办法装到/usr/local/,可以装到你有权限的文件夹目录。 装完后,需要增加环境路径到~/.bashrc并source  记得source ~/.bashrc使得环境生效 cuDNN8.6.0,这个版本我是根据我需要安装的T

    2024年02月15日
    浏览(48)
  • win下pytorch安装—cuda11.6 + cudnn8.4 + pytorch1.12 + tensorRT(pycuda)

    写在前面 博主这里装的是cuda11.7,最后一步tensorRT运行的时候有个pycuda的安装,它的最新版本只支持到cuda11.6,所以博主最后是又把cuda11.7卸载后重新安装了11.6,安装过程和11.7一样。pytorch对应的版本也应该修改,但过程都一样。 下载地址:cuda下载官网链接 这里有个前置工作

    2024年02月11日
    浏览(50)
  • Ubuntu20.04下CUDA11.8、cuDNN8.6.0、TensorRT8.5.3.1的配置过程

    系统设置-软件和更新-附加驱动-选择NVIDIA驱动-应用更改。 NVIDIA官网CUDA下载页面下载CUDA11.8,按步骤进行安装,注意在安装CUDA的时候取消驱动安装这个选项。 安装完后配置环境变量,sudo gedit ~/.bashrc,添加: export PATH=$PATH:/usr/local/cuda-11.8/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/us

    2024年02月11日
    浏览(59)
  • ubuntu 20.04 环境下安装CUDA 11.8, cuDNN v8.6.0和TensorRT 8.6.0(deb方式)

    ubuntu 20.04 环境下安装CUDA 11.8, cuDNN v8.6.0和TensorRT 8.6.0(deb方式) 取消勾选驱动, 下一步 添加环境变量 最后一行添加: 保存关闭后,应用一下更改 下载 cuDNN v8.6.0 for CUDA 11.x 导入CUDA GPG key 刷新存储库元数据 进入 cudnn-local 目录 安装 参考文档: 1 NVIDIA CUDA Installation Guide for Linu

    2024年02月09日
    浏览(101)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包