大模型训练算法和在网计算,这一篇就够了

高性能计算HPC、人工智能AI技术的发展,带来了不断激增的计算量,必须通过大规模集群算力才能充分发挥优势,例如,ChatGPT模型参数总量已经达到千亿级别,高性能计算也已经迈向百亿亿级计算时代。所谓的大规模训练就是使用大规模的数据或大规模参数量的模型来做训练。

相对于单卡训练,大规模的分布式训练常在训练数据量较大或模型参数规模太大导致单卡不可训练的场景下使用。如当训练数据量较大时,单卡训练耗时过长,需要分布式训练技术提高训练效率;或者当单卡无法支持训练时,即单卡显存无法放下全量模型参数时,可使用分布式训练技术将模型参数等模型信息切分到多张卡或多台设备上,以保证模型可训练。集合通信训练模式和参数服务器训练模式是两种最主要的分布式训练模式。

图片

其中,集合通信(Collective communication)广泛运用在并行计算和分布式深度学习中,每台主机计算或训练好的参数通过集合通信进行全局更新和同步,随着数据量和集群规模增大,集合通信将成为性能瓶颈。

图片

关于AllReduce集合通信原语

AllReduce是深度学习领域最常用的集合通信原语–归约操作,主要用于多机/多卡之间的梯度同步。提到AllReduce,就不得不说一下MPI(Message Passing Interface),MPI是一个定义了多个原语的消息传递接口,主要被用于多进程间的通信,OpenMPI是MPI的常用实现之一,在MPI中实现了多种AllReduce算法。以下我们先来看一下,AllReduce算法及其实现。

AllReduce通信从所有主机收集向量,以元素级方式“集合”向量,并将集合结果广播给它们(所谓“集合”主要包括求和、求最大、最小值等)。

图片

近年来涌现了非常多的AllReduce算法,其中,比较经典的算法有:PS算法(Parameter server)、经典树形算法(Recursive halving and doubling)、Butterfly算法、Ring算法、Rabenseifner算法等。

PS算法(Parameter server),这是最直观的一种实现方式,Reduce + Broadcast,Parameter server作为中心节点,先全局Reduce接收所有其他节点的数据,经过本地计算后,再Broadcast回所有其他节点。该算法优点是简单、低时延;最大的缺点就是Parameter server节点会成为带宽瓶颈,存在N:1的incast问题。

图片

经典树形算法,如果节点数是2的幂,所需通信步数是2*log2N。相比PS算法,最大的改进是规避了单节点的带宽瓶颈。该算法优点是简单、无单点瓶颈;缺点是时延高,不能同时利用发送和接收带宽。

图片

如果节点数不是2的幂,则会先调整至符合2的幂后,再进行上述经典树形算法的操作。

图片

Butterfly算法,通信的每步中,所有节点的发送和接收带宽都被利用起来了,如果节点数是2的幂,所需通信步数只有log2N。优点是所有节点的发送和接收带宽充分利用;缺点是大数据块时性能不理想,容易出现时延抖动。

图片

Ring算法默认把每个节点的数据切分成N份,可以充分利用所有节点的发送和接收带宽,同时也改善了大数据块时的性能和时延抖动问题。Ring算法更容易实现高带宽,发送的数量量少,集合大数据的性能更好,但时延也更高。

Ring算法在做AllReduce算法时,分两个环节,分别是Reduce-scatter和AllGather。

图片

图片

递归加倍算法,步骤少,整合小数据时性能好,整合大数据块时性能不理想,容易出现时延抖动。

图片

Rabenseifner算法,步骤数相对较少,发送数量量少,聚合大数据的性能较好。

图片

上面简单总结了一下各种AllReduce算法实现,由于AllReduce算法的优化空间越来越少,业内逐渐转移到了拓扑感知的AllReduce算法,即在特定的拓扑上优化Allreduce算法,如2D-Torus算法、2D-Mesh算法、3D-Torus算法、Double binary tree算法等。

其中,Double binary tree(双二叉树)算法在多层CLOS架构组网中也有比较多的应用,前面提到经典树形组网优点是简单、无单点瓶颈,缺点是时延高,不能同时利用发送和接收带宽,为了充分利用带宽,提出了Double binary tree算法。

假设一共有N个节点,MPI会构建两个大小为N的树T1和T2,T1的中间节点在T2中是叶节点,T1和T2同时运行,各自负责消息M的一半,这样每个节点的双向带宽可以都被利用到。以十台机器为例,构建出的结构如下:

图片

下面是一个32节点的双二叉树结构:

图片

图片

为什么要用到在网计算呢?

在一个多层CLOS架构的网络中进行集合通信操作,传统方案和在网计算方案的比较如下图所示。在网计算时需要传输的数据量大大减少,提升了数据传输的效率,同时也卸载了端侧节点上CPU的计算量。

