技术分享 | 如何利用GPU云服务器加速AIGC训练

简介: 阿里云GPU云服务器提供GPU加速计算能力,能够实现GPU计算资源的即开即用和弹性伸缩。同时,配备阿里云自研的弹性RDMA网络,可以实现秒级的大规模RDMA组网,满足大模型计算过程中海量数据的高效传输需求。面向开发者,阿里云还推出了AI计算部署工具FastGPU,使开发者无需关注计算、存储、网络等资源的部署操作,即可达到简单适配、一键部署、随处运行的效果。

技术圈 1.png


202375日,阿里云弹性计算团队与智东西公开课联合出品的系列课程【阿里云弹性计算技术公开课】正式播出,当前系列课程共分为七节,阿里云高级开发工程师于子淇作为第三位课程主讲人,带来了主题为《如何利用GPU云服务器加速AIGC训练》的课程分享,本次课程同步在阿里云官网、钉钉视频号、阿里云微信视频号、阿里云开发者微信视频号、阿里云创新中心直播平台&视频号等多平台同步播出。

 

阿里云GPU云服务器提供GPU加速计算能力,能够实现GPU计算资源的即开即用和弹性伸缩。同时,配备阿里云自研的弹性RDMA网络,可以实现秒级的大规模RDMA组网,满足大模型计算过程中海量数据的高效传输需求。面向开发者,阿里云还推出了AI计算部署工具FastGPU,使开发者无需关注计算、存储、网络等资源的部署操作,即可达到简单适配、一键部署、随处运行的效果。

【完整课程直播】


本篇文章根据于子淇的课程整理而成,供读者阅览:

 

大家好,我是来自阿里云弹性计算团队的高级开发工程师于子淇,本次给大家分享的内容的主题是:如何利用GPU云服务器加速AIGC训练,这个分享比较偏向于实践,重点会讲一下神龙AI训练加速套件AIACC 2.0在大模型上的优化案例。


幻灯片2.PNG

 

一、LLM模型的实现原理以及典型模型

 

现如今大模型和AIGC是比较火的话题,拥有较大的使用场景,比如通义千问、ChatGPT、智能对话机器人等等,这些是能够产生实际落地价值的,更贴进大众的生活,所以大模型会是未来AI发展的一个主航道。


幻灯片4.PNG


提到AIGC,全称是AI Generated Content,是指AI内容生成,本质上是一种生成式AI。它所覆盖的范围比较广,包括LLM,即大语言模型。从广义上来讲,大语言模型就是从大规模数据集上进行自监督训练,参数量级在10亿、百亿甚至更多。这种语言模型训练任务可以分为以下两个部分:

 

· Pretrain:大量数据提取共性特征,作为不同场景的基础模型,它的定位是通用性,对训练资源要求比较高,也是各大公司想要实现通用基础模型的必要途径;

· Finetune:少量数据适应特定领域模型,它面向的是下游任务,定位在于特定性,这个在目前这种大语言模型场景下对训练要求也很高,也是各个公司希望基于自己已有的基础模型和特有数据集,做定制化产业升级和创新应用开发的实现方式。

 

LLM模型实现的架构包括encoderdecoder,由上图右侧结构图所示,这是目前主流的大语言模型的发展方向。左边子图是encoder only的结构,比如传统的bert模型;中间子图的是encoder-decoder,也就是最原始的transform base的模型,比如T5模型;右侧子图是decoder only的结构,这个模型结构应用比较多的场景,比如Open AI始终坚持的GPTChatGPT以及Meta实现的LLaMA等等。从上图右侧树图能够看出,主流的架构趋势是decoder-only

 

说到大语言模型,不可避免的话题就是扩展性的问题。这个扩展性可能会有多个维度,包含数据集和模型的参数量。横坐标是模型的参数量规模,纵坐标是模型的精度、表现能力,按照之前的扩展定律来看是近似线性的,这个也好理解,参数量越大,模型越准确,但最新的研究表明,在有一些任务上,模型在没有达到阈值规模之前,效果接近于随机,而达到阈值之后,性能大幅提高,也就是规模越大,才真正解锁了大语言模型的潜在能力,比如具体在10B-100B提升最明显。到此为止,我们总结为,大模型参数在10B+的参数量级,也就是百亿以上。

 

接下来我们来看下具体的训练细节。


幻灯片5.PNG


模型的实现,主流是基于transformer-basedecoder-only架构。如上图右侧所示,这个是Google提出的标准transformer-base模型,即encoder-decoder,但前面提到大多都采用decoder-only架构,也就是红色框部分。

 

因为训练效率上来看decoder-only只有一半的模型架构,所以在效率和工程实现上都是较优的,比如encoder-decoder还需要做复杂的数据切分,无法满足通用的大语言模型训练;在任务效果表现上zero-shot的自监督训练(即无任何tuning数据)decoder-only也是表现最好,并且数学推导来看decoder-only一般为三角阵,三角阵是满秩的,表达能力更强。

 

在并行策略上往往是我们做训练重点关心的地方,有多种并行方式,比如数据并行DPDDPDeepSpeed-zero123,张量并行TP、流水并行PP,不同的切分会决定不同的通信方式,比如DDP主要是allreduce;主流框架包括DSFSDP/megatroncolossalAI等。

 

开源的模型有很多,LLAMAchatGLMGPT3等,比较火的当属LLaMA了,下面是Llama-13B+zero3的训练方式,多个GPU之间不在是传统的单个allreduce集合通信了,而是换成了allgatherreduce-scatter,因为本质上这两个算子的组合就是等价于一个allreduce算子,因为zero3的并行切分,拆解为2个通信算子之后,中间冗余的parametergradientoptimizer-statesbuffer的冗余占用就可以释放,从而达到降低显存的效果,满足中大模型的承载能力,提高整体的吞吐性能。

 

当然,虽然看起来zero主要是做了显存的优化,但变相提高了计算效率,这就带来较大的通信压力,通信占比在2机场景下达到30%以上,对于传统的TCP/IP的网络来说压力会很大,容易成为性能瓶颈,降低GPU利用率。

 

这就是大语言模型其中一个痛点,那么如何降低这种通信瓶颈呢?下面将介绍阿里云eRDMAGPU实例。

 

二、基于阿里云eRDMAGPU云服务器

 

eRDMA也就是elastic(弹性)RDMA。通过下图我们看一下RDMA的技术演进。


幻灯片7.PNG


如左侧图所示,传统TCP/IP涉及到多层数据包的解析,需要走CPU进行数据搬移,这个会带来较大延迟,降低带宽表现。传统TCP/IP网络较慢,可能影响不大,但现在网络提速之后,CPUoverhead就不可忽略了。

 

中间的图是RDMA的实现方式,应用层可以通过网卡直接完成数据搬移,bypass了用户态和内核态的切换以及CPU搬移,只需要CPU发起数据通信的请求,由RDMAengine来完成数据通信,CPU只是被告知完成,从而大幅提高通信性能。

 

幻灯片8.PNG


eRDMA特性包括:

 

· RDMA的生态兼容,无需修改任何代码,二进制兼容,通过标准的verbs API即可调用;

· 超大规模组网能力,支持10万级别VM组网以及跨AZ组网;

· 基于ECSVPC网络,能够满足极致的弹性和多租户隔离。

 

从硬件角度的一些指标来看,带宽200Gbps、时延最低8µs、吞吐30M message/s


幻灯片9.PNG


硬件架构上,为了满足大模型transformer-base对计算和承载能力的要求,GPU采用80GB8A100,单机内部为nvlink600GB/s的高速带宽,节点间走eRDMA互联,能够提供最大2x100G带宽,并且实现跨socket均衡,即单机内部每4GPU卡共用100G带宽;当然200GEBS/VPC/ERDMA融合后共享带宽,所以实际分到的数据流带宽会小一些。

 

幻灯片10.PNG


上图是AI训练场景的典型架构,eRDMA位于底层通信链路,对上层应用提供无感加速能力,比如在nccl的场景下,无需任何修改,自动适配eRDMA通信协议。


下图是eRDMA实例相比传统64G VPC机型的性能提升,可以看到性能提升是比较明显的。整体带宽提升了一倍,延迟降低了80%

 

幻灯片11.PNG


右边的数据图是ebmgn7ex相比ebmgn7e 4机训练性能提升比例,提升比例也很明显。

 

三、FastGPU一键部署LLaMA流程以及finetune原理解析

 

