上云无忧 > 文档中心 > 百度智能云GPU云服务器使用TensorRT加速深度学习推理
GPU云服务器
百度智能云GPU云服务器使用TensorRT加速深度学习推理

文档简介:
背景介绍 本文介绍如何在GPU云服务环境中下载、安装并使用TensorRT工具。 TensorRT,是Nvdia推出的一套专为深度学习推理打造的SDK。在推理阶段,基于TensorRT的应用可以提供同比单一CPU平台高达40倍的加速效果。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

背景介绍

本文介绍如何在GPU云服务环境中下载、安装并使用TensorRT工具。

TensorRT,是Nvdia推出的一套专为深度学习推理打造的SDK。在推理阶段,基于TensorRT的应用可以提供同比单一CPU平台高达40倍的加速效果。TensorRT可以从所有主流的深度学习框架中导入训练好的模型并进行优化,同时提供相应的API和解析器(parser),此外它还可以利用高精度对低精度进行校验。生成经过优化的运行时引擎可以部署到数据中心,车辆端和嵌入式环境中。

TensorRT主要包括一个深度学习推理的优化器(optimizer)和运行时(runtime),可以为深度学习推理应用提供低延迟和高吞吐的特性。它支持C++和Pytorch两种代码方式。

TensorRT 是构建在NVIDIA的并行编程模型CUDA基础之上的,结合最新一代Ampere架构的GPU,TensorRT还可以利用Tensor Core实现稀疏性(Sparsity)加速的特点。对于深度学习推理应用的生产环境部署方面,TensorRT提供了INT8和FP16的优化,可针对视频流,语音识别,推荐领域,欺诈检测,自然语言处理等。低精度推理能够极大的降低应用的延迟,有益于实时服务,以及自动驾驶和嵌入式类型的应用。

TensorRT的详细开发者指南可参考:https://docs.nvidia.com/deeplearning/tensorrt/developer-guide

应用特点

  • 支持混合精度

通过将模型量化为INT8最大化吞吐(支持PTQ和QAT两种量化方式)

  • Layer和Tensor的融合

可以通过将多个节点融合为一个kernel来优化GPU显存和带宽的使用

  • Kernel 的自动调节

基于目标GPU平台,选择最佳的数据层和算法

  • Tensor 显存使用的动态化

最小化显存的使用,高效的反复利用显存存储tensor

  • 多流执行

采用可扩展的设计可以并行的处理多个输入流

  • 时间层面的融合

在时间步上利用动态生成的kernel优化了RNN(Recurrent Neural Network)

使用TensorRT的加速效果可参考:https://developer.nvidia.com/deep-learning-performance-training-inference#dl-inference

快速入门:https://developer.nvidia.com/blog/speeding-up-deep-learning-inference-using-tensorrt-updated/


操作方法

获取TensorRT

  • 通过NGC获取镜像

从NGC中可以获取已经容器化好的TensorRT的镜像,用户可以直接访问https://ngc.nvidia.com/catalog/containers/nvidia:tensorrt 通过docker拉取最新版本的TensorRT镜像进行使用。 

如何获取NGC镜像可参考https://cloud.baidu.com/doc/GPU/s/fkppdq6rd

  • 手动安装TensorRT

登陆https://developer.nvidia.com/tensorrt-getting-started,选择Download Now。注册信息成功之后会进入TensorRT的下载页面,可以根据需要选择不同版本的TensorRT:

  • 使用TensorRT的通用流程
  1. 将通过原生框架(PyTorch, Paddle, TensorFlow等)预训练好的模型转成onnx格式。
  2. 将onnx模型转入TensorRT
  3. 应用优化器并生成一个TensorRT engine
  4. 在GPU上执行推理过程
  • TensorRT相关的概念解释。

onnx parser:onnx解析器,它可以将一个onnx模型解析成为TensorRT可以识别的深度神经网络。此外,TensorRT还可以通过手动搭建API的方式构建整个网络(Python API, C++ API)

