CN113723552B - 大规模多机多卡预训练方法、系统、设备及服务器集群 - Google Patents
大规模多机多卡预训练方法、系统、设备及服务器集群 Download PDFInfo
- Publication number
- CN113723552B CN113723552B CN202111042840.0A CN202111042840A CN113723552B CN 113723552 B CN113723552 B CN 113723552B CN 202111042840 A CN202111042840 A CN 202111042840A CN 113723552 B CN113723552 B CN 113723552B
- Authority
- CN
- China
- Prior art keywords
- training
- machine
- card
- scale
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于分布式训练技术领域,公开了一种大规模多机多卡预训练方法、系统、设备及服务器集群,在多个服务器上部署多机多卡,进行同构机型和异构混合机型的多机多卡并行;基于slurm框架进行大规模多机多卡训练及评测,以无监督特征学习BYOL算法为例予以实施;基于Horovod框架进行大规模多机多卡训练及评测,以视频语义无监督学习PRP算法予以实施;所述训练包括环境配置、任务配置、通信配置、任务加速。本发明涉及的多机多卡大规模训练实验,batchsize之高,训练时间压缩之短,验证鹏城云脑I大科学装置的并行能力,拓展并行训练的集群规模,对于利用超大规模集群开展分布式训练具有指导意义。
Description
技术领域
本发明属于分布式训练技术领域,尤其涉及一种大规模多机多卡预训练方法、系统、设备及服务器集群。
背景技术
目前,针对我国对于AI开源开放共享创新平台的建设需求,鹏城实验室推出了鹏城云脑一期平台,鹏城云脑I是以英伟达GPU服务器为基础设施建设的一套大型集群系统,作为AI大科学装置用以支撑构造更好的AI生态,鹏城云脑I具备集群管理工具和资源调度平台,支持在GPU集群中运行AI任务。在智慧城市的建设升级过程中,数据量急剧增长,而且随着人工智能任务越来越复杂、越来越多样,模型规模也越来越大,目前实际应用中面临很多利用大规模数据对大模型进行训练的需求,利用多机多卡开展分布式训练是应对此类需求的必要途径。因此,基于鹏城云脑I进行大规模多机多卡分布式训练,能够显著地提高模型训练效率。
就目前分布式训练使用的资源规模而言,OpenMMLab复现的BYOL算法公开的数据显示,最高仅用到128块GPU卡进行测试,batchsize最大为4096,目前国内外很少有单位能完成强大算力的大规模多机多卡运算,且超大数据集大batchsize训练时存在模型精度下降问题。另外,如何有效利用混合异构机器进行并行训练也是并行计算领域的一个难点,对于实际应用具有重要意义。因此,亟需一种新的大规模多机多卡预训练方法。
通过上述分析,现有技术存在的问题及缺陷为:目前多机多卡数据训练中,现有技术很少有单位能完成强大算力的大规模多机多卡运算,且超大数据集大batchsize训练时存在模型精度下降问题;同时如何有效利用混合异构机器进行并行训练也是并行数据计算领域的一个难点。
解决以上问题及缺陷的难度为:大规模多机多卡训练时的通信瓶颈和异常监测问题,大batchsize训练时如何选用合适的参数调整策略使得模型收敛且精度有所提升,保证稳定运行的同时确保算法性能。另外,随着技术发展和需求不同,不能保证资源池里都为同种类型机器,不同类型机器配置不同,怎样有效利用混合异构机器进行并行训练。
解决以上问题及缺陷的意义为:更大规模集群的使用和模型成功训练极大地压缩了模型训练时间,提升了模型精度,为利用超大规模数据训练和使用通用大模型提供了技术途径,在保证算法性能的同时可以支撑更多的下游任务;混合异构机器的并行训练可提升资源利用率,进一步提升并行训练规模。
发明内容
针对现有技术存在的问题,本发明提供了一种大规模多机多卡预训练方法、系统、设备及服务器集群,尤其涉及一种基于鹏城云脑I的大规模多机多卡(GPU)预训练方法、系统、设备及服务器集群。
本发明是这样实现的,一种大规模多机多卡预训练方法,包括:
在多个服务器上部署多机多卡,进行同构机型和异构混合机型的多机多卡并行;
基于slurm框架进行大规模多机多卡训练及评测,以无监督特征学习BYOL算法为例予以实施;
基于Horovod框架进行大规模多机多卡训练及评测,以视频语义无监督学习PRP算法予以实施;
所述训练包括环境配置、任务配置、通信配置、任务加速等。
具体包括:
步骤一,无监督特征学习:采用BYOL算法进行多机多卡部署;
步骤二,视频语义无监督学习:采用PRP算法进行多机多卡部署;
步骤三,多机多卡预训练:进行多机多卡混合机型训练。
进一步,步骤一中,进一步包括:
使用N台DGX2共16×N块V100,采用无监督特征学习BYOL算法对Imagenet2012数据集进行训练,获得预训练模型,将训练时间从7天压缩到5小时6分钟,所述方案包括:设置一个CPU服务器作为主节点,其他GPU服务器作为计算节点,主节点和其中一台GPU服务器共享;主节点和各子节点提交相应部署脚本。
进一步,步骤一中,进一步包括:
(1)在云脑I上基于slurm进行多机部署,由于控制节点,即主节点不参与计算,仅为控制节点申请CPU即可;
若服务器机型为DGX2,则所述节点参数的配置情况,包括:
1)以镜像的方式为每个节点配置运行环境;
2)控制节点的配置为:控制节点任务不申请GPU,CPU核数申请6核,内存申请100G,并设置为主干任务;子节点的配置为:每个子节点任务申请16个GPU,CPU核数申请80核,内存申请1T;根据控制节点和子节点共享一台服务器,总共使用的机器数量等于子节点的数量;
3)控制节点和子节点均采用IB/RDMA进行多机通信,将内存的一半配置为共享内存;
4)配置启动命令和训练脚本,开始运行并行训练任务。
(2)基于debug模式配置多机slurm环境。
通过debug模式对DGX2的机器进行调试:通过SSH进入到DGX2上执行的任务中;若环境中没有安装slurm相关软件,则进行安装,若已经预先安装好slurm相关软件,则通过slurmd-V和slurmd-C指令进行验证,并查看CPU核数;在云脑版slurm多机部署中,修改masterip.txt和slaveip.txt,在masterip.txt中添加主节点,即控制节点的ip;在slaveip.txt中添加子节点,即计算节点的ip,并修改slurm_autoconfig.sh脚本中的ControlMachine变量,再执行bash slurm_autoconfig.sh脚本,即可完成多机slurm环境的配置。
(3)启动云脑I高速多机通信IB/RDMA
1)选用Nvidia NGC19.10作为基础镜像,镜像链接为:https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel_19-10.html#rel_19-10;
2)在训练脚本中指定IB网卡:
①os.environ['NCCL_IB_HCA']="mlx5_0";
②os.environ['NCCL_DEBUG']="INFO"。
(4)大规模任务的加速方案
采用如下措施对训练过程进行加速:
1)数据集存储加速:采用开辟一个专用数据集存储空间并挂载内存的方式,在不重启的情况下一直使用数据集,通过加速数据读取达到加速训练的目的;
2)采用IB/RDMA进行多机通信,通过加速训练中的多台机器之间的数据交互过程,达到提高训练速度的目的;
3)采用Apex混合精度的方式进行训练,占用显存相较单精度浮点型减少一半,因此也可以将batchsize扩大一倍;
4)采用适合大规模大batchsize情况的优化器,例如lars、lamb、yogi等,通过优化器加速达到提高训练速度的目的;
5)针对slurm优化了CPU核数的分配,在总核数一定的情况下,尽可能提高CPU分配job效率。
(5)基于步骤(1)~步骤(4),将BYOL算法的slurm框架下多机多卡并行版本进行大规模多机多卡的模型预训练。
(6)利用单机多卡对BYOL算法的预训练模型进行评测。
BYOL算法作者以resnet50为基网、总batchsize为4096训练200轮得到预训练模型,并在预训练模型的基础上使用单机8卡、总batchsize为256进行ImageNet LinearClassification任务的评测,在评测任务训练的100轮中,验证集上最高的top1-accuracy为67.10。
所述评测使用的预训练模型为:使用8台DGX2共128块V100、总batchsize为12288、基网resnet101训练200轮得到的预训练模型;在预训练模型的基础上采用单机16卡、总batchsize为2048进行ImageNet Linear Classification任务的评测,在评测任务训练的100轮中,验证集上最高的top1-accuracy为69.294。
进一步,步骤二中,所述视频语义无监督学习,包括:
(1)将Horovod框架部署到鹏城云脑I上。
通过镜像在节点上完成Horovod所需的软件环境的安装部署,并设置好ssh免密登陆;在启动任务时选择云脑I中已经安装好Horovod所需的软件的镜像;在任务启动命令中加入ssh登录脚本的执行,完成多机ssh免密登陆。
(2)从部署环境后到开始训练的中间步骤,除主节点可以申请GPU同时作为计算节点以外,节点参数配置、启动云脑I高速多机通信IB/RDMA和大规模任务的加速方案同上。
(3)将PRP算法改为Horovod框架下的多机多卡并行版本,基于步骤(1)~步骤(2),开展大规模多机多卡的模型预训练。
进一步,步骤(1)中,所述多机免密配置脚本,包括:
先生成秘钥,包括私钥和公钥,将秘钥拷贝至云脑平台的共享存储目录下,并在该目录下新建ssh登录的shell脚本,脚本内容为将秘钥分发至各个节点根目录.ssh路径下,并修改相应权限;该步骤方便后期通过云脑debug模式,免密登录各任务所在机器进行调试。
进一步,步骤三中,所述多机多卡预训练,包括:
在云脑I平台,采用多队列申请方式实现不同机型的卡混合训练,修改源文件进行重新挂载,通过脚本编写去获得源文件的pod_id,进行每个队列的ip和主机名的完善,这样重新挂载进去之后,每个队列中的/etc/hosts就会有全部队列的ip和主机名,保证机器间可通信。
本发明的另一目的在于提供一种应用所述大规模多机多卡预训练方法的大规模多机多卡预训练系统,所述大规模多机多卡预训练系统包括:
无监督特征学习模块,用于采用BYOL算法进行多机多卡部署;
视频语义无监督学习模块,用于采用PRP算法进行多机多卡部署;
多机多卡预训练模块,用于进行多机多卡混合机型训练。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
(1)无监督特征学习:采用BYOL算法进行多机多卡部署;
(2)视频语义无监督学习:采用PRP算法进行多机多卡部署;
(3)多机多卡预训练:进行多机多卡混合机型训练。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
(1)无监督特征学习:采用BYOL算法进行多机多卡部署;
(2)视频语义无监督学习:采用PRP算法进行多机多卡部署;
(3)多机多卡预训练:进行多机多卡混合机型训练。
本发明的另一目的在于提供一种信息数据处理服务器集群,所述信息数据处理服务器集群用于实现所述大规模多机多卡预训练系统。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的大规模多机多卡预训练方法,采用25台DGX2共400块V100完成了测试,batchsize最高为76800,目前国内外很少有单位能完成如此强大算力的大规模多机多卡运算。本发明中涉及的多机多卡大规模训练实验,batchsize之高,训练时间压缩之短,既验证了鹏城云脑I大科学装置的并行能力,又进一步拓展了并行训练的集群规模,对于利用超大规模集群开展分布式训练的可行性和具体实施办法具有极大的指导意义,同时,模型精度在预训练之后进行的下游任务评测上也表现出很好的性能。涉及的异构混合机型训练方案,为基于混合异构平台开展大规模的模型训练提供了一种实现思路。
本发明提供的无监督特征学习应用实例的实施情况如下:
(1)对标工作为以resnet50为基网、总batchsize为4096训练200轮得到预训练模型,并在预训练模型的基础上进行ImageNetLinearClassification任务的评测,在评测任务中,总共训练100轮,采用单机8卡以及总batchsize为256,在验证集上得到的最高top1精度为67.10;
(2)本发明以resnet101为基网、总batchsize为12288训练200轮得到预训练模型,并在预训练模型的基础上进行ImageNetLinearClassification任务的评测,在评测任务中,总共训练100轮,采用单机16卡、总batchsize为2048进行测试,在验证集上得到的最高top1精度为69.294;
(3)采用和作者一致的参数,本发明在验证集上得到的最高top1精度为67.068,而作者公开的最高数据为67.10,两者基本一致。
(4)对于视频语义无监督学习的应用,由于PRP算法暂无多机多卡程序,因此,对原单机多卡程序进行了修改,完成多机多卡训练和测试。
本发明基于鹏城云脑I平台,提出并实现了大规模多机多卡分布式训练方法,成功实现了同构机型和异构混合机型的多机多卡并行。分别基于slurm框架和Horovod框架实现了BYOL算法和PRP算法的大规模多机多卡训练及评测的全过程,包括环境配置、任务配置、通信配置、任务加速等,极大地缩短了大模型在大数据集上的训练时间,同时也进一步扩大了参与训练的机器规模,两套多机多卡大规模运算算法的训练时间压缩均达到预期目标。
同机型多机多卡并行的完成情况为:
(1)使用25台DGX2共400块V100,部署slurm框架,配置多机并行环境,结合多种加速策略,采用无监督特征学习BYOL算法,对Imagenet2012数据集进行训练,获得预训练模型,将训练时间从7天压缩到5小时6分钟,完成预期目标;
(2)使用14台DGX2共224块V100,部署Horovod框架,配置多机并行环境,结合多种加速策略,采用视频语义无监督学习PRP算法,对Kinetics400数据集进行训练,将训练时间从10天压缩到11小时42分钟,完成预期目标。
(3)对于混合机型,如云脑I上的DGX1、DGX2、AGX等机型,实现了以上两个算法的多机型的混合训练。
本发明的关键点是:
(1)基于鹏城云脑I平台,提出了大规模多机多卡训练方法,成功实现了同构机型和异构混合机型两种情况下的多机多卡并行,分别基于slurm框架和Horovod框架实现了BYOL算法和PRP算法的大规模多机多卡训练及评测的全过程,极大地缩短了大模型在大数据集上的训练时间;
(2)针对大batchsize情况下训练loss不收敛的问题,采用适当的优化器如lars、lamb、yogi等,以及合适的参数调整策略,解决了超大数据集大batchsize训练时的模型精度下降问题,并进一步拓展了参与训练的机器数量和batchsize大小,提升了模型精度;
(3)采用IB/RDMA进行多机通信,并基于Apex的混合精度加速进行训练,进一步加快了训练速度和减少了资源消耗;
(4)提出了一种基于DGX2、DGX1和AGX多种机型混合异构平台的分布式训练方法,便于在资源受限的情况下充分利用已有异构设备开展多机多卡并行训练,也为后续基于混合异构平台开展更大规模的模型训练提供了思路和参考。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的大规模多机多卡预训练方法流程图。
图2是本发明实施例提供的云脑I混合机型训练多队列申请机制示意图。
图3是本发明实施例提供的大规模多机多卡预训练系统结构框图;
图中:1、无监督特征学习模块;2、视频语义无监督学习模块;3、多机多卡预训练模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明的保护范围。
针对现有技术存在的问题,本发明提供了一种大规模多机多卡预训练方法、系统、设备及服务器集群,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的大规模多机多卡预训练方法包括以下步骤:
S101,无监督特征学习:采用BYOL算法进行多机多卡部署;
S102,视频语义无监督学习:采用PRP算法进行多机多卡部署;
S103,多机多卡预训练:进行云脑I混合机型训练。
本发明实施例提供的云脑I混合机型训练多队列申请机制示意图如图2所示。
如图3所示,本发明实施例提供的大规模多机多卡预训练系统包括:
无监督特征学习模块1,用于采用BYOL算法进行多机多卡部署;
视频语义无监督学习模块2,用于采用PRP算法进行多机多卡部署;
多机多卡预训练模块3,用于进行云脑I混合机型训练。
下面结合具体实施例对本发明的技术方案作进一步描述。
实施例
1、使用鹏城云脑I进行多机多卡(GPU)并行训练;
对于AI开源开放共享创新平台的建设需求,鹏城实验室推出了鹏城云脑一期平台,鹏城云脑I是以英伟达GPU服务器为基础设施建设的一套大型集群系统,作为AI大科学装置用以支撑构造更好的AI生态,鹏城云脑I具备集群管理工具和资源调度平台,支持在GPU集群中运行AI任务。在智慧城市的建设升级过程中,数据量急剧增长,而且随着人工智能任务越来越复杂、越来越多样,模型规模也越来越大,目前实际应用中面临很多利用大规模数据对大模型进行训练的需求,利用多机多卡开展分布式训练是应对此类需求的必要途径。因此,基于鹏城云脑I进行大规模多机多卡分布式训练,能够充分挖掘其集群优势和并行化能力,显著地提高模型训练效率,提升模型训练效果,充分发挥大科学装置的作用。
基于鹏城云脑I的大规模多机多卡训练任务主要目标有两个:第一个为无监督特征学习,采用BYOL算法对Imagenet2012数据集(约120多万图片)进行训练,将训练时间从7天压缩到0.25天;第二个为视频语义无监督学习,采用PRP算法对Kinetics 400数据集(约5000万帧短视频)进行训练,将训练时间从10天压缩到0.5天。
本发明提供的大规模多机多卡预训练方法,采用25台DGX2共400块V100完成了测试,batchsize最高为76800,目前国内外很少有单位能完成如此强大算力的大规模多机多卡运算。本发明中涉及的多机多卡大规模训练实验,batchsize之高,训练时间压缩之短,既验证了鹏城云脑I大科学装置的并行能力,又进一步拓展了并行训练的集群规模,对于利用超大规模集群开展分布式训练的可行性和具体实施办法具有极大的指导意义,同时,模型精度在预训练之后进行的下游任务评测上也表现出很好的性能。涉及的异构混合机型训练方案,为基于混合异构平台开展大规模的模型训练提供了一种实现思路。
本发明提供的无监督特征学习应用实例的实施情况如下:
(1)对标工作为以resnet50为基网、总batchsize为4096训练200轮得到预训练模型,并在预训练模型的基础上进行ImageNetLinearClassification任务的评测,在评测任务中,总共训练100轮,作者采用单机8卡以及总batchsize为256,在验证集上得到的最高top1精度为67.10;
(2)本发明以resnet101为基网、总batchsize为12288训练200轮得到预训练模型,并在预训练模型的基础上进行ImageNetLinearClassification任务的评测,在评测任务中,总共训练100轮,采用单机16卡、总batchsize为2048进行测试,在验证集上得到的最高top1精度为69.294;
(3)采用和作者一致的参数,本发明在验证集上得到的最高top1精度为67.068,而作者公开的最高数据为67.10,两者基本一致。
(4)对于视频语义无监督学习的应用,由于PRP算法暂无多机多卡程序,因此,对原单机多卡程序进行了修改,完成多机多卡训练和测试。
本发明基于鹏城云脑I平台,提出并实现了大规模多机多卡分布式训练方法,成功实现了同构机型和异构混合机型的多机多卡并行。分别基于slurm框架和Horovod框架实现了BYOL算法和PRP算法的大规模多机多卡训练及评测的全过程,包括环境配置、任务配置、通信配置、任务加速等,极大地缩短了大模型在大数据集上的训练时间,同时也进一步扩大了参与训练的机器规模,两套多机多卡大规模运算算法的训练时间压缩均达到预期目标。
同机型多机多卡并行的完成情况为:
(1)使用25台DGX2共400块V100,部署slurm框架,配置多机并行环境,结合多种加速策略,采用无监督特征学习BYOL算法,对Imagenet2012数据集进行训练,获得预训练模型,将训练时间从7天压缩到5小时6分钟,完成预期目标。
(2)使用14台DGX2共224块V100,部署Horovod框架,配置多机并行环境,结合多种加速策略,采用视频语义无监督学习PRP算法,对Kinetics400数据集进行训练,将训练时间从10天压缩到11小时42分钟,完成预期目标。
(3)对于混合机型,如云脑I上的DGX1、DGX2、AGX等机型,实现了以上两个算法的多机型的混合训练。
2、本发明是在多个服务器上采用多机多卡进行运行。
目前鹏城云脑I上有三种服务器机型,DGX1、DGX2、和AGX,具体参数配置如表1所示。
表1服务器配置
| 机型 | IB网卡 | 功率 | CPU核数 | 内存 | V100 |
| DGX2 | 每台8个 | 350W | 96核 | 1.5T | 单机16卡 |
| DGX1 | 每台2个 | 163W | 80核 | 0.5T | 单机8卡 |
| AGX | 每台2个 | 300W | 96核 | 1.5T | 单机8卡 |
(2.1)无监督特征学习:BYOL算法多机多卡部署方案
使用N台DGX2共16×N块V100,采用无监督特征学习BYOL算法对Imagenet2012数据集进行训练,获得预训练模型,将训练时间从7天压缩到5小时06分钟。大致方案为:设置一个CPU服务器作为主节点,其他GPU服务器作为计算节点,主节点可以和其中一台GPU服务器共享;主节点和各子节点提交相应部署脚本。
具体部署流程如下:
101.在云脑I上基于slurm进行多机部署,由于控制节点(主节点)不参与计算,仅需要为控制节点申请CPU即可;
以DGX2机器为例,来说明节点参数的详细配置情况。
(1)以镜像的方式为每个节点配置运行环境。
(2)控制节点的配置为:控制节点任务不申请GPU,CPU核数申请6核,内存申请100G,并设置为主干任务;子节点的配置为:每个子节点任务申请16个GPU,CPU核数申请80核,内存申请1T。根据控制节点和子节点可以共享一台服务器,总共使用的机器数量等于子节点的数量。
(3)控制节点和子节点均采用IB/RDMA进行多机通信,将内存的一半配置为共享内存。
(4)配置启动命令和训练脚本,开始运行并行训练任务。
102.基于debug模式配置多机slurm环境。
通过debug模式对DGX2的机器进行调试。首先,通过SSH进入到DGX2上执行的任务中;然后,若环境中没有安装slurm相关软件,则进行安装,若已经预先安装好slurm相关软件,则可通过slurmd-V和slurmd-C指令进行验证,并查看CPU核数;最后,在云脑版slurm多机部署中,需修改masterip.txt和slaveip.txt,在masterip.txt中添加主节点(控制节点)的ip,在slaveip.txt中添加子节点(计算节点)的ip,并修改slurm_autoconfig.sh脚本中的ControlMachine变量,再执行bash slurm_autoconfig.sh脚本,即可完成多机slurm环境的配置。
103.启动云脑I高速多机通信IB/RDMA
(1)选用Nvidia NGC19.10作为基础镜像,镜像链接为:https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel_19-10.html#rel_19-10。
(2)在训练脚本中指定IB网卡:
104.大规模任务的加速方案
采用如下措施对训练过程进行加速。
(1)数据集存储加速:采用开辟一个专用数据集存储空间并挂载内存的方式,可以在不重启的情况下一直使用数据集,通过加速数据读取达到加速训练的目的;
(2)采用IB/RDMA进行多机通信,通过加速训练中的多台机器之间的数据交互过程,达到提高训练速度的目的;
(3)采用Apex混合精度的方式进行训练,占用显存相较单精度浮点型减少一半,因此也可以将batchsize扩大一倍;
(4)采用适合大规模大batchsize情况的优化器,例如lars、lamb、yogi等,通过优化器加速达到提高训练速度的目的;
(5)针对slurm优化了CPU核数的分配,在总核数一定的情况下,尽可能提高CPU分配job效率。
105.基于上述步骤,将BYOL算法的slurm框架下多机多卡并行版本进行大规模多机多卡的模型预训练,具体运行结果如下:
表2 BYOL算法多机多卡训练结果
106.利用单机多卡对BYOL算法的预训练模型进行评测。
BYOL算法作者以resnet50为基网、总batchsize为4096训练200轮得到预训练模型,并在预训练模型的基础上使用单机8卡、总batchsize为256进行ImageNet LinearClassification任务的评测,在评测任务训练的100轮中,验证集上最高的top1-accuracy为67.10。
本发明评测使用的预训练模型为:使用8台DGX2共128块V100、总batchsize为12288、基网resnet101(比resnet50参数大)训练200轮得到的预训练模型;并在预训练模型的基础上采用单机16卡、总batchsize为2048进行ImageNet Linear Classification任务的评测,在评测任务训练的100轮中,验证集上最高的top1-accuracy为69.294,与原作者相比,模型性能有一定的提升。
表3 ImageNet Linear Classification任务评测结果
(2.2)PRP算法多机多卡部署方案
201.将Horovod框架部署到鹏城云脑I上。
首先,通过镜像在节点上完成Horovod所需的软件环境的安装部署,并设置好ssh免密登陆。此处在启动任务时选择云脑I中已经安装好Horovod所需的软件的镜像即可,其中nccl版本选择了2.7.8。
然后,在任务启动命令中加入ssh登录脚本的执行,完成多机ssh免密登陆。其中多机免密配置脚本,执行步骤如下:先生成秘钥(包括私钥和公钥),将秘钥拷贝至云脑平台的共享存储目录下,并在该目录下新建ssh登录的shell脚本,脚本内容为将秘钥分发至各个节点根目录.ssh路径下,并修改相应权限。该步骤方便后期通过云脑debug模式,免密登录各任务所在机器进行调试。
202.从部署环境后到开始训练的中间步骤,除主节点可以申请GPU同时作为计算节点以外,节点参数配置、启动云脑I高速多机通信IB/RDMA和大规模任务的加速方案同上。
203.将PRP算法改为Horovod框架下的多机多卡并行版本,基于上述步骤,开展大规模多机多卡的模型预训练,具体运行结果如下:
表4 PRP算法多机多卡训练结果
| 集群配置 | Batchsize | IB网卡 | 数据存储 | 训练时间 |
| 8机128卡 | 36*128=4608 | 1根线 | 硬盘 | 20h 30m |
| 12机192卡 | 32*192=6144 | 1根线 | 硬盘 | 14h 7m |
| 13机208卡 | 32*208=6656 | 1根线 | 内存 | 12h 25m |
| 14机224卡 | 36*224=8064 | 1根线 | 内存 | 11h 42m |
(2.3)云脑I混合机型训练方案
在云脑I平台,采用多队列申请方式实现不同机型的卡混合训练,该方式需要解决的就是每个队列下的/etc/hosts修改问题,由于etc/hosts实际上是外部写好的源文件挂载进去的,修改了源文件进行重新挂载就能解决erc/hosts无法挂载问题,通过脚本编写去获得源文件的pod_id,进行每个队列的ip和主机名的完善,这样重新挂载进去之后,每个队列中的/etc/hosts就会有全部队列的ip和主机名,保证机器间可通信。
具体流程图如图2所示。
举例说明多队列资源申请步骤:使用5台DGX2+1台DGX1+1台AGX实现并行。队列1,申请1台DGX2,启动1个任务,设置为主节点;队列2,申请4台DGX2,启动4个任务,设置为子节点;队列3,申请1台AGX,启动1个任务,设置为子节点;队列4,申请1台DGX1,启动1个任务,设置为子节点。任务的配置参数以及训练加速方案同上。
本发明的关键点是:
(1)基于鹏城云脑I平台,提出了大规模多机多卡训练方法,成功实现了同构机型和异构混合机型两种情况下的多机多卡并行,分别基于slurm框架和Horovod框架实现了BYOL算法和PRP算法的大规模多机多卡训练及评测的全过程,极大地缩短了大模型在大数据集上的训练时间;
(2)针对大batchsize情况下训练loss不收敛的问题,采用适当的优化器如lars、lamb、yogi等,以及合适的参数调整策略,解决了超大数据集大batchsize训练时的模型精度下降问题,并进一步拓展了参与训练的机器数量和batchsize大小,提升了模型精度;
(3)采用IB/RDMA进行多机通信,并基于Apex的混合精度加速进行训练,进一步加快了训练速度和减少了资源消耗;
(4)提出了一种基于DGX2、DGX1和AGX多种机型混合异构平台的分布式训练方法,便于在资源受限的情况下充分利用已有异构设备开展多机多卡并行训练,也为后续基于混合异构平台开展更大规模的模型训练提供了思路和参考。
prp算法的单机多卡代码链接:https://github.com/yuanyao366/PRP;
prp算法的论文链接:https://arxiv.org/abs/2006.11476;
本发明的其中一个贡献在于将prp算法修改为多机多卡版本,并在鹏城云脑1上运行。
在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上;术语“上”、“下”、“左”、“右”、“内”、“外”、“前端”、“后端”、“头部”、“尾部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (6)
1.一种大规模多机多卡预训练方法,其特征在于,所述大规模多机多卡预训练方法包括以下步骤:
步骤一,基于slurm框架的多机多卡并行的无监督特征学习:采用BYOL算法进行多机多卡部署,进一步包括:
(1)在云脑I上基于slurm进行多机部署,由于控制节点,即主节点不参与计算,仅为控制节点申请CPU即可;
若服务器机型为DGX2,则节点参数的配置情况,包括:
以镜像的方式为每个节点配置运行环境;
控制节点的配置为:控制节点任务不申请GPU,CPU核数申请6核,内存申请100G,并设置为主干任务;子节点的配置为:每个子节点任务申请16个GPU,CPU核数申请80核,内存申请1T;根据控制节点和子节点共享一台服务器,总共使用的机器数量等于子节点的数量;
控制节点和子节点均采用IB/RDMA进行多机通信,将内存的一半配置为共享内存;
配置启动命令和训练脚本,开始运行并行训练任务;
(2)基于debug模式配置多机slurm环境;
通过debug模式对DGX2的机器进行调试:通过SSH进入到DGX2上执行的任务中;若环境中没有安装slurm相关软件,则进行安装,若已经预先安装好slurm相关软件,则通过slurmd-V和slurmd -C指令进行验证,并查看CPU核数;在云脑版slurm多机部署中,修改masterip.txt和slaveip.txt,在masterip.txt中添加主节点,即控制节点的ip;在slaveip.txt中添加子节点,即计算节点的ip,并修改slurm_autoconfig.sh脚本中的ControlMachine变量,再执行bash slurm_autoconfig.sh脚本,即可完成多机slurm环境的配置;
(3)启动云脑I高速多机通信IB/RDMA
选用Nvidia NGC19.10作为基础镜像;
在训练脚本中指定IB网卡:
①os.environ['NCCL_IB_HCA'] = "mlx5_0";
②os.environ['NCCL_DEBUG'] = "INFO";
(4)大规模任务的加速方案
采用如下措施对训练过程进行加速:
数据集存储加速:采用开辟一个专用数据集存储空间并挂载内存的方式,在不重启的情况下一直使用数据集,通过加速数据读取达到加速训练的目的;
采用IB/RDMA进行多机通信,通过加速训练中的多台机器之间的数据交互过程,达到提高训练速度的目的;
采用Apex混合精度的方式进行训练,占用显存相较单精度浮点型减少一半,因此将batchsize扩大一倍;
采用适合大规模大batchsize情况的优化器,通过优化器加速达到提高训练速度的目的;
针对slurm优化了CPU核数的分配,在总核数一定的情况下,尽可能提高CPU分配job效率;
(5)基于步骤(1)~步骤(4),将BYOL算法的slurm框架下多机多卡并行版本进行大规模多机多卡的模型预训练;
(6)利用单机多卡对BYOL算法的预训练模型进行评测;
步骤二,基于Horovod框架的多机多卡并行的视频语义无监督学习:采用PRP算法进行多机多卡部署,所述视频语义无监督学习,包括:
(1)将Horovod框架部署到鹏城云脑I上;
通过镜像在节点上完成Horovod所需的软件环境的安装部署,并设置好ssh免密登陆;在启动任务时选择云脑I中已经安装好Horovod所需的软件的镜像;在任务启动命令中加入ssh登录脚本的执行,完成多机ssh免密登陆;
(2)从部署环境后到开始训练的中间步骤,除主节点可以申请GPU同时作为计算节点以外,节点参数配置、启动云脑I高速多机通信IB/RDMA和大规模任务的加速方案同上;
(3)将PRP算法改为Horovod框架下的多机多卡并行版本,基于步骤(1)~步骤(2),开展大规模多机多卡的模型预训练;
步骤三,进行多机多卡混合机型训练。
2.如权利要求1所述大规模多机多卡预训练方法,其特征在于,所述步骤一进一步包括:
使用N台DGX2共16×N块V100,采用无监督特征学习BYOL算法对Imagenet2012数据集进行训练,获得预训练模型,将训练时间从7天压缩到5小时6分钟;
设置一个CPU服务器作为主节点,其他GPU服务器作为计算节点,主节点和其中一台GPU服务器共享;主节点和各子节点提交相应部署脚本。
3.如权利要求1所述大规模多机多卡预训练方法,其特征在于,步骤(1)中,所述多机免密配置脚本,包括:
先生成秘钥,包括私钥和公钥,将秘钥拷贝至云脑平台的共享存储目录下,并在该目录下新建ssh登录的shell脚本,脚本内容为将秘钥分发至各个节点根目录.ssh路径下,并修改相应权限;该步骤方便后期通过云脑debug模式,免密登录各任务所在机器进行调试。
4.如权利要求2所述大规模多机多卡预训练方法,其特征在于,步骤三中,所述多机多卡预训练,包括:
在云脑I平台,采用多队列申请方式实现不同机型的卡混合训练,修改源文件进行重新挂载,通过脚本编写去获得源文件的pod_id,进行每个队列的ip和主机名的完善。
5.一种应用如权利要求1~4任意一项所述大规模多机多卡预训练方法的大规模多机多卡预训练系统,其特征在于,所述大规模多机多卡预训练系统包括:
无监督特征学习模块,用于采用BYOL算法进行多机多卡部署;
视频语义无监督学习模块,用于采用PRP算法进行多机多卡部署;
多机多卡预训练模块,用于进行多机多卡混合机型训练。
6.一种计算机可读存储介质,存储有如权利要求1~4任意一项所述大规模多机多卡预训练方法的计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
(1)无监督特征学习:采用BYOL算法进行多机多卡部署;
(2)视频语义无监督学习:采用PRP算法进行多机多卡部署;
(3)多机多卡预训练:进行多机多卡混合机型训练。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111042840.0A CN113723552B (zh) | 2021-09-07 | 2021-09-07 | 大规模多机多卡预训练方法、系统、设备及服务器集群 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111042840.0A CN113723552B (zh) | 2021-09-07 | 2021-09-07 | 大规模多机多卡预训练方法、系统、设备及服务器集群 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN113723552A CN113723552A (zh) | 2021-11-30 |
| CN113723552B true CN113723552B (zh) | 2024-11-08 |
Family
ID=78682156
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111042840.0A Active CN113723552B (zh) | 2021-09-07 | 2021-09-07 | 大规模多机多卡预训练方法、系统、设备及服务器集群 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113723552B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115048255B (zh) * | 2022-07-28 | 2025-10-24 | 曙光信息产业股份有限公司 | 一种自动化测试方法、装置,主机及存储介质 |
| CN116800535A (zh) * | 2023-07-28 | 2023-09-22 | 中国工商银行股份有限公司 | 多台服务器之间相互免密方法及装置 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111814911A (zh) * | 2020-08-17 | 2020-10-23 | 安徽南瑞继远电网技术有限公司 | 一种基于容器化管理的电力ai训练平台及其训练方法 |
| CN112417358A (zh) * | 2020-12-03 | 2021-02-26 | 合肥中科类脑智能技术有限公司 | Ai模型训练在线实训学习系统及方法 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210158147A1 (en) * | 2019-11-26 | 2021-05-27 | International Business Machines Corporation | Training approach determination for large deep learning models |
-
2021
- 2021-09-07 CN CN202111042840.0A patent/CN113723552B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111814911A (zh) * | 2020-08-17 | 2020-10-23 | 安徽南瑞继远电网技术有限公司 | 一种基于容器化管理的电力ai训练平台及其训练方法 |
| CN112417358A (zh) * | 2020-12-03 | 2021-02-26 | 合肥中科类脑智能技术有限公司 | Ai模型训练在线实训学习系统及方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN113723552A (zh) | 2021-11-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN106940428B (zh) | 芯片验证方法、装置及系统 | |
| CN108121654B (zh) | 一种基于Docker的软件大规模测试方法 | |
| US20140245319A1 (en) | Method for enabling an application to run on a cloud computing system | |
| CN104025053B (zh) | 使用集体操作建模的消息传递接口调谐 | |
| JP6045134B2 (ja) | アプリケーション性能試験のための並列作業負荷シミュレーション | |
| WO2021155667A1 (zh) | 模型训练方法、装置及集群系统 | |
| CN112395736B (zh) | 一种分布交互仿真系统的并行仿真作业调度方法 | |
| CN113886162A (zh) | 一种计算设备性能测试方法、计算设备及存储介质 | |
| US20230205718A1 (en) | Platform with configurable pooled resources | |
| CN113515341A (zh) | 一种灵活的分布式ai训练云平台部署方法及相关平台 | |
| Lu et al. | Dlobd: A comprehensive study of deep learning over big data stacks on hpc clusters | |
| Gui et al. | Accelerating Design Space Exploration for {LLM} Training Systems with Multi-experiment Parallel Simulation | |
| CN113612818B (zh) | 一种低代码平台的工业app发布系统 | |
| CN114579250B (zh) | 一种构建虚拟集群的方法、装置及存储介质 | |
| Lu et al. | Can MPI benefit Hadoop and MapReduce applications? | |
| CN113723552A (zh) | 大规模多机多卡预训练方法、系统、设备及服务器集群 | |
| JP6542397B2 (ja) | イメージ制作中のコンテンツテスト | |
| WO2013097253A1 (zh) | Gpu系统及其处理方法 | |
| CN119294320B (zh) | 大规模芯片验证方法、电子设备和介质 | |
| CN112527450B (zh) | 基于不同资源的超融合自适应方法、终端及系统 | |
| CN115242596A (zh) | 面向用户的网络测试床场景业务调度方法及装置 | |
| US8817030B2 (en) | GPGPU systems and services | |
| CN118646753A (zh) | 包含MinIO应用的云主机创建方法、装置及OpenStack云平台 | |
| CN113254158B (zh) | 一种深度学习系统的部署方法和装置 | |
| CN114519033A (zh) | 一种数据写入方法及其相关设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |