CN108021395A - 一种面向神经网络的数据并行处理方法及系统 - Google Patents
一种面向神经网络的数据并行处理方法及系统 Download PDFInfo
- Publication number
- CN108021395A CN108021395A CN201711455682.5A CN201711455682A CN108021395A CN 108021395 A CN108021395 A CN 108021395A CN 201711455682 A CN201711455682 A CN 201711455682A CN 108021395 A CN108021395 A CN 108021395A
- Authority
- CN
- China
- Prior art keywords
- network parameter
- parameter group
- gpu
- function
- same layer
- 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
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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
Abstract
本发明公开一种面向神经网络的数据并行处理方法及系统,涉及神经网络领域,能够解决训练循环神经网络困难、效率低的问题。所述方法包括:对各GPU利用并行初始化函数进行初始化;将用于初始化神经网络的模型初始化函数写入并行初始化函数为各GPU建立的输入管道;将训练数据按照GPU数量均分为训练数据块,并将各训练数据块和内部训练函数分别写入各GPU的输入管道中;各GPU的内部训练函数对分配至自身的训练数据块进行同步训练,得到各网络参数组的梯度值;计算所有GPU中对应神经网络同一层的网络参数组的平均梯度值;各GPU根据同一层的网络参数组的平均梯度值更新相应的网络参数。本发明尤其适用于循环神经网络的数据处理。
Description
技术领域
本发明涉及神经网络领域,尤其涉及一种面向神经网络的数据并行处理方法及系统。
背景技术
循环神经网络是深度学习算法的一种,在自然语言处理领域有显著的应用效果。由于深度学习算法的数据量大、计算复杂度高等特点,常常需要某种形式的并行计算方案加速训练过程,常用的并行方案有数据并行和模型并行。而现有的循环神经网络的复杂结构使得并行计算更加困难。数据并行是目前主要的循环神经网络并行方案。
目前,循环神经网络的数据并行处理方法主要有以下四个步骤:
步骤1:首先在多个图形处理器(Graphics Processing Unit,GPU)中加载初始化参数一致的模型副本;
步骤2:对于单独的GPU,分别读取不同的训练数据块,利用前向传播算法计算出损失值,再用后向传播算法计算出各层网络参数组的梯度值;
步骤3:将所有GPU上同一层的网络参数组的梯度值汇总,分别计算各层的网络参数组的平均梯度值,然后将平均梯度值广播回所有的GPU上;
步骤4:不同的GPU拿到相同的平均梯度值后按相同的更新策略,分别更新各自的网络参数。然后返回到第2步继续处理下一批数据,直至训练结束。
目前各大深度学习框架均支持数据并行,如TensorFlow、MXNET、pytorch等,但是对循环神经网络来说均有不足。首先,TensorFlow在框架级别上仅支持静态计算图,对循环神经网络没有很好的支持;MXNET由于其使用自主研发的参数服务器,虽然使得训练速度得到较大的提升,但是同时也让用户的学习、开发难度增加很多;而pytorch支持动态计算图,其数据并行模块使用起来也足够简单,但是对于循环神经网络来说运行效率太低。
Pytorch主要有两种数据并行方案:基于多线程的单机并行方案和基于分布式的多机并行方案。第一种方案效率低是因为受限于循环神经网络的复杂结构,多线程机制带来了巨大的额外运行开销,实际上两个GPU的训练速度甚至不及一个GPU的;第二种方案由于采用分布式通信机制,额外的通信时间使得两个GPU的加速比不到1.1。
综上所述,现有的循环神经网络的数据并行处理方法存在实现困难、效率低的问题。
发明内容
为了解决现有技术训练循环神经网络存在的实现困难、效率低的问题,本发明提供一种面向神经网络的数据并行处理方法及系统,可以有效的解决开发循环神经网络时,并行加速训练的实现困难、效率低的问题。
第一方面,本发明实施例提供一种面向神经网络的数据并行处理方法,包括:
对每个GPU利用并行初始化函数进行初始化,其中,所述并行初始化函数用于为每个GPU建立一个输入管道、一个输出管道和启动一个子进程,所述子进程循环从所述输入管道中读取要执行的函数名及函数参数值,并将读取的函数参数值代入所述函数名所表示的函数中进行执行,最后将执行结果写入所述输出管道;
将用于初始化神经网络的模型初始化函数写入每个GPU输入管道;
将载入的训练数据按照GPU数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU的输入管道中;所述内部训练函数包含前向传播函数和反向传播函数;
各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值;其中,所述神经网络具有多层,每层对应一网络参数组,每一网络参数组中包括多个网络参数;
计算所有GPU中的同一层的网络参数组的平均梯度值;
每个GPU根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数。
结合第一方面,在第一方面的第一种实施方式中,在各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值之前,所述方法还包括:
初始化各GPU的通信环境,建立与所述神经网络的各网络参数组一一对应的数据流,并为每个网络参数组注册一个钩子函数。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述计算所有GPU中的同一层的网络参数组的平均梯度值,包括:
通过各GPU中的所述反向传播函数计算各网络参数组的梯度值;
通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上;
各GPU从所述数据流中获取同一层的网络参数组的梯度值;
各GPU计算所述同一层的网络参数组的平均梯度值。
结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上,包括:
通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值;
通过所述钩子函数判断获取的同一层的网络参数组的梯度值是否发生变化;
当同一层的网络参数组的梯度值发生变化时,通过所述钩子函数将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
结合第一方面的第一种实施方式,在第一方面的第四种实施方式中,所述GPU的通信库为多卡通信框架NCCL。
第二方面,本发明实施例提供一种面向神经网络的数据并行处理系统,包括:
第一初始化模块,对每个GPU利用并行初始化函数进行初始化,其中,所述并行初始化函数用于为每个GPU建立一个输入管道、一个输出管道和启动一个子进程,所述子进程循环从所述输入管道中读取要执行的函数名及函数参数值,并将读取的函数参数值代入所述函数名所表示的函数中进行执行,最后将执行结果写入所述输出管道;
第二初始化模块,用于将用于初始化神经网络的模型初始化函数写入每个GPU输入管道;
数据均分模块,用于将载入的训练数据按照GPU数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU的输入管道中;所述内部训练函数包含前向传播函数和反向传播函数;
多个GPU,各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值,并用于计算所有GPU中的同一层的网络参数组的平均梯度值,每个GPU还用于根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数;其中,所述神经网络具有多层,每层对应一网络参数组,每一网络参数组中包括多个网络参数。
结合第二方面,在第二方面的第一种实施方式中,该系统还包括:
第三初始化模块,用于初始化各GPU的通信环境,建立与所述神经网络的各网络参数组一一对应的数据流,并为每个网络参数组注册一个钩子函数。
结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,该系统还包括监听模块;
所述监听模块,用于通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上;
所述各GPU,还用于通过所述反向传播函数计算各网络参数组的梯度值,并从所述数据流中获取同一层的网络参数组的梯度值后计算所述同一层的网络参数组的平均梯度值。
结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,、所述监听模块,包括:
获取子模块,用于通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值;
判断子模块,用于通过所述钩子函数判断获取的同一层的网络参数组的梯度值是否发生变化;
同步子模块,用于当所述判断子模块的判断结果为是时,通过所述钩子函数将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
结合第二方面的第一种实施方式,在第二方面的第四种实施方式中,所述GPU的通信库为多卡通信框架NCCL。
本发明实施例提供的一种面向神经网络的数据并行处理方法及系统,提供了一个神经网络的数据并行处理的并行框架,该并行框架中对每个GPU利用并行初始化函数进行初始化,并通过并行初始化函数为每个GPU建立的输入管道输入初始化循环神经网络的模型初始化函数以及一个包含前向传播函数与反向传播函数的内部训练函数,对用户透明的条件下,并行框架会自动将每一批次的训练数据块按可用的GPU数量平均划分数据,并用多进程并行处理训练数据,最后自动将所有GPU上的梯度进行聚合求平均。用户可以在不改变原有网络训练代码的条件下,直接用本发明提供的方法对应的并行框架包装好目标神经网络,可以实现高效的加速训练效果,可以有效的解决开发循环神经网络时,并行加速训练的实现困难、效率低的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明一种面向神经网络的数据并行处理方法实施例一的流程图;
图2为本发明面向神经网络的数据并行处理方法实施例二的流程图;
图3为本发明面向神经网络的数据并行处理系统实施例一的结构示意图;
图4为本发明面向神经网络的数据并行处理系统实施例二的结构示意图;
图5为本发明面向神经网络的数据并行处理系统实施例三的结构示意图;
图6为监听模块16的一种优选实时结构示意图。
具体实施方式
下面结合附图对本发明实施例提供的面向神经网络的数据并行处理方案进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明一种面向神经网络的数据并行处理方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
步骤101、对每个GPU利用并行初始化函数进行初始化。
其中,所述并行初始化函数用于为每个GPU建立一个输入管道、一个输出管道和启动一个子进程,所述子进程循环从所述输入管道中读取要执行的函数名及函数参数值,并将读取的函数参数值代入所述函数名所表示的函数中进行执行,最后将执行结果写入所述输出管道;
本实施例中,实现一个事件循环基类,该类的初始化函数针对所有可用GPU分别建立一个输入管道、一个输出管道,并分别启动一个子进程。所有子进程均依次循环以下事件:从输入管道中读取要执行的函数名以及参数字典,然后执行该函数,最后将执行结果写回到输出管道。
步骤102、将用于初始化神经网络的模型初始化函数写入每个GPU输入管道。
本实施例中,将用户预先定义好的模型初始化函数通过管道让所有子进程执行,从而使所有GPU载入目标神经网络模型。
步骤103、将载入的训练数据按照GPU数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU的输入管道中。
其中,所述内部训练函数包含前向传播函数和反向传播函数;此处所述前向传播函数采用现有神经网络中的前向传播算法计算损失值,反向传播函数采用现有神经网络中的反向传播算法计算网络参数组的梯度值。
本实施例中,具体提供一个训练接口函数,该训练接口函数接受一个批次的训练数据块,将该数据块按GPU数量平均划分,并同用户预先定义好的、包含前向传播与反向传播函数的内部训练函数一起通过管道让所有子进程执行。
步骤104、各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值。
其中,所述神经网络具有多层,每层对应一网络参数组,每一网络参数组中包括多个网络参数。
本实施例中,由于训练数据块和内部训练函数写入了各GPU的输入管道,则该GPU对应的子进程将输入的训练数据块作为参数值代入内部训练函数中进行训练。由于各GPU分别有一个对应的子进程执行上述过程,本发明的训练数据处理实现的是多进程同步。
步骤105、计算所有GPU中的同一层的网络参数组的平均梯度值。
例如:若当前神经网络具有2层,对于第1层,将所有GPU得到的第1层的网络参数组求平均,得到第1层的网络参数组的平均梯度值。
步骤106、每个GPU根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数。
本实施例,提供了一个神经网络的数据并行处理的并行框架,该并行框架中对每个GPU利用并行初始化函数进行初始化,并通过并行初始化函数为每个GPU建立的输入管道输入模型初始化函数以及内部训练函数,对用户透明的条件下,并行框架会自动将每一批次的训练数据块按可用的GPU数量平均划分数据,并用多进程并行处理训练数据,最后自动将所有GPU上的梯度进行聚合求平均。用户可以在不改变原有网络训练代码的条件下,直接用本发明提供的方法对应的并行框架包装好目标神经网络,可以实现高效的加速训练效果,可以有效的解决开发循环神经网络时,并行加速训练的实现困难、效率低的问题。
图2为本发明面向神经网络的数据并行处理方法实施例二的流程图,如图2所示,本实施例的方法可以包括:
步骤201、对每个GPU利用并行初始化函数进行初始化。
本实施例中,步骤201的过程和上述方法实施例的步骤101类似,此处不再赘述。
步骤202、初始化各GPU的通信环境,建立与所述神经网络的各网络参数组一一对应的数据流。
本实施例中,GPU的通信库为英伟达的Multi-GPU多卡通信框架(NvidiaCollective multi-GPU Communication Library,NCCL)。
步骤203、将用于初始化神经网络的模型初始化函数写入每个GPU输入管道。
本实施例中,步骤203的过程和上述方法实施例的步骤102类似,此处不再赘述。
步骤204、将载入的训练数据按照GPU数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU的输入管道中,并为每个网络参数组注册一个钩子函数。
本实施例中,循环地为每个网络参数组注册一个钩子函数。
步骤205、各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值。
本实施例中,步骤205的过程和上述方法实施例的步骤104类似,此处不再赘述。
步骤206、通过各GPU中的所述反向传播函数计算各网络参数组的梯度值。
步骤207、通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
优选地,钩子函数获取了梯度值后,先判断同一层的网络参数组的梯度值是否发生变化,若梯度值发生变化时,钩子函数将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
步骤208、各GPU从所述数据流中获取同一层的网络参数组的梯度值。
步骤209、各GPU计算所述同一层的网络参数组的平均梯度值。
本实施例中,钩子函数将梯度值同步至数据流上,则各GPU可从数据流上获取其他GPU计算得到的同一层的网络参数组的梯度值,并各自求取平均梯度值,多个GPU并行计算,进一步保证同一梯度平均值得准确性,排除单一计算可能出现的失误。
步骤210、每个GPU根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数。
本实施例,通过钩子函数监听梯度值的变化,并在梯度值有变化时将各GPU计算的梯度值同步至相应的数据流上,各GPU即可从数据流上获取每个网络参数组的梯度值并求平均梯度值,实现数据的多进程同步训练。
下面采用一个具体的实施例,对图1~图2中任一个所示方法实施例的技术方案进行详细说明。
本实施例中,用户首先构建好循环神经网络的结构,并用上述根据上述面向神经网络的数据并行处理方法对应的并行框架直接包装该循环神经网络。随后用户自行加载训练数据,并在训练的主循环中调用并行框架提供的训练接口函数进行模型的训练。对用户透明的条件下,并行框架会自动将每一批次的训练数据块按可用的GPU数量平均划分数据,并用多进程并行处理训练数据,最后自动将所有GPU上的梯度进行聚合求平均。
对应于本发明实施例提供的面向神经网络的数据并行处理方法,本发明实施例还提供一种面向神经网络的数据并行处理系统。
图3为本发明面向神经网络的数据并行处理系统实施例一的结构示意图,如图3所示,本实施例的系统可以包括:第一初始化模块11、第二初始化模块12、数据均分模块13和多个GPU14;其中,第一初始化模块11,用于对每个GPU14利用并行初始化函数进行初始化,所述并行初始化函数用于为每个GPU14建立一个输入管道、一个输出管道和启动一个子进程,所述子进程循环从所述输入管道中读取要执行的函数名及函数参数值,并将读取的函数参数值代入所述函数名所表示的函数中进行执行,最后将执行结果写入所述输出管道;第二初始化模块12,用于将用于初始化神经网络的模型初始化函数写入每个GPU14的输入管道;数据均分模块13,用于将载入的训练数据按照GPU14的数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU14的输入管道中;所述内部训练函数包含前向传播函数和反向传播函数;多个GPU14,各个GPU14收到的内部训练函数对分配至各个GPU14上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值,并用于计算所有GPU14中的同一层的网络参数组的平均梯度值,每个GPU14还用于根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数;其中,所述神经网络具有多层,每层对应一网络参数组,每一网络参数组中包括多个网络参数。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明面向神经网络的数据并行处理系统实施例二的结构示意图,如图4所示,本实施例的系统在图3所示系统结构的基础上,进一步地,还包括第三初始化模块15,用于初始化各GPU14的通信环境,建立与所述神经网络的各网络参数组一一对应的数据流,并为每个网络参数组注册一个钩子函数。
优选地,GPU14的通信库为NCCL。
本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5为本发明面向神经网络的数据并行处理系统实施例三的结构示意图,如图5所示,本实施例的系统在图4所示系统结构的基础上,进一步地,还包括监听模块16;所述监听模块16,用于通过注册至同一层的各网络参数组的各钩子函数获取各GPU计算的该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上;所述各GPU14,还用于通过所述反向传播函数计算各网络参数组的梯度值,并从所述数据流中获取同一层的网络参数组的梯度值后计算所述同一层的网络参数组的平均梯度值。
本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为监听模块16的一种优选实时结构示意图,如图6中所示,监听模块16可以包括:获取子模块161、判断子模块162、同步子模块163;其中,获取子模块161,用于通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值;判断子模块162,用于通过所述钩子函数判断获取模块161获取的同一层的网络参数组的梯度值是否发生变化;同步子模块163,用于当所述判断子模块162的判断结果为是时,通过所述钩子函数将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
本发明提供的面向神经网络的系统对每个GPU利用并行初始化函数进行初始化,并通过并行初始化函数为每个GPU建立的输入管道输入模型初始化函数以及内部训练函数,对用户透明的条件下,会自动将每一批次的训练数据块按可用的GPU数量平均划分数据,并用多进程并行处理训练数据,最后自动将所有GPU上的梯度进行聚合求平均。用户可以在不改变原有网络训练代码的条件下,直接将本系统用于神经网络的数据处理,可以实现高效的加速训练效果,可以有效的解决开发循环神经网络时,并行加速训练的实现困难、效率低的问题,
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将
一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些
实体或操作之间存在任何这种实际的关系或者顺序。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种面向神经网络的数据并行处理方法,其特征在于,包括:
对每个图形处理器GPU利用并行初始化函数进行初始化,其中,所述并行初始化函数用于为每个GPU建立一个输入管道、一个输出管道和启动一个子进程,所述子进程循环从所述输入管道中读取要执行的函数名及函数参数值,并将读取的函数参数值代入所述函数名所表示的函数中进行执行,最后将执行结果写入所述输出管道;
将用于初始化神经网络的模型初始化函数写入每个GPU输入管道;
将载入的训练数据按照GPU数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU的输入管道中;所述内部训练函数包含前向传播函数和反向传播函数;
各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值;其中,所述神经网络具有多层,每层对应一网络参数组,每一网络参数组中包括多个网络参数;
计算所有GPU中的同一层的网络参数组的平均梯度值;
每个GPU根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数。
2.如权利要求1所述的面向神经网络的数据并行处理方法,其特征在于,在各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值之前,所述方法还包括:
初始化各GPU的通信环境,建立与所述神经网络的各网络参数组一一对应的数据流,并为每个网络参数组注册一个钩子函数。
3.如权利要求2所述的面向神经网络的数据并行处理方法,其特征在于,所述计算所有GPU中的同一层的网络参数组的平均梯度值,包括:
通过各GPU中的所述反向传播函数计算各网络参数组的梯度值;
通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上;
各GPU从所述数据流中获取同一层的网络参数组的梯度值;
各GPU计算所述同一层的网络参数组的平均梯度值。
4.如权利要求3所述的面向神经网络的数据并行处理方法,其特征在于,所述通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上,包括:
通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值;
通过所述钩子函数判断获取的同一层的网络参数组的梯度值是否发生变化;
当同一层的网络参数组的梯度值发生变化时,通过所述钩子函数将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
5.如权利要求2所述的面向神经网络的数据并行处理方法,其特征在于,所述GPU的通信库为多卡通信框架NCCL。
6.一种面向神经网络的数据并行处理系统,其特征在于,包括:
第一初始化模块,对每个GPU利用并行初始化函数进行初始化,其中,所述并行初始化函数用于为每个GPU建立一个输入管道、一个输出管道和启动一个子进程,所述子进程循环从所述输入管道中读取要执行的函数名及函数参数值,并将读取的函数参数值代入所述函数名所表示的函数中进行执行,最后将执行结果写入所述输出管道;
第二初始化模块,用于将用于初始化神经网络的模型初始化函数写入每个GPU输入管道;
数据均分模块,用于将载入的训练数据按照GPU数量均分为训练数据块,并将均分后的训练数据块和内部训练函数分别写入每个GPU的输入管道中;所述内部训练函数包含前向传播函数和反向传播函数;
多个GPU,各个GPU的内部训练函数对分配至各个GPU上的训练数据块进行同步训练,计算当前神经网络的各网络参数组的梯度值,并用于计算所有GPU中的同一层的网络参数组的平均梯度值,每个GPU还用于根据所述同一层的网络参数组的平均梯度值更新所述同一层的网络参数组中的网络参数;其中,所述神经网络具有多层,每层对应一网络参数组,每一网络参数组中包括多个网络参数。
7.如权利要求6所述的面向神经网络的数据并行处理系统,其特征在于,还包括:
第三初始化模块,用于初始化各GPU的通信环境,建立与所述神经网络的各网络参数组一一对应的数据流,并为每个网络参数组注册一个钩子函数。
8.如权利要求7所述的面向神经网络的数据并行处理系统,其特征在于,还包括监听模块;
所述监听模块,用于通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值,并将获取的梯度值同步至该同一层的网络参数组对应的数据流上;
所述各GPU,还用于通过所述反向传播函数计算各网络参数组的梯度值,并从所述数据流中获取同一层的网络参数组的梯度值后计算所述同一层的网络参数组的平均梯度值。
9.如权利要求8所述的面向神经网络的数据并行处理系统,其特征在于,所述监听模块,包括:
获取子模块,用于通过注册至同一层的各网络参数组的各钩子函数获取该同一层的网络参数组的梯度值;
判断子模块,用于通过所述钩子函数判断获取的同一层的网络参数组的梯度值是否发生变化;
同步子模块,用于当所述判断子模块的判断结果为是时,通过所述钩子函数将获取的梯度值同步至该同一层的网络参数组对应的数据流上。
10.如权利要求7所述的面向神经网络的数据并行处理系统,其特征在于,所述GPU的通信库为多卡通信框架NCCL。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711455682.5A CN108021395B (zh) | 2017-12-27 | 2017-12-27 | 一种面向神经网络的数据并行处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711455682.5A CN108021395B (zh) | 2017-12-27 | 2017-12-27 | 一种面向神经网络的数据并行处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021395A true CN108021395A (zh) | 2018-05-11 |
CN108021395B CN108021395B (zh) | 2022-04-29 |
Family
ID=62072136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711455682.5A Active CN108021395B (zh) | 2017-12-27 | 2017-12-27 | 一种面向神经网络的数据并行处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021395B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109685127A (zh) * | 2018-12-17 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种并行深度学习初至拾取的方法和系统 |
CN110059813A (zh) * | 2019-02-13 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 利用gpu集群更新卷积神经网络的方法、装置及设备 |
CN110516795A (zh) * | 2019-08-28 | 2019-11-29 | 北京达佳互联信息技术有限公司 | 一种为模型变量分配处理器的方法、装置及电子设备 |
WO2019242586A1 (zh) * | 2018-06-20 | 2019-12-26 | 中兴通讯股份有限公司 | 训练模型的实现方法、设备以及存储介质 |
CN111324630A (zh) * | 2020-03-04 | 2020-06-23 | 中科弘云科技(北京)有限公司 | 基于mpi的神经网络架构搜索并行化方法和设备 |
CN111475304A (zh) * | 2020-04-10 | 2020-07-31 | 中国科学院计算机网络信息中心 | 一种特征提取加速方法及系统 |
CN111723933A (zh) * | 2020-06-03 | 2020-09-29 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
CN112270376A (zh) * | 2020-11-10 | 2021-01-26 | 北京百度网讯科技有限公司 | 模型训练方法、装置、电子设备、存储介质和开发系统 |
WO2021026768A1 (zh) * | 2019-08-13 | 2021-02-18 | 深圳鲲云信息科技有限公司 | 基于数据流的自动驾驶方法、装置、电子设备及存储介质 |
WO2021056390A1 (zh) * | 2019-09-25 | 2021-04-01 | 浪潮电子信息产业股份有限公司 | 卷积神经网络模型同步训练方法、集群及可读存储介质 |
WO2021077282A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络模型转化方法、装置、服务器及存储介质 |
CN113537460A (zh) * | 2021-06-29 | 2021-10-22 | 哈尔滨工业大学 | 一种适用于耀斑预报问题的多线程神经网络模型的构建方法 |
US11961001B2 (en) | 2017-12-15 | 2024-04-16 | Nvidia Corporation | Parallel forward and backward propagation |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5886908A (en) * | 1997-03-27 | 1999-03-23 | International Business Machines Corporation | Method of efficient gradient computation |
CN103748987B (zh) * | 2009-07-14 | 2011-01-12 | 北京理工大学 | 一种基于模糊神经网络的攻击知识的自动更新方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN104463324A (zh) * | 2014-11-21 | 2015-03-25 | 长沙马沙电子科技有限公司 | 一种基于大规模高性能集群的卷积神经网络并行处理方法 |
US9183611B2 (en) * | 2013-07-03 | 2015-11-10 | Apple Inc. | Apparatus implementing instructions that impose pipeline interdependencies |
-
2017
- 2017-12-27 CN CN201711455682.5A patent/CN108021395B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5886908A (en) * | 1997-03-27 | 1999-03-23 | International Business Machines Corporation | Method of efficient gradient computation |
CN103748987B (zh) * | 2009-07-14 | 2011-01-12 | 北京理工大学 | 一种基于模糊神经网络的攻击知识的自动更新方法 |
US9183611B2 (en) * | 2013-07-03 | 2015-11-10 | Apple Inc. | Apparatus implementing instructions that impose pipeline interdependencies |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN104463324A (zh) * | 2014-11-21 | 2015-03-25 | 长沙马沙电子科技有限公司 | 一种基于大规模高性能集群的卷积神经网络并行处理方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11961001B2 (en) | 2017-12-15 | 2024-04-16 | Nvidia Corporation | Parallel forward and backward propagation |
WO2019242586A1 (zh) * | 2018-06-20 | 2019-12-26 | 中兴通讯股份有限公司 | 训练模型的实现方法、设备以及存储介质 |
CN109685127A (zh) * | 2018-12-17 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种并行深度学习初至拾取的方法和系统 |
US11640531B2 (en) | 2019-02-13 | 2023-05-02 | Advanced New Technologies Co., Ltd. | Method, apparatus and device for updating convolutional neural network using GPU cluster |
CN110059813A (zh) * | 2019-02-13 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 利用gpu集群更新卷积神经网络的方法、装置及设备 |
CN110059813B (zh) * | 2019-02-13 | 2021-04-06 | 创新先进技术有限公司 | 利用gpu集群更新卷积神经网络的方法、装置及设备 |
WO2021026768A1 (zh) * | 2019-08-13 | 2021-02-18 | 深圳鲲云信息科技有限公司 | 基于数据流的自动驾驶方法、装置、电子设备及存储介质 |
CN110516795B (zh) * | 2019-08-28 | 2022-05-10 | 北京达佳互联信息技术有限公司 | 一种为模型变量分配处理器的方法、装置及电子设备 |
CN110516795A (zh) * | 2019-08-28 | 2019-11-29 | 北京达佳互联信息技术有限公司 | 一种为模型变量分配处理器的方法、装置及电子设备 |
WO2021056390A1 (zh) * | 2019-09-25 | 2021-04-01 | 浪潮电子信息产业股份有限公司 | 卷积神经网络模型同步训练方法、集群及可读存储介质 |
US11797277B2 (en) | 2019-10-22 | 2023-10-24 | Shenzhen Corerain Technologies Co., Ltd. | Neural network model conversion method server, and storage medium |
WO2021077282A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络模型转化方法、装置、服务器及存储介质 |
CN111324630B (zh) * | 2020-03-04 | 2023-07-25 | 中科弘云科技(北京)有限公司 | 基于mpi的神经网络架构搜索并行化方法和设备 |
CN111324630A (zh) * | 2020-03-04 | 2020-06-23 | 中科弘云科技(北京)有限公司 | 基于mpi的神经网络架构搜索并行化方法和设备 |
CN111475304B (zh) * | 2020-04-10 | 2023-10-03 | 中国科学院计算机网络信息中心 | 一种特征提取加速方法及系统 |
CN111475304A (zh) * | 2020-04-10 | 2020-07-31 | 中国科学院计算机网络信息中心 | 一种特征提取加速方法及系统 |
WO2021244354A1 (zh) * | 2020-06-03 | 2021-12-09 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
CN111723933A (zh) * | 2020-06-03 | 2020-09-29 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
CN111723933B (zh) * | 2020-06-03 | 2024-04-16 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
CN112270376A (zh) * | 2020-11-10 | 2021-01-26 | 北京百度网讯科技有限公司 | 模型训练方法、装置、电子设备、存储介质和开发系统 |
CN113537460A (zh) * | 2021-06-29 | 2021-10-22 | 哈尔滨工业大学 | 一种适用于耀斑预报问题的多线程神经网络模型的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108021395B (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021395A (zh) | 一种面向神经网络的数据并行处理方法及系统 | |
TWI804684B (zh) | 用於在深度神經網路中利用啟動稀疏性的方法與裝置 | |
CN107341544A (zh) | 一种基于可分割阵列的可重构加速器及其实现方法 | |
CN109886400A (zh) | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 | |
KR20130090147A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN111626414B (zh) | 一种动态多精度神经网络加速单元 | |
CN110298443A (zh) | 神经网络运算装置及方法 | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN111176758B (zh) | 配置参数的推荐方法、装置、终端及存储介质 | |
CN106951926A (zh) | 一种混合架构的深度学习系统方法及装置 | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN112464784A (zh) | 一种基于混合并行的分布式训练方法 | |
CN107330516A (zh) | 模型参数训练方法、装置及系统 | |
CN105739951B (zh) | 一种基于gpu的l1最小化问题快速求解方法 | |
CN104219532B (zh) | 确定小物体区域的方法、视频帧之间插补帧的方法和装置 | |
CN107392835A (zh) | 一种粒子系统的处理方法及装置 | |
US20130207983A1 (en) | Central processing unit, gpu simulation method thereof, and computing system including the same | |
CN108875917A (zh) | 一种用于卷积神经网络处理器的控制方法及装置 | |
US20180137408A1 (en) | Method and system for event-based neural networks | |
CN108985449A (zh) | 一种对卷积神经网络处理器的控制方法及装置 | |
CN109727376A (zh) | 生成配置文件的方法、装置及售货设备 | |
CN110009644A (zh) | 一种特征图行像素分段的方法和装置 | |
CN106294429A (zh) | 重复数据识别方法和装置 | |
CN108921289A (zh) | 一种fpga异构加速方法、装置及系统 | |
CN114980450B (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 |