人工智能模型的分布式训练技术

作者:焦臻桢、张晓普(中国信息通信研究院泰尔英福iF-Labs)唐忠桓、李莉(同济大学自主智能无人系统全国重点实验室)

12月20日,在第二届算力网络与数字经济发展论坛上,“上海算力交易平台2.0”正式发布。该平台由国家(上海)新型互联网交换中心牵头建设,依托先进的算网大脑技术、可靠的“星火·链网”区块链技术,紧跟“东数西算”等国家战略在算力网络发展导向的重要布局,积极落实《算力基础设施高质量发展行动计划》“算力浦江”行动计划重点任务,为企业提供便捷、灵活的流量交换服务,目前已累计接入通算资源6334.859P,超算资源102.024P,智算资源1816.987P。

算力已经成为数字经济时代的关键推动力。《“十四五”数字经济发展规划》中明确提出要加快实施“东数西算“”工程,通过推动云网协同发展,提升数据中心跨网络、跨地域数据交互的能力,对算力进行合理调度和优化配置。随着人工智能的迅猛发展,对算力的需求正在持续扩大,例如大模型训练等各类新型需求也在不断涌现,准确的认清需求,并从需求中发现并抓住机会,有助于算力网络建设参与方更好的找准定位、发挥价值。本文对人工智能模型的分布式训练这一技术机遇进行介绍,为大家揭开其中隐藏的挑战和机遇。

1.算力荒:大模型绕不开的大难题

自从ChatGPT引爆大模型发展热潮,众多科技企业前赴后继,纷纷投入大模型研发中。然而,这波创业浪潮中鲜有小微初创企业的身影,甚至一些堪称“准独角兽”规模的企业,也仅集中在大模型的下游应用创新或微调中,其实,大模型背后的神经网络技术早已颇为普及;国内拥有众多专业人才,有能力独立完成模型的设计、搭建和训练。

由此,一类观点认为:大模型创新的主要门槛并不在算法与技术,而在于训练一个大模型、完成思路验证和检验所需的超大规模算力。算力,成为这条赛道的一面墙。

2.面向大模型的分布式方法论

当单点能力不足成为主要瓶颈后,大家总会去思考集群化、分布式的解决之道。从“东数西算”工程和“全国一体化算力网络”,到云边端协同一体化计算框架,再到群智计算以及Web3激励式计算聚合等。我们总能窥见“聚少成多”的底层逻辑。

然而,相比于传统计算任务,让分布式系统适配于大模型规模的神经网络训练却绝非一件简单的事。尤其是把分布式协作的范围从单个集群内部的局域网内协作,放大到城域网、广域网范围下多个中远距离集群间协作,所产生的挑战将更加复杂。

接下来我们将从与分布式训练的两个核心部分入手,介绍模型的分布式训练,对这一挑战建立认识:

2.1分布式训练的前提:神经网络模型的分割与并行化训练

神经网络训练有前后依赖、相互耦合的特性,导致其并行化存在天然困难。以一个最基本的三层神经网络结构为例,其训练流程通常包含前向推理和反向传播两个步骤:在前向推理过程中,数据由输入层输入,在层间逐级计算传递,并在最后由输出层输出结果。随后,我们计算推理得到的结果与真实结果之间的误差,由输出层将该误差反向逐级传播计算,直到输入层。由此,我们可以得到每一层中每个参数的梯度,并由优化器根据梯度更新参数。在这一过程中,每一层的计算都依赖于其前一层(或后一层)的数据。

图1经典的神经网络训练流程

在这样的架构下,“模型平行方法”(Modelparallelism)与“数据平行方法”(Dataparallelism)是当下两种分布式训练的主要思路:

2.1.1模型平行方法

图2模型平行方法、其串行化特性以及流水线搭建案例

详细而言,模型平行训练一般包括以下几个部分:模型分割、训练流程调度优化、流水线搭建等。

为了将训练任务分散到不同计算设备的同时避免过于频繁的数据交换,需要找到适合神经网络架构的模型分割方法,当前的主流方法一般为:层间分割与层内分割。

层间分割是最直观的模型分割方式:由于神经网络模型自身是分层的,可以天然地由不同设备分别负责整个神经网络中一层或多层的训练。层内分割会对神经网络结构进行进一步地细分。不同计算设备分别负责神经网络一层或多层内的部分神经元激活函数计算以及部分矩阵(张量)运算。在层内分割下,前向推理时,负责某一层不同部分的不同计算设备,基于其所训练的神经网络架构的具体特性,获得前一层的全部或部分激活数据,并提供给下一层的全部或部分计算设备。反向传播亦与之相类似。