这部分将介绍一键部署LLaMA流程,也就是前面提到的大语言模型及finetune原理解析。


幻灯片13.PNG


FastGPU是一款针对阿里云IaaS资源的快速管理工具,可以将环境部署时间大幅缩短,变相节省了GPU资源的费用,面向各类开发者提供IaaS资源的易用性,可以提高开发者的效率。具体的细节就是从用户使用角度,通过FastGPU管理集群,或是控制当前集群的一些资源创建和释放等等,感兴趣的话可以在阿里云官网上查看了解。

 

幻灯片14.PNG


上图为一键部署的流程。通过FastGPU一行命令,完成集群的创建、环境部署、LLaMA模型训练以及推理服务构建的流程,这里是演示作用,因为A100资源较为紧缺,所以使用的是V100实例。两张图分别是baseline性能以及使用了AIACC之后的性能,从吞吐量来看AIACC性能提升40%,具体AIACC是什么我们后面再展开。

 

访问推理服务,只需要打开浏览器输入本地的某个端口服务即可,因为FastGPU已经内部实现了IP白名单+端口转发到本地的功能,通过快速试用方式来大幅降低大模型的使用门槛。

 

下面分享LLaMA流程细节。

 

幻灯片15.PNG

 

LLaMAMETA提出的对标OpenAIChatGPT的开源版本,提出的背景就是通过模型的性价比去降维打击。所谓模型性价比就是参数量和训练tokens的关系,右边这个图是实验验证扩展性的特点。汇总下来LLAMA提出的2个角度:

 

· 一个是训练质量保证,需要通过匹配最佳的数据集和模型大小来满足scaling扩展定律;

· 另外一个容易忽略的点,就是推理效率,降低模型参数量,通过更大的训练时间来保证相同的精度效果,从而推理时候可以在更小的模型上来降低推理部署的成本。

 

LLaMA的模型结构,其实是基于transformer-base的实现,吸取了不同模型实现的优化点,比如RMS预先归一化(即在norm的输入层进行归一化而非输出层)、swiglu激活、RoPE旋转嵌入替代绝对编码。

 

所以LLaMA模型核心部分可能是通过完备的扩展性去实现模型效果的提升,最终LLaMA的效果上是比较惊人的,相比GPT3175B模型,LLaMA-13B基本持平GPT3的效果,而参数量只有不到十分之一,即便是7B也不会比GPT3差太多。

 

那么具体finetune是如何进行呢?

 

Finetune主要是一种小样本训练,在zero-shotfew-shot场景下进行的,本质上就是减少人工标注的语料,简单理解为自监督或无监督训练,下游任务有常识推理、问答、阅读理解、数学推理、代码生成等等。

 

finetune有多种类别,比如prompt-tuning为每个任务拼接emb层来训练embprefix-tuning利用MLP多层感知机来训练;p-tuning引入LSTM训练等等。


上图主要以LLaMA系列的alpaca模型为例,Alapca是斯坦福提出的,使用self-instruction进行微调。所谓的self就是指通过已有的强大的语言模型生成指令数据,然后进行全量finetune训练。

 

Alpaca是通过OpenAIGPT3.5生成了52k的训练数据,具体如上图右侧所示。

 

self-instruct集合中生成175个由人类撰写的高质量指令-输出pair对,主要是规范一些期望输出的模版,然后这些作为种子集合输入到达芬奇03版本模型,生成更多的指令;最后就是把生成的52k高质量的数据用于LLaMA,做有监督的finetune训练,生成最终的Alpaca模型。

 

本质上self-instruct就是让更高级的大语言模型去调教新模型,来达到“听话”的效果。

 

下面看一下推理的实际效果。

 

幻灯片16.PNG


上图是开源的WebUI对话界面,这是没有finetune训练之前的基础LLaMA模型效果,输入的问题是你作为一名老师,教我如何学习人工智能,回答如右框所示,可以看到他的回答第一句就是不理解teach教学这个词的意思。这个就是原始模型在大规模语料下可能会存在的问题,生成结果文不对题,也就无法正确的生成结果。

 

接下来我们看finetune之后的结果,相同的问题,回复内容的确是像老师的口吻直接讲学AI的价值和课程重要性,效果较为符合预期。

