• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

TensorRT 概述、原理、Linux下安装

武飞扬头像
小鹏AI
帮助1

聊聊TensorRT

随着传统的高性能计算和新兴的深度学习在百度、京东等大型的互联网企业的普及发展,作为训练和推理载体的GPU也被越来越多的使用。

NVDIA本着让大家能更好地利用GPU,使其在做深度学习训练的时候达到更好的效果的目标

推出了支持高性能深度学习支持引擎——TensorRT。

TensorRT是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c 库。

它旨在与TesnsorFlow、Caffe、Pytorch以及MXNet等训练框架以互补的方式进行工作,专门致力于在GPU上快速有效地进行网络推理。

如今现有的一些训练框架(例如TensorFlow)已经集成了TensorRT,因此可以将其用于加速框架中的推理。

另外,TensorRT可以作为用户应用程序中的库

它包括用于从Caffe,ONNX或TensorFlow导入现有模型的解析器,以及用于以编程方式(C 或Python API)构建模型。

在训练了神经网络之后,TensorRT可以对网络进行压缩、优化以及运行时部署,并且没有框架的开销。

TensorRT通过combines layers,kernel优化选择,以及根据指定的精度执行归一化和转换成最优的matrix math方法

改善网络的延迟、吞吐量以及效率。

TensorRT通过结合抽象出特定硬件细节的高级API和优化推理的实现来解决这些问题

以实现高吞吐量、低延迟和低设备内存占用。
学新通


TensorRT是如何工作的
学新通

为了优化模型的inference,TensorRT会根据网络的定义执行优化【包括特定平台的优化】并生成inference engine

此过程被称为构建阶段,尤其是在嵌入式平台上会消耗大量的时间

因此,一个典型的应用程序只会被构建一次engine,然后将其序列化为plane file以供后续使用。

注意:生成的plane file 不能跨平台或TensorRT 版本移植。

另外,因为plane file是明确指定GPU 的model,所以我们要想使用不同的GPU来运行plane file必须得重新指定GPU

构建阶段在layer graph上执行以下优化

  1. 消除没有使用的outputs layer
  2. 消除等同于没有操作的operation
  3. convolution,bias and ReLU的融合
  4. 把具有足够相似的parameters和相同的source tensor的operation进行aggregation【例如1x1的convolution】
  5. 通过将输出层定向到正确的最终目的来合并concatenate layer

TensorRT提供了哪些功能

TensorRT使开发人员能够导入、校准、生成以及部署优化的网络

网络可以直接从Caffe导入,也可以通过UFF或ONNX格式从其他框架导入

也可以通过实例化各个图层并直接设置参数和weight以编程的方式创建

用户可以通过TensorRT使用Plugin interface运行自定义图层。

TensorRT中的GraphSurgeon功能提供了Tensorflow中自定义layer的节点映射,因此可以支持许多TensorFlow模型的inference。

TensorRT在所有支持平台上提供了C 实现,并在x86,aarch64和ppc64le上提供Python实现。

TensorRT核心库中的关键接口是:

  • Network Definition:网络定义接口为应用程序提供了指定网络定义方法。
  • Optimization Profile:优化配置文件指定对动态维度的约束。
  • Builder Configuration:构建器配置接口指定用于创建engine的详细信息
  • Builder:构建器接口允许根据网络定义和builder configuration创建一个优化的engine
  • Engine:engine接口允许应用程序执行inference
  • Caffe Parser:该解析器可用于解析在BVLCCaffe或NVCaffe0.16中创建的Caffe网络。
  • UFF Parser:该解析器可用于解析UFF格式的网络。
  • ONNX Parser:该解析器可用于解析ONNX模型。

为什么TensorRT能让模型跑的快
学新通

TensorRT主要做了下面几件事,来提升模型的运行速度

  1. TensorRT支持FP16和INT8的计算

深度学习在训练的时候一般是应用32位或者16位数据

TensorRT在推理的时候可以降低模型参数的位宽来进行低精度推理,以达到加速推断的目的。

  1. TensorRT对于网络结构进行重构,把一些能够合并的运算合并在了一起,针对GPU的特性做了优化

GPU上跑的函数叫Kernel,TensorRT是存在Kernel的调用的

在绝大部分框架中,比如一个卷积层、一个偏置层和一个reload层,这三层是需要调用三次cuDNN对应的API

但实际上这三层的实现完全是可以合并到一起的,TensorRT会对一些可以合并网络进行合并

目前的网络一方面越来越深,另一方面越来越宽,可能并行做若干个相同大小的卷积,这些卷积计算其实也是可以合并到一起来做的

  1. Kernel Auto-Tuning:网络模型在推理计算时,是调用GPU的CUDA核进行计算的

TensorRT可以针对不同的算法,不同的网络模型,不同的GPU平台,进行 CUDA核的调整

以保证当前模型在特定平台上以最优性能计算。

  1. Dynamic Tensor Memory 在每个tensor的使用期间,TensorRT会为其指定显存

Dynamic Tensor Memory 在每个tensor的使用期间,TensorRT会为其指定显存,避免显存重复申请,减少内存占用和提高重复使用效率。


TensorRT的自动安装

主要是网络比较好,可以采用这个方式安装

pip install tensorrt
pip install nvidia-pyindex
pip install nvidia-tensorrt

TensorRT的手动安装

  1. 下载安装包

查询本机Linux版本:cat /etc/issue

查询本机CUDA版本:cat /usr/local/cuda/version.txt

打开官网下载TensorRT:https://developer.nvidia.com/nvidia-tensorrt-download

这里使用基于deb文件的安装

但是建议还是下载一个tar文件,这样在安装完成后,如果报错发现一些依赖包缺失,便于安装依赖包,在之后就会看到这样的操作。

同时需要注意的,英伟达自己的几个GPU平台,是有不一样的安装指南的。

  1. 使用deb包安装
dpkg -i xxx.deb
apt-key add xxx.pub
apt-get update
apt-get install tensorrt
  1. 安装依赖包

TensorRT的一个依赖包是libnvinfer。

如果使用Python 2.7: apt-get install python-libnvinfer-dev

如果使用Python 3.x:apt-get install python3-libnvinfer-dev

  1. 检查TensorRT是否安装成功
dpkg -l | grep TensorRT
  1. 运行实例程序

安装后会在 /usr/src 目录下生成一个 tensorrt 文件夹,里面包含 bin , data , python , samples 四个文件夹

samples 文件夹中是官方例程的源码

data , python 文件中存放官方例程用到的资源文件,比如caffemodel文件,TensorFlow模型文件,一些图片等

bin 文件夹用于存放编译后的二进制文件

可以把 tensorrt 文件夹拷贝到用户目录下,方便自己修改测试例程中的代码

进入 samples 文件夹直接 make,会在 bin 目录中生成可执行文件,可以一个一个地进行测试学习

一般情况下,实例程序运行成功,TensorRT也就安装成功了


参考文献

  • https://docs.nvidia.com/deeplearning/tensorrt/
  • https://zhuanlan.zhihu.com/p/356072366
  • https://cloud.tencent.com/developer/article/1594985
  • https://arleyzhang.github.io/articles/7f4b25ce/

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhekibge
系列文章
更多 icon
同类精品
更多 icon
继续加载