AI大牛教你如何秒速部署GPU深度学习的应用

简介: 2018云栖直播,NVIDIA资深高级系统架构师David带来以Quick deployment of GPU DL application为题的演讲。如何在CPU上以及在阿里云上秒速部署应用一直是个具有挑战性的问题,本文先是讲述了TensorRT具有哪些应用,接着阐述了NGC+TRT+Aliyun是如何快速的部署的,从而最终实现GPU DL的秒速部署。

2018云栖直播,NVIDIA资深高级系统架构师David带来以Quick deployment of GPU DL application为题的演讲。如何在CPU上以及在阿里云上秒速部署应用一直是个具有挑战性的问题,本文先是讲述了TensorRT具有哪些应用,接着阐述了NGC+TRT+Aliyun是如何快速的部署的,从而最终实现GPU DL的秒速部署。
数十款阿里云产品限时折扣中,赶快点击这里,领券开始云上实践吧!
直播视频回顾
PPT下载请点击
以下是精彩视频内容整理:

TensorRT的应用

什么是深度学习

image

深度学习是机器学习的一个子集,搭载深度学习的软件能够训练本身执行任务的能力,例如语言识别、医疗、手机娱乐、人脸识别以及自动驾驶等。它们能够通过接触多层次的神经网络来扩大数据库的容量。从这个角度来看,深度学习能够改变几乎任何一个行业。
然而对于大多数人而言,他们并没有意识到这些技术的实现实际上使用的都是基于深度学习的AI技术。所谓的AI(Artificial Intelligence)技术是人工智能的缩写,它指研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。
现在典型的TensorRT部署方法

image


深度学习可分为训练和部署两部分,深度学习的训练部分是指构建网络结构、准备数据集以及使用各种框架进行培训的过程,最后对训练好的模型在实际业务中使用。深度学习的部署部分有两种方法,第一种部署方法是使用培训框架,如Caffe、TensorFlow等方法进行生产阶段的推理,但这种培训框架需要极大的开销。第二种部署方法是使用GPU加速的cuDNN和cuBLAS库直接构建自定义部署解决方案,这种部署方法可以减少框架开销,但是增加了开发的难度。

TensorRT+P4 的性能

image


NVIDIA TESLA P4采用的是完整版本的GP104核心,也就是GTX 1080和GTX 1070所使用的核心。CUDA数目为完整的2560个核心,频率只有810-1063MHz,单精度浮点性能5.5TFlops,INT8 22TOPS。搭载的是GDDR5显存,功率只有50-75W,采用被动散热。最重要的是Tesla P4可以为超大型数据中心提供强有力的性能支持,一块Tesla P4相当于13台普通CPU服务器。
TensorRT+P4具有良好的性能,具体性能如下:
  • 最高效的推理平台。
  • 数据中心扩展的最高性能推理平台。
  • 实时响应推理平台。

TensorRT的优化

image

TensorRT的部署分为两个部分,两部分的计算流程图的具体解释如下:

  • 优化训练好的模型并生成计算流图。
    优化训练模型就是将优化的文件存储到计算机上,首先将训练神经网络优化生成最优的TensorRT控制器,其次是将TensorRT控制器进行串行化引擎,最后得出最优化的方案。
  • 使用TensorRT Runtime部署计算流图。
    首先将优化方案去掉串行化引擎,其次是得出运行时的引擎,最后将其部署并运行到云上。

若想要TensorRT部署流程很自然还需要解决许多问题,例如TensorRT训练出的网络模型需要支持什么样的框架、TensorRT支持的网络结构是什么样的、TensorRT优化器需要做哪些优化、TensorRT优化好的计算流图可以运行在什么设备上等问题。

TensorRT的图像优化

TensorRT在获得网络计算流图后会针对计算流图进行优化,这部分优化不会改变图中最底层的计算内容,而是会重构计算图来获得更快、更高效的执行方式,即计算不变优化计算方法。
TensorRT的优化可以分为三个层次的优化,分别是垂直层融合、水平层融合以及消除级联层,三个层次的具体介绍如下:

垂直层融合

image