幻灯片17.PNG

 

具体的AIGC一键部署可以参考阿里云AIGC试用的文档,里面介绍了基于阿里云GPU云服务器快速搭建各种不同的AIGC应用,比如stablediffusion文生图、LLaMA指令微调等超多应用。

 

幻灯片18.PNG

 

欢迎大家快速部署体验,可以直接浏览器搜索“阿里云AIGC GPU试用”这几个字即可进入。

 

四、基于AIACC的性能优化及效果展示

 

接下来分享AIACC的加速原理。

 

我们团队之前在AIACC1.5的版本拿过DawnBench竞赛的四项世界第一,训练部分性能最快,成本最低。还有推理同学拿到了推理性能最快、成本最低的奖项。

 

幻灯片20.PNG


目前更新为2.0版本,下图是AIACC-Training 2.0的架构,主要包括ACSpeed通信优化以及AGSpeed计算优化。

 

幻灯片21.PNG


上图分割线上方为通信优化,ACSpeed实现为模块化的解耦设计,在兼容性、适用性和性能优化方面全面升级,从AI框架到nccl runtime以及协议栈侧均实现为plugin或者backend的方式,从而实现无感IaaS+的中间件支持。

 

下面是AGSpeed计算优化,主要针对pytorch动态图特效,实现计算图编译优化,这里也分为compiler的前后端,前端实现动态到静态图的转换,后端实现pass/tensor等编译优化,从而加速训练的计算过程。

 

幻灯片22.PNG


通信优化的背景是,分布式训练在多机场景下的通信带宽成为训练瓶颈。因此ACSpeed实现c10d-pluginnccl-runtime的方式进行无感优化分布式训练,针对阿里云VPC网络基础设施在分布式场景下进行深度优化,并且针对CIPU提供网络层增强,即前面提到的eRDMA实例,传统使用IB网络的方式较为繁琐,包括GIDHCA等设置,通过nccl-plugin极大增强了易用性,目前已经集成到eRDMA大包驱动内部,用户可以完全无感使用eRDMA的网络能力。

 

上图框架图上画的有PytorchTensorFlow不同路径,主要是因为使用Pytorch客户较多,所以针对Pytorch做了定制的优化,可以一行代码修改快速优化DDP以及FSDP等不同的训练方式,对模型侧无感,即便不是Pytorch,底层都是基于NCCL做通信的话也都可以直接走第二层nccl-runtime以及nccl-plugin获取纯通信优化。

 

目前算法层面实现了常用的allreduceallgatherreduce-scatterreduce等集合通信算法的优化版本,极大提升在阿里云GPU实例下的性能表现。

 

接下来是AGSpeed计算图的编译优化。

 

幻灯片23.PNG

 

AGSpeed计算图编译优化,主要背景也是Torch的火热程度,所以我们针对Pytorch进行计算图的定制优化,增强前后端覆盖度,保证训练e2e功能和性能。

 

· 前端引入并优化Torchdynamo graph catch机制/通过online autotune保障覆盖度和SLA的鲁棒性;

· 后端引入并优化Nvfuserinductor等多种optimizer,通过plugin方式增强编译优化性能。

 

幻灯片24.PNG


上图是AIACC2.0的性能优化结果,左边是单独开启ACSpeed的性能,相比DDP提升5-150%;右边是单独开启AGSpeed的性能,相比Pytorch提升5-50%

 

幻灯片25.PNG


如果是单独只使用nccl-runtime以及nccl-plugin的通信优化,性能SLA主要是nccl-test,是经典测试GPU多机多卡通信的benchmark,下图展示的是allgather算子在两机eRDMA机型下的性能提升,在30-100%,在端到端场景下会根据不同通信占比进行折算。比如在某实际客户的某A100机型的2机场景下,Llama13B + zero3的模型实现,集合通信使用的是allgather+reduce-scatter算子,通信压力较大,通过一行代码import aiacc后即可使能AIACC优化,集合通信部分替换为aiacc_allgatheraiacc_reduce_scatter算子,最终端到端的llama13B训练性能提升37%

 

幻灯片27.PNG


最后介绍下AIACC2.0的加速套件官网链接,里面有IE的一些套件文档,欢迎大家试用,可以在相同实例的情况下达到更优的性能。

 