图片

图片

在网计算模式

为了加速集合通信操作,业内尝试将集合通信操作卸载到网络路径设备中执行,主要实现思路有两个,基于网卡的在网计算和基于交换机的在网计算。

基于网卡的集合操作卸载,处理器提交集合操作请求到网卡队列,由网卡接管集合操作,当操作完成后,网卡发送完成事件以通知处理器。相对于基于软件的集合操作,这种方法主要有两个方面的优点:一是提供了非阻塞的操作方式,处理器在提交操作请求后,可以继续处理其它计算任务,这种方式有利于计算和通信的重叠,从而减少程序整体执行时间;二是集合操作中的计算大多是累加,求和等操作,适合采用SIMD的处理模式,与网卡的处理架构非常匹配,相对于软件执行能够获得较好的加速效果。但基于网卡的集合操作加速卸载也有两方面不足:一是无法减少集合操作在网络中的流量;二是其性能和网络拓扑的选择关系密切。由此,基于交换机的MPI_AllReduce操作应运而生。

基于交换机的集合操作加速,是指在交换芯片中加入对集合操作的支持,将集合操作卸载到各级交换机上完成,这将带来以下两个方面的收益:一是集合操作的计算部分由交换机完成,处理器资源得到一定程度的释放;二是对于规约操作,每级交换机在完成计算后,其出端口流量相比入端口流量有所降低,有利于提高整体网络性能。

英伟达的Quantum InfiniBand交换机支持可扩展分层聚合和缩减协议(SHARP,Scalable Hierarchical Aggregation and Reduction Protocol)实现在网计算,另外在英伟达最新发布的产品中,在NVSwitch芯片内通过硬件加速器也可以支持SHARP。在新版NCCL中除了支持Ring和Tree(双二叉树)的算法,还支持针对SHARP的CollNet算法。

除英伟达,中国移动研究院发布了《在网计算(NACA)技术白皮书(2023)》,华为也提出了NetReduce架构的在网计算交换机实现。

来看一下SHARP技术实现,在多交换机组成的机群环境下,由聚合管理器(Aggregation Manager)在物理拓扑中构造一个逻辑的SHARP树,由SHARP树中的多个交换机并行分布式处理集合类通信操作。当主机需要进行全局通信,如AllReduce时,所有主机把通信数据提交到各自连接的交换机,第一级交换机收到数据后,会使用内置的引擎对数据进行计算和处理,然后把结果数据提交到SHARP树的上一级交换机,上一级交换机也使用自己的引擎对从若干个交换机收上来结果数据做聚合处理,并继续向SHARP树的上一级递交,到达SHARP树的根交换机后,根交换机做最后计算并把结果回发给所有的主机节点。通过SHARP方式,只需发送一次数据,接收最终结果,没有中间结果,从而可以有效的降低网络通信量,减少网络拥塞,减少跳数,提供更低的延迟,并提升机群系统的可扩展性。

图片

使用SHARP在网计算和不使用的对比数据。

图片

SHARP技术已发展至第四代,即SHARPv4。第一代SHARPv1出现在EDR时代,能够支持256字节的完整硬件卸载。第二代SHARPv2在HDR时代推出,支持更大的message size,如1GB至2GB,以满足AI训练时大量数据通信的需求,这对深度学习和神经网络等AI应用性能提升显著。到了SHARPv3,在交换机中集成了更多的引擎。每个ASIC中集成了数十个SHARP引擎,使得性能比上一代提升了32倍,由于每个ASIC中都有多个引擎,这使得SHARPv3非常适合多租户的公有云场景。在这种场景下,每个租户可以申请到自己独立的SHARP引擎,满足不同租户的数据请求,从而在多租户场景下很好地满足云用户的需求。SHARPv4的详细信息暂时没有看到。

图片

硬件加速的在网计算实现方案

  • 使用ASIC作为加速器:英伟达的IB交换机和NVSwitch都采用这种架构。

  • 使用FPGA作为加速器:NetReduce架构将FPGA接在交换机内部(下面左图),而Panama架构将FPGA连接在主机和交换机之间(下面右图)。

图片

  • 另外,HiNA研究组在ACM国际超级计算会议ICS上提出了Roar架构,在标准路由器中添加一个处理单元(Roar’s Unit)作为加速器,需要聚合的数据被路由进处理单元,聚合结果发送回输入单元,再通过输出端口被发送到下一跳,该架构专门为RDMA网络定制。

图片

  • 中国移动的NACA白皮书规定了NACA的技术架构,但没有明确硬件上的技术实现模式。

图片

P4可编程交换机也是其中的一个可能的实现思路,也有个别厂家在做相应的工作,但是P4可编程交换芯片供应问题、计算性能问题、灵活性、实际应用效果等方面还有待检验。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值