Builder: 该模块会接收TensorRT中的一个哇昂罗,并生成一个针对目标平台优化好的TensorRT engine.

Engine: Engine 会用来接收如数的数据,执行推理,并输出推理的结果。

Logger:和Builder,Engine协同配合,在构建和推理过程中捕获errors,warning以及其它信息。


其他工具

trtexec

trtexec 是一个命令行封装好的工具,主要用来在不部署应用的前提下快速使用TensorRT,主要目的是

1)用来对随机数据进行基准的神经网络性能进行测试

2)从模型生成序列化好的engine。对于前期快速定位模型问题,性能测试,生成engine,神经网络性能,选择的优化路径等具有重要的指导意义。

更多请参考:https://github.com/NVIDIA/TensorRT/tree/master/samples/trtexec

ONNX GraphSurgeon

有些情况下,我们导出的ONNX模型需要做特殊的修改,那么ONNX GraphSurgeon就是一个可以用来对当前ONNX Graph进行修改的小工具,同时还可以轻松地生成新的ONNX Graph。

更多请参考:https://github.com/NVIDIA/TensorRT/tree/master/tools/onnx-graphsurgeon

Polygraphy

Polygraphy是一个用来在多种框架下,协助运行和调试深度学习模型的工具包。它包含了Python API和命令行调用两种使用方式。

此外,Polygraphy还可以实现如下的事情:

可基于TensorRT或ONNX-Runtime后端下运行推理,并比较它们的结果 转换模型为多种格式,比如具有PTQ量化的TensorRT engine 查看多种模型类型下的结果信息 基于命令行的方式修改ONNX模型 提取子图 模型简化与剪裁 在TensorRT中隔离有问题的tactics(注:TensorRT中通过遍历不同配置的kernel进而选择最佳的kernel的过程叫做tactic选择) 更多请参考:https://github.com/NVIDIA/TensorRT/tree/master/tools/Polygraphy

相似文档
  • 本文介绍如何在GPU云服务环境中下载、安装并使用RAPIDS软件库。 RAPIDS是一套开源的软件库,旨在提供给用户一整套能够完全在GPU上执行的端到端的数据科学及其分析的API调用。它面向解析和数据科学中的常规数据处理任务,囊括了多种端到端的机器学习算法。
  • FPGA(Field Programmable Gate Array)云服务器是云环境中配备FPGA的计算实例,通过购买FPGA实例,您可以结合自身业务场景,利用百度智能云提供的完善的FPGA加速平台,以及配套的开发、模拟、调试、编译资源,快速地为您的业务构建专属的FPGA硬件加速程序。
  • 超高计算性能 • 每个FPGA实例配备16个CPU核心、64G内存和450G高速本地磁盘 • FPGA加速平台搭建20nm Xilinx XCKU115 FPGA,该FPGA芯片大约包含 150 万个逻辑元件,5520 个数字信号处理 (DSP) 引擎 • FPGA加速平台配备4通道DDR4,每个通道72bit,支持ECC,4个通道共8GB容量;2400MHz速率,提供76GB/s的访存带宽 • FPGA加速平台通过PCIE 3.0 x 8与虚机通信,通信带宽高达8GB/s
  • FPGA 云服务器提供完全的设备管理权限和全生命周期的运维管理服务。本文旨在帮助您快速在百度智能云管理控制台购买和管理FPGA云服务器。 FPGA 实例操作流程如下所示: 实名认证及注册百度智能云帐号; 申请开通FPGA服务; 创建FPGA实例; 选择适合的镜像类型,部署镜像。
  • 操作步骤 登录BCC管理控制台主界面。 登录成功后,选择“产品服务>云服务器 BCC”,显示“实例列表”页面。 点击<创建实例>,选择配置信息。 配置信息 说明 付费方式 预付费(包年包月)、后付费(按需购买)
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部