CN116663639B - 一种梯度数据同步方法、系统、装置及介质 - Google Patents
一种梯度数据同步方法、系统、装置及介质 Download PDFInfo
- Publication number
- CN116663639B CN116663639B CN202310945008.4A CN202310945008A CN116663639B CN 116663639 B CN116663639 B CN 116663639B CN 202310945008 A CN202310945008 A CN 202310945008A CN 116663639 B CN116663639 B CN 116663639B
- Authority
- CN
- China
- Prior art keywords
- node
- working
- gradient data
- working node
- gradient
- 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
- 238000000034 method Methods 0.000 title claims abstract description 233
- 230000002776 aggregation Effects 0.000 claims abstract description 340
- 238000004220 aggregation Methods 0.000 claims abstract description 340
- 238000004364 calculation method Methods 0.000 claims abstract description 176
- 230000008569 process Effects 0.000 claims abstract description 148
- 238000012549 training Methods 0.000 claims abstract description 114
- 238000003062 neural network model Methods 0.000 claims abstract description 41
- 238000003860 storage Methods 0.000 claims description 58
- 238000004590 computer program Methods 0.000 claims description 10
- 238000003491 array Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 abstract description 15
- 238000013528 artificial neural network Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 11
- 238000009826 distribution Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
-
- 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)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了一种梯度数据同步方法、系统、装置及介质,涉及神经网络技术领域,解决训练效率低以及模型参数陈旧的问题。该方案预先选中M个工作节点,作为触发节点;在每次迭代过程中,若存在Z个触发节点完成梯度数据计算,触发各个工作节点执行梯度数据聚合操作;根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数。可见,只要有Z个触发节点完成了梯度数据计算就触发各个工作节点执行梯度数据聚合,可减少等待所有加速器计算完一个批次的训练数据后才同步更新模型参数所需的时间,避免占用加速器的计算资源。此外,选择M个节点作为触发节点还可以减少模型参数陈旧性的问题,提高训练效率。
Description
技术领域
本申请涉及神经网络技术领域,特别涉及一种梯度数据同步方法、系统、装置及介质。
背景技术
随着神经网络模型的不断优化和升级,神经网络的尺寸也越来越大,导致高效的模型训练变得越来越重要,分布式模型训练方法应运而生。然而,在根据梯度数据对模型参数进行更新时,目前已有的方法存在训练效率低下或者模型参数陈旧的问题。
因此,提供一种梯度数据同步方法,以在对模型参数进行更新时能在一定程度上提高训练效率以及尽可能的避免模型参数陈旧的问题是本领域亟需解决的技术问题。
发明内容
本申请的目的是提供一种梯度数据同步方法、系统、装置及介质,只要有Z个触发节点完成了梯度数据计算就触发各个工作节点执行梯度数据聚合,可减少等待所有加速器计算完一个批次的训练数据后才同步更新模型参数所需的时间,避免占用加速器的计算资源。此外,选择M个节点作为触发节点还可以减少模型参数陈旧性的问题,提高训练效率。
为解决上述技术问题,本申请提供了一种梯度数据同步方法,应用于分布式训练系统中的处理器,所述分布式训练系统设置有N个工作节点,所述工作节点为加速器,所述方法包括:
获取待处理数据,所述待处理数据为图像数据或文本数据或音频数据;
对所述待处理数据进行划分,并将划分后的待处理数据分配至各个所述工作节点,以便于各所述工作节点根据和自身对应的待处理数据计算梯度数据;
在每次迭代过程中,预先选中M个所述工作节点作为触发节点,M、N均为正整数,且M<N;
判断是否存在Z个所述触发节点完成梯度数据计算;
若存在,则触发各个所述工作节点执行梯度数据聚合操作;Z为正整数,且Z≤M;
触发各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数。
在一个实施例中,各个所述工作节点设置有和自身对应的编号;
预先选中M个所述工作节点,作为触发节点,包括:
通过随机数生成器随机选择1至N中的M个数,并将编号与选中的M个数对应的工作节点作为所述触发节点。
在一个实施例中,所述处理器中预先存储有工作节点信息表,所述工作节点信息表中包括与各个所述工作节点一一对应、且与每次迭代过程一一对应、用于表征各个所述工作节点在每次迭代过程中是否完成梯度数据计算的工作状态标志位;
在每次迭代过程中,预先选中M个所述工作节点作为触发节点之前,还包括:
对所述工作节点信息表中的各个所述工作状态标志位初始化为第一工作状态,所述第一工作状态用于表征工作节点未完成所述梯度数据计算。
在一个实施例中,判断是否存在Z个所述触发节点完成梯度数据计算之前,还包括:
接收各个所述工作节点发送的计算完成信息,所述工作节点在完成梯度数据计算时向所述处理器发送计算完成信息,所述计算完成信息包括当前迭代次数和工作节点的编号;
将所述工作信息表中与当前完成梯度数据计算的工作节点的编号和当前迭代次数对应的工作状态标志位更新为第二工作状态。
在一个实施例中,将所述工作信息表中与当前完成梯度数据计算的工作节点对应的工作状态标志位更新为第二工作状态之后,还包括:
根据所述当前迭代次数判断当前迭代过程中各个所述工作节点是否已启动所述梯度数据聚合操作;
若判定已启动所述梯度数据聚合操作,则发送参数更新消息至当前发送所述计算完成信息的工作节点,触发当前发送所述计算完成信息的工作节点根据所述梯度数据聚合操作后得到的聚合结果更新所述模型参数。
在一个实施例中,还包括:
若判定未启动所述梯度数据聚合操作,则根据所述当前迭代次数判断当前完成梯度数据计算的工作节点是否为当前迭代过程选中的所述触发节点;
若是所述触发节点,进入判断是否存在Z个所述触发节点完成梯度数据计算的步骤。
在一个实施例中,所述工作节点信息表中还包括与每次迭代过程对应、用于表征每次迭代过程中是否已启动所述梯度数据聚合操作的数据聚合启动标志位;
判断各个所述工作节点是否已启动所述梯度数据聚合操作,包括:
判断所述数据聚合启动标志位是否为启动标志;
若是启动标志,则判定各个所述工作节点已启动所述梯度数据聚合操作;否则,判定未启动所述梯度数据聚合操作。
在一个实施例中,初始状态下所述数据聚合启动标志为未启动标志;在判定存在Z个所述触发节点完成梯度数据计算之后,还包括:
将与当前迭代过程对应的数据聚合启动标志位更新为启动标志,并进入触发各个所述工作节点执行梯度数据聚合操作的步骤。
在一个实施例中,还包括:
预先为各个所述工作节点设置和所述工作节点一一对应的第一存储区域;
对应的,在所述工作节点完成梯度数据计算,得到待聚合数据之后,还包括;
将所述待聚合数据存储至和自身对应的第一存储区域。
在一个实施例中,各个所述工作节点执行梯度数据聚合操作的过程,包括:
各个所述工作节点从和自身对应的第一存储区域中读取所述待聚合数据,根据读取到的各个所述待聚合数据执行所述梯度数据聚合操作。
在一个实施例中,还包括:
预先为各个所述工作节点设置和所述工作节点一一对应的第二存储区域;
各个所述工作节点执行梯度数据聚合操作之后,还包括:
将所述聚合结果存储至各个所述工作节点对应的所述第二存储区域中。
在一个实施例中,触发各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数,包括:
触发各个所述工作节点根据和自身对应的第二存储区域中存储的聚合结果更新所述神经网络模型的模型参数。
在一个实施例中,各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数之前,还包括:
各个所述工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点;
若在当前迭代过程中完成所述梯度数据计算,则判定自身为非滞后节点;
若在当前迭代过程中未完成所述梯度数据计算,则判定自身为所述滞后节点;
各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数,包括:
若判定自身为非滞后节点,则基于和自身对应的所述第二存储区域中存储的聚合结果更新所述神经网络模型的模型参数,并进入下一次迭代过程;
若判定自身为所述滞后节点,则判断当前迭代过程中是否完成了更新模型参数的操作;若已完成更新模型参数的操作,则进入下一次迭代过程;若未完成所述更新模型参数的操作,则在接收到参数更新消息后基于所述第二存储区域中存储的聚合结果更新所述神经网络模型的模型参数,并进入下一次迭代过程。
在一个实施例中,各个所述工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点之前,还包括:
预先为各个所述工作节点设置和所述工作节点一一对应的滞后节点标志数组,所述滞后节点标志数组中的元素个数和迭代次数相同,所述滞后节点标志数组中的每个滞后节点标志位元素用于表征和自身对应的工作节点在每次迭代过程是否完成梯度数据计算;
各个所述工作节点在所述梯度数据聚合操作启动时,根据所述处理器发送的数据聚合启动消息初始化对应的滞后节点标志位,所述滞后节点标志位的状态包括滞后状态和非滞后状态;所述数据聚合启动消息包括当前迭代次数和与当前迭代过程中各个所述工作节点的工作状态;
各个所述工作节点根据各个所述工作节点在当前迭代过程中是否完成梯度数据计算确定各个所述工作节点是否为滞后节点,包括:
各个所述工作节点根据各个所述滞后节点标志数组中各个滞后节点标志位的状态确定自身是否为滞后节点;
若自身对应的所述滞后节点标志数组中与当前迭代过程对应的滞后节点标志位为滞后状态,则判定自身为所述滞后节点;
若自身对应的所述滞后节点标志数组中与当前迭代过程对应的滞后节点标志位为非滞后状态,则判定自身为所述非滞后节点。
在一个实施例中,触发各个所述工作节点执行梯度数据聚合操作,包括:
触发各个所述工作节点启动基于环形拓扑的梯度数据聚合操作。
在一个实施例中,还包括:
预先设置聚合标志数组,所述聚合标志数组中的元素个数和迭代次数相同,所述聚合标志数组中的每个聚合标志位元素用于表征每次迭代过程是否执行了基于环形拓扑的梯度数据聚合操作;
触发各个所述工作节点启动基于环形拓扑的所述梯度数据聚合操作之后,还包括:
在完成所述梯度数据聚合操作时,将所述聚合标志数组中与当前迭代次数对应的聚合标志位更新为已完成聚合标志。
在一个实施例中,还包括:
预先设置梯度更新标志数组,所述梯度更新标志数组中的元素个数和迭代次数相同,所述梯度更新标志数组中的每个梯度更新标志位元素用于表征每次迭代过程是否完成了模型参数更新的操作;
根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数之后,还包括:
将所述梯度更新标志数组中与当前迭代次数对应的梯度更新标志位更新为已完成更新标志。
在一个实施例中,还包括:
判断是否接收到预设工作节点发送的结束消息;
若接收到,则结束训练。
在一个实施例中,所述预设工作节点在满足预设要求时向所述处理器发送所述结束消息。
为解决上述技术问题,本申请还提供了一种梯度数据同步系统,应用于分布式训练系统中的处理器,所述分布式训练系统设置有N个工作节点,所述工作节点为加速器,所述系统包括:
数据获取单元,用于获取待处理数据,所述待处理数据为图像数据或文本数据或音频数据;
数据划分单元,用于对所述待处理数据进行划分,并将划分后的待处理数据分配至各个所述工作节点,以便于各所述工作节点根据和自身对应的待处理数据计算梯度数据;
触发节点选择单元,用于在每次迭代过程中,预先选中M个所述工作节点作为触发节点,M、N均为正整数,且M<N;
判断单元,用于判断是否存在Z个所述触发节点完成梯度数据计算;
聚合操作触发单元,用于在存在Z个所述触发节点完成梯度数据计算时,触发各个所述工作节点执行梯度数据聚合操作;Z为正整数,且Z≤M;
参数更新单元,用于触发各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数。
为解决上述技术问题,本申请还提供了一种梯度数据同步装置,包括:
存储器,用于存储计算机程序;
处理器,用于在存储计算机程序时,实现如上述所述的梯度数据同步方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的梯度数据同步方法的步骤。
本申请提供了一种梯度数据同步方法、系统、装置及介质,涉及神经网络技术领域,解决训练效率低以及模型参数陈旧的问题。该方案预先选中M个所述工作节点,作为触发节点;在每次迭代过程中,若存在Z个所述触发节点完成梯度数据计算,触发各个所述工作节点执行梯度数据聚合操作;根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数。可见,只要有Z个触发节点完成了梯度数据计算就触发各个工作节点执行梯度数据聚合,可减少等待所有加速器计算完一个批次的训练数据后才同步更新模型参数所需的时间,避免占用加速器的计算资源。此外,选择M个节点作为触发节点还可以减少模型参数陈旧性的问题,提高训练效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种梯度数据同步方法的流程示意图;
图2为本申请提供的一种处理器与各个工作节点之间的逻辑拓扑图;
图3为本申请提供的处理器的工作流程示意图;
图4为本申请提供的工作节点的工作流程示意图;
图5为本申请提供的一种梯度数据同步系统的结构框图;
图6为本申请提供的一种梯度数据同步装置的结构框图;
图7为本申请提供的一种计算机可读存储介质的结构框图。
具体实施方式
本申请的核心是提供一种梯度数据同步方法、系统、装置及介质,只要有Z个触发节点完成了梯度数据计算就触发各个工作节点执行梯度数据聚合,可减少等待所有加速器计算完一个批次的训练数据后才同步更新模型参数所需的时间,避免占用加速器的计算资源。此外,选择M个节点作为触发节点还可以减少模型参数陈旧性的问题,提高训练效率。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
同步数据并行需要等待所有节点计算完一个批次的数据后才能进行梯度更新,计算速度慢的节点会拖慢整个集群的训练速度;异步数据并行虽然能提高训练硬件的效率,但由于各个节点的计算速度不同,会导致模型参数的陈旧性问题。
为了解决同步和异步数据并行的问题,在分布式训练系统中预先选中M个工作节点作为触发节点,在每次迭代过程中,只有至少Z个触发节点完成梯度数据计算,才会触发各个工作节点执行梯度数据聚合操作。通过这种方式,既可以避免计算速度慢的节点拖慢整个集群的训练速度,又可以避免模型参数的陈旧性问题。
具体请参照图1,图1为本申请提供的一种梯度数据同步方法的流程示意图,该方法应用于分布式训练系统中的处理器,分布式训练系统设置有N个工作节点,工作节点为加速器(加速器可以为CPU(Central Processing Unit,中央处理器)、GPU(GraphicsProcessing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)等可以用于计算的硬件设备),方法包括:
S11:获取待处理数据,待处理数据为图像数据或文本数据或音频数据;
在分布式训练系统中,待处理数据的获取可以通过数据输入模块实现。数据输入模块可以使用数据加载器或数据读取器,将数据从存储系统中读取到内存中,以供后续处理。具体地,待处理数据可以通过网络传输、磁盘访问等方式获取。对于图像数据,可以通过下载或从数据库中提取的方式进行获取。对于文本数据,可以通过文件读取或者API调用的方式获取。对于音频数据,可以通过麦克风采集或音频文件读取的方式获取。以上只是本实施例列举的一些具体实现方式,具体实现方式不限于此。
通过获取待处理数据,分布式训练系统可以充分利用数据并行性,提高训练速度和模型的收敛效果。同时,获取的多样化数据也可以增加模型的泛化能力。
S12:对待处理数据进行划分,并将划分后的待处理数据分配至各个工作节点,以便于各工作节点根据和自身对应的待处理数据计算梯度数据;
在分布式训练系统中,待处理数据的划分和分配可以通过数据并行的方式实现。数据并行是将整个数据集划分为多个子数据集,并将这些子数据集分配给不同的工作节点进行处理。具体地,待处理数据可以通过随机划分或按照一定规则进行划分,并将划分后的子数据集分配给各个工作节点。工作节点可以根据自身的处理能力和负载情况选择适当的子数据集进行计算。
通过数据的划分和分配,分布式训练系统可以将大规模的训练任务分解为多个小任务,并行处理,从而提高了整体的计算效率和训练速度。此外,数据的划分和分配还可以减少单个工作节点的负载,提高系统的可扩展性和稳定性。
S13:在每次迭代过程中,预先选中M个工作节点作为触发节点,M、N均为正整数,且M<N;
具体地,在分布式训练中,如何对节点进行选择,以提高训练效率。以及如果对节点进行选择可以提高分布训练的均匀性。本实施例中通过选取M个节点作为触发节点,在一个实施例中,在每次迭代过程中,预先选中M个工作节点,作为触发节点的具体方式为:在每次迭代过程中,通过随机数生成器随机选择1至N中的M个数,并将编号与选中的M个数对应的工作节点作为触发节点。此种实现方式,通过在每次迭代过程中随机选择M个工作节点作为触发节点,确保了所有节点都有进行计算的机会,并能够保证模型参数的新鲜性。此外,本实施例中,在每次迭代过程中动态选择节点,也可以保证模型参数的新鲜性和训练效率的提高。
需要说明的是,M个触发节点应尽量避免选择计算速度最快和计算速度最慢的工作节点。相对应的,本步骤并没有人为主观的选中M个工作节点作为触发节点是因为:人为选中的节点存在主观性,且若认为根据计算速度选择计算速度中等的工作节点作为触发节点时,在实际应用中,计算速度会因为需要执行的任务量不同以及硬件设备的不同而不同,此种方式不准确。
例如,在分布式训练系统中,设有10个工作节点,每次随机从这10个节点中选择3个节点作为触发节点,第一次迭代过程中选择编号为1、3、8的工作节点作为触发节点,第二次选择2、5、7的工作节点作为触发节点,以此类推,确保了所有节点都有进行计算的机会,并能够保证模型参数的新鲜性。
进一步的,可以根据用户需求调整触发节点的数量,并可以采用其他随机方法进行选择,例如,根据工作节点的计算性能进行权重分配。
综上,本步骤通过动态的触发节点选择,可以有效地提高分布式训练的训练效率和模型参数的新鲜性,从而提高模型的准确性和泛化性能。
S14:判断是否存在Z个触发节点完成梯度数据计算;
S15:若存在,则触发各个工作节点执行梯度数据聚合操作;Z为正整数,且Z≤M;
具体地,本步骤旨在说明在满足什么条件时触发各个工作节点执行梯度数据聚合操作。
本实施例中,通过对每个触发节点进行状态监测,判断其是否完成梯度数据计算,以及判断是否存在Z个触发节点完成梯度数据计算,在每次迭代过程中,每个触发节点都需要完成梯度数据计算,并将完成计算的状态返回给处理器。
例如,假设有8个工作节点,设置M=3,Z=2。在每次迭代过程中,只有至少有两个触发节点完成梯度计算,才会触发梯度数据聚合操作。第一次迭代时,触发节点1、2、3分别计算得到梯度g1、g2、g3,但只有1个触发节点计算完成,因此不会触发聚合操作。第二次迭代时,触发节点4、5、6分别计算得到梯度g4、g5、g6,有两个节点(5和6)完成计算,聚合节点触发聚合操作,通过梯度数据聚合得到聚合结果(也即聚合梯度),更新模型参数。依此类推,直到训练结束。
除了选择固定数量的触发节点外,还可以设置触发节点的阈值,如在每次迭代过程中,只要有超过50%的触发节点完成梯度计算,就会触发梯度数据聚合操作。
本步骤中,将Z个触发节点完成梯度数据计算作为触发梯度数据聚合操作的条件,在一定程度上不需要等待所有的触发节点均完成梯度聚合计算才可以执行梯度数据聚合操作,也并不是只要有工作节点完成梯度数据计算,就执行梯度数据聚合操作,在一定程度上提高了参数更新的效率以及解决了参数陈旧性的问题。
S16:触发各个工作节点根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数。
在梯度数据的聚合操作完成后,将聚合结果应用于神经网络模型的模型参数中,以实现模型参数的更新,至此完成一次迭代的过程,进入下一次迭代。
综上,采用分布式深度学习的方式,在多个工作节点运行神经网络模型的训练任务可以大大加快模型的训练速度,同时节省训练过程中所需的计算资源。采用梯度数据聚合操作可以提高模型的训练精度,减少梯度数据的变化范围,同时可以降低训练过程中的模型震荡情况,提高模型的稳定性和鲁棒性。此外,相比传统的同步和异步数据并行方法,本申请提供的分布式训练方法能够避免计算速度慢的节点拖慢整个集群的训练速度,同时可以避免模型参数的陈旧性问题,从而提高神经网络的训练效率和准确性。
在一个实施例中,处理器中预先存储有工作节点信息表,工作节点信息表中包括与各个工作节点一一对应、且与每次迭代过程一一对应、用于表征各个工作节点在每次迭代过程中是否完成梯度数据计算的工作状态标志位;
在每次迭代过程中,预先选中M个工作节点作为触发节点之前,还包括:
对工作节点信息表中的各个工作状态标志位初始化为第一工作状态,第一工作状态用于表征工作节点未完成梯度数据计算。
本实施例中,通过在处理器中预先存储工作节点信息表,实现了对各个工作节点在每个迭代过程中的工作状态进行监控和控制。通过初始化工作状态标志位为第一工作状态,可以确保在每次迭代开始时,所有工作节点都处于未完成梯度数据计算的状态。
具体地,利用工作状态标志位来记录每个工作节点在每次迭代中的工作状态。工作状态标志位与工作节点一一对应,并与每次迭代过程一一对应。该方式可以在每次迭代开始时遍历工作节点信息表,将所有的工作状态标志位初始化为第一工作状态。然后根据预先选中的触发节点数量M,在每次迭代过程中判断是否有Z个触发节点完成了梯度数据计算,并触发这些工作节点执行梯度数据聚合操作。最后,触发节点根据梯度数据聚合操作得到的结果更新神经网络模型的模型参数。
本实施例通过使用工作状态标志位来监控和控制工作节点的工作状态,可以确保每个工作节点在适当的时机参与到梯度数据计算和聚合中,从而提高训练的准确性和收敛速度。
在一个实施例中,判断是否存在Z个触发节点完成梯度数据计算之前,还包括:
接收各个工作节点发送的计算完成信息,工作节点在完成梯度数据计算时向处理器发送计算完成信息,计算完成信息包括当前迭代次数和工作节点的编号;
将工作信息表中与当前完成梯度数据计算的工作节点的编号和当前迭代次数对应的工作状态标志位更新为第二工作状态。
本实施例提出了一种在分布式训练系统中判断触发节点完成梯度数据计算的方法。具体地,工作节点在完成梯度数据计算时,工作节点会向处理器发送计算完成信息,其中包括当前迭代次数和工作节点的编号。接收到计算完成信息后,处理器将工作节点信息表中与当前完成梯度数据计算的工作节点的编号和当前迭代次数对应的工作状态标志位更新为第二工作状态。这样,通过监测工作节点信息表中的工作状态标志位,就可以判断是否存在Z个触发节点完成梯度数据计算。
通过本实施例,可以实现分布式训练系统中的梯度数据计算的动态调度和控制。根据触发节点的计算完成信息,系统可以动态地确定何时触发梯度数据聚合操作,从而实现梯度数据的实时聚合和模型参数的更新。
本实施例提高了分布式训练系统的效率和性能。通过实时判断触发节点的完成情况,可以避免等待所有工作节点完成梯度数据计算后才进行聚合操作,从而减少了系统的等待时间。同时,该方法还可以根据不同的计算情况灵活调整触发节点的数量,以达到最佳的系统性能。
在一个实施例中,将工作信息表中与当前完成梯度数据计算的工作节点对应的工作状态标志位更新为第二工作状态之后,还包括:
根据当前迭代次数判断当前迭代过程中各个工作节点是否已启动梯度数据聚合操作;
若判定已启动梯度数据聚合操作,则发送参数更新消息至当前发送计算完成信息的工作节点,触发当前发送计算完成信息的工作节点根据梯度数据聚合操作后得到的聚合结果更新模型参数。
本实施例中,在根据计算完成更新工作状态标志位之后,首先根据当前迭代次数判断各个工作节点是否已启动梯度数据聚合操作。如果已启动梯度数据聚合操作,则发送参数更新消息给当前发送计算完成信息的工作节点,使其根据梯度数据聚合操作的结果来更新模型参数。
本实施例的原理是通过判断当前迭代次数中是否已经启动梯度数据聚合操作来确定是否可以进行模型参数的更新。在分布式训练系统中,各个工作节点通过计算梯度数据来更新模型参数。当各个工作节点计算完梯度数据后,需要进行梯度数据聚合操作,将各个节点计算得到的梯度数据进行合并,以得到全局的梯度数据。只有当所有的触发节点完成梯度数据计算并进行梯度数据聚合后,才能更新模型参数。对于不是触发节点的工作节点而言,在其完成了梯度数据计算之后,根据当前是否已启动梯度数据聚合操作确定是等待还是基于聚合结果更新模型参数。
本实施例中,通过启动梯度数据聚合操作,可以在每次迭代过程中及时更新模型参数,从而加速模型的训练过程。根据当前迭代次数来判断是否启动梯度数据聚合操作,可以根据实际情况进行调节和控制,适应不同的训练场景和需求。
在一个实施例中,还包括:
若判定未启动梯度数据聚合操作,则根据当前迭代次数判断当前完成梯度数据计算的工作节点是否为当前迭代过程选中的触发节点;
若是触发节点,进入判断是否存在Z个触发节点完成梯度数据计算的步骤。
在分布式训练系统中,如果判断当前完成梯度数据计算的工作节点未启动梯度数据聚合操作,那么需要进一步判断该工作节点是否为当前迭代过程中选中的触发节点。则本实施例的具体实现方式为:
根据当前迭代次数和预先设定的M个触发节点数,选中M个工作节点作为触发节点。在每次迭代过程中,工作节点在完成梯度数据计算后向处理器发送计算完成信息,其中包括当前迭代次数和工作节点的编号。处理器接收到工作节点的计算完成信息后,更新工作节点信息表中与该工作节点对应的工作状态标志位为第二工作状态,表明该工作节点已经完成梯度数据计算。根据当前迭代次数和触发节点数,判断是否已经启动梯度数据聚合操作。如果已经启动梯度数据聚合操作,则处理器发送参数更新消息给当前发送计算完成信息的工作节点,触发该工作节点根据梯度数据聚合操作后得到的聚合结果来更新模型参数。如果还未启动梯度数据聚合操作,则判断当前完成梯度数据计算的工作节点是否为触发节点。如果是触发节点,则进入判断是否存在Z个触发节点完成梯度数据计算的步骤。
本实施例中的方式,提高了分布式训练系统的效率和性能:通过将待处理数据分配给多个工作节点进行并行计算,减少了计算时间。并且只有在判断满足条件时才触发梯度数据聚合操作,避免了不必要的通信和计算开销。提高了模型参数更新的效率:只有部分工作节点需要执行梯度数据聚合操作,而其他节点可以直接更新模型参数,减少了不必要的通信和计算开销。提高了模型的收敛速度和准确性:通过根据当前迭代次数选中少数触发节点进行梯度数据聚合操作,可以更快地更新模型参数,加快算法的收敛速度并提升模型的准确性。
在一个实施例中,工作节点信息表中还包括与每次迭代过程对应、用于表征每次迭代过程中是否已启动梯度数据聚合操作的数据聚合启动标志位;
判断各个工作节点是否已启动梯度数据聚合操作,包括:
判断数据聚合启动标志位是否为启动标志;
若是启动标志,则判定各个工作节点已启动梯度数据聚合操作;否则,判定未启动梯度数据聚合操作。
本实施例描述了一种梯度数据聚合操作启动的机制。具体而言,工作节点信息表中包括了一个数据聚合启动标志位,用于表征每次迭代过程中是否已经启动了梯度数据聚合操作。该机制的技术原理为:在分布式训练系统中,每个工作节点都需要计算梯度数据以进行模型参数的更新。在某次迭代过程中,当需要进行梯度数据聚合操作时,该操作需要在工作节点计算梯度数据之后触发。为了实现这一点,本实施例提出了一种使用数据聚合启动标志位来判断工作节点是否已经启动了梯度数据聚合操作的实现方式。具体而言,每个工作节点在完成梯度数据计算后,会向处理器发送计算完成信息,包括当前迭代次数和工作节点的编号。处理器接收到这些信息后,会将工作节点信息表中与当前完成梯度数据计算的工作节点的编号和当前迭代次数对应的工作状态标志位更新为第二工作状态,并根据当前迭代次数判断当前迭代过程是否已经启动梯度数据聚合操作。也即,通过检查数据聚合启动标志位来确定该操作的状态。如果数据聚合启动标志位为启动标志,即设置为已启动状态,那么表示各个工作节点已经启动了梯度数据聚合操作。反之,如果数据聚合启动标志位不是启动标志,即设置为未启动状态,那么表示各个工作节点没有启动梯度数据聚合操作。
本实施例中,通过使用数据聚合启动标志位,可以灵活控制及了解分布式训练系统中梯度数据聚合操作的启动状态。通过判断数据聚合启动标志位,可以根据实际情况灵活地控制梯度数据聚合操作的启动时机。这样可以有效避免在不必要的时候进行数据聚合操作,从而提高系统的效率。梯度数据聚合操作通常需要在工作节点之间进行大量的通信。通过使用数据聚合启动标志位,可以确保只有在真正需要进行数据聚合时,才进行通信操作。这样可以降低系统的通信开销,提高训练效率。
在一个实施例中,初始状态下数据聚合启动标志为未启动标志;在判定存在Z个触发节点完成梯度数据计算之后,还包括:
将与当前迭代过程对应的数据聚合启动标志位更新为启动标志,并进入触发各个工作节点执行梯度数据聚合操作的步骤。
本实施例通过维护一个数据聚合启动标志位来判断是否启动了数据聚合操作。在每次迭代过程中,通过判断数据聚合启动标志位是否为启动标志来确定是否启动了数据聚合操作。初始状态下,数据聚合启动标志位为未启动标志,表示还未启动数据聚合操作。当判断存在Z个触发节点完成梯度数据计算后,将与当前迭代过程对应的数据聚合启动标志位更新为启动标志,并触发各个工作节点执行梯度数据聚合操作。
本实施例可以根据具体的需求来控制数据聚合操作的启动。通过设定触发节点数量Z,可以自由地控制何时启动数据聚合操作。当触发节点数量达到Z时,即表示已经完成了足够的梯度数据计算,可以启动数据聚合操作。
在一个实施例中,还包括:
预先为各个工作节点设置和工作节点一一对应的第一存储区域;
对应的,在工作节点完成梯度数据计算,得到待聚合数据之后,还包括;
将待聚合数据存储至和自身对应的第一存储区域。
本实施例描述了一种在分布式训练系统中使用第一存储区域来存储梯度数据的方法。具体地,为每个工作节点设置了一个对应的第一存储区域,并在工作节点完成梯度数据计算后,将待聚合数据存储到自身对应的第一存储区域。可以减少梯度数据的传输量和通信开销。在每次迭代过程中,只需要将待聚合数据传输到相应的第一存储区域,而不是传输到其他节点。这样可以提高系统的效率和性能。
这种方法可以降低了分布式训练系统的通信开销和延迟。传输梯度数据是一个耗时的操作,特别是在大规模训练系统中,网络的带宽和延迟常常成为性能瓶颈。通过使用第一存储区域来存储梯度数据,可以减少节点之间的通信量,从而减轻网络负载并提高训练速度。
此外,使用第一存储区域还可以提供更好的灵活性和可扩展性。每个工作节点都有自己独立的存储区域,可以根据需要进行扩展和配置。这使得系统可以灵活适应不同的训练任务和数据规模,同时还可以提供良好的容错性,即使某个节点出现故障,其他节点仍然可以工作。
在一个实施例中,各个工作节点执行梯度数据聚合操作的过程,包括:
各个工作节点从和自身对应的第一存储区域中读取待聚合数据,根据读取到的各个待聚合数据执行梯度数据聚合操作。
本实施例中通过将待聚合数据存储在各个工作节点对应的第一存储区域中,实现了梯度数据的局部处理和聚合。每个工作节点只需要关注和读取自己的待聚合数据,在各个工作节点执行梯度数据聚合操作的过程中,工作节点首先从与自身对应的第一存储区域中读取待聚合数据。待聚合数据是在每个工作节点完成梯度数据计算后生成的。然后,工作节点根据读取到的各个待聚合数据执行梯度数据聚合操作。由于待聚合数据已经存储在本地,工作节点可以在本地进行梯度数据聚合操作,避免了频繁的网络通信,提高了梯度数据聚合的效率和速度。
本实施例中首先通过将梯度数据的计算和聚合分散到多个工作节点上,能够充分利用分布式系统中的计算资源,提高了训练的速度和效率。其次,通过减少网络通信和数据传输,降低了系统的延迟和负载,提高了整体系统的性能。此外,通过在每次迭代过程中选择部分工作节点作为触发节点进行梯度数据聚合,可以灵活地控制计算和通信的负载,提高系统的可扩展性和容错性。
在一个实施例中,还包括:
预先为各个工作节点设置和工作节点一一对应的第二存储区域;
各个工作节点执行梯度数据聚合操作之后,还包括:
将聚合结果存储至各个工作节点对应的第二存储区域中。
本实施例中,为每个工作节点预先设置了对应的第二存储区域,并在工作节点执行梯度数据聚合操作之后,将聚合结果存储至各个工作节点对应的第二存储区域中。
具体地,在本申请的在分布式训练系统中,每个工作节点的第二存储区域用于存储梯度数据聚合操作的结果。当各个工作节点完成梯度数据计算后,将待聚合数据存储至自身对应的第一存储区域。然后,在触发节点判断存在得到了足够的触发节点完成梯度数据计算之后,触发各个工作节点执行梯度数据聚合操作。在聚合操作完成后,将聚合结果存储至各个工作节点对应的第二存储区域。
本实施例中,通过为每个工作节点设置独立的第二存储区域,实现了将聚合结果与工作节点的原始输入数据分开存储。这种分离可以提高系统的并发度和吞吐量,避免了在聚合操作期间对原始输入数据进行读写的冲突。此外,通过将聚合结果存储至各个工作节点对应的第二存储区域,确保了每个工作节点都可以访问到最新的聚合结果。这样,即使某个工作节点在聚合操作期间出现故障或无法参与到聚合操作中,其他工作节点仍然可以通过读取自己的第二存储区域中的聚合结果来更新神经网络模型的模型参数,避免了单点故障对整个系统的影响。
在一个实施例中,触发各个工作节点根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数,包括:
触发各个工作节点根据和自身对应的第二存储区域中存储的聚合结果更新神经网络模型的模型参数。
本实施例中,在每个工作节点在执行梯度数据聚合操作后,将聚合结果存储在其对应的第二存储区域中。这意味着每个工作节点都拥有自己的第二存储区域。 触发各个工作节点根据各自的第二存储区域中的聚合结果来更新神经网络模型的模型参数。这意味着更新操作是在每个工作节点上独立进行的。只有处理器和工作节点之间进行通信,而工作节点之间无需相互通信。这样可以减少通信量,降低系统的负载和延迟。由于模型参数的更新是在每个工作节点上独立进行的,各个工作节点可以并行地进行更新操作。这提高了整个训练系统的效率。每个工作节点都可以根据自身的情况和资源来进行模型参数的更新,可以根据需要动态地调整分布式更新的规模和数量。
在一个实施例中,各个工作节点根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数之前,还包括:
各个工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点;
若在当前迭代过程中完成梯度数据计算,则判定自身为非滞后节点;
若在当前迭代过程中未完成梯度数据计算,则判定自身为滞后节点;
各个工作节点根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数,包括:
若判定自身为非滞后节点,则基于和自身对应的第二存储区域中存储的聚合结果更新神经网络模型的模型参数,并进入下一次迭代过程;
若判定自身为滞后节点,则判断当前迭代过程中是否完成了更新模型参数的操作;若已完成更新模型参数的操作,则进入下一次迭代过程;若未完成更新模型参数的操作,则在接收到参数更新消息后基于第二存储区域中存储的聚合结果更新神经网络模型的模型参数,并进入下一次迭代过程。
本实施例主要针对分布式训练系统中存在的滞后节点。滞后节点指的是在当前迭代过程中未完成梯度数据计算的工作节点。在该实施例中,首先各个工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点。如果完成了梯度数据计算,则判定为非滞后节点,否则为滞后节点。针对非滞后节点,它们可以直接基于自身对应的第二存储区域中存储的聚合结果来更新神经网络模型的模型参数,并进入下一次迭代过程。对于滞后节点,在判断当前迭代过程中是否完成了更新模型参数的操作后,如果已经完成了更新模型参数的操作,则直接进入下一次迭代过程。但如果滞后节点在当前迭代过程中未完成更新模型参数的操作,它们需要等待接收到参数更新消息后再进行模型参数更新。并且这些滞后节点将基于第二存储区域中存储的聚合结果来更新模型参数,并进入下一次迭代过程。
通过引入滞后节点的判定和参数更新机制,可以提高分布式训练系统的效率和稳定性。一方面,针对那些计算能力较弱或者网络延迟较高的节点,可以避免其对整个系统的性能造成过大影响。另一方面,通过等待参数更新消息的方式,可以保证所有节点最终收敛到相同的模型参数,提高整个系统的稳定性和一致性。
总而言之,本实施例提供的这种处理滞后节点的方案,能够有效优化模型参数更新过程,提高系统的训练效率和稳定性。
在一个实施例中,各个工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点之前,还包括:
预先为各个工作节点设置和工作节点一一对应的滞后节点标志数组,滞后节点标志数组中的元素个数和迭代次数相同,滞后节点标志数组中的每个滞后节点标志位元素用于表征和自身对应的工作节点在每次迭代过程是否完成梯度数据计算;
各个工作节点在梯度数据聚合操作启动时,根据处理器发送的数据聚合启动消息初始化对应的滞后节点标志位,滞后节点标志位的状态包括滞后状态和非滞后状态;数据聚合启动消息包括当前迭代次数和与当前迭代过程中各个工作节点的工作状态;
各个工作节点根据各个工作节点在当前迭代过程中是否完成梯度数据计算确定各个工作节点是否为滞后节点,包括:
各个工作节点根据各个滞后节点标志数组中各个滞后节点标志位的状态确定自身是否为滞后节点;
若自身对应的滞后节点标志数组中与当前迭代过程对应的滞后节点标志位为滞后状态,则判定自身为滞后节点;
若自身对应的滞后节点标志数组中与当前迭代过程对应的滞后节点标志位为非滞后状态,则判定自身为非滞后节点。
本实施例主要描述了在分布式训练系统中,根据工作节点在当前迭代过程中是否完成梯度数据计算的状态来确定自身是否为滞后节点。该方法中还包括预先为工作节点设置滞后节点标志数组,用于表征工作节点是否滞后的状态。滞后节点标志数组的每个元素对应一个迭代过程,用于记录与其对应的工作节点在该迭代过程中是否完成梯度数据计算。当进行梯度数据聚合操作时,根据处理器发送的数据聚合启动消息初始化对应的滞后节点标志位的状态。
在此技术方案中,滞后节点的概念指的是在当前迭代过程中未完成梯度数据计算的工作节点。通过判断工作节点自身对应的滞后节点标志数组中与当前迭代过程对应的滞后节点标志位的状态,可以确定工作节点是否滞后。
本实施例,通过判断工作节点是否滞后,可以合理安排各个工作节点的工作,避免滞后节点对整个分布式训练系统的性能造成影响。只有滞后节点需要等待其他完成梯度计算的节点执行梯度数据聚合操作,非滞后节点可以直接更新模型参数,减少了通信的次数和开销。对于滞后节点而言,如果在接收到参数更新消息前未完成更新模型参数的操作,则可以依据滞后节点标志数组中存储的聚合结果进行更新,从而保证系统的稳定性和容错性。
总之,本实施例采用滞后节点标志数组和工作节点的状态判断机制,通过合理划分滞后节点和非滞后节点,可以提高分布式训练系统的效率、降低通信开销,并增强系统的容错性。
在一个实施例中,触发各个工作节点执行梯度数据聚合操作,包括:
触发各个工作节点启动基于环形拓扑的梯度数据聚合操作。
在分布式训练系统中,为了更新神经网络模型的模型参数,需要对各个工作节点计算的梯度数据进行聚合操作。在传统的分布式训练系统中,通常是通过一个中心节点来收集并聚合所有工作节点的梯度数据。这种方法存在一些问题,例如:中心节点可能成为系统的瓶颈,导致训练效率低下,而且系统的可扩展性有限。
本实施例提出了基于环形拓扑的梯度数据聚合操作,以解决传统方法存在的问题。在这种方法中,聚合操作是由各个工作节点自行完成的,而不需要借助中心节点。具体来说,为了提高训练速度和效果,需要将各个工作节点计算得到的梯度数据进行聚合,以更新神经网络模型的模型参数。触发梯度数据聚合操作的目的是将各个工作节点的梯度数据整合起来,形成一个全局聚合结果,从而更新模型参数。
其中,采用基于环形拓扑的梯度数据聚合操作可以提高梯度数据的交换效率和通信效率。基于环形拓扑,各个工作节点按照一定的顺序连接,每个节点只与其相邻的上一个节点和下一个节点进行通信。这种拓扑结构下,每个节点只需要将自己计算得到的梯度数据发送给下一个节点,并接收上一个节点发送的梯度数据,然后根据相应的聚合算法进行梯度数据的聚合操作。
由于基于环形拓扑的通信方式只需要节点之间进行局部通信,相对于其他拓扑结构来说,减少了节点之间的通信距离和传输次数。基于环形拓扑的通信方式可以使每个节点在进行梯度数据聚合操作时,只需要与其相邻的节点进行通信,避免了冗余的通信,提高了计算效率。基于环形拓扑的梯度数据聚合操作具有较好的可扩展性,当系统规模增大时,只需按照一定的规则增加工作节点并重新构建环形拓扑即可,无需对整个系统进行全面的重构。
因此,使用基于环形拓扑的梯度数据聚合操作可以在分布式训练系统中提高通信效率、计算效率和可扩展性,从而优化模型参数的更新过程,加快训练速度和提升模型的性能。
在一个实施例中,还包括:
预先设置聚合标志数组,聚合标志数组中的元素个数和迭代次数相同,聚合标志数组中的每个聚合标志位元素用于表征每次迭代过程是否执行了基于环形拓扑的梯度数据聚合操作;
触发各个工作节点启动基于环形拓扑的梯度数据聚合操作之后,还包括:
在完成梯度数据聚合操作时,将聚合标志数组中与当前迭代次数对应的聚合标志位更新为已完成聚合标志。
本实施例中,提供了一种基于环形拓扑的梯度数据聚合操作,并设置了一个聚合标志数组。在该实施例中,每次进行梯度数据聚合操作之前,预先设置了一个聚合标志数组。该数组的元素个数与迭代次数相同,即每次迭代过程都对应一个聚合标志位元素。当触发各个工作节点启动基于环形拓扑的梯度数据聚合操作时,各个工作节点按照环形拓扑结构进行通信,并传输梯度数据。在完成梯度数据聚合操作时,会更新聚合标志数组中与当前迭代次数对应的聚合标志位。将该标志位更新为已完成聚合标志,表示该迭代过程已经执行了基于环形拓扑的梯度数据聚合操作。
通过设置聚合标志数组,可以方便地判断每次迭代过程是否执行了梯度数据聚合操作。这对于分布式训练系统的管理和调度非常有用。同时,基于环形拓扑的梯度数据聚合操作可以提高梯度计算的效率,减少数据传输和通信的开销。
综上,本实施例提供的方式来执行基于环形拓扑的梯度数据聚合操作,并设置了聚合标志数组来方便地监控和管理聚合操作的执行。这样可以提高分布式训练系统的性能和可管理性。
在一个实施例中,还包括:
预先设置梯度更新标志数组,梯度更新标志数组中的元素个数和迭代次数相同,梯度更新标志数组中的每个梯度更新标志位元素用于表征每次迭代过程是否完成了模型参数更新的操作;
根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数之后,还包括:
将梯度更新标志数组中与当前迭代次数对应的梯度更新标志位更新为已完成更新标志。
本实施例进一步增加了预先设置梯度更新标志数组和更新梯度更新标志位的步骤。具体地,每个工作节点在完成梯度数据聚合操作后,根据聚合结果更新神经网络模型的模型参数。为了保证更新操作的正确执行,引入梯度更新标志数组,并在每次迭代过程中更新对应的梯度更新标志位。
在每次迭代过程中,会判断是否触发了梯度数据聚合操作,即判断聚合标志数组中与当前迭代次数对应的聚合标志位是否已更新为已完成聚合标志。如果已完成聚合,则触发各个工作节点根据聚合结果更新模型参数,并将梯度更新标志数组中与当前迭代次数对应的梯度更新标志位更新为已完成更新标志。
本实施例中,通过使用梯度更新标志数组,可以确保在每次迭代过程中都能正确判断梯度数据聚合操作是否已完成,避免了可能出现的错误操作。梯度更新标志数组的引入可以减少工作节点不必要的计算和通信开销。当梯度数据聚合操作未完成时,工作节点可以继续计算梯度数据,而无需进行更新操作。通过实时更新梯度更新标志位,可以优化系统的工作流程,避免了重复计算和通信的冗余操作,从而提高整个系统的训练效率。
综上所述,本实施例中的方式有助于提高分布式训练系统的稳定性、可靠性和效率,进一步优化了梯度数据聚合操作和模型参数更新的流程。
在一个实施例中,还包括:
判断是否接收到预设工作节点发送的结束消息;
若接收到,则结束训练。
本实施例中,通过划分待处理数据和分配至各个工作节点,并在每次迭代中选择一部分工作节点作为触发节点进行梯度数据计算。当存在足够数量的触发节点完成梯度数据计算时,系统会触发这些工作节点执行梯度数据聚合操作,得到聚合结果后更新神经网络模型的模型参数。
本实施例是在训练过程中,监测是否接收到预设工作节点发送的结束消息。这可以通过在预设工作节点中设置一个终止信号,当某个工作节点完成了训练任务并准备结束时,它会发送一个结束消息通知处理器。处理器在接收到这个消息后,会立即结束当前迭代过程并停止训练。
本实施例,通过判断接收到结束消息来结束训练,可以在训练过程中动态地控制训练的停止时机。这样,在训练任务完成后,可以及时终止训练过程,节省计算资源和时间。同时,该方法还可以确保整个分布式训练系统的同步性和一致性,避免了因为某个工作节点提前结束而导致的数据不一致问题。
在一个实施例中,预设工作节点在满足预设要求时向处理器发送结束消息。
本实施例旨在提供一种预设工作节点发送结束消息的机制。在这种机制下,预设工作节点会在满足预设要求时向处理器发送结束消息。预设要求可以是满足最大迭代次数或模型参数更新结果满足精度要求。
通过设置预设要求,可以在满足特定条件时及时结束训练,避免不必要的计算和资源浪费。同时,预设工作节点的选择和发送结束消息的判断可以根据具体需求进行灵活调整,满足不同场景下的训练需求。
一个具体实施例描述如下:
请参照图2,图2为本申请提供的一种处理器与各个工作节点之间的逻辑拓扑图。本实施例中设置了处理器来集中管理各个工作节点,以决定何时执行梯度数据聚合,以及进行梯度聚合时是对哪些数据进行聚合。各个工作节点均可以与处理器节点通信。
1、为处理器和各个工作节点分别各启动一个进程,0号进程对应处理器,1号进程对应工作节点1,2号进程对用计算节点2,以此类推。
2、各进程初始化,包括处理器的初始化和各工作节点的初始化。
其中,处理器的初始化包括:
初始化工作节点信息表中的各条目(一共MAX_STEPS个条目,其中MAX_STEPS为训练的最大迭代次数),其中:数据聚合启动标志位allreduce_flag初始化为false,随机触发节点使用随机数生成器生成(1,N)之间的任意两个数字(也即M=2),其中N为集群中的工作节点个数,各工作节点的计算状态工作节点_n_state初始化为0。假设集群中共有4个工作节点,则初始化后的工作节点信息表示例如表1所示:
表1 初始化的工作节点信息表
表1中第一列为当前迭代次数,第二列为每次迭代过程中对应的数据聚合启动标志的初始化状态,第三列和第四列表示每次迭代过程中通过随机数选择器选择出来的两个工作节点对应的编号,其余列为非触发节点的计算状态标志为的初始化状态。
各个工作节点的初始化过程为:
在每个工作节点进程中,设置第一存储区域origin_buffer用于存储待聚合数据,设置第二存储区域res_buffer用于存储聚合操作完成得到的聚合结果,二者均初始化为0,同时设置聚合标志数组ring_allreudce_flag[MAX_STEPS]用于标记每一个迭代步中是否已执行了ring allreduce操作,滞后节点标志数组straggler_flag[MAX_STEPS]用于表示当前节点在各个迭代次中是否是滞后节点(根据各个工作节点的计算状态标志位确定),梯度更新标志数组 update_flag[MAX_STEPS]用于表示当前节点在各个迭代次中是否已更新过模型参数,其值均初始化为false,其中MAX_STEPS为训练的最大迭代次数。每个工作节点进程中启动两个线程,其中线程1用于计算,线程2用于与处理器之间的信息交互及梯度数据的聚合通信。
3、开始训练,每个工作节点获取一个批次的训练数据(如图像数据或文本数据或音频数据),执行前向和反向计算获取本地梯度数据,然后在完成梯度数据计算之后发送计算完成信息给处理器,所发送消息包括,该工作节点的节点编号woker_i和当前所处的迭代次数iter。
4、处理器接收到某一工作节点发送来的计算完成消息,根据计算完成消息的内容更新工作节点信息表,首先根据迭代次数iter和节点编号woker_i找到其在工作节点信息表中的位置,然后更新工作节点信息表中的该工作节点状态为1。
接着检查数据聚合启动标志位allreduce_flag,并查看该工作节点是否为候选的触发节点。
若当前迭代次的数据聚合启动标志为false(说明当前迭代次尚未触发执行梯度数据聚合操作),且该节点为触发节点之一,则修改当前迭代次的数据聚合启动标志allreduce_flag为true,并发送数据聚合启动消息给各个工作节点节点,发送的消息包括:数据聚合启动指令、当前迭代次iter、及当前迭代次的各工作节点的状态(从工作节点信息表中获取,0表示该节点为straggler,1表示该节点为非straggler);
若当前迭代次的数据聚合启动标志位为false,且该节点不是触发节点之一,则处理器不需任何响应;
若当前迭代次的数据聚合启动标志位为true时(说明当前迭代次已经触发执行了梯度数据聚合操作),发送参数更新消息给该节点,令其使用第二存储区域res_buffer中的聚合结果更新当前工作节点的模型参数。
5、当各个工作节点收到来自处理器节点的数据聚合启动信息后,首先将该节点的状态信息存储到straggler_flag[iter],然后基于环状拓扑结构开启梯度数据聚合操作,基于各个工作节点的origin_buffer空间中的数据进行梯度数据聚合操作,梯度数据聚合操作完成后获取的平均梯度数据存储在各个工作节点的res_buffer中,用于后续的模型参数更新,同时更新ring_allreudce_flag[Iter]为true。
在获取平均梯度数据(聚合结果)存于res_buffer后,各个工作节点检查自身straggler_flag[iter]标志以确认其是否是straggler节点,若不是straggler节点,则使用res_buffer中的聚合结果更新模型参数,然后开始下一次迭代计算过程;若是straggler节点,则查看当前迭代过程对应的梯度更新标志位update_flag[iter]是否为true,若是,则开始下一次迭代计算过程,若否,则等待直至该工作节点接收到处理器的参数更新消息,使用res_buffer中的梯度数据更新其模型参数,并更新标志update_flag[iter]为true后,再开始下一次迭代计算过程。
6、返回步骤3,开始下一次迭代训练。重复以上过程,直至训练结束。
对应的,请参照图3,图3为本申请提供的处理器的工作流程示意图。
1、处理器初始化;2、等待接收各个工作节点发送的信息;3、接收各个工作节点发送的信息,并将其存储至消息队列中;4、从消息队列中读取计算完成信息依次处理;5、若当前消息为阶数训练消息,则直接结束该进程;6、若当前消息为计算完成消息,则确定当前工作节点在工作节点信息表中的位置,并将其计算状态更新为计算完成状态,也即更新为1;7、进而判断数据聚合启动标志位allreduce_flag==false,若是,则判断该工作节点是否为选中的触发节点,若是,则修改当前迭代次数的数据聚合启动标志allreduce_flag==true,并发送数据聚合启动消息至各个工作节点,以触发聚合操作,该条消息处理结束。8、数据聚合启动标志allreduce_flag==false时,若判定该工作节点不是触发节点时,不做任何处理,直接判定该条消息处理结束。9、数据聚合启动标志allreduce_flag==true时,直接发送参数更新消息给当前的工作节点,该条消息处理结束。
对应的,请参照图4,图4为本申请提供的工作节点的工作流程示意图。
工作节点中初始化之后,启动2个线程,其中线程1用于计算,线程2用于与处理器进行通信。线程1:获取一批次的待处理数据,进行前向和反向计算,得到梯度数据,发送计算完成信息给处理器,判断ring_allreudce_flag[Iter]==true?在ring_allreudce_flag[Iter]==false时,不做处理。在ring_allreudce_flag[Iter]==true时,判断straggler_flag[iter]是否为true?若straggler_flag[iter]为true,则判断update_flag[iter]是否为true?若update_flag[iter]为true,则结束本次迭代训练,若update_flag[iter]为false,则重新进入判断update_flag[iter]是否为true的步骤;若straggler_flag[iter]为false,则直接用res_buffer中的梯度数据更新其模型参数。其中判断训练是否结束的方式可以是通过迭代次数判断,在判定结束时,通过预设工作节点(此处选择为worker1),发送结束消息给处理器,若不是此预设工作节点,则直接结束训练。线程2:接收处理器发送的消息,存储至消息队列,从消息队列中依次读取消息进行处理,若为参数更新消息,则直接使用res_buffer中的梯度数据更新其模型参数,并将update_flag[iter]更新为true。若为梯度数据聚合指令,则解析此指令,并根据工作节点信息表中的各个工作节点的状态更新straggler_flag[iter],在完成梯度数据计算之后,将结果存储于res_buffer,更新ring_allreudce_flag[Iter]为true。
综上,本申请提供的一种梯度数据同步方法中,预先选中M个工作节点,作为触发节点;在每次迭代过程中,若存在Z个触发节点完成梯度数据计算的过程,则触发各个工作节点执行梯度数据聚合操作;根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数。本申请中,只要有Z个触发节点完成了梯度数据计算,则触发各个工作节点执行梯度数据聚合,可以减少等待所有加速器计算完一个批次的训练数据后才同步更新模型参数所需的时间。同时,选择M个节点作为触发节点,可以减少模型参数陈旧性的问题,在一定程度上提高训练效率。
为解决上述技术问题,本申请还提供了一种梯度数据同步系统,请参照图5,图5为本申请提供的一种梯度数据同步系统的结构框图,应用于分布式训练系统中的处理器,分布式训练系统设置有N个工作节点,工作节点为加速器,系统包括:
数据获取单元51,用于获取待处理数据,待处理数据为图像数据或文本数据或音频数据;
数据划分单元52,用于对待处理数据进行划分,并将划分后的待处理数据分配至各个工作节点,以便于各工作节点根据和自身对应的待处理数据计算梯度数据;
触发节点选择单元53,用于在每次迭代过程中,预先选中M个工作节点作为触发节点,M、N均为正整数,且M<N;
判断单元54,用于判断是否存在Z个触发节点完成梯度数据计算;
聚合操作触发单元55,用于在存在Z个触发节点完成梯度数据计算时若存在,则触发各个工作节点执行梯度数据聚合操作;Z为正整数,且Z≤M;
参数更新单元56,用于触发各个工作节点根据梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数。对于梯度数据同步系统的介绍请参照上述实施例,本申请在此不再赘述。
为解决上述技术问题,本申请还提供了一种梯度数据同步装置,图6为本申请提供的一种梯度数据同步装置的结构框图,该装置包括:
存储器61,用于存储计算机程序;
处理器62,用于在存储计算机程序时,实现如上述的梯度数据同步方法的步骤。对于梯度数据同步装置的介绍请参照上述实施例,本申请在此不再赘述。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质70,请参照图7,图7为本申请提供的一种计算机可读存储介质的结构框图,该计算机可读存储介质70上存储有计算机程序71,计算机程序71被处理器62执行时实现如上述的梯度数据同步方法的步骤。对于计算机可读存储介质70的介绍请参照上述实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其他实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (20)
1.一种梯度数据同步方法,其特征在于,应用于分布式训练系统中的处理器,所述分布式训练系统设置有N个工作节点,所述工作节点为加速器,所述方法包括:
获取待处理数据,所述待处理数据为图像数据或文本数据或音频数据;
对所述待处理数据进行划分,并将划分后的待处理数据分配至各个所述工作节点,以便于各所述工作节点根据和自身对应的待处理数据计算梯度数据;
在每次迭代过程中,预先选中M个所述工作节点作为触发节点,M、N均为正整数,且M<N;
判断是否存在Z个所述触发节点完成梯度数据计算;
若存在,则触发各个所述工作节点执行基于环形拓扑的梯度数据聚合操作;Z为正整数,且Z≤M;
触发各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数;
各个所述工作节点设置有和自身对应的编号;
预先选中M个所述工作节点,作为触发节点,包括:
通过随机数生成器随机选择1至N中的M个数,并将编号与选中的M个数对应的工作节点作为所述触发节点。
2.如权利要求1所述的梯度数据同步方法,其特征在于,所述处理器中预先存储有工作节点信息表,所述工作节点信息表中包括与各个所述工作节点一一对应、且与每次迭代过程一一对应、用于表征各个所述工作节点在每次迭代过程中是否完成梯度数据计算的工作状态标志位;
在每次迭代过程中,预先选中M个所述工作节点作为触发节点之前,还包括:
对所述工作节点信息表中的各个所述工作状态标志位初始化为第一工作状态,所述第一工作状态用于表征工作节点未完成所述梯度数据计算。
3.如权利要求2所述的梯度数据同步方法,其特征在于,判断是否存在Z个所述触发节点完成梯度数据计算之前,还包括:
接收各个所述工作节点发送的计算完成信息,所述工作节点在完成梯度数据计算时向所述处理器发送计算完成信息,所述计算完成信息包括当前迭代次数和工作节点的编号;
将所述工作节点信息表中与当前完成梯度数据计算的工作节点的编号和当前迭代次数对应的工作状态标志位更新为第二工作状态。
4.如权利要求3所述的梯度数据同步方法,其特征在于,将所述工作节点信息表中与当前完成梯度数据计算的工作节点对应的工作状态标志位更新为第二工作状态之后,还包括:
根据所述当前迭代次数判断当前迭代过程中各个所述工作节点是否已启动所述梯度数据聚合操作;
若判定已启动所述梯度数据聚合操作,则发送参数更新消息至当前发送所述计算完成信息的工作节点,触发当前发送所述计算完成信息的工作节点根据所述梯度数据聚合操作后得到的聚合结果更新所述模型参数。
5.如权利要求4所述的梯度数据同步方法,其特征在于,还包括:
若判定未启动所述梯度数据聚合操作,则根据所述当前迭代次数判断当前完成梯度数据计算的工作节点是否为当前迭代过程选中的所述触发节点;
若是所述触发节点,进入判断是否存在Z个所述触发节点完成梯度数据计算的步骤。
6.如权利要求4所述的梯度数据同步方法,其特征在于,所述工作节点信息表中还包括与每次迭代过程对应、用于表征每次迭代过程中是否已启动所述梯度数据聚合操作的数据聚合启动标志位;
判断各个所述工作节点是否已启动所述梯度数据聚合操作,包括:
判断所述数据聚合启动标志位是否为启动标志;
若是启动标志,则判定各个所述工作节点已启动所述梯度数据聚合操作;否则,判定未启动所述梯度数据聚合操作。
7.如权利要求6所述的梯度数据同步方法,其特征在于,初始状态下所述数据聚合启动标志为未启动标志;在判定存在Z个所述触发节点完成梯度数据计算之后,还包括:
将与当前迭代过程对应的数据聚合启动标志位更新为启动标志,并进入触发各个所述工作节点执行基于环形拓扑的梯度数据聚合操作的步骤。
8.如权利要求1所述的梯度数据同步方法,其特征在于,还包括:
预先为各个所述工作节点设置和所述工作节点一一对应的第一存储区域;
对应的,在所述工作节点完成梯度数据计算,得到待聚合数据之后,还包括;
将所述待聚合数据存储至和自身对应的第一存储区域。
9.如权利要求8所述的梯度数据同步方法,其特征在于,各个所述工作节点执行梯度数据聚合操作的过程,包括:
各个所述工作节点从和自身对应的第一存储区域中读取所述待聚合数据,根据读取到的各个所述待聚合数据执行所述梯度数据聚合操作。
10.如权利要求1所述的梯度数据同步方法,其特征在于,还包括:
预先为各个所述工作节点设置和所述工作节点一一对应的第二存储区域;
各个所述工作节点执行梯度数据聚合操作之后,还包括:
将所述聚合结果存储至各个所述工作节点对应的所述第二存储区域中。
11.如权利要求10所述的梯度数据同步方法,其特征在于,触发各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数,包括:
触发各个所述工作节点根据和自身对应的第二存储区域中存储的聚合结果更新所述神经网络模型的模型参数。
12.如权利要求11 所述的梯度数据同步方法,其特征在于,各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数之前,还包括:
各个所述工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点;
若在当前迭代过程中完成所述梯度数据计算,则判定自身为非滞后节点;
若在当前迭代过程中未完成所述梯度数据计算,则判定自身为所述滞后节点;
各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数,包括:
若判定自身为非滞后节点,则基于和自身对应的所述第二存储区域中存储的聚合结果更新所述神经网络模型的模型参数,并进入下一次迭代过程;
若判定自身为所述滞后节点,则判断当前迭代过程中是否完成了更新模型参数的操作;若已完成更新模型参数的操作,则进入下一次迭代过程;若未完成所述更新模型参数的操作,则在接收到参数更新消息后基于所述第二存储区域中存储的聚合结果更新所述神经网络模型的模型参数,并进入下一次迭代过程。
13.如权利要求12所述的梯度数据同步方法,其特征在于,各个所述工作节点根据自身在当前迭代过程中是否完成梯度数据计算的状态确定自身是否为滞后节点之前,还包括:
预先为各个所述工作节点设置和所述工作节点一一对应的滞后节点标志数组,所述滞后节点标志数组中的元素个数和迭代次数相同,所述滞后节点标志数组中的每个滞后节点标志位元素用于表征和自身对应的工作节点在每次迭代过程是否完成梯度数据计算;
各个所述工作节点在所述梯度数据聚合操作启动时,根据所述处理器发送的数据聚合启动消息初始化对应的滞后节点标志位,所述滞后节点标志位的状态包括滞后状态和非滞后状态;所述数据聚合启动消息包括当前迭代次数和与当前迭代过程中各个所述工作节点的工作状态;
各个所述工作节点根据各个所述工作节点在当前迭代过程中是否完成梯度数据计算确定各个所述工作节点是否为滞后节点,包括:
各个所述工作节点根据各个所述滞后节点标志数组中各个滞后节点标志位的状态确定自身是否为滞后节点;
若自身对应的所述滞后节点标志数组中与当前迭代过程对应的滞后节点标志位为滞后状态,则判定自身为所述滞后节点;
若自身对应的所述滞后节点标志数组中与当前迭代过程对应的滞后节点标志位为非滞后状态,则判定自身为所述非滞后节点。
14.如权利要求1-13任一项所述的梯度数据同步方法,其特征在于,还包括:
预先设置聚合标志数组,所述聚合标志数组中的元素个数和迭代次数相同,所述聚合标志数组中的每个聚合标志位元素用于表征每次迭代过程是否执行了基于环形拓扑的梯度数据聚合操作;
触发各个所述工作节点启动基于环形拓扑的所述梯度数据聚合操作之后,还包括:
在完成所述梯度数据聚合操作时,将所述聚合标志数组中与当前迭代次数对应的聚合标志位更新为已完成聚合标志。
15.如权利要求1-13任一项所述的梯度数据同步方法,其特征在于,还包括:
预先设置梯度更新标志数组,所述梯度更新标志数组中的元素个数和迭代次数相同,所述梯度更新标志数组中的每个梯度更新标志位元素用于表征每次迭代过程是否完成了模型参数更新的操作;
根据所述梯度数据聚合操作得到的聚合结果更新所述神经网络模型的模型参数之后,还包括:
将所述梯度更新标志数组中与当前迭代次数对应的梯度更新标志位更新为已完成更新标志。
16.如权利要求1-13任一项所述的梯度数据同步方法,其特征在于,还包括:
判断是否接收到预设工作节点发送的结束消息;
若接收到,则结束训练。
17.如权利要求16所述的梯度数据同步方法,其特征在于,所述预设工作节点在满足预设要求时向所述处理器发送所述结束消息。
18.一种梯度数据同步系统,其特征在于,应用于分布式训练系统中的处理器,所述分布式训练系统设置有N个工作节点,所述工作节点为加速器,所述系统包括:
数据获取单元,用于获取待处理数据,所述待处理数据为图像数据或文本数据或音频数据;
数据划分单元,用于对所述待处理数据进行划分,并将划分后的待处理数据分配至各个所述工作节点,以便于各所述工作节点根据和自身对应的待处理数据计算梯度数据;
触发节点选择单元,用于在每次迭代过程中,预先选中M个所述工作节点作为触发节点,M、N均为正整数,且M<N;
判断单元,用于判断是否存在Z个所述触发节点完成梯度数据计算;
聚合操作触发单元,用于在存在Z个所述触发节点完成梯度数据计算时,触发各个所述工作节点执行基于环形拓扑的梯度数据聚合操作;Z为正整数,且Z≤M;
参数更新单元,用于触发各个所述工作节点根据所述梯度数据聚合操作得到的聚合结果更新神经网络模型的模型参数;
各个所述工作节点设置有和自身对应的编号,则所述触发节点选择单元具体用于在每次迭代过程中,通过随机数生成器随机选择1至N中的M个数,并将编号与选中的M个数对应的工作节点作为所述触发节点。
19.一种梯度数据同步装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于在存储计算机程序时,实现如权利要求1-17任一项所述的梯度数据同步方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-17任一项所述的梯度数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310945008.4A CN116663639B (zh) | 2023-07-31 | 2023-07-31 | 一种梯度数据同步方法、系统、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310945008.4A CN116663639B (zh) | 2023-07-31 | 2023-07-31 | 一种梯度数据同步方法、系统、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116663639A CN116663639A (zh) | 2023-08-29 |
CN116663639B true CN116663639B (zh) | 2023-11-03 |
Family
ID=87722797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310945008.4A Active CN116663639B (zh) | 2023-07-31 | 2023-07-31 | 一种梯度数据同步方法、系统、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116663639B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955365B (zh) * | 2023-09-21 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 梯度数据同步方法、模型训练方法、系统、设备及介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107018184A (zh) * | 2017-03-28 | 2017-08-04 | 华中科技大学 | 分布式深度神经网络集群分组同步优化方法及系统 |
CN110378472A (zh) * | 2019-07-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种深度神经网络模型的数据并行训练方法、装置及设备 |
CN110956265A (zh) * | 2019-12-03 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 一种模型训练方法和相关装置 |
WO2020107351A1 (zh) * | 2018-11-29 | 2020-06-04 | 袁振南 | 模型训练方法及其节点、网络及存储装置 |
CN112016699A (zh) * | 2020-08-31 | 2020-12-01 | 北京灵汐科技有限公司 | 一种深度学习模型训练方法、工作节点和参数服务器 |
CN112085074A (zh) * | 2020-08-25 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种模型参数更新系统、方法及装置 |
CN113989561A (zh) * | 2021-10-29 | 2022-01-28 | 河海大学 | 基于异步联邦学习的参数聚合更新方法、设备及系统 |
CN114565103A (zh) * | 2022-02-28 | 2022-05-31 | 杭州卷积云科技有限公司 | 基于梯度选择和自适应学习率的加权k异步联邦学习方法、系统及装置 |
CN115374853A (zh) * | 2022-08-22 | 2022-11-22 | 复旦大学 | 基于T-Step聚合算法的异步联邦学习方法及系统 |
CN115549922A (zh) * | 2022-09-29 | 2022-12-30 | 青岛科技大学 | 一种去中心化联邦学习方法 |
WO2023273579A1 (zh) * | 2021-06-30 | 2023-01-05 | 北京有竹居网络技术有限公司 | 模型的训练方法、语音识别方法、装置、介质及设备 |
CN115660078A (zh) * | 2022-12-29 | 2023-01-31 | 浪潮电子信息产业股份有限公司 | 一种分布式计算方法、系统、存储介质和电子设备 |
WO2023035691A1 (zh) * | 2021-09-08 | 2023-03-16 | 京东科技信息技术有限公司 | 一种数据处理方法、系统、存储介质及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190251480A1 (en) * | 2018-02-09 | 2019-08-15 | NEC Laboratories Europe GmbH | Method and system for learning of classifier-independent node representations which carry class label information |
EP3920097A1 (en) * | 2020-06-03 | 2021-12-08 | Imec VZW | A method for a distributed learning |
-
2023
- 2023-07-31 CN CN202310945008.4A patent/CN116663639B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107018184A (zh) * | 2017-03-28 | 2017-08-04 | 华中科技大学 | 分布式深度神经网络集群分组同步优化方法及系统 |
WO2020107351A1 (zh) * | 2018-11-29 | 2020-06-04 | 袁振南 | 模型训练方法及其节点、网络及存储装置 |
CN110378472A (zh) * | 2019-07-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种深度神经网络模型的数据并行训练方法、装置及设备 |
CN110956265A (zh) * | 2019-12-03 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 一种模型训练方法和相关装置 |
CN112085074A (zh) * | 2020-08-25 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种模型参数更新系统、方法及装置 |
CN112016699A (zh) * | 2020-08-31 | 2020-12-01 | 北京灵汐科技有限公司 | 一种深度学习模型训练方法、工作节点和参数服务器 |
WO2023273579A1 (zh) * | 2021-06-30 | 2023-01-05 | 北京有竹居网络技术有限公司 | 模型的训练方法、语音识别方法、装置、介质及设备 |
WO2023035691A1 (zh) * | 2021-09-08 | 2023-03-16 | 京东科技信息技术有限公司 | 一种数据处理方法、系统、存储介质及电子设备 |
CN113989561A (zh) * | 2021-10-29 | 2022-01-28 | 河海大学 | 基于异步联邦学习的参数聚合更新方法、设备及系统 |
CN114565103A (zh) * | 2022-02-28 | 2022-05-31 | 杭州卷积云科技有限公司 | 基于梯度选择和自适应学习率的加权k异步联邦学习方法、系统及装置 |
CN115374853A (zh) * | 2022-08-22 | 2022-11-22 | 复旦大学 | 基于T-Step聚合算法的异步联邦学习方法及系统 |
CN115549922A (zh) * | 2022-09-29 | 2022-12-30 | 青岛科技大学 | 一种去中心化联邦学习方法 |
CN115660078A (zh) * | 2022-12-29 | 2023-01-31 | 浪潮电子信息产业股份有限公司 | 一种分布式计算方法、系统、存储介质和电子设备 |
Non-Patent Citations (3)
Title |
---|
Blockchain Empowered Asynchronous Federated Learning for Secure Data Sharing in Internet of Vehicles;Yunlong Lu 等;《IEEE TRANSACTIONS ON VEHICULAR TECHNOLOGY》;第69卷(第4期);第4298-4311页 * |
REVISITING DISTRIBUTED S YNCHRONOUS SGD;Jianmin Chen 等;《arXiv》;第2017年卷;第1-10页 * |
基于HPC环境的深度学习并行优化;陈孟强 等;《计算机工程与科学》;第40卷;第133-140页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116663639A (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108564164B (zh) | 一种基于spark平台的并行化深度学习方法 | |
CN111079921A (zh) | 一种基于异构分布式系统的高效神经网络训练调度方法 | |
US20150295970A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
CN116663639B (zh) | 一种梯度数据同步方法、系统、装置及介质 | |
CN103176849B (zh) | 一种基于资源分类的虚拟机集群的部署方法 | |
CN103699433B (zh) | 一种于Hadoop平台中动态调整任务数目的方法及系统 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN115328579B (zh) | 神经网络训练的调度方法、系统及计算机可读存储介质 | |
CN107704310B (zh) | 一种实现容器集群管理的方法、装置和设备 | |
CN111966289A (zh) | 基于Kafka集群的分区优化方法和系统 | |
CN115237580B (zh) | 面向智能计算的流水并行训练自适应调整系统、方法 | |
CN116702885B (zh) | 同步数据并行训练控制方法、系统、装置、设备及介质 | |
US20220300323A1 (en) | Job Scheduling Method and Job Scheduling Apparatus | |
CN113590281A (zh) | 基于动态集中式调度的分布式并行模糊测试方法及系统 | |
CN117234710A (zh) | 一种采用强化学习实现ai模型训练内存优化的方法 | |
CN111858656A (zh) | 一种基于分布式架构的静态数据的查询方法和设备 | |
CN117955897B (zh) | 数据通信方法、装置、服务器及存储介质 | |
CN116962176A (zh) | 一种分布式集群的数据处理方法、装置、系统及存储介质 | |
CN111612155A (zh) | 一种分布式机器学习系统及适用于其的通信调度方法 | |
CN117762591B (zh) | 任务控制方法、任务控制装置、计算机设备和存储介质 | |
US11868808B2 (en) | Automatic driving simulation task scheduling method and apparatus, device, and readable medium | |
CN116501828B (zh) | 基于非结构化数据集的服务器无感知向量查询方法和系统 | |
CN108228323B (zh) | 基于数据本地性的Hadoop任务调度方法及装置 | |
CN117075800A (zh) | 一种海量检查点数据的i/o感知自适应写入方法 |
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 |