如上图所示,通过垂直层融合相同顺序的操作来减少Kernel Launch的消耗以及避免层与层之间的显存读写操作。Concolution、Bias和ReLU层融合成一个Kernel,Kernel称之为CBR,即CBR = Convolution+Bias+ReLU。

水平层融合

image


如上图超宽的1x1 CBR所示,TensorRT去挖掘输入数据层,数据层具有filter大小相同、weights不同的特点,此时需要通过水平层融合的优化方法使得这些层使用同一个Kernel来提高效率

消除级联层

image


消除级联层指消除没有必要的层,例如concatenation层等,从而减少不必要的工作量以及运行时间,有效的提高了效率。
通过垂直层融合、水平层融合以及消除级联层三个层次的优化,TensorRT可以获得更小、更快、更高效的计算流图,优化过的TensorRT具有更少层网络结构以及Kernel Launch次数。总而言之,TensorRT可以有效的优化网络结构、减少网络层数,从而带来性能的提升。

NVIDIA TENSORRT

image


NVIDIA TENSORRT的可编程推理加速器可分为四个部分,分别是输入网络框架、输入接口方式、输出支持系统平台以及输出支持系统平台。每个部分又有许多选择性,例如,TensorRT支持常见的深度学习输入网络框架有Caffe、Chainer、CNTK、MXnet、PaddlePaddle、Pytorch、TensorFlow、Theano等,TensorRT支持的模型输入接口方式有C++ API、Python API、NvCaffeParser, NvUffParser、NvONNx Parser等,TensorRT支持的输出支持系统平台有Linux x86、Linux aarch64、Android aarch64、QNX aarch64等,TensorRT支持的输出硬件平台有Tesla P4/V100、自动驾驶、嵌入式平台的DrivePX、TX1/TX2等。

量化的方法

量化可以分为饱和和非饱和两种方法,具体讲解如下:

饱和量化方法

image


上图讲的是饱和的量化方法,根据所选的量化方法以及量化的整体流程,对于量化最关键的是如何实现饱和方法中的阈值T的选择,这个选择流程被称之为校准。
首先选择一个阈值T,并将阈值T范围内的FP32值映射至INT8,T阈值范围外的使用-127或128。对于此方法来说,weights无法提升准确度,而activations能有效提升准确度。这就是较为复杂的饱和方法。

非饱和方法

image


上图为非饱和的量化方法,对weights和activations使用线性量化,即找到其中绝对值最大的值,然后将这个范围映射回INT8。此方法转化后会带来很大的准确度损失,因此对于weights和activations分别采用了不同的量化方法,这就是简单的非饱和的方法。

TensorRT 部署方法

完成TensorRT优化后可以得到一个Runtime inference engine,这个文件可以被系列化保存至硬盘中,而这个保存的序列化文件称之为Plan(流图),之所以称之为流图,是因为它不仅保存了计算时所需的网络weights也保存了Kernel执行的调度流程。TensorRT提供了write_engine_to_file()函数以来保存流图,在获得了流图之后就可以使用TensorRT部署应用。
为了进一步的简化部署流程,TensorRT提供了TensorRT Lite API,它是高度抽象的接口会自动处理大量的、重复的通用任务,例如创建一个Logger、反序列化流图并生成Runtime inference engine、处理输入的数据等。

NGC+TRT+Aliyun的快速部署

GPU加速计算正在解决世界上一些最复杂的问题,但是GPU自身的使用也会有一定的复杂度。

复杂软件面临的挑战

image


复杂软件面临的重大挑战有三个方面,具体如下:
  • DIY GPU加速的AI和HPC部署对构建,测试和维护来说是复杂且耗时的。
  • 社区开发软件框架的速度非常快。
  • 需要高水平的专业知识来管理驱动程序,库,框架依赖关系。

跨平台深度学习

image

深度学习容器是自包含和可移植的,可以在任何地方运行,即可以使用完全相同的环境在桌面、数据中心或云中构建、培训和部署。例如,在家里TITAN V的环境中工作、使用NVIDIA DGX-1进行大规模的测试等,就可以做到这一点。若想要简化工作量,可以立即使用阿里云GPU计算实例和NGC,可以围绕每项工作使用正确的计算大小来移动工作,最终访问混合云以进行深入学习。

