CN112862111A - 一种加速分布式机器学习梯度汇聚的方法和装置 - Google Patents
一种加速分布式机器学习梯度汇聚的方法和装置 Download PDFInfo
- Publication number
- CN112862111A CN112862111A CN202110450988.1A CN202110450988A CN112862111A CN 112862111 A CN112862111 A CN 112862111A CN 202110450988 A CN202110450988 A CN 202110450988A CN 112862111 A CN112862111 A CN 112862111A
- Authority
- CN
- China
- Prior art keywords
- gradient
- module
- data block
- data
- gradient data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及分布式计算系统领域,具体涉及一种加速分布式机器学习梯度汇聚的方法和装置,该装置包括:包括梯度汇聚器和与梯度汇聚器连接的工作节点,所述工作节点用于提供梯度数据至梯度汇聚器和接收梯度汇聚器的返还数据;所述梯度汇聚器,包括:输入接口和输入队列模块、接收仲裁模块、解析查找模块、输出队列模块、聚合模块、存储器、输出接口模块和配置接口模块,其中的聚合模块包括:控制模块、解析模块、梯度数据块信息表、梯度数据块缓存器、计算模块和网络组包输出模块。本发明支持大型机器学习模型的训练,存储器可以存储大量梯度数据,同时所需要的缓存空间可以很小,降低了系统缓存的要求,提高了系统整体性能。
Description
技术领域
本发明涉及分布式计算系统领域,具体涉及一种加速分布式机器学习梯度汇聚的方法和装置。
背景技术
在机器学习和深度学习领域,由于模型和训 练数据量的急剧增大,单机往往无法满足训练的需求,分布式的训练方式已经成为必须。分布式机器学习通常采用参数服务器方式来实现,参数服务器方式的架构通常为一个参数服务器通过网络交换机连接多台工作节点(worker),各工作节点负责将本地梯度计算结果通过网络提交给参数服务器,由参数服务器负责将所有梯度汇聚,并求梯度平均值计算生成新的权值参数,然后将新的权值参数结果返还给工作节点,工作节点更新权值参数后进行下一轮的迭代训练。
发明内容
针对当前的机器学习模型参数规模日益增长,实现一种智能交换机可支撑不同规模机器学习模型梯度汇聚计算,有效提升分布式机器学习训练的系统性能,本发明提出一种加速分布式机器学习梯度汇聚的方法和装置,其具体技术方案如下:
一种加速分布式机器学习梯度汇聚的装置,包括梯度汇聚器和与梯度汇聚器连接的工作节点,所述工作节点用于提供梯度数据至梯度汇聚器和接收梯度汇聚器的返还数据;所述梯度汇聚器,包括:输入接口和输入队列模块、接收仲裁模块、解析查找模块、输出队列模块、聚合模块、存储器、输出接口模块和配置接口模块,所述输入接口和输入队列模块接收来自物理层的数据,后打包存入队列并发送数据至接收仲裁模块,所述接收仲裁模块按优先级对数据进行轮询仲裁,对获得授权的数据进行包解析,当所述数据是普通网络数据包时,则进入解析查找模块进行出口的路由查找,当所述数据是梯度数据包时,则送入聚合模块进行梯度聚合,所述聚合模块从存储器中取出对应的梯度数据块完成聚合后,将数据重新打包成以太网包发送给解析查找模块进行路由查找,所述解析查找模块根据路由结果将数据发送给输出队列模块,输出队列模块与多个输出接口模块相连,完成对数据包的发出,所述配置接口模块用于接收系统配置信息,输出系统配置和状态。
进一步的,所述工作节点内设有分块功能模块及打包和解包模块,所述分块功能模块按照训练时梯度数据的产生顺序和梯度数据量对梯度数据进行分块,所述打包和解包模块,负责对分好块的梯度数据进行打包,加入类型和块编号标签,同时接收来自外部的数据包,并进行解包,提取聚合好的梯度信息。
进一步的,所述打包的梯度数据,包括:梯度数据标识,用于区分梯度数据包和普通数据包,及传递梯度数据包的全局参数信息,包括:汇聚次数阈值,存储器起始地址;当前梯度数据块编号,用Bi表示,用于标识当前梯度数据块在全局梯度数据中的编号,各工作节点采用统一的编号规则;下一梯度数据块编号,用Nbi表示,工作节点发送完当前梯度数据块Bi后,再发送下一梯度数据块Nbi。
进一步的,所述存储器包括:DRAM、flash和SSD;所述配置接口模块是PCIe高速接口。
进一步的,所述聚合模块包括: 控制模块、解析模块、梯度数据块信息表、梯度数据块缓存器、计算模块和网络组包输出模块,所述控制模块用于对整个梯度数据汇聚流程进行调度,控制连接解析模块、梯度数据块信息表、计算模块和网络组包输出模块;所述解析模块用于接收来自解析查找模块的梯度数据包后,对该数据包里面的关键字段解析,获取当前梯度数据块编号和下一数据块编号,并对数据包中的数据进行拆分;所述梯度数据块信息表用于保存当前梯度数据块缓存器中可参与梯度汇聚计算的各个梯度数据块的信息;所述梯度数据块缓存器 用于缓存可以参加梯度汇聚计算的数据;所述计算模块,用于将来自解析模块和梯度数据块缓存器的数据进行并行汇聚计算,并将结果输出或写回梯度数据块缓存器;所述网络组包输出模块,用于控制模块判断当前的梯度汇聚结果是否可以输出,如果可以输出,通过网络组包输出模块按规定格式进行组包输出。
进一步的,所述梯度数据块信息表包括:梯度数据块ID 、数据块缓存地址和长度、当前数据块是否有效的标志位v_flag、汇聚统计计数器g_counter和数据时间戳timestamp,其中数据块缓存地址和长度记录某一梯度数据块Bi在缓存中的地址和长度,标志位v_flag表明该数据块是否有效,汇聚统计计数器g_counter用于记录当前数据块进行的汇聚操作次数,当汇聚计数统计次数满足系统设定的阈值条件V时,则将汇聚结果发送至工作节点。
进一步的,所述梯度数据块信息表对于写入一条新数据块信息的更新方式为:若梯度数据块信息表有空闲空间,即存在当前数据块是否有效的标志位v_flag为0的行,直接写入所述新数据块信息,将当前数据块是否有效的标志位v_flag置1,汇聚统计计数器g_counter清零,通过数据时间戳timestamp记录当前时间戳;若梯度数据块信息表已满,找到汇聚统计计数器g_counter值最小的行,当前参加计算数据块除外,如果存在多条汇聚统计计数器g_counter值最小的行,取时间戳最新的行进行替换;对于汇聚统计计数器g_counter次数达到阈值V,汇聚结果发出后控制模块将该行清零。
一种加速分布式机器学习梯度汇聚的方法,具体包括如下步骤:
S1. 初始状态,系统接收外部控制包或根据预设算法,获取阈值参数、梯度数据在存储器的全局地址的初始信息,根据算法需求对存储器内的梯度数据进行初始化;
S2. 各工作节点进行模型训练,并将训练过程中产生的梯度值逐步发送至梯度汇聚器;
S3. 梯度汇聚器接收数据包,接收仲裁模块对数据包进行初步解析判断,如果是梯度数据包则发送给聚合模块进行梯度聚合;如果是普通网络包,则走普通的网络数据通路,经过路由转发输出;
S4. 聚合模块中的解析模块接到来自接收仲裁模块的梯度数据包后,对数据包里面的关键字段解析,获取当前梯度数据块编号Bi和下一数据块编号Nbi;
S5. 控制模块对梯度数据块信息表进行查找,查询当前缓存中是否有第Bi块梯度数据,如果没有,则从存储器中根据梯度的全局地址和梯度数据编号Bi获取第Bi块梯度数据,同时在梯度数据块信息表中增加一条编号信息后进入步骤S6;如果有,则直接进入步骤S6;
S6. 同时对梯度数据块信息表中的对应第Bi块梯度数据的汇聚统计计数器g_counter进行加1操作;
S7. 根据梯度数据块信息表中的汇聚统计计数器g_counter信息判断是否达到阈值条件V;如果满足条件,则进入步骤8,同时梯度数据块信息表对应行清零,并根据算法要求将梯度值结果进行处理后写回存储器,如果不满足,则直接完成本次计算,聚合模块接收处理下一个梯度数据包;
S8. 将汇聚数据组成网络包,发送给各个工作节点,用于更新汇聚后的参数。
进一步的,所述步骤S6具体包括:
S6_1. 对于第Bi块梯度数据,控制模块将缓存中的梯度数据Bi和新输入的梯度数据Bi送入计算模块进行汇聚计算,并将结果替换缓存中的梯度数据Bi,计算完成进入步骤S7;
S6_2. 同时控制模块在梯度数据块信息表中查询是否有第Nbi块梯度数据;如果没有,则从存储器中根据梯度全局地址和梯度数据编号NBi获取第NBi块梯度数据并更新梯度数据块信息表;如果有,则结束查询。
有益效果:
本发明利用智能交换机的存储设备,可以支持大型机器学习模型的训练,存储器可以存储大量梯度数据,因此可以支持各种大小的模型;所采用的数据预取机制可以支持单个或多个模型同时训练,同时所需要的缓存空间可以很小,降低了系统缓存的要求,提高了系统整体性能。
附图说明
图1是常规的采用参数服务器方式实现分布式机器学习的架构示意图;
图2是本发明的梯度汇聚器结构原理示意图;
图3是本发明采用的多个工作节点和多个梯度汇聚器一种连接结构示意图;
图4是本发明采用的多个工作节点和多个梯度汇聚器另一种连接结构示意图;
图5是本发明的聚合模块结构原理示意图;
图6是本发明的聚合模块对梯度数据汇聚流程示意图;
图7是本发明的梯度数据包结构示意图;
图8是本发明的梯度数据信息表示意图;
图9是本发明实施例一的配置的梯度数据包结构示意图;
图10是本发明实施例一的工作节点worker A发出第一个梯度数据包后的梯度数据块信息表示意图;
图11是本发明实施例一的工作节点worker A发出第二个梯度数据包后的梯度数据块信息表示意图;
图12是本发明实施例一的工作节点worker A发出第三个梯度数据包后的梯度数据块信息表示意图;
图13是本发明实施例一的工作节点worker A发出第四个梯度数据包后的梯度数据块信息表示意图;
图14是本发明实施例一的工作节点worker B发出一个梯度数据包后的梯度数据块信息表示意图;
图15是本发明实施例二的工作节点worker A发出第一个梯度数据包后的梯度数据块信息表示意图;
图16是本发明实施例二的工作节点worker B发出第一个梯度数据包后的梯度数据块信息表示意图;
图17是本发明实施例二的工作节点worker C发出第一个梯度数据包后的梯度数据块信息表示意图;
图18是本发明实施例二的工作节点worker B再次发出梯度数据包后的梯度数据块信息表示意图;
图19是本发明实施例二的工作节点worker A再次发出梯度数据包后的梯度数据块信息表示意图;
图20是本发明的工作节点的运行流程示意图;
其中的,100-梯度汇聚器,101-输入队列模块,102-接收仲裁模块,103-解析查找模块,104-输出队列模块,105-聚合模块,106-存储器,107-输出接口模块,108-配置接口模块,201-工作节点,202-网络交换机,203-参数服务器,301-梯度数据标识,302-当前梯度数据块编号,303-下一梯度数据块编号,304-当前梯度数据块数据,401-控制模块,402-解析模块,403-梯度数据块信息表,404-梯度数据块缓存器,405-计算模块,406-网络组包输出模块,601-梯度数据块ID,602-数据块缓存地址和长度,603-当前数据块是否有效的标志位v_flag,604-汇聚统计计数器g_counter,605-数据时间戳timestamp。
具体实施方式
为了使本发明的目的、技术方案和技术效果更加清楚明白,以下结合说明书附图和实施例,对本发明作进一步详细说明。
如图1所示,在分布式机器学习中,工作节点201计算获得梯度数据,通过网络交换机202发送给参数服务器203,参数服务器203对各个工作节点201的梯度数据进行聚合计算得出新的权值参数,并将权值结果返回给各工作节点201,工作节点201更新权值参数后进行下一轮迭代训练。由于训练的模型结构在训练之前就已经确定,因此可以对模型参数梯度等数据进行统一的分块,以便于在网络中传输。
如图2-4所示,本发明的一种加速分布式机器学习梯度汇聚的方法和装置,该装置包括多个梯度汇聚器100和与其连接的多个工作节点201,所述梯度汇聚器100在物理上将多个工作节点201连接起来,接收各工作节点201提供的梯度数据,并将梯度数据聚合更新后返还给工作节点201,梯度汇聚器100之间也可以互联以形成更大规模的网络;所述工作节点201负责对机器学习模型的训练。由于很多机器学习的模型规模很大,需要将训练所得的梯度数据进行分片和打包,发送至梯度汇聚器100,工作节点201接收梯度汇聚器100的返还数据,用于更新本地的模型参数,并进行模型的迭代训练。物理上,所述工作节点201和梯度汇聚器100可以有多种连接方式。
所述工作节点201用于在本地存储部分或全部训练数据,在本地存储部分或全部训练参数模型,独立进行模型迭代训练,对于指定的训练模型,所述工作节点201内设有分块功能模块,按照训练时梯度数据的产生顺序和梯度数据量对梯度数据进行分块;工作节点201还设有一个打包和解包模块,负责对分好块的梯度数据进行打包,加入类型和块编号标签,同时也接收来自外部的数据包,并进行解包,提取聚合好的梯度信息用于新权值的计算。机器学习的算法模型部署在多个工作节点201中,多个工作节点201独立完成模型的梯度计算。
如图20所示,更具体的:对于工作节点201,在训练模型时产生梯度数据g,将梯度数据g分成g0,g1…gN共N份梯度数据块,并在训练过程中顺序产生。与之相对于的权值w也分为N份:w1,w2,…wN,工作节点每计算出一部分梯度数据块gi,就将它打包,并根据梯度数据块编号添加标识Bi以及下一数据块Nbi等标识信息。随后发送至梯度汇聚器100。
梯度汇聚器100完成汇聚计算后,将结果g_up_i返回给工作节点201。工作节点201以此更新模型参数权值wi。工作节点201获得更新的模型参数后,进入新一轮的训练。
所述梯度汇聚器100用于将工作节点201连接起来,形成一个集群,多个集群之间也可以连接起来组成更大规模的集群,梯度汇聚器100既可以完成普通以太网数据包的交换功能,也可以针对特定的梯度数据包进行梯度汇聚操作。
具体的,所述梯度汇聚器100包括:输入接口和输入队列模块101,用于接收来自物理层的数据,并将接收到的数据打包存入队列;接收仲裁模块102,对多个输入接口和输入队列模块101的输入请求按一定优先级进行轮询仲裁,对获得授权的数据进行包解析,如果所述数据是普通网络数据包,则进入解析查找模块103进行出口的查找,如果是梯度数据包,则送入聚合模块105进行梯度聚合;所述105聚合模块用于对梯度数据包进行数据提取,根据梯度数据包中附带的信息读取对应的本地存储器中存放的梯度值,并将梯度数据包中的数据和本地数据进行聚合;存储器106 ,包括:DRAM、flash或SSD等,用于存放完整的模型梯度数据,由于现在机器学习的模型规模往往非常巨大,参数量常常达到千兆规模,因此需要较大的存储设备来存放梯度数据;所述聚合模块105计算完成后,将数据重新打包成以太网包发送给解析查找模块103进行路由查找,解析查找模块103完成对数据包的路由查找,根据路由结果将数据发送给输出队列模块104,输出队列模块104与多个输出接口模块107相连,完成对数据包的发出;配置接口模块108,可以是PCIe等高速接口,用于带外接收系统配置信息,输出系统配置和状态,系统配置和状态也可以通过带内指定格式网络包进行配置和输出。
其中,如图5-6所示,所述的聚合模块105接收来自各个工作节点201的梯度数据包,对梯度数据完成聚合操作,并将结果打包输出,聚合模块105包括: 控制模块401、解析模块402、梯度数据块信息表403、梯度数据块缓存器404、计算模块405和网络组包输出模块406。
所述解析模块402用于接收来自解析查找模块103的梯度数据包后,对该数据包里面的关键字段解析,获取当前梯度数据块编号和下一数据块编号,并对数据包中的数据进行拆分等预处理。
所述梯度数据块缓存器404 用于根据地址规则缓存可以参加梯度汇聚计算的数据。
所述梯度数据块信息表403用于保存当前梯度数据块缓存器404中可参与梯度汇聚计算的各个梯度数据块的信息,所述信息包括块编号,有效标志,块汇聚计算次数计数,时间戳等信息,具体的,如图8所示,梯度数据块信息表403中存放多行梯度数据信息,每一行对应一个梯度数据块信息,包括:梯度数据块ID 601,数据块缓存地址和长度602,当前数据块是否有效的标志位v_flag603,汇聚统计计数器g_counter604,数据时间戳timestamp605。其中数据块缓存地址和长度602记录某一梯度数据块Bi在缓存中的地址和长度;标志位v_flag603表明该数据块是否有效;汇聚统计计数器g_counter604用于记录当前数据块进行了几次汇聚操作,当汇聚计数统计次数满足系统设定的阈值条件V时,就可以将汇聚结果发送至工作节点。
所述梯度数据块信息表403更新策略为:
对于写入一条新数据块信息:如果梯度数据块信息表403有空闲空间,即存在当前数据块是否有效的标志位v_flag603为1的行,直接写入,将当前数据块是否有效的标志位v_flag603置1,汇聚统计计数器g_counter604清零,记录当前时间戳;如果梯度数据块信息表403已满,找到汇聚统计计数器g_counter604值最小的行,当前参加计算数据块除外,如果存在多条汇聚统计计数器g_counter604值最小的行,取时间戳最新的行进行替换;对于汇聚统计计数器g_counter604次数达到阈值V,汇聚结果发出后控制模块401将该行清零。
所述控制模块401用于对整个梯度数据汇聚流程进行调度,可根据所述各个梯度数据块信息,获知当前梯度数据块缓存器404中是否有可供计算的数据,做出从存储器106预取数据,梯度聚合计算,梯度聚合结果发送,梯度聚合结果写回存储器106等操作。
所述计算模块405,将来自解析模块402和梯度数据块缓存器404的数据进行并行汇聚计算,并将结果输出或写回梯度数据块缓存器404。
所述网络组包输出模块406,用于控制模块判断当前的梯度汇聚结果是否可以输出,如果可以输出,通过网络组包输出模块406按规定格式进行组包输出。
所述的梯度数据块通过以太网传输,因此在网络包中增加:梯度数据标识301、当前梯度数据块编号302、下一梯度数据块编号303和当前梯度数据块数据304,如图7所示。其中,在多模型任务训练场景下,数据块编号可以根据任务数量做进一步细分,由任务编号和任务内数据块编号共同构成数据块编号,可同时对多训练模型并行训练。
当工作节点201在进行模型训练时,所产生的梯度数据是分阶段产生的。工作节点201根据训练流程和梯度数据规模,对梯度数据进行分片和打包,并依次发送至梯度汇聚器100。所打包的梯度数据,包括:梯度数据标识301,用于区分梯度数据包和普通数据包,也可用于传递梯度数据包的全局参数信息,诸如汇聚次数阈值,存储器起始地址等;当前梯度数据块编号302用Bi表示,用于标识当前梯度数据块在全局梯度数据中的编号,各工作节点201采用统一的编号规则;下一梯度数据块编号303 用Nbi表示,工作节点201发送完当前梯度数据块Bi后,会发送下一梯度数据块Nbi。所有梯度数据块为顺序发送,因此下一梯度数据块紧跟当前梯度数据块之后发送。
通过解析查找模块103对数据包进行解析,如果是普通数据包,按普通路由规则输出,如果是来自各个工作节点201的梯度数据包,则进入105聚合模块,当聚合模块105收到新的梯度数据块时,聚合模块105将从存储器106中取出对应的梯度数据块,并将两者聚合,具体包括如下步骤:
S1. 初始状态,系统接收外部控制包或根据预设算法,获取阈值参数、梯度数据在存储器的全局地址的初始信息,根据算法需求对存储器106内的梯度数据进行初始化;
S2. 各工作节点进行模型训练,并将训练过程中产生的梯度值逐步发送至梯度汇聚器100,各工作节点可以是同步训练,也可以是异步训练;也可以同时训练不同的模型;
S3. 梯度汇聚器100接收数据包,接收仲裁模块102对数据包进行初步解析判断,如果是梯度数据包则发送给聚合模块105进行梯度聚合;如果是普通网络包,则走普通的网络数据通路,经过路由转发输出;
S4. 聚合模块105中的解析模块402接到来自接收仲裁模块102的梯度数据包后,对数据包里面的关键字段解析,获取当前梯度数据块编号Bi和下一数据块编号Nbi;
S5. 控制模块401对梯度数据块信息表403进行查找,查询当前缓存中是否有第Bi块梯度数据,如果没有,则从存储器106中根据梯度的全局地址和梯度数据编号Bi获取第Bi块梯度数据,同时在梯度数据块信息表403中增加一条编号信息,具体策略见梯度数据块信息表403;如果有,则进入步骤S6;
S6. 同时对梯度数据块信息表403中的对应第Bi块梯度数据的计数器进行加1操作具体包括:
S6_1. 对于第Bi块梯度数据,控制模块401将缓存中的梯度数据Bi(cache)和新输入的梯度数据Bi(work_i)送入计算模块405进行汇聚计算;并将结果替换缓存中的梯度数据Bi(cache),计算完成进入步骤S7;
S6_2. 同时控制模块401在梯度数据块信息表403中查询是否有第Nbi块梯度数据;如果没有,则从存储器106中根据梯度全局地址和梯度数据编号NBi获取第NBi块梯度数据;如果有,则结束查询;步骤6_1和6_2可以实现对数据计算和数据读取的并行操作,提升整体性能;
S7. 根据梯度数据块信息表403中的计数器信息判断是否达到阈值条件V;如果满足条件,则进入步骤8,同时梯度数据块信息表403对应行清零,并根据算法要求将梯度值结果进行一定处理后写回存储器106,如果不满足,则直接完成本次计算,聚合模块105接收处理下一个梯度数据包;
S8. 将汇聚数据组成网络包,发送给各个工作节201点,用于更新汇聚后的参数。
具体的,实施例包括:
实施例一:
如图9所示,其中config表示配置标识,cfg_info1, cfg_info2等表示需要配置的全局参数信息及初始化数据信息,设系统有worker A和worker B两个工作节点,系统在初始化时可以接受配置网络包,也可以通过配置接口模块108进行配置,配置全局参数以及完整的初始梯度数据并存储于存储器106中。此时梯度数据块信息表403以及梯度数据块缓存器404中没有数据。假设梯度数据块信息表403能够存放4条梯度数据块信息。
如图10所示,当工作节点worker A发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为1,下一帧数据块ID将是2,控制模块401对梯度数据信块息表403进行查找,发现ID为1号数据块不存在,因此从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录,记录缓存地址,有效位标志,记录时间戳值t1,汇聚计数器值为1,当前需要计算的数据块ID为1,进行汇聚计算并将结果写回梯度数据块缓存器404。在ID为1的数据块计算的同时,控制模块401对梯度数据块信息表403进行ID为2的数据块查找,发现ID为2的数据块不存在,从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录缓存地址,有效位标志,汇聚计数器值为0,记录时间戳值t2。
如图11所示,工作节点worker A继续发出第二包梯度数据块。当前需要计算的数据块ID为2,下一帧数据块ID将是3。控制模块401对梯度数据块信息表403进行查找,发现ID为2的数据块已经存在,因此不需要从存储器106读取对应数据块,节省了读取数据时间,将汇聚计数器更新,当前需要计算的数据块ID为2,进行汇聚计算并将结果写回梯度数据块缓存器404。控制模块401对梯度数据块信息表403进行ID为3的数据块查找,发现该数据块不存在,从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录。
如图12所示,工作节点worker A继续发出第三包梯度数据块,当前需要计算的数据块ID为3,下一帧数据块ID将是4。控制模401块对梯度数据块信息表403进行查找,发现ID为3的数据块已经存在,因此不需要从存储器106读取对应数据块,节省了读取数据时间,将汇聚计数器更新,当前需要计算的数据块ID为3,进行汇聚计算并将结果写回梯度数据块缓存器404。控制模块401对梯度数据块信息表403进行ID为4的数据块查找,发现4号数据块不存在,从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录。此时梯度数据块信息表403已经存满。
如图13所示,工作节点worker A继续发出第四包梯度数据块,当前需要计算的数据块ID为4,下一帧数据块ID将是5。控制模块401对梯度数据块信息表403进行查找,发现ID为4数据块已经存在,因此不需要从存储器106读取对应数据块,节省了读取数据时间,将汇聚计数器更新,当前需要计算的数据块ID为4,进行汇聚计算并将结果写回梯度数据块缓存器404。控制模块106对梯度数据信息表403进行ID为5数据块查找,发现ID为5数据块不存在,从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录。此时梯度数据块信息表403已经存满。因此需要替换掉一条信息。由于ID为4的数据块为当前进行计算的数据块,因此不做替换。剩余ID 为1,2,3数据块的计数器值相等,都为1,因此需要比较时间戳大小。发现ID为3数据块的时间戳值最小,即数据最新,因此将这行进行替换。从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录ID为 5的数据块的相关信息。
如图14所示,当worker B发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为1,下一帧数据块ID将是2。控制模块401对梯度数据块信息表403进行查找,发现ID为1的数据块存在,当前需要计算的数据块ID为1,进行汇聚计算,并将结果写回梯度数据块缓存器404。同时控制模401块对梯度数据块信息表403进行ID为2的数据块查找,发现ID为2的数据块存在,则不需要从存储器106中读取数据。假设当前阈值V为2,则计算完成时,ID 为1数据块所对应的g_counter为2,达到阈值要求,因此ID 为1数据块将被打包发送给工作节点worker A和worker B, worker A和worker B根据梯度数据更新参数。
实施例二:
设系统有worker A、worker B、worker C三个工作节点,假设输出阈值为3,初始化完成后,worker A、worker B、worker C三个工作节点分别开始训练,并向梯度汇聚器100发送梯度数据。
如图15所示,当worker A发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为1,下一帧数据块ID将是2。控制模块401对梯度数据块信息表403进行查找,发现ID为1的数据块不存在,因此从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录,当前需要计算的数据块ID为1,进行汇聚计算并将结果写回梯度数据块缓存器404。在此同时,控制模块401对梯度数据块信息表403进行ID 为2数据块进行查找,发现该数据块不存在,从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录缓存地址,有效位标志,汇聚计数器值为0,时间戳值。
如图16所示,当worker B发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为1,下一帧数据块ID将是2。控制模块401对梯度数据块信息表403进行查找,发现ID为1数据块存在,不需要从存储器106读数据。当前需要计算的数据块ID为1,进行汇聚计算并将结果写回梯度数据块缓存器404。在此同时,控制模块401对梯度数据块信息表403进行ID为2数据块查找,发现该数据块存在,不做读取存储器106操作。
如图17所示,当worker C发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为1,下一帧数据块ID将是2。控制模块401对梯度数据块信息表403进行查找,发现ID为1数据块存在,不需要从存储器106读数据。当前需要计算的数据块ID为1,进行汇聚计算并将结果写回梯度数据块缓存器404。在此同时,控制模块401对梯度数据块信息表403进行ID为2数据块查找,发现ID为2数据块存在,不做读取存储106器操作。 计算完成时ID 为1数据块的g_counter值为3,假设当前阈值为3,达到阈值要求,因此ID为 1的数据块将被打包发送给工作节点worker A、worker B、worker C,worker A、worker B、worker C根据梯度数据更新参数。同时对梯度数据块信息表403进行更新,删除ID为 1的数据块的相关信息,valid设置为0,释放当前行以及对应存储空间。
如图18所示,当worker B发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为2,下一帧数据块ID将是3。控制模块401对梯度数据块信息表403进行查找,发现ID为2数据块存在,不需要从存储器106读数据。当前需要计算的数据块ID为2,进行汇聚计算并将结果写回梯度数据块缓存器404。在此同时,控制模块401对梯度数据块信息表403进行ID为3的数据块查找,发现ID为3的数据块不存在,从存储器106读取对应数据块写至梯度数据块缓存器404,并在梯度数据块信息表403中进行记录缓存地址,有效位标志,汇聚计数器值为0,时间戳值。
如图19所示,当worker A发出梯度数据包被梯度汇聚器100接收,当前需要计算的数据块ID为2,下一帧数据块ID将是3。控制模块401对梯度数据块信息表403进行查找,发现ID为2数据块存在,不需要从存储器106读数据。当前需要计算的数据块ID为2,进行汇聚计算并将结果写回梯度数据块缓存器404。在此同时,控制模块401对梯度数据块信息表403进行ID为3数据块查找,发现ID为3数据块存在, 不做读取存储器106操作。
Claims (9)
1.一种加速分布式机器学习梯度汇聚的装置,包括梯度汇聚器(100)和与梯度汇聚器(100)连接的工作节点(201),其特征在于,所述工作节点(201)用于提供梯度数据至梯度汇聚器(100)和接收梯度汇聚器(100)的返还数据;所述梯度汇聚器(100),包括:输入接口和输入队列模块(101)、接收仲裁模块(102)、解析查找模块(103)、输出队列模块(104)、聚合模块(105)、存储器(106)、输出接口模块(107)和配置接口模块(108),所述输入接口和输入队列模块(101)接收来自物理层的数据,后打包存入队列并发送数据至接收仲裁模块(102),所述接收仲裁模块(102)按优先级对多个数据进行轮询仲裁,对获得授权的数据进行包解析,当所述数据是普通网络数据包时,则进入解析查找模块(103)进行出口的路由查找,当所述数据是梯度数据包时,则送入聚合模块(105)进行梯度聚合,所述聚合模块(105)从存储器(106)中取出对应的梯度数据块完成聚合后,将数据重新打包成以太网包发送给解析查找模块(103)进行路由查找,所述解析查找模块(103)根据路由结果将数据发送给输出队列模块(104),输出队列模块(104)与多个输出接口模块(107)相连,完成对数据包的发出,所述配置接口模块(108)用于接收系统配置信息,输出系统配置和状态。
2.如权利要求1所述的一种加速分布式机器学习梯度汇聚的装置,其特征在于,所述工作节点(201)内设有分块功能模块及打包和解包模块,所述分块功能模块按照训练时梯度数据的产生顺序和梯度数据量对梯度数据进行分块,所述打包和解包模块,负责对分好块的梯度数据进行打包,加入类型和块编号标签,同时接收来自外部的数据包,并进行解包,提取聚合好的梯度信息。
3.如权利要求2所述的一种加速分布式机器学习梯度汇聚的装置,其特征在于,所述打包的梯度数据,包括:梯度数据标识(301),用于区分梯度数据包和普通数据包,及传递梯度数据包的全局参数信息,包括:汇聚次数阈值,存储器起始地址;当前梯度数据块编号(302),用Bi表示,用于标识当前梯度数据块在全局梯度数据中的编号,各工作节点(201)采用统一的编号规则;下一梯度数据块编号(303) ,用Nbi表示,工作节点(201)发送完当前梯度数据块Bi后,再发送下一梯度数据块Nbi。
4.如权利要求1所述的一种加速分布式机器学习梯度汇聚的装置,其特征在于,所述存储器(106)包括:DRAM、flash和SSD;所述配置接口模块(108)是PCIe高速接口。
5.如权利要求1所述的一种加速分布式机器学习梯度汇聚的装置,其特征在于,所述聚合模块(105)包括: 控制模块(401)、解析模块(402)、梯度数据块信息表(403)、梯度数据块缓存器(404)、计算模块(405)和网络组包输出模块(406),所述控制模块(401)用于对整个梯度数据汇聚流程进行调度,控制连接解析模块(402)、梯度数据块信息表(403)、计算模块(405)和网络组包输出模块(406);所述解析模块(402)用于接收来自解析查找模块(103)的梯度数据包后,对该数据包里面的关键字段解析,获取当前梯度数据块编号和下一数据块编号,并对数据包中的数据进行拆分;所述梯度数据块信息表(403)用于保存当前梯度数据块缓存器(404)中可参与梯度汇聚计算的各个梯度数据块的信息;所述梯度数据块缓存器(404) 用于缓存可以参加梯度汇聚计算的数据;所述计算模块(405),用于将来自解析模块(402)和梯度数据块缓存器(404)的数据进行并行汇聚计算,并将结果输出或写回梯度数据块缓存器(404);所述网络组包输出模块(406),用于控制模块(401)判断当前的梯度汇聚结果是否可以输出,如果可以输出,通过网络组包输出模块(406)按规定格式进行组包输出。
6.如权利要求5所述的一种加速分布式机器学习梯度汇聚的装置,其特征在于,所述梯度数据块信息表(403)包括:梯度数据块ID (601)、数据块缓存地址和长度(602)、当前数据块是否有效的标志位v_flag(603)、汇聚统计计数器g_counter(604)和数据时间戳timestamp(605),其中数据块缓存地址和长度(602)记录某一梯度数据块Bi在梯度数据块缓存器(404)中的地址和长度;标志位v_flag(603)表明该数据块是否有效,汇聚统计计数器g_counter(604)用于记录当前数据块进行的汇聚操作次数,当汇聚计数统计次数满足系统设定的阈值条件V时,则将汇聚结果发送至工作节点(201)。
7.如权利要求6所述的一种加速分布式机器学习梯度汇聚的装置,其特征在于,所述梯度数据块信息表(403)对于写入一条新数据块信息的更新方式为:若梯度数据块信息表(403)有空闲空间,即存在当前数据块是否有效的标志位v_flag(603)为0的行,直接写入所述新数据块信息,将当前数据块是否有效的标志位v_flag(603)置1,汇聚统计计数器g_counter(604)清零,通过数据时间戳timestamp(605)记录当前时间戳;若梯度数据块信息表(403)已满,找到汇聚统计计数器g_counter(604)值最小的行,当前参加计算数据块除外,如果存在多条汇聚统计计数器g_counter(604)值最小的行,取时间戳最新的行进行替换;对于汇聚统计计数器g_counter(604)次数达到阈值V,汇聚结果发出后控制模块(401)将该行清零。
8.一种加速分布式机器学习梯度汇聚的方法,其特征在于,具体包括如下步骤:
S1. 初始状态,系统接收外部控制包或根据预设算法,获取阈值参数、梯度数据在存储器的全局地址的初始信息,根据算法需求对存储器(106)内的梯度数据进行初始化;
S2. 各工作节点(201)进行模型训练,并将训练过程中产生的梯度值逐步发送至梯度汇聚器(100);
S3. 梯度汇聚器(100)接收数据包,接收仲裁模块(102)对数据包进行初步解析判断,如果是梯度数据包则发送给聚合模块(105)进行梯度聚合;如果是普通网络包,则走普通的网络数据通路,经过路由转发输出;
S4. 聚合模块(105)中的解析模块(402)接到来自接收仲裁模块(102)的梯度数据包后,对数据包里面的关键字段解析,获取当前梯度数据块编号Bi和下一数据块编号Nbi;
S5. 控制模块(401)对梯度数据块信息表(403)进行查找,查询当前缓存中是否有第Bi块梯度数据,如果没有,则从存储器(106)中根据梯度的全局地址和梯度数据编号Bi获取第Bi块梯度数据,同时在梯度数据块信息表(403)中增加一条编号信息,后进入步骤S6;如果有,则直接进入步骤S6;
S6. 同时对梯度数据块信息表(403)中的对应第Bi块梯度数据的汇聚统计计数器g_counter(604)进行加1操作;
S7. 根据梯度数据块信息表(403)中的汇聚统计计数器g_counter(604)信息判断是否达到阈值条件V;如果满足条件,则进入步骤8,同时梯度数据块信息表(403)对应行清零,并根据算法要求将梯度值结果进行处理后写回存储器(106),如果不满足,则直接完成本次计算,聚合模块(105)接收处理下一个梯度数据包;
S8. 将汇聚数据组成网络包,发送给各个工作节点(201),用于更新汇聚后的参数。
9.如权利要求8所述的一种加速分布式机器学习梯度汇聚的方法,其特征在于,所述步骤S6具体包括:
S6_1. 对于第Bi块梯度数据,控制模块(401)将缓存中的梯度数据Bi和新输入的梯度数据Bi送入计算模块(405)进行汇聚计算,并将结果替换缓存中的梯度数据Bi,计算完成进入步骤S7;
S6_2. 同时控制模块(401)在梯度数据块信息表(403)中查询是否有第Nbi块梯度数据;如果没有,则从存储器(106)中根据梯度全局地址和梯度数据编号NBi获取第NBi块梯度数据并更新梯度数据块信息表(403);如果有,则结束查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110450988.1A CN112862111B (zh) | 2021-04-26 | 2021-04-26 | 一种加速分布式机器学习梯度汇聚的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110450988.1A CN112862111B (zh) | 2021-04-26 | 2021-04-26 | 一种加速分布式机器学习梯度汇聚的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112862111A true CN112862111A (zh) | 2021-05-28 |
CN112862111B CN112862111B (zh) | 2021-08-24 |
Family
ID=75992923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110450988.1A Active CN112862111B (zh) | 2021-04-26 | 2021-04-26 | 一种加速分布式机器学习梯度汇聚的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112862111B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113706475A (zh) * | 2021-08-06 | 2021-11-26 | 福建自贸试验区厦门片区Manteia数据科技有限公司 | 基于图像分割的置信度分析方法及装置 |
CN114866429A (zh) * | 2022-04-28 | 2022-08-05 | 中国科学技术大学苏州高等研究院 | 联合路由决策和网内聚合的分布式模型训练方法和装置 |
CN114900482A (zh) * | 2022-03-28 | 2022-08-12 | 中国科学技术大学苏州高等研究院 | Ps架构下基于可编程交换机的梯度调度方法和装置 |
CN114912587A (zh) * | 2022-06-09 | 2022-08-16 | 上海燧原科技有限公司 | 神经网络分布式训练系统、方法、装置、计算单元及介质 |
CN115062771A (zh) * | 2022-08-16 | 2022-09-16 | 之江实验室 | 一种分布式机器学习梯度汇聚方法、装置及模型训练方法 |
CN115086437A (zh) * | 2022-06-15 | 2022-09-20 | 中国科学技术大学苏州高等研究院 | 基于分簇和xdp技术的梯度聚合加速方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150193695A1 (en) * | 2014-01-06 | 2015-07-09 | Cisco Technology, Inc. | Distributed model training |
CN107229518A (zh) * | 2016-03-26 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 一种分布式集群训练方法和装置 |
US20180054452A1 (en) * | 2015-08-31 | 2018-02-22 | Splunk Inc. | Model workflow control in a distributed computation system |
CN108366111A (zh) * | 2018-02-06 | 2018-08-03 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN110929884A (zh) * | 2019-11-22 | 2020-03-27 | 北京大学 | 一种基于列划分的分布式机器学习优化的分类方法及装置 |
CN111709533A (zh) * | 2020-08-19 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的分布式训练方法、装置以及计算机设备 |
CN111784002A (zh) * | 2020-09-07 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 分布式数据处理方法、装置、计算机设备及存储介质 |
CN112579301A (zh) * | 2020-12-28 | 2021-03-30 | 北京理工大学 | 一种基于ndn的p2p分布式机器学习训练系统数据传输方法 |
-
2021
- 2021-04-26 CN CN202110450988.1A patent/CN112862111B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150193695A1 (en) * | 2014-01-06 | 2015-07-09 | Cisco Technology, Inc. | Distributed model training |
US20180054452A1 (en) * | 2015-08-31 | 2018-02-22 | Splunk Inc. | Model workflow control in a distributed computation system |
CN107229518A (zh) * | 2016-03-26 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 一种分布式集群训练方法和装置 |
CN108366111A (zh) * | 2018-02-06 | 2018-08-03 | 西安电子科技大学 | 一种用于交换设备的数据包低时延缓存装置与方法 |
CN110929884A (zh) * | 2019-11-22 | 2020-03-27 | 北京大学 | 一种基于列划分的分布式机器学习优化的分类方法及装置 |
CN111709533A (zh) * | 2020-08-19 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的分布式训练方法、装置以及计算机设备 |
CN111784002A (zh) * | 2020-09-07 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 分布式数据处理方法、装置、计算机设备及存储介质 |
CN112579301A (zh) * | 2020-12-28 | 2021-03-30 | 北京理工大学 | 一种基于ndn的p2p分布式机器学习训练系统数据传输方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113706475A (zh) * | 2021-08-06 | 2021-11-26 | 福建自贸试验区厦门片区Manteia数据科技有限公司 | 基于图像分割的置信度分析方法及装置 |
CN113706475B (zh) * | 2021-08-06 | 2023-07-21 | 福建自贸试验区厦门片区Manteia数据科技有限公司 | 基于图像分割的置信度分析方法及装置 |
CN114900482A (zh) * | 2022-03-28 | 2022-08-12 | 中国科学技术大学苏州高等研究院 | Ps架构下基于可编程交换机的梯度调度方法和装置 |
CN114866429A (zh) * | 2022-04-28 | 2022-08-05 | 中国科学技术大学苏州高等研究院 | 联合路由决策和网内聚合的分布式模型训练方法和装置 |
CN114866429B (zh) * | 2022-04-28 | 2023-07-18 | 中国科学技术大学苏州高等研究院 | 联合路由决策和网内聚合的分布式模型训练方法和装置 |
CN114912587A (zh) * | 2022-06-09 | 2022-08-16 | 上海燧原科技有限公司 | 神经网络分布式训练系统、方法、装置、计算单元及介质 |
CN115086437A (zh) * | 2022-06-15 | 2022-09-20 | 中国科学技术大学苏州高等研究院 | 基于分簇和xdp技术的梯度聚合加速方法和装置 |
CN115086437B (zh) * | 2022-06-15 | 2023-08-22 | 中国科学技术大学苏州高等研究院 | 基于分簇和xdp技术的梯度聚合加速方法和装置 |
CN115062771A (zh) * | 2022-08-16 | 2022-09-16 | 之江实验室 | 一种分布式机器学习梯度汇聚方法、装置及模型训练方法 |
CN115062771B (zh) * | 2022-08-16 | 2022-11-25 | 之江实验室 | 一种分布式机器学习梯度汇聚方法、装置及模型训练方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112862111B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112862111B (zh) | 一种加速分布式机器学习梯度汇聚的方法和装置 | |
TWI712900B (zh) | 一種分布式集群訓練方法和裝置 | |
JP7417724B2 (ja) | コールドチェーン配送経路の決定方法、装置、サーバおよび記憶媒体 | |
JP7039685B2 (ja) | トラフィック測定方法、デバイス、およびシステム | |
EP2498457B1 (en) | Methods and Apparatus for Path Selection Within a Network Based on Flow Duration | |
CN103345514B (zh) | 大数据环境下的流式数据处理方法 | |
CN110740054B (zh) | 一种基于强化学习的数据中心虚拟化网络故障诊断方法 | |
US8812645B2 (en) | Query optimization in a parallel computer system with multiple networks | |
CN113946294B (zh) | 一种分布式储存系统及其数据处理方法 | |
CN108509453A (zh) | 一种信息处理方法及装置 | |
US9374303B1 (en) | Method and apparatus for processing multicast packets | |
CN107783728A (zh) | 数据存储方法、装置和设备 | |
CN115618532A (zh) | 一种网络系统仿真方法及相关装置 | |
CN113965492A (zh) | 一种数据流统计方法及装置 | |
CN116974765A (zh) | 一种异构计算机的存储管理系统 | |
CN108763127B (zh) | 源数据与目标数据相互转换的Modbus适配器的实现方法 | |
US11061720B2 (en) | Processing system and method of detecting congestion in processing system | |
CN111008002B (zh) | 自动计算并更新fifo深度的装置和方法 | |
KR102380970B1 (ko) | 뉴로모픽 장치 및 그 장치에서 수행되는 시그널링 방법 | |
CN115062771B (zh) | 一种分布式机器学习梯度汇聚方法、装置及模型训练方法 | |
US7475159B2 (en) | High-speed scheduler | |
CN115720211B (zh) | 网算一体的芯粒间路由器及数据包聚合方法 | |
CN104298617B (zh) | 一种numa平台中非核部件数据流缓冲管理的优化方法及系统 | |
US20240004765A1 (en) | Data processing method and apparatus for distributed storage system, device, and storage medium | |
US20230144797A1 (en) | Fair Arbitration Between Multiple Sources Targeting a Destination |
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 |