模型分割之外,还需要均衡各计算设备所负责的工作,避免单台设备成为整个训练流程的计算瓶颈。因此还需要采用优化方法,针对最适合现有神经网络和设备的模型分割及任务分配方式进行优化问题建模求解,找到最大化模型训练效率的优化方法。

图3层内分割与层间分割的调度优化

从整体效益看:当模型平行方法用于大规模分布式算力的协同任务时,不利于最大化发挥规模优势给效率带来的潜在提升机会。此外,由于各个节点均存储有全量训练数据,这不利于数据隐私的保护。

2.1.2数据平行方法

在采用数据平行方法进行模型分布式训练过程中,相同的模型参数被复制到各个计算节点上。在单次迭代中,每个计算节点基于各自不同的小批量数据计算局部梯度或模型更新。然后,节点间交换结果,执行聚合和广播操作,以获得新的全局模型。

图4经典的数据平行方法训练流程

数据平行训练有多种不同的模式:完全同步模式、适用于异构设备的部分同步模式、聚合参数而不是梯度的本地随机梯度下降模式、由参数服务器异步聚合梯度更新参数的完全异步模式、不要求参数完全同步的遥传通信模式等。

图5不同模型平行训练模式的训练流程对比

直观上,数据平行方法可以真正发挥分布式算力的并行化优势,该方法也是当下并行训练中更常见的方案。但其也有缺点:模型的每个可训练参数都对应一个梯度值,数据平行训练中每次梯度聚合所需传输的数据量都与模型的参数量相当。对于参数量较大的大模型而言,这一高频多次的传输带来了巨大的通信开销。

2.1.3混合平行方法

除了模型平行和数据平行方法以外,从技术实现上,目前还存在混合平行方法。这一类方法结合了数据平行训练的规模化优势和模型平行训练的低带宽消耗。一些研究将混合了层间分割、层内分割的模型平行训练以及数据平行训练方式称为3D平行训练。但相对应地,对混合平行训练的优化难度也更高。

图6混合了层间分割、层内分割的模型平行训练以及数据平行训练的3D平行训练

以上,我们对模型分拆与并行化训练进行了介绍。然而无论采用何种并行方法,在分布式训练场景中,都必须首先解决好海量数据在不同计算节点间的高速同步与传输。通信效率是分布式训练中的核心瓶颈,而当面对大模型时,这一问题则更加突出。

2.2分布式训练的保障:从本地集群到大范围跨域的数据同步

2.2.1远程直接内存访问技术(RDMA)

针对这些开销,远程直接内存访问(RDMA)技术诞生了。RDMA技术使用专用硬件读写内存数据并直接与外部通信,将数据从本地系统快速移动到远程系统的内存中,而不对操作系统、CPU增加任何负载。

图7RDMA工作原理

目前,RDMA有三种协议:InfiniBand、RoCE、iWARP。

InfiniBand是一种专为RDMA量身定做的网络协议,与TCP/IP不兼容。RoCE允许在以太网上执行RDMA协议(可分为RoCEv1和RoCEv2)。iWARP允许在TCP上执行RDMA协议,它能够运行在标准TCP/IP网络中,对硬件的要求也相对简单(只需iWARP网卡),但缺点是性能比RoCE更差。

图8RDMA协议类型

2.2.2集合通信

分布式训练任务间完成数据传输调度的方式一般可以分为点对点(Point-to-PointCommunication)和集合通信(CollectiveCommunication)。点对点通信是在两个节点之间进行通信和数据同步。集合通信是指在一组节点内进行通信完成数据同步的方式。计算集群中海量数据的同步需要采用集合通信方法。

集合通信一般包含多个Sender和Receiver,通信类型包括:Broadcast、Gather、All-Gather、Scatter、Reduce、All-Reduce、Reduce-Scatter、All-to-All等。

以数据平行训练为例,去中心化的梯度聚合需要每台计算机获得所有计算机计算得到的梯度,这一操作即需要All-Reduce,即将所有设备(All)上的信息归纳(Reduce)到所有设备(All)上。显然,直接的All-Reduce将带来极大的通信资源浪费,因为同一份数据可能会被冗余传输多次。因此,许多优化版All-Reduce算法被提出,如环状All-Reduce、基于二叉树的All-Reduce等,这些算法均能极大降低All-Reduce的带宽和延迟。

图9All-Reduce