虚拟机与容器的比较

image


虚拟机需要占用大量的内存和耗费大量的时间。由于虚拟机是独立的,它具有自己的操作系统、自己的应用程序以及自己的资源,因此需要占用大量的内存空间。 有时候,开发人员需要快速地测试不同版本的应用程序,这就需要IT Ops团队部署一台或多台机器,因此耗费大量的时间。
而容器不包含任何操作系统,因此占用物理主机上的虚拟机资源更少。容器只是共享主机操作系统,包括内核和库,所以它们不需要启动完整的操作系统。
由此可以得出,容器相对于虚拟机而言更优。特别地,容器的启动时间更快,一个容器化的应用程序通常在几秒钟内开始,而虚拟机可能需要几分钟的时间。

NVIDIA容器

image


Docker容器是硬件不可知的,并且与平台无关。然而,NVIDIA GPU是需要NVIDIA驱动程序的专用硬件。由于Docker本身不支持容器内的NVIDIA GPU,因此使用NVIDIA-Docker可以使镜像不受NVIDIA驱动程序的影响。在目标机器上启动容器时,需安装GPU所需的字符设备和驱动程序文件,这使得Docker镜像便于移植。
相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
2月前
|
人工智能 中间件 数据库
沐曦 GPU 融入龙蜥,共筑开源 AI 基础设施新底座
沐曦自加入社区以来,一直与龙蜥社区在推动 AIDC OS 的开源社区建设等方面保持合作。
|
2月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
448 30
|
2月前
|
人工智能 测试技术 API
构建AI智能体:二、DeepSeek的Ollama部署FastAPI封装调用
本文介绍如何通过Ollama本地部署DeepSeek大模型,结合FastAPI实现API接口调用。涵盖Ollama安装、路径迁移、模型下载运行及REST API封装全过程,助力快速构建可扩展的AI应用服务。
673 6
|
2月前
|
设计模式 人工智能 自然语言处理
3个月圈粉百万,这个AI应用在海外火了
不知道大家还记不记得,我之前推荐过一个叫 Agnes 的 AI 应用,也是当时在 WAIC 了解到的。
371 1
|
2月前
|
存储 机器学习/深度学习 人工智能
硅谷GPU单节点服务器:技术解析与应用全景
“硅谷GPU单节点服务器”代表了在单个物理机箱内集成强大计算能力,特别是GPU加速能力的高性能计算解决方案。它们并非指代某个特定品牌,而是一类为处理密集型工作负载而设计的服务器范式的统称。
|
2月前
|
人工智能 缓存 运维
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
本文介绍联调造数场景下的AI应用演进:从单Agent模式到多Agent协同的架构升级。针对复杂指令执行不准、响应慢等问题,通过意图识别、工具引擎、推理执行等多Agent分工协作,结合工程化手段提升准确性与效率,并分享了关键设计思路与实践心得。
475 20
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
|
2月前
|
机器学习/深度学习 人工智能 弹性计算
2025年阿里云GPU服务器租用价格与应用场景详解
阿里云GPU服务器基于ECS架构,集成NVIDIA A10/V100等顶级GPU与自研神龙架构,提供高达1000 TFLOPS混合精度算力。2025年推出万卡级异构算力平台及Aegaeon池化技术,支持AI训练、推理、科学计算与图形渲染,实现性能与成本最优平衡。
|
2月前
|
人工智能 安全 数据可视化
Dify让你拖拽式搭建企业级AI应用
Dify是开源大模型应用开发平台,融合BaaS与LLMOps理念,通过可视化工作流、低代码编排和企业级监控,支持多模型接入与RAG知识库,助力企业快速构建安全可控的AI应用,实现从原型到生产的高效落地。
Dify让你拖拽式搭建企业级AI应用
|
2月前
|
自然语言处理 数据挖掘 关系型数据库
ADB AI指标分析在广告营销场景的方案及应用
ADB Analytic Agent助力广告营销智能化,融合异动与归因分析,支持自然语言输入、多源数据对接及场景模板化,实现从数据获取到洞察报告的自动化生成,提升分析效率与精度,推动数据驱动决策。

热门文章

最新文章