CN115292044A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115292044A CN115292044A CN202210951128.0A CN202210951128A CN115292044A CN 115292044 A CN115292044 A CN 115292044A CN 202210951128 A CN202210951128 A CN 202210951128A CN 115292044 A CN115292044 A CN 115292044A
- Authority
- CN
- China
- Prior art keywords
- gradient
- communication
- node
- indication information
- gpu
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、电子设备以及存储介质,涉及人工智能技术领域。数据处理方法包括:获取训练样本集,并确定用于训练神经网络的至少两个节点;根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练;通过各节点中的控制器控制各GPU之间进行交互通信,以对神经网络进行参数更新;每个节点的控制器用于执行如下步骤:根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息;将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信。可以实现训练设备的动态扩缩容。
Description
技术领域
本申请涉及人工智能领域,具体而言,本申请涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
近年来,人工智能,特别是深度学习,在图像识别、语言处理等领域取得重大突破,并且开始广泛应用于商业活动中。深度学习能取得如此重大突破的关键原因之一是通过对神经网络(Neural Network)进行训练,在训练过程中处理了大量样本,从样本中学习到众多特征。
针对神经网络模型的训练,可以采用数据并行的模式,即生成多份模型副本,并将样本分别输入到各模型副本进行训练。通常,神经网络模型,例如深度神经网络通常是部署在多台机器设备,即多个节点组成的集群上进行训练的,每一个机器设备中可以包括多个本地GPU(graphics processing unit,图形处理器)。但目前场景下,当训练集群的规模发生变化时,不支持训练设备的动态扩缩容。
发明内容
本申请实施例的目的旨在提供一种数据处理方法、装置及电子设备,本申请实施例提供的技术方案如下:
一方面,本申请实施例提供了一种数据处理的方法,该方法包括:
获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一节点中包括控制器和至少两个图形处理器GPU;
根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练;
通过各节点中的控制器控制各GPU之间进行交互通信,以对神经网络进行参数更新;
其中,每个节点的控制器用于执行如下步骤:
根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息;其中,第一通信指示信息用于指示不同节点的GPU之间进行通信;第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;
将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信。
在一些可能的实施方式中,神经网络的模型参数包括多个部分的权重参数;
方法还包括:
分别发送协商请求到各节点;协商请求用于使各节点的各GPU分别生成初始梯度,并基于所生成的各个初始梯度确定每一GPU待交互的目标梯度;其中,初始梯度包括各GPU针对神经网络各个部分权重参数生成的梯度。
各节点的GPU根据第一通信指示信息和第二通信指示信息基于通信函数进行梯度进行通信,包括:
各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输。
在一些可能的实施方式中,方法还包括:
确定梯度融合方式以及梯度融合阈值;
将梯度融合方式以及梯度融合阈值发送至各节点的各GPU;
基于所生成的各个初始梯度确定每一GPU待交互的目标梯度,包括:
针对每一节点,根据梯度融合方式对初始梯度进行融合,若融合梯度的信息量达到梯度融合阈值,则将融合梯度作为目标梯度。
在一些可能的实施方式中,确定梯度融合方式,包括:
基于预设的融合规则信息构建通信框架静态图;其中,融合规则信息包括用于指示不同的梯度进行融合;
基于通信框架静态图和待融合的各初始梯度确定梯度融合方式。
在一些可能的实施方式中,确定梯度融合阈值,包括:
通过预设脚本确定不同数据量的测试数据针对各节点分别对应的带宽利用率;
将带宽利用率符合预设条件的测试数据的数据量设为梯度融合阈值。
在一些可能的实施方式中,各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输,包括:
各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度;
各节点基于第一通信指示信息建立不同节点之间的各GPU之间的通信,并基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度;
各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度。
在一些可能的实施方式中,每一个GPU中包含与各个部分的模型参数对应的目标梯度;
针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度,包括:
每一节点内的各GPU逐步交换彼此的目标梯度并融合,直至每一GPU中包含对应的第一融合梯度,得到GPU的第一更新梯度;其中,每一GPU对应的第一融合梯度是基于每一部分模型参数对应的各GPU的目标梯度进行融合得到的,且每一GPU的第一融合梯度分别对应不同的模型参数部分。
在一些可能的实施方式中,基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度,包括:
不同节点的各GPU逐步交换彼此的梯度第一更新梯度并融合,直至进行交互的各GPU均包含相同的第二融合梯度,得到交互后的各GPU的第二更新梯度;其中,第二融合梯度为进行交互的各GPU分别对应的第一更新梯度进行融合得到的。
在一些可能的实施方式中,基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度,包括:
每一节点内的各GPU逐步交换彼此的第二更新梯度,直至每一GPU中均包含第三融合梯度,得到各GPU的第三更新梯度;其中,第三融合梯度是基于每一节点内的各GPU的第二更新梯度进行融合得到的。
另一方面,本申请实施例提供了一种数据处理装置,该装置包括:
获取模块,用于获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一节点中包括控制器和至少两个图形处理器GPU;
发送模块,用于根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练;
通信模块,用于通过各节点中的控制器控制各GPU之间进行交互通信,以对神经网络进行参数更新;
其中,每个节点的控制器用于执行如下步骤:
根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息;其中,第一通信指示信息用于指示不同节点的GPU之间进行通信;第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;
将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信。
在一些可能的实施方式中,神经网络的模型参数包括多个部分的权重参数;
装置还包括协商模块,用于:
分别发送协商请求到各节点;协商请求用于使各节点的各GPU分别生成初始梯度,并基于所生成的各个初始梯度确定每一GPU待交互的目标梯度;其中,初始梯度包括各GPU针对神经网络各个部分权重参数生成的梯度。
各节点的GPU根据第一通信指示信息和第二通信指示信息基于通信函数进行梯度进行通信,包括:
各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输。
在一些可能的实施方式中,装置还包括确定模块,用于:
确定梯度融合方式以及梯度融合阈值;
将梯度融合方式以及梯度融合阈值发送至各节点的各GPU;
协商模块在基于所生成的各个初始梯度确定每一GPU待交互的目标梯度时,具体用于:
针对每一节点,根据梯度融合方式对初始梯度进行融合,若融合梯度的信息量达到梯度融合阈值,则将融合梯度作为目标梯度。
在一些可能的实施方式中,确定模块在确定梯度融合方式时,具体用于:
基于预设的融合规则信息构建通信框架静态图;其中,融合规则信息包括用于指示不同的梯度进行融合;
基于通信框架静态图和待融合的各初始梯度确定梯度融合方式。
在一些可能的实施方式中,确定模块在确定梯度融合阈值时,具体用于:
通过预设脚本确定不同数据量的测试数据针对各节点分别对应的带宽利用率;
将带宽利用率符合预设条件的测试数据的数据量设为梯度融合阈值。
在一些可能的实施方式中,各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输,包括:
各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度;
各节点基于第一通信指示信息建立不同节点之间的各GPU之间的通信,并基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度;
各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度。
在一些可能的实施方式中,每一个GPU中包含与各个部分的模型参数对应的目标梯度;
针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度,包括:
每一节点内的各GPU逐步交换彼此的目标梯度并融合,直至每一GPU中包含对应的第一融合梯度,得到GPU的第一更新梯度;其中,每一GPU对应的第一融合梯度是基于每一部分模型参数对应的各GPU的目标梯度进行融合得到的,且每一GPU的第一融合梯度分别对应不同的模型参数部分。
在一些可能的实施方式中,基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度,包括:
不同节点的各GPU逐步交换彼此的梯度第一更新梯度并融合,直至进行交互的各GPU均包含相同的第二融合梯度,得到交互后的各GPU的第二更新梯度;其中,第二融合梯度为进行交互的各GPU分别对应的第一更新梯度进行融合得到的。
在一些可能的实施方式中,基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度,包括:
每一节点内的各GPU逐步交换彼此的第二更新梯度,直至每一GPU中均包含第三融合梯度,得到各GPU的第三更新梯度;其中,第三融合梯度是基于每一节点内的各GPU的第二更新梯度进行融合得到的。
另一方面,本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,存储器中存储有计算机程序,处理器执行该计算机程序以实现本申请任一可选实施例中提供的方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,该计算机程序被处理器执行时实现本申请任一可选实施例中提供的方法。
另一方面,本申请实施例还提供了一种计算机程序产品,该计算机产品包括计算机程序,该计算机程序被处理器执行时实现本申请任一可选实施例中提供的方法。
本申请实施例提供的技术方案带来的有益效果如下:
通过每一节点维护的控制器根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息,并将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信,当节点或GPU的数量发生变化时,可以在下一次迭代开始重新确定第一通信指示信息和第二通信指示信息,由此在训练过程中可以自动增加或减少节点数量,当资源有限时,可以先采用GPU在少量进程上开始训练;当资源充裕时,可以自动动态扩容,在下一次迭代开始采用扩容后的GPU在进程上进行训练,从而实现训练设备的动态扩缩容。
当某一节点失败时,剩余可用节点的控制器可以重新构建新的第一通信指示信息和第二通信指示信息,从而不中断训练任务,继续进行训练。
此外,通过通信框架静态图确定融合方式,由于的通信框架本身就是静态图的一部分,相对于动态的梯度融合过程可以有效提高融合效率;通过将初始梯度进行融合之后,达到梯度融合阈值再进行目标梯通信,可以实现更大粒度上的通信,提高通信效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为一个示例中提供的数据处理方法的应用环境示意图;
图2为本申请实施例提供的一种数据处理方法的流程示意图;
图3为本申请一个示例中各节点进行梯度协商的方案的示意图;
图4为本申请一个示例中确定梯度融合阈值的方案的示意图;
图5为本申请一个示例中进行节点内各GPU通信的示意图;
图6为本申请一个示例中进行节点内各GPU通信时各GPU的梯度示意图;
图7为本申请一个示例中进行节点内各GPU通信时各GPU的梯度示意图;
图8为本申请一个示例中进行节点内各GPU通信时各GPU的梯度示意图;
图9为本申请一个示例中进行节点内各GPU通信时各GPU的梯度示意图;
图10为本申请一个示例中进行节点内各GPU通信时各GPU的梯度示意图;
图11为本申请一个示例中进行节点之间各GPU通信的示意图;
图12为本申请一个示例中进行节点内各GPU通信的示意图;
图13为本申请一个示例中各节点的GPU进行通信的方案的示意图;
图14为本申请实施例提供的一种数据处理装置的结构示意图;
图15为本申请实施例所适用的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。在描述多个(两个或两个以上)项目时,如果没有明确限定多个项目之间的关系,这多个项目之间可以是指多个项目中的一个、多个或者全部,例如,对于“参数A包括A1、A2、A3”的描述,可以实现为参数A包括A1或A2或A3,还可以实现为参数A包括参数A1、A2、A3这三项中的至少两项。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
深度学习中常常需要多GPU并行训练,多GPU并行训练一个要考虑的问题就是GPU之间的通信性能,因为数据并行模式下,gpu之间需要进行梯度规约。数据并行化(Dataparallelism,DP)是应用最为广泛的并行策略,其特点如下:模型在多个节点(也可称为机器或worker)上复制,每个GPU都维护模型的完整副本。输入数据集可以跨多个GPU进行分区,每批输入的训练数据都在数据并行的节点之间划分。每个节点处理你数据的一个子集。使用集合通信原语或参数服务器定期与其他GPU同步权重。反向传播后需要通信并规约梯度,以保证优化器在各个节点上进行相同的更新。即,对单个节点计算的权重更新进行聚合,以获得反映所有输入更新的最终权重更新。
下面通过对几个可选的实施例的描述,对本申请提供的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请实施例提供的数据处理方法,可以由任意的计算机设备执行,可选的,可以由服务器执行,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。
图1为本申请实施例提供的数据处理方法的应用环境示意图。其中,应用环境可以包括控制服务器101和工作服务器102,其中,工作服务器102中可以包括多个机器,即多个节点102a,每一个节点102a中维护有一个控制器102b以及至少两个GPU。具体的,控制服务器101获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一节点中包括控制器和至少两个图形处理器GPU;根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练;控制服务器101通过各节点中的控制器控制各GPU之间进行交互通信,以对神经网络进行参数更新。每个节点的控制器102b用于执行如下步骤:根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息;其中,第一通信指示信息用于指示不同节点的GPU之间进行通信;第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信。
本技术领域技术人员可以理解,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。
在一些可能的实施方式中,提供了一种数据处理方法,可以由控制服务器执行。
图2示出了本申请实施例提供的一种数据处理方法的流程示意图,以执行主体为控制服务器为例,本申请提供的数据处理方法,可以包括如下步骤:
步骤S201,获取训练样本集,并确定用于训练神经网络的至少两个节点。
其中,每一节点中包括控制器和至少两个图形处理器GPU。
具体的,每一个节点可以维护一个控制器,控制器可以是Gloo控制器。Gloo是一个基于Envoy的Kubernetes原生入口控制器;Envoy是开源的边缘和服务代理,用于云原生应用;Kubernetes是是一个开源的,用于管理云平台中多个主机上的容器化的应用。
步骤S202,根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练。
具体的,针对神经网络生成多个神经网络模型副本,每个GPU都维护模型的完整副本,训练数据可以跨多个GPU进行分区,每批输入的训练数据都在数据并行的节点之间划分,每个节点处理对应的样本子集。
步骤S203,通过各节点中的控制器控制各GPU之间进行交互通信,以对神经网络进行参数更新。
具体的,各个GPU针对神经网络的多个部分的权重参数进行处理,得到针对每一权重参数的梯度,然后各个GPU之间针对每一权重参数的梯度进行交互通信,通信后各GPU之间达到梯度同步,从而更新神经网络的参数。
其中,每个节点的控制器用于执行如下步骤:
(1)根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息.
其中,第一通信指示信息用于指示不同节点的GPU之间进行通信;第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信。
具体的,第一通信指示的形式可以是通过GPU标识对不同节点的GPU进行分组,第二通信指示的形式可以是通过GPU标识对同一节点内部的GPU进行分组。
例如,节点1中包含GPU1、GPU2、GPU3和GPU4;节点2中包含GPU5、GPU6、GPU7和GPU8,则第一通信指示可以为{1,5}、{2,6}等;第二通信指示可以为{1,2,3,4}和{5,6,7,8}。
(2)将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信。
在具体实施过程中,每一节点内部维护有控制器,各个控制器分别将第一通信指示信息和第二通信指示信息发送至各自所在的节点内部的GPU,且各个节点之间的控制器之间可以通信。
具体的,不同节点的GPU可以通过第一通信指示信息进行通信,同一节点内部的不同GPU可以通过第二通信指示进行通信。
上述实施例中,通过每一节点维护的控制器根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息,并将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信,当节点或GPU的数量发生变化时,可以在下一次迭代开始重新确定第一通信指示信息和第二通信指示信息,由此在训练过程中可以自动增加或减少节点数量,当资源有限时,可以先采用GPU在少量进程上开始训练;当资源充裕时,可以自动动态扩容,在下一次迭代开始采用扩容后的GPU在进程上进行训练,从而实现训练设备的动态扩缩容。
当某一节点失败时,剩余可用节点的控制器可以重新构建新的第一通信指示信息和第二通信指示信息,从而不中断训练任务,继续进行训练。
在一些可能的实施方式中,神经网络的模型参数包括多个部分的权重参数。
数据处理方法还可以包括:
分别发送协商请求到各节点。
其中,协商请求用于使各节点的各GPU分别生成初始梯度,并基于所生成的各个初始梯度确定每一GPU待交互的目标梯度;初始梯度包括各GPU针对神经网络各个部分权重参数生成的梯度。
具体的,控制服务器中可以设置有协调器,协调器发送协商请求到各个节点,各个节点接收到协商请求后,若针对神经网络的同一个权重参数均产生了初始梯度,则代表协商完成,神经网络包括多个部分的权重参数,则每一个GPU针对多个部分的权重参数可以相应的生成多个初始梯度。
在具体实施过程中,若各个节点之间协商完成,则各个GPU基于初始提取确定带交互的目标梯度,即确定哪些梯度可以用于传输。
具体的,各GPU中的初始梯度可以融合,获取目标梯度,具体获取目标梯度的过程将在下文进行进一步详细阐述。
如图3所示,协调器发送协商请求到各个训练进程,即各个节点,若各个节点中的GPU均响应于协商请求生成了针对各个权重参数的初始梯度,则各个节点之间协商完成,然后根据初始梯度生成各GPU待交互的目标梯度,并基于目标梯度进行通信。
在一些可能的实施方式中,各节点的GPU根据第一通信指示信息和第二通信指示信息基于通信函数进行梯度进行通信,可以包括:
各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输。
具体的,可以根据第一通信指示信息建立不同节点间的GPU之前的通信,根据第二通信指示建立各个节点内部的不同GPU之间的通信,然后针对目标梯度进行交互传输,具体基于目标梯度进行通信的过程将在下文进行进一步详细阐述。
具体的,各GPU可以基于NCCL通信函数进行通信,其中,NCCL通信函数是一个集合通信库,能实现集合通信和点对点通信,关注与GPU间的通信。
以下将结合实施例进一步阐述确定目标梯度的过程。
在一些可能的实施方式中,本申请的数据处理方法,还可以包括:
(1)确定梯度融合方式以及梯度融合阈值。
其中,梯度融合阈值用于表示若初始梯度之间融合达到设定的阈值,则融合得到的梯度可以进行传输。
其中,梯度融合方式可以用于表示哪些梯度之间可以进行融合。
在一些可能的实施方式中,确定梯度融合阈值,可以包括:
a、通过预设脚本确定不同数据量的测试数据针对各节点分别对应的带宽利用率;
b、将带宽利用率符合预设条件的测试数据的数据量设为梯度融合阈值。
具体的,可以采用测试数据对节点之间的传输进行测试,通过不同的带宽利用率来确定合适的梯度融合阈值。
其中,预设条件可以是带宽利用率大于预设阈值。
在一些可能的实施方式中,确定梯度融合方式,可以包括:
基于预设的融合规则信息构建通信框架静态图;其中,融合规则信息包括用于指示不同的梯度进行融合;
基于通信框架静态图和待融合的各初始梯度确定梯度融合方式。
其中,通信框架是作为Tensorflow(符号数学系统,tf)静态图的一个操作(operation)存在的。静态图即程序在编译执行时将先生成神经网络的结构,然后再执行响应操作,静态计算是通过先定义后运行的方式,之后再次运行的时候就不需要重新构建计算图,所以速度相对于动态图更快。
通信的时候for循环会去遍历所有梯度,统计已经产生的梯度的元素个数。梯度产生顺序是Tensorflow自己决定的,超过梯度融合阈值就进行通信。由于的通信框架本身就是Tensorflow静态图的一部分,所以自然就比动态的梯度融合过程效率高。
(2)将梯度融合方式以及梯度融合阈值发送至各节点的各GPU。
具体的,可以将梯度融合方式以及梯度融合阈值分别发送至各节点的控制器,再由各节点的控制器分发给各自节点中的各个GPU。
在一些可能的实施方式中,基于所生成的各个初始梯度确定每一GPU待交互的目标梯度,可以包括:
针对每一节点,根据梯度融合方式对初始梯度进行融合,若融合梯度的信息量达到梯度融合阈值,则将融合梯度作为目标梯度。
梯度协商之后,所有节点都知道了当前这个时刻可以进行通信的初始梯度,对单个梯度进行单次通信,通信效率比较低,可以根据梯度融合方式对进行多个初始梯度的融合,然后再对融合后的目标梯度更大的粒度上进行通信,即融合梯度的信息量达到梯度融合阈值时,即可进行梯度通信。
如图4所示,在一个示例中,可以给定通信参数和流量模型、数据包起始大小,即给定测试数据的数据量,通过预设脚本输出实时带宽利用率。例如,通过mpirun去启动autotune脚本,实时输出带宽利用。其中,mpirun是MPI(一种跨语言的通讯协议)程序快速执行命令,autotune是一种自动调优脚本。根据带宽利用率确定一个梯度融合阈值,反向计算过程中先攒数据到融合阈值,即将初始梯度根据融合方式进行融合,若融合的数据量大于梯度融合阈值,即图中所示的梯度融合通信1、梯度融合通信2和梯度融合通信3,即将融合的梯度作为目标梯度,进行通信。
上述实施例中,通过通信框架静态图确定融合方式,由于的通信框架本身就是Tensorflow静态图的一部分,相对于动态的梯度融合过程可以有效提高融合效率;通过将初始梯度进行融合之后,达到梯度融合阈值再进行目标梯通信,可以实现更大粒度上的通信,提高通信效率。
上述实施例阐述了确定目标梯度的具体过程,以下将结合具体实施方式进一步阐述各GPU基于目标梯度进行通信的过程。
在一些可能的实施方式中,各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输,可以包括:
(1)各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度。
如图5所示,节点1内部的GPU0-GPU4之间的目标梯度进行交互传输,节点2内部的GPU0-GPU4之间的目标梯度进行交互传输。
具体的,每一个GPU中包含与各个部分的模型参数对应的目标梯度。
针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度,包括:
每一节点内的各GPU逐步交换彼此的目标梯度并融合,直至每一GPU中包含对应的第一融合梯度,得到GPU的第一更新梯度;其中,每一GPU对应的第一融合梯度是基于每一部分模型参数对应的各GPU的目标梯度进行融合得到的,且每一GPU的第一融合梯度分别对应不同的模型参数部分。
在具体实施过程中,针对每一节点内的各GPU执行scatter-reduce操作,即每一轮梯度传递中,每个GPU都将自己的一个梯度发给右邻居,并接收左邻居发来的梯度,并累加。
如图6所示,针对一个节点内的GPU的通信进行说明,节点内包括GPU0-GPU4一共五个节点,每一节点中包含五个梯度,GPU0的目标梯度a0传递至GPU1的目标梯度a1,GPU1的目标梯度b1传递至GPU2的目标梯度b2,GPU2的目标梯度c2传递至GPU3的目标梯度c3,GPU3的目标梯度d3传递至GPU4的目标梯度d4,GPU4的目标梯度e4传递至GPU0的目标梯度e0,得到图7所示各GPU的梯度,再依次进行梯度传递,GPU0的目标梯度e0+e4传递至GPU1的目标梯度e1,GPU1的目标梯度a1+a0传递至GPU2的目标梯度a2,GPU2的目标梯度b2+b1传递至GPU3的目标梯度b3,GPU3的目标梯度c3+c2传递至GPU4的目标梯度c4,GPU4的目标梯度d4+d3传递至GPU0的目标梯度d0,得到图8所示的各GPU的梯度,再依次进行梯度传递,分别得到图9所示的各GPU的梯度,继续传递,直至得到图10中每一GPU中包含对应的第一融合梯度,即GPU0中包含的第一融合梯度为b2+b1+b3+b4+b0,GPU1中包含的第一融合梯度为c3+c2+c4+c0+c1,GPU2中包含的第一融合梯度为d4+d3+d0+d1+d2,GPU3中包含的第一融合梯度为e0+e4+e1+e2+e3,GPU4中包含的第一融合梯度为a1+a0+a2+a3+a4。
(2)各节点基于第一通信指示信息建立不同节点之间的各GPU之间的通信,并基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度。
具体的,基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度,可以包括:
不同节点的各GPU逐步交换彼此的梯度第一更新梯度并融合,直至进行交互的各GPU均包含相同的第二融合梯度,得到交互后的各GPU的第二更新梯度。
其中,第二融合梯度为进行交互的各GPU分别对应的第一更新梯度进行融合得到的,即不同节点对进行交互的各GPU最终得到的第二更新梯度均相同,均为第一更新梯度融合得到的第二融合梯度。
如图11所示,每个节点的每个GPU将数据分成2份,则所有的GPU可以同时跨节点接收和发送梯度,从而提升了带宽利用率。节点间可以采用all-reduce操作,即节点1的GPU0和节点2的GPU0之间进行all-reduce操作,节点1的GPU1和节点2的GPU1之间进行all-reduce操作,节点1的GPU3和节点2的GPU3之间进行all-reduce操作,且节点1的GPU4和节点2的GPU4之间进行all-reduce操作。
以节点1的GPU0和节点2的GPU0为例,若节点1的GPU0中包含的梯度为a0、b0、c0、d0,节点2的GPU0包含A0、B0、C0、D0,则进行all-reduce操作之后,节点1和节点2的GPU0均包含a0+A0、b0+B0、c0+C0、d0+D0。
(3)各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度。
具体的,基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度,可以包括:
每一节点内的各GPU逐步交换彼此的第二更新梯度,直至每一GPU中均包含第三融合梯度,得到各GPU的第三更新梯度。
其中,第三融合梯度是基于每一节点内的各GPU的第二更新梯度进行融合得到的,即同一个节点内不同GPU最终得到的第三更新梯度均相同,均为第二更新梯度融合得到的第三融合梯度。
如图12所示,节点1内部的GPU0-GPU4之间的目标梯度进行交互传输,节点2内部的GPU0-GPU4之间的目标梯度进行交互传输,针对每一节点内的各GPU执行all-gather操作,即每一轮梯度传递中,每个GPU都将自己的一个梯度发给右邻居,并接收左邻居发来的梯度,并替换。
在依次执行节点内scatter-reduce操作、节点间all-reduce操作、节点内all-gather操作之后,进行通信的每一节点的每一GPU之间的第三融合梯度均相同,且均包含了通信前每一节点的每一GPU中的所有目标梯度。
上述实施例中,通过依次执行节点内scatter-reduce操作、节点间all-reduce操作、节点内all-gather操作,在执行节点间all-reduce操作过程中,所有的GPU可以同时跨节点接收和发送梯度,从而提升了带宽利用率。
在之后,进行通信的每一节点的每一GPU之间的第三融合梯度均相同,且均包含了通信前每一节点的每一GPU中的所有目标梯度。
为了更清楚的阐述本申请的数据处理方法,以下将结合示例进行进一步详细说明。
如图13所示,在一个示例中,本申请的数据处理方法,可以包括如下步骤:
控制服务器获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一节点中包括控制器和至少两个图形处理器GPU;
控制服务器根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练;
各节点后台进程启动,每个节点维护一个Gloo控制器;
Gloo控制器通过检测启动脚本,确定第一通信指示信息和第二通信指示信息;其中,第一通信指示信息用于指示不同节点的GPU之间进行通信;第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;
控制服务器通过预设脚本确定不同数据量的测试数据针对各节点分别对应的带宽利用率;将带宽利用率符合预设条件的测试数据的数据量设为梯度融合阈值;
控制服务器基于预设的融合规则信息构建通信框架静态图;其中,融合规则信息包括用于指示不同的梯度进行融合;基于通信框架静态图和待融合的各初始梯度确定梯度融合方式;
控制服务器中的协调器发送协商请求到各节点,各节点基于梯度融合方式和梯度融合阈值进行协商,确定本次通信需要传递的目标梯度;
各GPU之间进行梯度通信,具体包括:
各节点内部通过第二通信指示信息建立通信,并执行scatter-reduce操作,获取交互后各GPU的第一更新梯度;
各节点之间通过第一通信指示信息建立通信,在第一更新梯度的基础上执行all-reduce操作,获取交互后各GPU的第二更新梯度;
各节点内部通过第二通信指示信息建立通信,在第二更新梯度的基础上执行all-gather操作,获取交互后各GPU的第三更新梯度。
上述的数据处理方法,通过每一节点维护的控制器根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息,并将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信,当节点或GPU的数量发生变化时,可以在下一次迭代开始重新确定第一通信指示信息和第二通信指示信息,由此在训练过程中可以自动增加或减少节点数量,当资源有限时,可以先采用GPU在少量进程上开始训练;当资源充裕时,可以自动动态扩容,在下一次迭代开始采用扩容后的GPU在进程上进行训练,从而实现训练设备的动态扩缩容。
当某一节点失败时,剩余可用节点的控制器可以重新构建新的第一通信指示信息和第二通信指示信息,从而不中断训练任务,继续进行训练。
此外,通过通信框架静态图确定融合方式,由于的通信框架本身就是静态图的一部分,相对于动态的梯度融合过程可以有效提高融合效率;通过将初始梯度进行融合之后,达到梯度融合阈值再进行目标梯通信,可以实现更大粒度上的通信,提高通信效率。
如图14所示,在一些可能的实施方式中,提供了一种数据处理装置,包括:
获取模块1401,用于获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一节点中包括控制器和至少两个图形处理器GPU;
发送模块1402,用于根据节点数量将训练样本集划分为多个样本子集,并将各样本子集分别发送至各节点中,通过各节点对神经网络进行训练;
通信模块1403,用于通过各节点中的控制器控制各GPU之间进行交互通信,以对神经网络进行参数更新;
其中,每个节点的控制器用于执行如下步骤:
根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息;其中,第一通信指示信息用于指示不同节点的GPU之间进行通信;第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;
将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信。
在一些可能的实施方式中,神经网络的模型参数包括多个部分的权重参数;
装置还包括协商模块,用于:
分别发送协商请求到各节点;协商请求用于使各节点的各GPU分别生成初始梯度,并基于所生成的各个初始梯度确定每一GPU待交互的目标梯度;其中,初始梯度包括各GPU针对神经网络各个部分权重参数生成的梯度。
各节点的GPU根据第一通信指示信息和第二通信指示信息基于通信函数进行梯度进行通信,包括:
各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输。
在一些可能的实施方式中,装置还包括确定模块,用于:
确定梯度融合方式以及梯度融合阈值;
将梯度融合方式以及梯度融合阈值发送至各节点的各GPU;
协商模块在基于所生成的各个初始梯度确定每一GPU待交互的目标梯度时,具体用于:
针对每一节点,根据梯度融合方式对初始梯度进行融合,若融合梯度的信息量达到梯度融合阈值,则将融合梯度作为目标梯度。
在一些可能的实施方式中,确定模块在确定梯度融合方式时,具体用于:
基于预设的融合规则信息构建通信框架静态图;其中,融合规则信息包括用于指示不同的梯度进行融合;
基于通信框架静态图和待融合的各初始梯度确定梯度融合方式。
在一些可能的实施方式中,确定模块在确定梯度融合阈值时,具体用于:
通过预设脚本确定不同数据量的测试数据针对各节点分别对应的带宽利用率;
将带宽利用率符合预设条件的测试数据的数据量设为梯度融合阈值。
在一些可能的实施方式中,各节点的各GPU基于第一通信指示信息和第二通信指示信息建立通信,并针对目标梯度进行交互传输,包括:
各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度;
各节点基于第一通信指示信息建立不同节点之间的各GPU之间的通信,并基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度;
各节点基于第二通信指示信息建立每一节点内部的各GPU之间的通信,并基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度。
在一些可能的实施方式中,每一个GPU中包含与各个部分的模型参数对应的目标梯度;
针对目标梯度进行交互传输,获取交互后各GPU的第一更新梯度,包括:
每一节点内的各GPU逐步交换彼此的目标梯度并融合,直至每一GPU中包含对应的第一融合梯度,得到GPU的第一更新梯度;其中,每一GPU对应的第一融合梯度是基于每一部分模型参数对应的各GPU的目标梯度进行融合得到的,且每一GPU的第一融合梯度分别对应不同的模型参数部分。
在一些可能的实施方式中,基于第一更新梯度进行交互传输,获取交互后的各GPU的第二更新梯度,包括:
不同节点的各GPU逐步交换彼此的梯度第一更新梯度并融合,直至进行交互的各GPU均包含相同的第二融合梯度,得到交互后的各GPU的第二更新梯度;其中,第二融合梯度为进行交互的各GPU分别对应的第一更新梯度进行融合得到的。
在一些可能的实施方式中,基于第二更新梯度进行交互传输,获取交互后的各GPU的第三更新梯度,包括:
每一节点内的各GPU逐步交换彼此的第二更新梯度,直至每一GPU中均包含第三融合梯度,得到各GPU的第三更新梯度;其中,第三融合梯度是基于每一节点内的各GPU的第二更新梯度进行融合得到的。
本申请的数据处理装置,通过每一节点维护的控制器根据节点数量和GPU数量,确定第一通信指示信息和第二通信指示信息,并将第一通信指示信息和第二通信指示信息发送至节点对应的GPU,以使各节点的GPU根据第一通信指示信息和第二通信指示信息进行通信,当节点或GPU的数量发生变化时,可以在下一次迭代开始重新确定第一通信指示信息和第二通信指示信息,由此在训练过程中可以自动增加或减少节点数量,当资源有限时,可以先采用GPU在少量进程上开始训练;当资源充裕时,可以自动动态扩容,在下一次迭代开始采用扩容后的GPU在进程上进行训练,从而实现训练设备的动态扩缩容。
当某一节点失败时,剩余可用节点的控制器可以重新构建新的第一通信指示信息和第二通信指示信息,从而不中断训练任务,继续进行训练。
此外,通过通信框架静态图确定融合方式,由于的通信框架本身就是静态图的一部分,相对于动态的梯度融合过程可以有效提高融合效率;通过将初始梯度进行融合之后,达到梯度融合阈值再进行目标梯通信,可以实现更大粒度上的通信,提高通信效率。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行存储器中存储的计算机程序时可实现本申请任一可选实施例中的方法。
图15示出了本发明实施例所适用的一种电子设备的结构示意图,如图15所示,该电子设备可以为服务器或者用户终端,该电子设备可以用于实施本发明任一实施例中提供的方法。
如图15中所示,该电子设备1500主要可以包括至少一个处理器1501(图15中示出了一个)、存储器1502、通信模块1503和输入/输出接口1504等组件,可选的,各组件之间可以通过总线1505实现连接通信。需要说明的是,图15中示出的该电子设备1500的结构只是示意性的,并不构成对本申请实施例提供的方法所适用的电子设备的限定。
其中,存储器1502可以用于存储操作系统和应用程序等,应用程序可以包括在被处理器1501调用时实现本发明实施例所示方法的计算机程序,还可以包括用于实现其他功能或服务的程序。存储器1502可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和计算机程序的其他类型的动态存储设备,也可以是EEPROM(ElectricallyErasable Programmable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(CompactDisc Read Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
处理器1501通过总线1505与存储器1502连接,通过调用存储器1502中所存储的应用程序实现相应的功能。其中,处理器1501可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application Specific Integrated Circuit,专用集成电路),FPGA(FieldProgrammable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
电子设备1500可以通过通信模块1503(可以包括但不限于网络接口等组件)连接到网络,以通过网络与其它设备(如用户终端或服务器等)的通信,实现数据的交互,如向其他设备发送数据或从其他设备接收数据。其中,通信模块1503可以包括有线网络接口和/或无线网络接口等,即通信模块可以包括有线通信模块或无线通信模块中的至少一项。
电子设备1500可以通过输入/输出接口1504可以连接所需要的输入/输出设备,如键盘、显示设备等,电子设备150自身可以具有显示设备,还可以通过接口1504外接其他显示设备。可选的,通过该接口1504还可以连接存储装置,如硬盘等,以可以将电子设备1500中的数据存储到存储装置中,或者读取存储装置中的数据,还可以将存储装置中的数据存储到存储器1502中。可以理解的,输入/输出接口1504可以是有线接口,也可以是无线接口。根据实际应用场景的不同,与输入/输出接口1504连接的设备,可以是电子设备1500的组成部分,也可以是在需要时与电子设备1500连接的外接设备。
用于连接各组件的总线1505可以包括一通路,在上述组件之间传送信息。总线1505可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。根据功能的不同,总线1505可以分为地址总线、数据总线、控制总线等。
可选的,对于本发明实施例所提供的方案而言,存储器1502可以用于存储执行本发明方案的计算机程序,并由处理器1501来运行,处理器1501运行该计算机程序时实现本发明实施例提供的方法或装置的动作。
基于与本申请实施例提供的方法相同的原理,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的相应内容。
本申请实施例还提供了一种计算机程序产品,该产品包括计算机程序,该计算机程序被处理器执行时可实现前述方法实施例的相应内容。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法包括:
获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一所述节点中包括控制器和至少两个图形处理器GPU;
根据所述节点数量将所述训练样本集划分为多个样本子集,并将各所述样本子集分别发送至各所述节点中,通过各所述节点对所述神经网络进行训练;
通过各所述节点中的所述控制器控制各所述GPU之间进行交互通信,以对所述神经网络进行参数更新;
其中,每个节点的控制器用于执行如下步骤:
根据所述节点数量和所述GPU数量,确定第一通信指示信息和第二通信指示信息;其中,所述第一通信指示信息用于指示不同节点的GPU之间进行通信;所述第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;
将所述第一通信指示信息和所述第二通信指示信息发送至所述节点对应的GPU,以使各所述节点的GPU根据所述第一通信指示信息和所述第二通信指示信息进行通信。
2.根据权利要求1所述的方法,其特征在于,所述神经网络的模型参数包括多个部分的权重参数;
所述方法还包括:
分别发送协商请求到各所述节点;所述协商请求用于使各所述节点的各所述GPU分别生成初始梯度,并基于所生成的各个初始梯度确定每一GPU待交互的目标梯度;其中,所述初始梯度包括各所述GPU针对神经网络各个部分权重参数生成的梯度。
所述各所述节点的GPU根据所述第一通信指示信息和所述第二通信指示信息基于所述通信函数进行梯度进行通信,包括:
各所述节点的各所述GPU基于所述第一通信指示信息和所述第二通信指示信息建立通信,并针对所述目标梯度进行交互传输。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定梯度融合方式以及梯度融合阈值;
将所述梯度融合方式以及所述梯度融合阈值发送至各所述节点的各GPU;
所述基于所生成的各个初始梯度确定每一GPU待交互的目标梯度,包括:
针对每一节点,根据所述梯度融合方式对所述初始梯度进行融合,若融合梯度的信息量达到所述梯度融合阈值,则将所述融合梯度作为所述目标梯度。
4.根据权利要求3所述的方法,其特征在于,确定梯度融合方式,包括:
基于预设的融合规则信息构建通信框架静态图;其中,所述融合规则信息包括用于指示不同的梯度进行融合;
基于所述通信框架静态图和待融合的各所述初始梯度确定所述梯度融合方式。
5.根据权利要求3所述的方法,其特征在于,确定梯度融合阈值,包括:
通过预设脚本确定不同数据量的测试数据针对各所述节点分别对应的带宽利用率;
将带宽利用率符合预设条件的测试数据的数据量设为所述梯度融合阈值。
6.根据权利要求2所述的方法,其特征在于,所述各所述节点的各所述GPU基于所述第一通信指示信息和所述第二通信指示信息建立通信,并针对所述目标梯度进行交互传输,包括:
各所述节点基于所述第二通信指示信息建立每一节点内部的各所述GPU之间的通信,并针对所述目标梯度进行交互传输,获取交互后各所述GPU的第一更新梯度;
各所述节点基于所述第一通信指示信息建立不同节点之间的各所述GPU之间的通信,并基于所述第一更新梯度进行交互传输,获取交互后的各所述GPU的第二更新梯度;
各所述节点基于所述第二通信指示信息建立每一节点内部的各所述GPU之间的通信,并基于所述第二更新梯度进行交互传输,获取交互后的各所述GPU的第三更新梯度。
7.根据权利要求6所述的方法,其特征在于,每一个GPU中包含与各个部分的模型参数对应的目标梯度;
所述针对所述目标梯度进行交互传输,获取交互后各所述GPU的第一更新梯度,包括:
每一节点内的各所述GPU逐步交换彼此的目标梯度并融合,直至每一所述GPU中包含对应的第一融合梯度,得到所述GPU的第一更新梯度;其中,每一GPU对应的第一融合梯度是基于每一部分模型参数对应的各GPU的目标梯度进行融合得到的,且每一GPU的第一融合梯度分别对应不同的模型参数部分。
8.根据权利要求6所述的方法,其特征在于,所述基于所述第一更新梯度进行交互传输,获取交互后的各所述GPU的第二更新梯度,包括:
不同节点的各所述GPU逐步交换彼此的梯度第一更新梯度并融合,直至进行交互的各所述GPU均包含相同的第二融合梯度,得到交互后的各所述GPU的第二更新梯度;其中,所述第二融合梯度为进行交互的各所述GPU分别对应的所述第一更新梯度进行融合得到的。
9.根据权利要求6所述的方法,其特征在于,所述基于所述第二更新梯度进行交互传输,获取交互后的各所述GPU的第三更新梯度,包括:
每一节点内的各所述GPU逐步交换彼此的所述第二更新梯度,直至每一所述GPU中均包含第三融合梯度,得到各所述GPU的第三更新梯度;其中,所述第三融合梯度是基于每一节点内的各所述GPU的所述第二更新梯度进行融合得到的。
10.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取训练样本集,并确定用于训练神经网络的至少两个节点;其中,每一所述节点中包括控制器和至少两个图形处理器GPU;
发送模块,用于根据所述节点数量将所述训练样本集划分为多个样本子集,并将各所述样本子集分别发送至各所述节点中,通过各所述节点对所述神经网络进行训练;
通信模块,用于通过各所述节点中的所述控制器控制各所述GPU之间进行交互通信,以对所述神经网络进行参数更新;
其中,每个节点的控制器用于执行如下步骤:
根据所述节点数量和所述GPU数量,确定第一通信指示信息和第二通信指示信息;其中,所述第一通信指示信息用于指示不同节点的GPU之间进行通信;所述第二通信指示信息用于指示同一节点内部的不同GPU之间进行通信;
将所述第一通信指示信息和所述第二通信指示信息发送至所述节点对应的GPU,以使各所述节点的GPU根据所述第一通信指示信息和所述第二通信指示信息进行通信。
11.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序以实现权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法。
13.一种计算机程序产品,其特征在于,所述计算机产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210951128.0A CN115292044A (zh) | 2022-08-09 | 2022-08-09 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210951128.0A CN115292044A (zh) | 2022-08-09 | 2022-08-09 | 数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115292044A true CN115292044A (zh) | 2022-11-04 |
Family
ID=83828379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210951128.0A Pending CN115292044A (zh) | 2022-08-09 | 2022-08-09 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115292044A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382599A (zh) * | 2023-06-07 | 2023-07-04 | 之江实验室 | 一种面向分布式集群的任务执行方法、装置、介质及设备 |
-
2022
- 2022-08-09 CN CN202210951128.0A patent/CN115292044A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382599A (zh) * | 2023-06-07 | 2023-07-04 | 之江实验室 | 一种面向分布式集群的任务执行方法、装置、介质及设备 |
CN116382599B (zh) * | 2023-06-07 | 2023-08-29 | 之江实验室 | 一种面向分布式集群的任务执行方法、装置、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220391771A1 (en) | Method, apparatus, and computer device and storage medium for distributed training of machine learning model | |
JP7433373B2 (ja) | 深層学習モデルの分散トレーニング方法、装置、電子機器、記憶媒体およびコンピュータプログラム | |
Mousavi et al. | Traffic light control using deep policy‐gradient and value‐function‐based reinforcement learning | |
CN106951926B (zh) | 一种混合架构的深度学习方法及装置 | |
US11948075B2 (en) | Generating discrete latent representations of input data items | |
CN111462137A (zh) | 一种基于知识蒸馏和语义融合的点云场景分割方法 | |
EP4350572A1 (en) | Method, apparatus and system for generating neural network model, devices, medium and program product | |
CN114756383A (zh) | 一种分布式计算方法、系统、设备及存储介质 | |
EP4160440A1 (en) | Federated computing processing method and apparatus, electronic device, and storage medium | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CN111708641B (zh) | 一种内存管理方法、装置、设备及计算机可读存储介质 | |
CN111860828A (zh) | 一种神经网络的训练方法、存储介质和设备 | |
US11900243B2 (en) | Spiking neural network-based data processing method, computing core circuit, and chip | |
WO2024016542A1 (zh) | 信息融合方法、数据通信方法、装置及电子设备和非易失性可读存储介质 | |
CN109344969B (zh) | 神经网络系统及其训练方法以及计算机可读介质 | |
CN114356540A (zh) | 一种参数更新方法、装置、电子设备和存储介质 | |
CN115292044A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112394982B (zh) | 生成语音识别系统的方法、装置、介质及电子设备 | |
Varshosaz et al. | Modeling and verification of probabilistic actor systems using pRebeca | |
CN115879543A (zh) | 一种模型训练方法、装置、设备、介质及系统 | |
CN115186738B (zh) | 模型训练方法、装置和存储介质 | |
CN106647411B (zh) | 信息物理融合系统CPS的Agent构造方法及装置 | |
CN112906745B (zh) | 基于边缘协同的诚信智能网络训练方法 | |
JP2022136234A (ja) | 連合学習方法及び装置、電子機器、記憶媒体ならびにコンピュータプログラム | |
CN115001692A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40076036 Country of ref document: HK |