TensorRT是Nvidia为了加速基于自家GPU训练模型的推理而设计的,当我们将模型训练好后,TensorRT可以直接对模型进行网络层的一一对应,从而加速比较大模型的推理部署。最近使用TensorRT加速了一些模型,我将用两篇文章对使用过程和其中遇到的坑进行记录说明。本篇文章将对通用模型的TensorRT转换进行一个记录,对transformer类模型的转换我们将在下一篇文章进行记录。本文记录的安装基于TensorRT6.0。

1、 TensorRT的安装

1.1 官网下载安装包

首先,我们可以到nvidia官网的tensorrt专区进行安装包的下载,网址是https://developer.nvidia.com/nvidia-tensorrt-download,因为我使用的ubuntu版本是18.04,python版本是3.6,cuda版本是10.1,我选择了TensorRT 6.0.1.5 GA for Ubuntu 18.04 and CUDA 10.1 tar package这一版。在官网中有对系统版本和python版本的对照关系进行说明,可自行对照。

1.2 安装TensorRT和pycuda

在安装TensorRT之前,我们首先使用pip安装pycuda

pip install pycuda

然后我们进行TensorRT的安装。

## 解压安装包
tar zxvf TensorRT-6.0.1.5.Ubuntu-18.04.x86_64-gnu.cuda-10.1.cudnn7.6.tar## 将TensorRT的库安装到系统库中
sudo cp -r ~/TensorRT-6.0.1.5/lib/* /usr/lib
sudo cp -r ~/TensorRT-6.0.1.5/include/* /usr/include# 安装TensorRT
pip install ~/TensorRT-6.0.1.5/python/tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl# 安装UFF,这是转换模型的工具
pip install ~/TensorRT-6.0.1.5/uff/uff-0.6.5-py2.py3-none-any.whl# 安装graphsurgeon
pip install  ~/TensorRT-6.0.1.5/graphsurgenon/graphsurgeon-0.4.1-py2.py3-none-any.whl#最后,我们将TensorRT的lib绝对路径添加到环境变量中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/TensorRT-6.0.1.5/lib

到此为止我们就安装好了TensorRT,没有遇到任何坑。使用下述语句可以测试我们是否安装成功。

import tensorrt
import uff

2、 TensorRT的使用

我们使用TensorRT给的例子end_to_end_tensorflow_mnist进行简单的使用说明。

## 首先,我们进入例子代码
cd ~/TensorRT-6.0.1.5/samples/python/end_to_end_tensorflow_mnist## 然后,我们建一个models的文件夹
mkdir models## 运行model.py文件,我们可以在models文件夹中获得lenet5.pb
python models.py## 进行模型转换
convert-to-uff ./models/lenet5.pb

此时我们会得到模型生成的pb文件,然后我们使用convert-to-uff进行模型转换,但会遇到下面的错误

bash: convert-to-uff: command not found

我们使用https://forums.developer.nvidia.com/t/convert-to-uff-command-not-found/116782中给出的解决方法进行处理。

UFF_PATH="$(python -c 'import uff; print(uff.__path__[0])')"
chmod +x ${UFF_PATH}/bin/convert_to_uff.py
ln -sf ${UFF_PATH}/bin/convert_to_uff.py /usr/local/bin/convert-to-uff

此时重新运行转换语句便可以对模型进行转化,我们会在models文件夹下得到lenet5.uff文件。

## 测试转化的模型
python sample.py

遇到问题Could not find 8.pgm. Searched in data paths: ['~/Tensorrt-6.0.1.5/data/mnist'],参照https://github.com/NVIDIA/TensorRT/issues/256#issuecomment-568382745进行问题解答。

python /opt/tensorrt/data/mnist/generate_pgms.py -d /opt/tensorrt/data/mnist/train-images-idx3-ubyte -l /opt/tensorrt/data/mnist/train-labels-idx1-ubyte -o /opt/tensorrt/data/mnist

但我们会发现train-images-idx1-ubyte和train-labels-idx1-ubyte这两个文件夹是不存在的,我们可以去https://github.com/Manuel4131/GoMNIST/tree/master/data这个网址进行下载,然后使用gzip -d命令解压在对应的文件夹中。

当我们上述步骤都运行完后,我们就可以重新运行python sample.py。此时我们便可以得到运行结果了。

3、 总结

在本篇文章中,我们对tensorrt的安装和简单使用进行了说明。但笔者主要是从事NLP方向,希望加速的模型是bert类模型。直接使用convert-to-uff只能对简单的网络层进行转换,并不能对transformer进行转换。因此在下一篇文章中,笔者将记录使用TensorRT转换bert类模型的步骤和在其中遇到的坑。

TensorRT安装及使用--通用模型相关推荐

  1. tensorrt安装_基于TensorRT的BERT推断加速与服务部署

    BERT的出现真是广大NLPer的福音,在很多任务上能取得显著提升.不例外,作者在工作过程中也使用了BERT进行下游任务训练,但在感叹BERT真香的时候,它及其漫长的推断时间让人感到很为难.本文就记录 ...

  2. tensorrt安装_利用TensorRT对深度学习进行加速

    前言 TensorRT是什么,TensorRT是英伟达公司出品的高性能的推断C++库,专门应用于边缘设备的推断,TensorRT可以将我们训练好的模型分解再进行融合,融合后的模型具有高度的集合度.例如 ...

  3. tensorrt安装_[深度学习] TensorRT安装

    TensorRT的安装并不难,最好的办法就是看官方文档. Deep Learning SDK Documentation 过去的一周,我在几个平台上装了三次TensorRT,踩的坑不少,所以将这个过程 ...

  4. 加速深度学习在线部署,TensorRT安装及使用教程

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 1 什么是TensorRT 一般的深度学习项目,训练时为了加快速度,会使用多GPU分布式训练. ...

  5. 如何从零开始设计与开发一款通用模型预测调度系统 | 干货分享

    机器学习模型从训练导出到生成环境部署,这个过程中涉及大量工作,会面临着各种问题与挑战,比如不断丰富的业务场景,系统需要负载种类繁多的神经网络,预测任务不均匀等,然而企业拥有的计算资源(如GPU个数)是 ...

  6. NLP通用模型诞生?一个模型搞定十大自然语言常见任务

    翻译 | 于之涵 编辑 | Leo 出品 | AI科技大本营 (公众号ID:rgznai100) AI科技大本营按:目前的NLP领域有一个问题:即使是再厉害的算法也只能针对特定的任务,比如适用于机器翻 ...

  7. 强化学习教父Richard Sutton新论文探索决策智能体的通用模型:寻找跨学科共性...

    来源:机器之心 本文约5200字,建议阅读10+分钟 论文虽然有些难懂,但或许是一个新的研究方向. 强化学习和决策多学科会议(Multi-Disciplinary Conference on Rein ...

  8. win10 tensorrt安装 踩坑记录

    常见网络tensorrt c++版实现: https://github.com/wang-xinyu/tensorrtx win10 tensorrt安装 下载地址: https://develope ...

  9. TensorRT安装及使用教程

    常见网络tensorrt c++版实现: https://github.com/wang-xinyu/tensorrtx 参考:TensorRT安装及使用教程_ZONGXP的博客-CSDN博客_ten ...

  10. NLP通用模型decaNLP诞生,一个模型搞定十大自然语言常见任务

    然而近日,Salesforce发布了一项新的研究成果:decaNLP--一个可以同时处理机器翻译.问答.摘要.文本分类.情感分析等十项自然语言任务的通用模型. Salesforce的首席科学家Rich ...

最新文章

  1. 线性回归和逻辑回归的区别_线性回归
  2. 牛津临床和实验室调查手册 Oxford Handbook of Clinical and Laboratory Investigation
  3. Linux学习之系统编程篇:实现线程分离
  4. 文件系统对性能的影响
  5. QC与IE8 、WINDOWS 7 兼容问题的解决方案
  6. Java-数据类型拓展
  7. 如何用Pygame写游戏(二十二)
  8. 【转载更新】Linux工具之SED 2.应用实例
  9. 卷积神经网络的输出形状
  10. Identityserver4配置证书
  11. 利用iisnode模块,让你的Node.js应用跑在Windows系统IIS中
  12. 故障树分析 - 事件概率模型
  13. OVM-V1.5 发布,新增对 VMware ESXI 节点的支持
  14. h3cmsr830series说明书_H3C MSR830路由器怎么设置?
  15. doctrine2 mysql_php – Doctrine2和MySQL分区
  16. 转-零死角玩转stm32-高级篇之SDIO(4bit + DMA、支持SDHC、带协议分析)
  17. go 怎么等待所有的协程完成_优雅地等待子协程执行完毕
  18. 分支和循环语句---循环语句
  19. 谁是你生命中最重要的人
  20. ==和eques()

热门文章

  1. 用于细粒度图像分类的通道交互网络
  2. scikit-learn:回归分析——多元线性回归LinearRegression
  3. 凑数算法 c语言,算法题解 - 牛客编程巅峰赛S1第4场 - 黄金钻石组
  4. 一台电脑绿色安装多个版本google Chorme方案
  5. 那一年,程维去洗脚城打工,王兴第十次创业失败,张一鸣第五次换工作……...
  6. 《当时只道是寻常》——安意如——品纳兰容若《饮水词》
  7. 神奇的泡泡java游戏,抖音挤泡泡游戏叫什么名字 抖音上很火的减压游戏介绍
  8. 外贸管理软件之出口流程整理丨汇信外贸软件
  9. JavaScript判断鼠标中键滑轮的上下滚动
  10. C#模拟鼠标和键盘操作