当数据同步调度扩展到广域网范围时,现有集合通信思路将面临一些新的问题,例如重新评估各类算法在新场景下的有效性及其效率评测方法,重新建模计算节点的邻近关系等。

2.2.3算力网络

算力网络是一种网络前沿技术,其目标是构建连接算力的网络,使算力像水电一样高效流动。传统的网络设施仅仅承担信息传递的基础功能,是连接用户与计算资源的“数据通道”;而算力网络可以构建数据、计算资源、网络的一体化服务,使计算需求方在网络的帮助下,高效感知并调用远距离的算力资源,打破自身单点计算能力的局限。算力网络能够连接大范围内的算力集群实现计算任务协同,目前被视为支撑多集群间大模型跨域分布式训练的网络基础设施层最优解。

当前,算力网络的发展方兴未艾,体系架构及诸多关键技术还未形成定论,产业及标准化工作也在不断推进中。国际电信联盟(ITU)于2021年9月正式发布的算力网络框架结构标准(ITU-TY.2501:ComputingPowerNetwork–FrameworkandArchitecture)中提出,算力网络主要由四层构成,分别为算力网络资源层、算力网络控制层、算力网络服务层、算力网络编排管理层。

THE END
1.机器学习数据集合集!AiWaf-2 是一个高级的机器学习系统,使用多种模型来检测三种类别的网络行为:XSS攻击、SQL注入攻击和良性请求。该系统旨在提供高精度的威胁识别和分类,包括: GRU (门控循环单元) CNN (卷积神经网络) KNN (K-最近邻) SVM (支持向量机) RF (随机森林) https://blog.csdn.net/Kyzy_1919/article/details/144371975
2.机器学习Hinton 因通过神经网络对现代机器学习作出的奠基性贡献,获得 2024 年诺贝尔物理学奖。“将超越人的智力水平”:机器学习先驱获2024年诺贝尔物理学奖 机器学习2024-10-09 10:15 1896 划重点 012024年诺贝尔物理学奖授予美国普林斯顿大学的John Hopfield和加拿大多伦多大学的Geoffrey Hinton,以表彰他们开发了理解神经https://ailab.cn/ml/
3.训练简单的密集神经网络在本单元中,我们将了解如何训练最简单的密集神经网络(或感知器)识别手写数字,并尝试可视化网络权重以了解其工作原理。https://docs.microsoft.com/zh-cn/training/modules/intro-computer-vision-pytorch/3-train-dense-neural-networks
4.量子神经网络初体验从上述打印可以看到,此时构建的哈密顿量为对第0位量子比特执行泡利Z算符测量,且系数为-1。之所以将系数设为-1,是因为在量子神经网络的训练中,Ansatz中的参数的梯度会一直下降,同时测量值也会一直减少。如果最后收敛于-1,那么此时对应的量子态是|1?而不是|0,如下所示 https://www.mindspore.cn/mindquantum/docs/zh-CN/r0.5/initial_experience_of_quantum_neural_network.html
5.PaddlePaddle/PaddleClas:Atreasurechestforvisual基于ImageNet1k 分类数据集,PaddleClas 支持 37 个系列分类网络结构以及对应的 217 个图像分类预训练模型,训练技巧、每个系列网络结构的简单介绍和性能评估将在相应章节展现,下面所有的速度指标评估环境如下: Arm CPU 的评估环境基于骁龙 855(SD855)。 Intel CPU 的评估环境基于 Intel(R) Xeon(R) Gold 6148。 GPUhttps://openi.pcl.ac.cn/PaddlePaddle/PaddleClas/src/branch/develop/docs/zh_CN/models/ImageNet1k
6.获全美的壁纸和神经网络训练素材的网站集合获取精美的壁纸和神经网络训练素材的网站集合 天天对着电脑,也是经常要换一下屏幕的底色,让人耳目一新的感觉。本想随便在百度上找几个图片,没想到现在的图片都限制大小了,并且很多都收费了。免费的东西用惯了,只能花点时间自己去找点这样的网站,在一段时间的搜索尝试中,终于找到了几个比较ok的。这里推荐几个网站https://blog.51cto.com/u_15054047/4134143
7.python使用Tensorflow训练BP神经网络实现鸢尾花分类python所以只要给出足够多的鸢尾花花萼、花瓣数据,以及对应种类,使用合适的神经网络训练,就可以实现鸢尾花分类。 搭建神经网络 输入数据是花萼长、花萼宽、花瓣长、花瓣宽,是n行四列的矩阵。 而输出的是每个种类的概率,是n行三列的矩阵。 我们采用BP神经网络,设X为输入数据,Y为输出数据,W为权重,B偏置。有 https://www.jb51.net/article/212039.htm
8.愉快使用谷歌免费人工智能平台colab,训练你的神经网络模型,为你的言归正传,本人研究方向为音频信息隐藏,是不是很憨的方向,具体的暂时做使用神经网络做音频隐写分析。既然使用神经网络了,那肯定需要GPU资源了。总的来说就是需要一台cpu和gpu都很强劲,内存很大的工作站了。但是苦于实验室和导师现状,我一时半会搞不到GPU资源。但是天无绝人之路,谷歌提供了这个免费的平台。国内https://www.shanyemangfu.com/colab.html
9.神经网络的训练方法专利名称::神经网络的训练方法技术领域::本发明一般地涉及人工神经网络及其操作,尤其但不专门涉及一种改进的神经网络训练方法和/或系统,该方法和/或系统使得神经元能够在训练过程屮根据需要增加到网络中。背景技术::随着过去十年间产生的数据集的扩增和规模,人们更感兴趣于开发能够用于找到数据集内的一些关系、也就是https://www.xjishu.com/zhuanli/55/200680042779.html
10.最新训练神经网络的五大算法腾讯云开发者社区神经网络模型的每一类学习过程通常被归纳为一种训练算法。训练的算法有很多,它们的特点和性能各不相同。 问题的抽象 人们把神经网络的学习过程转化为求损失函数f的最小值问题。一般来说,损失函数包括误差项和正则项两部分。误差项衡量神经网络模型在训练数据集上的拟合程度,而正则项则是控制模型的复杂程度,防止出现过https://cloud.tencent.com/developer/article/1090593
11.不敲代码,也能训练深度神经网络?试试DeepCognition不敲代码,也能训练深度神经网络?试试DeepCognition 提起AI与编程,很多人的脑海里,浮现出的画面,也许是这样子的。 目前,即便是代码量要求较小的自动化 AI 模型训练框架,比如 AutoML/AutoKeras等,使用它们,也需要一定的的编程基础,需要编写许多行的代码。https://www.jianshu.com/p/4454893ad7eb
12.MIT史上首次用AI控制动物大脑活动!技术前沿洞察新闻频道找到神经网络的“子网络”,让神经网络训练更快更好 如今,我们生活中几乎所有基于人工智能的产品都依赖于有自主学习并标记数据能力的“深度神经网络”。 然而,为了更好地学习,神经网络通常需要需要大量的数据集进行大型的训练——这一训练过程耗时长、需要配备昂贵的GPU,有时还需要定制设计的硬件。这些客观因素导致深度https://news.hexun.com/2019-05-14/197178826.html
13.字节跳动破局联邦学习:开源Fedlearner框架,广告投放增效209%联邦学习技术本质上是为了帮助联邦双方更好地训练模型。不同公司由于此前积累的数据类型特征不同,落地应用场景不同,会采用不同的模型训练方式。 常见的模型训练包括神经网络模型训练、树模型训练、线性回归模型训练等等。其中,神经网络训练模型最常见的落地应用场景是推荐,包括个性化内容推荐、广告推荐等等,而树模型更多在https://maimai.cn/article/detail?fid=1550604028&efid=zqj9rqK7Yf_Us-lu-0Wnmg
14.清华大学交叉信息研究院然而,研究人员发现深度学习网络常常倾向于寻找“捷径”的解决方案,当数据分布与训练集有稍许偏差时,这样的捷径解常常会出现灾难性的错误。该研究发现,当人们可以根据输入信号中的关键成分提供一个额外的“引导”特征时,深度神经网络可以成功避免捷径,这个“引导”特征可以是一个对于输出目标的粗略估计。这样的“引导”是https://iiis.tsinghua.edu.cn/show-9635-1.html
15.基于一维宽核卷积神经网络—长短时记忆网络的单导脑电信号睡眠本文从数据类不均衡处理及神经网络模型训练优化两方面开展研究工作[18-19],构建高性能的睡眠状态识别模型,以达到准确分类睡眠状态的目的。首先,针对N1样本量与其他状态样本量不均衡的问题,采用合成少数过采样技术(synthetic minority over sampling technique,SMOTE)联合托梅克联系对(Tomek link,Tomek)算法(SMOTE-Tomek)对https://www.cjebm.com/article/10.7507/1001-5515.202204021