想要关注更多精彩直播/观看课程回放的同学,可以扫描下方海报中的二维码/点击链接,均可观看。

 

视频号封面9-16.jpg


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
1月前
|
并行计算 Shell TensorFlow
Tensorflow-GPU训练MTCNN出现错误-Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
在使用TensorFlow-GPU训练MTCNN时,如果遇到“Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED”错误,通常是由于TensorFlow、CUDA和cuDNN版本不兼容或显存分配问题导致的,可以通过安装匹配的版本或在代码中设置动态显存分配来解决。
47 1
Tensorflow-GPU训练MTCNN出现错误-Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
|
23天前
|
人工智能 语音技术 UED
仅用4块GPU、不到3天训练出开源版GPT-4o,这是国内团队最新研究
【10月更文挑战第19天】中国科学院计算技术研究所提出了一种名为LLaMA-Omni的新型模型架构,实现与大型语言模型(LLMs)的低延迟、高质量语音交互。该模型集成了预训练的语音编码器、语音适配器、LLM和流式语音解码器,能够在不进行语音转录的情况下直接生成文本和语音响应,显著提升了用户体验。实验结果显示,LLaMA-Omni的响应延迟低至226ms,具有创新性和实用性。
45 1
|
1月前
|
数据可视化 Linux 网络安全
如何使用服务器训练模型
本文介绍了如何使用服务器训练模型,包括获取服务器、访问服务器、上传文件、配置环境、训练模型和下载模型等步骤。适合没有GPU或不熟悉Linux服务器的用户。通过MobaXterm工具连接服务器,使用Conda管理环境,确保训练过程顺利进行。
58 0
如何使用服务器训练模型
|
3月前
|
机器学习/深度学习 并行计算 PyTorch
GPU 加速与 PyTorch:最大化硬件性能提升训练速度
【8月更文第29天】GPU(图形处理单元)因其并行计算能力而成为深度学习领域的重要组成部分。本文将介绍如何利用PyTorch来高效地利用GPU进行深度学习模型的训练,从而最大化训练速度。我们将讨论如何配置环境、选择合适的硬件、编写高效的代码以及利用高级特性来提高性能。
659 1
|
3月前
|
并行计算 算法 调度
自研分布式训练框架EPL问题之提高GPU利用率如何解决
自研分布式训练框架EPL问题之提高GPU利用率如何解决
|
3月前
|
人工智能 弹性计算 芯片
就AI 基础设施的演进与挑战问题之AIGC场景下训练和推理的成本的问题如何解决
就AI 基础设施的演进与挑战问题之AIGC场景下训练和推理的成本的问题如何解决
|
5月前
|
机器学习/深度学习 自然语言处理 异构计算
单GPU训练一天,Transformer在100位数字加法上就达能到99%准确率
【6月更文挑战第11天】Transformer模型在算术任务上取得重大突破,通过引入Abacus Embeddings,一天内在100位数字加法上达到99%准确率。该嵌入方法帮助模型跟踪数字位置,提升处理长序列的能力。实验还显示,Abacus Embeddings可与其他嵌入方法结合,提升乘法任务性能。然而,模型在更长序列的扩展性和其他类型任务的效果仍有待探究,具体训练技术的影响也需要进一步研究。论文链接:https://arxiv.org/pdf/2405.17399
75 1
|
5月前
|
网络协议 安全 分布式数据库
技术分享:分布式数据库DNS服务器的架构思路
技术分享:分布式数据库DNS服务器的架构思路
116 0
|
6月前
|
机器学习/深度学习 弹性计算 自然语言处理
【阿里云弹性计算】深度学习训练平台搭建:阿里云 ECS 与 GPU 实例的高效利用
【5月更文挑战第28天】阿里云ECS结合GPU实例为深度学习提供高效解决方案。通过弹性计算服务满足大量计算需求,GPU加速训练。用户可按需选择实例规格,配置深度学习框架,实现快速搭建训练平台。示例代码展示了在GPU实例上使用TensorFlow进行训练。优化包括合理分配GPU资源和使用混合精度技术,应用涵盖图像识别和自然语言处理。注意成本控制及数据安全,借助阿里云推动深度学习发展。
257 2

相关产品

  • 云服务器 ECS
  • GPU云服务器