CN108229687B - 数据处理方法、数据处理装置及电子设备 - Google Patents

数据处理方法、数据处理装置及电子设备 Download PDF

Info

Publication number
CN108229687B
CN108229687B CN201611155183.XA CN201611155183A CN108229687B CN 108229687 B CN108229687 B CN 108229687B CN 201611155183 A CN201611155183 A CN 201611155183A CN 108229687 B CN108229687 B CN 108229687B
Authority
CN
China
Prior art keywords
gpu
slave
training
gpus
master
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
Application number
CN201611155183.XA
Other languages
English (en)
Other versions
CN108229687A (zh
Inventor
高进朝
李毅
薛伟
金涬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201611155183.XA priority Critical patent/CN108229687B/zh
Priority to PCT/CN2017/110827 priority patent/WO2018107934A1/zh
Publication of CN108229687A publication Critical patent/CN108229687A/zh
Priority to US16/360,604 priority patent/US10943324B2/en
Application granted granted Critical
Publication of CN108229687B publication Critical patent/CN108229687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N99/00Subject matter not provided for in other groups of this subclass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computational Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

本发明公开一种数据处理方法,包括:分别加载不同的训练数据集合至多个GPU;控制多个GPU并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;在控制多个GPU并行对接收到的训练数据集合进行训练过程中,控制多个GPU对其训练产生且未经交换的修正参数进行交换处理。基于本发明公开的数据处理方法,当多个GPU完成针对训练数据集合的训练时,每个GPU训练产生的修正参数中的部分修正参数已经交换至其他的GPU,能够缩短多个GPU的等待时间,从而缩短每一轮训练所消耗的时间,进而缩短完成整个深度学习训练所消耗的时间,提高设备的加速比。本发明还公开了相应的数据处理装置及电子设备。

Description

数据处理方法、数据处理装置及电子设备
技术领域
本发明属于计算机技术领域,尤其涉及数据处理方法、数据处理装置及电子设备。
背景技术
深度学习源于人工神经网络的研究,含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以实现数据的分布式特征表示。例如,卷积神经网络架构(Convolutional Architecture for FastFeature Embedding,简称为caffe)被广泛应用于图片识别和文本识别中。
GPU(GraphicsProcessingUnit)又称为图形处理器、显示核心或者显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机)上进行图像运算工作的微处理器。为了提升图片识别和文本识别中数据的处理效率,目前通常采用多个GPU并行处理的方式进行图片或文本的深度学习训练。
但是,申请人发现:目前采用多个GPU并行处理的方式进行深度学习训练,其加速比较低。其中,加速比是指:同一个任务在单处理器***和并行处理器***中运行消耗的时间的比率。
发明内容
有鉴于此,本发明的目的在于提供一种基于多GPU的数据处理方法、数据处理装置及电子设备,提高基于多GPU进行深度学习训练过程的加速比。
为实现上述目的,本发明提供如下技术方案:
一方面,本发明提供一种电子设备的数据处理方法,包括:
分别加载不同的训练数据集合至多个图形处理器GPU;
控制所述多个GPU并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
在控制所述多个GPU并行对接收到的训练数据集合进行训练过程中,控制所述多个GPU对其训练产生且未经交换的修正参数进行交换处理。
另一方面,本发明公开一种电子设备的数据处理装置,包括:
训练数据集合加载单元,用于分别加载不同的训练数据集合至多个GPU;
训练过程控制单元,用于控制所述多个GPU并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
参数交换控制单元,用于在控制所述多个GPU并行对接收到的训练数据集合进行训练过程中,控制所述多个GPU对其训练产生且未经交换的修正参数进行交换处理。
另一方面,本发明公开一种电子设备,该电子设备包括上述的数据处理装置。
由此可见,本发明的有益效果为:
本发明公开的数据处理方法和数据处理装置,应用于具有多个GPU的电子设备,利用多个GPU进行深度学习训练过程中,通过处理器加载不同的训练数据集合至各个GPU,通过处理器控制多个GPU并行对接收到的训练数据集合进行训练的过程中,控制多个GPU对其训练产生的修正参数中未进行交换的修正参数进行交换处理。由于多个GPU对训练数据集合进行训练的过程以及对多个GPU训练产生的修正参数进行交换的过程是并行处理的,因此,当多个GPU完成针对训练数据集合的训练时,每个GPU训练产生的修正参数中的部分修正参数已经交换至其他的GPU,能够缩短多个GPU的等待时间,从而缩短每一轮训练所消耗的时间,进而缩短完成整个深度学习训练所消耗的时间,提高设备的加速比。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有的多个GPU并行处理进行深度学习训练的原理示意图;
图2为本发明公开的数据处理方法适用的电子设备的结构框图;
图3为一种GPU与处理器的连接架构示意图;
图4为另一种GPU和处理器的连接架构示意图;
图5为本发明公开的一种数据处理方法的流程图;
图6为本发明公开的另一种数据处理方法的流程图;
图7为本发明对训练数据集合进行深度学习训练过程中的层结构示意图;
图8为本发明公开的一种电子设备的数据处理装置的结构示意图;
图9为本发明公开的另一种电子设备的数据处理装置的结构示意图。
具体实施方式
GPU进行深度学习训练的基本思想是:学习过程由样本输入前向传播与误差的反向传播两个过程组成。前向传播由输入层加载输入数据,传播到各隐藏层处理,最后到输出层输出特征;反向传播将某种形式的修正参数反向通过各隐藏层逐层传播,并在各隐藏层上通过修正参数对当前的模型参数进行修正,最后反馈到输入层。
目前,采用多个GPU并行处理的方式进行深度学习训练的过程中,整个深度学习训练过程分为多轮,在每一轮训练中,处理器向各个GPU分别加载一个训练数据集合(每个训练数据集合为待训练数据源中的一部分),各个GPU分别对各个训练数据集合进行训练,各个GPU完成训练之后,要将产生的修正参数在各个GPU之间进行交换,之后每个GPU利用多个GPU产生的修正参数对模型参数进行更新,最终使得每个GPU上都持有最新的模型副本,之后进行下一轮的训练。其原理可以参见1所示。
申请人发现:在现有的多个GPU并行处理进行深度学习训练的过程中,多个GPU对各自的训练数据集合完成训练之后,要在各个GPU之间进行修正参数的交换,这导致每个GPU在完成训练后要等待较长时间才能够获得其他GPU产生的修正参数,之后各个GPU才可以利用修正参数对模型参数进行更新。可以看到,多个GPU在完成训练之后交换修正参数会消耗较长的时间,这导致每一轮的训练都需要消耗较长的时间,从而导致完成整个深度学习训练的时间较长,降低了具有多GPU设备的加速比。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开的数据处理方法适用于具有多个GPU的电子设备,该电子设备可以为计算机或者服务器。
图2示出了本发明公开的数据处理方法适用的电子设备的结构框图。该电子设备包括存储器101、存储控制器102、一个或多个处理器103、外设接口104、以及多个GPU105。可以理解的是,图2所示的结构仅为示意,并不对电子设备的结构造成限定。例如,电子设备还可以包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
存储器101用于存储软件程序以及模块,例如操作***106和数据处理装置107。其中,操作***106可以为LINUX、UNIX、WINDOWS或者其他可用的操作***,操作***106可以包括各种用于管理***任务(例如内存管理、存储设备控制、电源管理等)的软件和/或驱动,提供其他软件的运行环境。数据处理装置107用于实现本发明实施例提供的数据处理方法。存储器101可包括高度随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。
外设接口104将各种输入/输出装置耦合至处理器103。处理器103运行存储在存储器101内的软件程序以及模块,执行各种功能应用以及数据处理,实现本发明实施例提供的数据处理方法。处理器103可以是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的集成电路。
多个GPU105通过外设接口104连接至处理器103。请参见图3和图4,图3为一种GPU与处理器的连接架构示意图,图4为另一种GPU和处理器的连接架构示意图。
在图3所示的架构中,电子设备包括1个处理器(具体为CPU0)和4个GPU(具体为GPU0、GPU1、GPU2和GPU3),GPU0、GPU1、GPU2、和GPU3通过PCIe(Peripheral ComponentInterconnect Express,周边装置高速互联接口)连接至CPU0。
在图4所示的架构中,电子设备包括2个处理器(具体为CPU0和CPU1)和8个GPU(具体为GPU0、GPU1、GPU2、GPU3、GPU4、GPU5、GPU6和GPU7)。其中,GPU0、GPU1、GPU2和GPU3通过PCIe连接至CPU0,GPU4、GPU5、GPU6和GPU7通过PCIe连接至CPU1。
基于图2所示具有多GPU的电子设备进行深度学习训练过程中,在每一轮训练中,执行如图5所示的步骤:
步骤S51:通过处理器103分别加载不同的训练数据集合至多个GPU105;
步骤S52:通过处理器103控制多个GPU105并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
步骤S53:在通过处理器103控制多个GPU105并行对接收到的训练数据集合进行训练过程中,通过处理器103控制多个GPU对其训练产生且未经交换的修正参数进行交换处理。
电子设备的存储器101存储有待训练数据源。在启动深度学习训练之后,电子设备中的一个或多个处理器103从存储器101中读取多个训练数据集合,每个处理器103读取的训练数据集合的数量与该处理器103所连接的GPU的数量可以保持一致。当然,每个处理器103在每一轮获取的训练数据集合的数量并不限定于此,只要不少于与其连接的GPU105的数量都是可以的。
需要说明的是,每个训练数据集合为待训练数据源中的一部分,例如:待训练数据源包括2万张图片,那么可以取其中的256张图片作为一个训练数据集合,训练数据集合也可以称为最小批次训练数据,以Minibatch表示。
以图3所示的架构为例,CPU0与4个GPU连接,那么在每一轮中CPU0可以从存储器中读取4个训练数据集合,将4个训练数据集合分别加载至4个GPU。例如:CPU0从存储器101读取4个训练数据集合,分别记为Minibatch0、Minibatch1、Minibatch2和Minibatch3,CPU0将Minibatch0加载至GPU0,将Minibatch1加载至GPU1,将Minibatch2加载至GPU2,将Minibatch3加载至GPU3。
以图4所示的架构为例,CPU0与4个GPU连接,CPU1与4个GPU连接,那么在每一轮中CPU0和CPU1可以从存储器中分别读取4个训练数据集合,CPU0读取的4个训练数据集合分别加载至GPU0至GPU3,CPU1读取的4个训练数据集合分别加载至GPU4至GPU7。例如:CPU0从存储器101读取4个训练数据集合,分别记为Minibatch0、Minibatch1、Minibatch2和Minibatch3,CPU0将Minibatch0加载至GPU0,将Minibatch1加载至GPU1,将Minibatch2加载至GPU2,将Minibatch3加载至GPU3;CPU1从存储器101读取4个训练数据集合,分别记为Minibatch4、Minibatch5、Minibatch6和Minibatch7,CPU1将Minibatch4加载至GPU4,将Minibatch5加载至GPU5,将Minibatch6加载至GPU6,将Minibatch7加载至GPU7。
电子设备中的处理器103控制与其连接的多个GPU105并行对接收到的训练数据集合进行训练。多个GPU在反向训练过程中,每完成一层训练都会产生修正参数。电子设备中的处理器103控制与其连接的多个GPU105并行对接收到的训练数据集合进行训练过程中,控制多个GPU105对其训练产生的修正参数中未经交换的修正参数进行交换处理。GPU105训练产生的修正参数包括梯度值。
也就是说,多个GPU对训练数据集合进行训练的过程以及对多个GPU训练产生的修正参数进行交换的过程是并行处理的。因此,当多个GPU完成针对训练数据集合的训练时,每个GPU训练产生的修正参数中的部分修正参数已经交换至其他的GPU,多个GPU只需要很短的等待时间就可以获得其他GPU训练产生的全部修正参数。最优情况下,在多个GPU完成针对训练数据集合的训练的时刻,只有最后一层训练产生的修正参数还未交换至其他GPU,因此,在多个GPU完成针对训练数据集合的训练后,所需等待的时间为:交换各个GPU针对训练数据集合进行的最后一层训练所产生修正参数的时间。
本发明公开的数据处理方法,应用于具有多个GPU的电子设备,利用多个GPU进行深度学习训练的过程中,通过处理器加载不同的训练数据集合至各个GPU,通过处理器控制多个GPU并行对接收到的训练数据集合进行训练的过程中,控制多个GPU对其训练产生的修正参数中未进行交换的修正参数进行交换处理。由于多个GPU对训练数据集合进行训练的过程以及对多个GPU训练产生的修正参数进行交换的过程是并行处理的,因此,当多个GPU完成针对训练数据集合的训练时,每个GPU训练产生的修正参数中的部分修正参数已经交换至其他的GPU,能够缩短多个GPU的等待时间,从而缩短每一轮训练所消耗的时间,进而缩短完成整个深度学习训练所消耗的时间,提高设备的加速比。
作为一种实施方式,通过处理器103控制多个GPU105对其训练产生且未经交换的修正参数进行交换处理,包括:控制多个GPU105以点对点的方式对训练产生且未经交换的修正参数进行交换处理,以使得每个GPU获得其他GPU训练产生的修正参数。之后,每个GPU利用自己产生的修正参数和从其他GPU获取到的修正参数对当前的模型参数进行修正。
以图3所示架构为例:
GPU0与GPU1建立点到点的连接,GPU0将自己训练产生且未经交换的修正参数向GPU1传输,GPU1将自己训练产生且未经交换的修正参数向GPU0传输;
GPU0与GPU2建立点到点的连接,GPU0将自己训练产生且未经交换的修正参数向GPU2传输,GPU2将自己训练产生且未经交换的修正参数向GPU0传输;
GPU0与GPU3建立点到点的连接,GPU0将自己训练产生且未经交换的修正参数向GPU3传输,GPU3将自己训练产生且未经交换的修正参数向GPU0传输;
GPU1与GPU2建立点到点的连接,GPU1将自己训练产生且未经交换的修正参数向GPU2传输,GPU2将自己训练产生且未经交换的修正参数向GPU1传输;
GPU1与GPU3建立点到点的连接,GPU1将自己训练产生且未经交换的修正参数向GPU3传输,GPU3将自己训练产生且未经交换的修正参数向GPU1传输;
GPU2与GPU3建立点到点的连接,GPU2将自己训练产生且未经交换的修正参数向GPU3传输,GPU3将自己训练产生且未经交换的修正参数向GPU2传输。
至此,GPU0至GPU3均获得其他GPU训练产生的修正参数,每个GPU利用自己产生的修正参数和从其他GPU获得的修正参数对当前的模型参数进行修正,完成修正之后,即可进入整个深度学习训练的下一轮训练。
参见图6,图6为本发明公开的另一种数据处理方法的流程图。其中,将电子设备中多个GPU中的一个GPU作为主GPU,该数据处理方法包括:
步骤S61:通过处理器103分别加载不同的训练数据集合至多个GPU105;
步骤S62:通过处理器103控制多个GPU105并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
步骤S63:在通过处理器103控制多个GPU105并行对接收到的训练数据集合进行训练过程中,控制多个GPU中除主GPU之外的其他GPU将其训练产生且未经交换的修正参数向主GPU传输;
步骤S64:通过处理器103控制主GPU利用其产生的修正参数和从其他GPU获得的修正参数对当前的模型参数进行修正;
步骤S65:控制主GPU向多个GPU中的其他GPU传输修正后的模型参数。
也就是说,电子设备的多个GPU中的一个GPU作为主GPU,其他GPU将自身训练产生的修正参数中未进行交换的修正参数向该主GPU传输。在各个GPU完成针对当前训练数据集合的训练之后,该主GPU利用自身训练产生的修正参数和从其他GPU获得的修正参数对当前的模型参数进行修正,也就是对当前的模型参数进行更新。之后,主GPU将修正后的模型参数向其他的GPU传输,使得其他GPU获得修正后的模型参数(也就是得到最新的模型副本),各个GPU(包括主GPU)均基于修正后的模型参数进行后续的训练。
本发明图6所示的数据处理方法,通过处理器控制多个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通过外设接口连接至该处理器,如图3所示的架构。将多个GPU中的一个GPU作为主GPU,将其他GPU作为从GPU。
在这种情况下,图6所示的数据处理方法中:
控制多个GPU中除主GPU之外的其他GPU将其训练产生且未经交换的修正参数向主GPU传输,具体包括:控制每个从GPU将训练产生且未经交换的修正参数通过外设接口向主GPU传输。
控制主GPU向其他GPU传输修正后的模型参数,具体包括:控制主GPU通过外设接口分别向从GPU传输修正后的模型参数。
以图3所示的架构为例:
将GPU0作为主GPU,则GPU1、GPU2和GPU3作为从GPU。
在某一轮训练中,CPU0从存储器中读取4个训练数据集合,分别记为Minibatch0、Minibatch1、Minibatch2和Minibatch3,CPU0将Minibatch0加载至GPU0,将Minibatch1加载至GPU1,将Minibatch2加载至GPU2,将Minibatch3加载至GPU3。
CPU0控制GPU0、GPU1、GPU2和GPU3并行对接收到的训练数据集合进行训练,并控制GPU1、GPU2和GPU3在训练过程中,将训练产生的修正参数中未进行交换的修正参数向GPU0传输。
当GPU0、GPU1、GPU2和GPU3完成针对当前训练数据集合的训练时,GPU1、GPU2和GPU3已经将训练产生的部分修正参数传输至GPU0,理想状态下,GPU1、GPU2和GPU3仅有最后一层训练产生的修正参数还未传输至GPU0。因此,GPU0只需等待极短时间就能够获得GPU1、GPU2和GPU3完成针对当前训练数据集合的训练所产生的修正参数。GPU0利用自身产生的修正参数和从其他3个GPU获得的修正参数对当前的模型参数进行修正,并将修正后的模型参数向其他3个GPU传输,使得GPU1至GPU3均获得新的模型副本。在下一轮训练中,GPU0至GPU3均使用新的模型副本进行训练。
实施中,在多个GPU并行对接收到的训练数据集合进行训练过程中,如果从GPU过于频繁地向主GPU传输修正参数,会频繁地占用通信总线。
作为一种优选实施方式,控制每个从GPU将训练产生且未经交换的修正参数通过外设接口向主GPU传输,具体包括:
控制每个从GPU在完成预设层的训练后,将训练产生且未经交换的修正参数通过外设接口向所述主GPU传输;或者,控制每个从GPU在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数通过外设接口向所述主GPU传输。
针对一个训练数据集合的训练过程包括多个层,例如包括:多个卷积层、多个池化层、多个归一化层和多个全连接层。整个训练过程可以看成一个有向无环图,如图7所示。
实施中,通过处理器控制每个从GPU在完成预设层的训练后,通过外设接口将当前未经交换的修正参数向主GPU传输,从而避免出现从GPU频繁地占用通信总线的问题。以图7为例,处理器可以控制GPU1、GPU2和GPU3在完成第1层的训练后,通过外设接口将当前未经交换的修正参数向GPU0传输,处理器控制GPU1、GPU2和GPU3在完成第4层的训练后,通过外设接口将当前未经交换的修正参数向GPU0传输。
另外,可以将每个从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,如图4所示的架构。将多个工作组中的一个工作组作为主工作组、其他工作组作为从工作组,并且,将主工作组中的一个GPU作为主GPU,将从工作组中的一个GPU为二级GPU,将多个工作组中的其他GPU为从GPU。
在这种情况下,图6所示的数据处理方法中:
控制多个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进行数据交互,从而减少跨处理器进行数据交互的次数,进而减少对通信带宽的占用。
以图4所示架构为例,GPU0、GPU1、GPU2和GPU3为第一工作组,GPU4、GPU5、GPU6和GPU7为第二工作组,将第一工作组作为主工作组、将第二工作组作为从工作组,将GPU0作为主GPU,将GPU4作为二级GPU,其他GPU作为从GPU。
在一轮训练中,CPU0和CPU1分别从存储器中读取4个训练数据集合,并分别加载至GPU0至GPU7。
通过CPU0控制GPU0至GPU3并行对接收到的训练数据集合进行训练,并且在训练过程中,通过CPU0控制GPU1至GPU3通过外设接口向GPU0传输未经交换的修正参数。
通过CPU1控制GPU4至GPU7并行对接收到的训练数据集合进行训练,并且在训练过程中,通过CPU1控制GPU5至GPU7通过外设接口向GPU4传输未经交换的修正参数。通过CPU1控制GPU4对自身产生的修正参数和从GPU5至GPU7接收到的修正参数进行预处理,将经过预处理的修正参数向GPU0传输。
GPU0利用自身产生的修正参数、GPU1至GPU3传输的修正参数、以及GPU4传输的经过预处理后的修正参数,对当前的模型参数进行修正。GPU0通过外设接口向GPU1至GPU3传输修正后的模型参数,GPU0向GPU4传输修正后的模型参数。GPU4在接收到修正后的模型参数后,将修正后的模型参数向GPU5至GPU7传输。
作为一种实施方式,控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行预处理,将经过预处理后的修正参数向所述主GPU传输,包括:控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行相加,将相加后的修正参数向主GPU传输。
作为另一种实施方式,控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行预处理,将经过预处理后的修正参数向所述主GPU传输,包括:控制每个二级GPU计算其训练产生的修正参数和从各从GPU获得的修正参数的平均值,将计算得到的修正参数的平均值向主GPU传输。
以图4所示架构为例,假如GPU0训练产生的修正参数为1.1,GPU1至GPU7训练产生的修正参数为1.2、1.17、1.3、1.05、1.22、1.33和1.14。
第一种方式:作为二级GPU的GPU4对自身训练产生的修正参数(1.05)、以及从GPU5至GPU7获得的修正参数(1.22、1.33和1.14)进行相加,相加后的修正参数为4.74,将相加后的修正参数向GPU0传输。
GPU0计算自身训练产生的修正参数(1.1)、从GPU1至GPU3获得的修正参数(1.2、1.17和1.3)、以及GPU4传输的修正后的修正参数(4.74)的平均值(1.1+1.2+1.17+1.3+4.74)/8,GPU0利用该平均值对当前的模型参数进行修正。
第二种方式:作为二级GPU的GPU4计算自身训练产生的修正参数(1.05)、以及从GPU5至GPU7获得的修正参数(1.22、1.33和1.14)的平均值,将计算得到的平均值1.185向GPU0传输。
GPU0计算自身训练产生的修正参数(1.1)、以及从GPU1至GPU3获得的修正参数(1.2、1.17和1.3)的第一平均值为1.1925,计算该第一平均值与从GPU4获得的修正后的修正参数(1.185)的平均值(1.1925+1.185)/2,GPU0利用该平均值对当前的模型参数进行修正。
实施中,为了减少向主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传输。
参见图8,图8为本发明公开的一种电子设备的数据处理装置的结构示意图。该电子设备具有多个GPU,其结构可以参见图2。该数据处理装置包括:
训练数据集合加载单元10,用于分别加载不同的训练数据集合至多个GPU;
训练过程控制单元20,用于控制多个GPU并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
参数交换控制单元30,用于在控制多个GPU并行对接收到的训练数据集合进行训练过程中,控制多个GPU对其训练产生且未经交换的修正参数进行交换处理。
本发明公开的数据处理装置,通过处理器加载不同的训练数据集合至各个GPU,通过处理器控制多个GPU并行对接收到的训练数据集合进行训练的过程中,控制多个GPU对其训练产生的修正参数中未进行交换的修正参数进行交换处理。由于多个GPU对训练数据集合进行训练的过程以及对多个GPU训练产生的修正参数进行交换的过程是并行处理的,因此,当多个GPU完成针对训练数据集合的训练时,每个GPU训练产生的修正参数中的部分修正参数已经交换至其他的GPU,能够缩短多个GPU的等待时间,从而缩短每一轮训练所消耗的时间,进而缩短完成整个深度学习训练所消耗的时间,提高设备的加速比。
参见图9,图9为本发明公开的另一种电子设备的数据处理装置的结构示意图。该数据处理装置包括:
训练数据集合加载单元10,用于分别加载不同的训练数据集合至多个GPU;
训练过程控制单元20,用于控制多个GPU并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
参数交换控制单元30,用于在控制多个GPU并行对接收到的训练数据集合进行训练过程中,控制多个GPU对其训练产生且未经交换的修正参数进行交换处理。具体的,参数交换控制单元30包括修正参数传输控制单元301,修正参数传输控制单元301,用于控制多个GPU中除主GPU之外的其他GPU将其训练产生且未经交换的修正参数向主GPU传输。其中,多个GPU中的一个GPU为主GPU。
修正控制单元40,用于控制主GPU利用其产生的修正参数和从其他GPU获得的修正参数对当前的模型参数进行修正;
模型参数分发控制单元50,用于控制主GPU向其他GPU传输修正后的模型参数。
本发明图9所示数据处理装置,多个GPU对修正参数进行交换的过程具体为:多个GPU中除主GPU之外的其他GPU向主GPU传输修正参数,与多个GPU两两之间交换修正参数相比,减少了交换修正参数的次数和数据交互量,因此,当多个GPU完成针对训练数据集合的训练后,主GPU只需要等待极短的时间就能够获得对当前模型参数进行修正所需的全部修正参数。也就是说,当多个GPU完成针对训练数据集合的训练后,主GPU能够在很短时间内完成对当前模型参数的修正,并向其他GPU传输修正后的模型参数,能够进一步缩短每一轮训练所消耗的时间,提高设备的加速比。另外,多个GPU中仅有一个GPU(也就是主GPU)需要根据修正参数对模型参数进行修正,其他GPU不需要进行该操作,降低了其他GPU的运算量。
具体实施中,当电子设备包括一个处理器时,多个GPU通过外设接口连接至该处理器。将多个GPU中的一个GPU作为主GPU,将其他GPU作为从GPU。
作为一种实施方式,修正参数传输控制单元301包括第一参数交换控制单元,模型参数分发控制单元50包括第一分发控制单元。
其中:
第一参数交换控制单元用于控制每个从GPU将训练产生且未经交换的修正参数通过外设接口向主GPU传输。
第一分发控制单元用于控制主GPU通过外设接口分别向从GPU传输修正后的模型参数。
可选的,第一参数交换控制单元具体用于:控制每个从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数通过外设接口向主GPU传输。
可选的,训练过程控制单元20具体用于:控制每个从GPU将训练产生的修正参数存储至各自显存中的缓冲寄存器。相应的,第一参数交换控制单元具体用于:控制每个从GPU在其缓冲寄存器满时,将缓冲寄存器中的修正参数向主GPU传输。
具体实施中,当电子设备包括多个处理器时,每个处理器通过外设接口与一个工作组连接,其中,每个工作组包括多个GPU。将多个工作组中的一个工作组作为主工作组、其他工作组作为从工作组,并且,将主工作组中的一个GPU作为主GPU,将从工作组中的一个GPU为二级GPU,将多个工作组中的其他GPU为从GPU。
作为一种实施方式,修正参数传输控制单元301包括第二参数交换控制单元,模型参数分发控制单元50包括第二分发控制单元。
其中:
第二参数交换控制单元用于控制从工作组中每个从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传输。
可选的,训练过程控制单元20具体用于控制每个从GPU将训练产生的修正参数存储至各自显存中的缓冲寄存器。
相应的,第二参数交换控制单元在控制从工作组中每个从GPU将其训练产生且未经交换的修正参数,向从GPU所在从工作组中的二级GPU传输方面,具体用于:控制从工作组中每个从GPU在其缓冲寄存器满时,将缓存寄存器中的修正参数,向从GPU所在从工作组中的二级GPU传输;
第二参数交换控制单元在控制主工作组中的从GPU将其训练产生且未经交换的修正参数向主GPU传输方面,具体用于:控制主工作组中的从GPU在其缓冲寄存器满时,将缓存寄存器中的修正参数向主GPU传输。
本发明还公开一种电子设备,该电子设备包括本发明上述公开的任意一种数据处理装置。
图2示出了本发明公开的电子设备的硬件结构,该电子设备包括:一个或多个处理器103、存储器101、存储控制器102、外设接口104和多个GPU105。可选的,该电子设备还可以包括通信接口和通信总线。
一个或多个处理器103,用于执行程序;
存储器101,用于存放程序;
程序可以包括程序代码,所述程序代码包括计算机操作指令。
处理器103可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的集成电路。
存储器101可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
其中,程序可具体用于:
分别加载不同的训练数据集合至多个图形处理器GPU;
控制所述多个GPU并行对接收到的训练数据集合进行训练,并将反向过程中产生的修正参数存储至各自的显存;
在控制所述多个GPU并行对接收到的训练数据集合进行训练过程中,控制所述多个GPU对其训练产生且未经交换的修正参数进行交换处理。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (15)

1.一种电子设备的数据处理方法,其特征在于,包括:
分别加载不同的训练数据集合至多个图形处理器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传输所述修正后的模型参数。
2.根据权利要求1所述的数据处理方法,其特征在于,所述电子设备包括一个处理器,所述多个GPU通过外设接口连接至所述处理器,所述多个GPU中除所述主GPU之外的GPU为从GPU;
所述控制所述多个GPU中除所述主GPU之外的其他GPU将其训练产生且未经交换的修正参数向所述主GPU传输,包括:控制每个所述从GPU将训练产生且未经交换的修正参数通过所述外设接口向所述主GPU传输;
所述控制所述主GPU向所述其他GPU传输修正后的模型参数,包括:控制所述主GPU通过所述外设接口分别向所述从GPU传输所述修正后的模型参数。
3.根据权利要求2所述的数据处理方法,其特征在于,所述控制每个所述从GPU将训练产生且未经交换的修正参数通过所述外设接口向所述主GPU传输,包括:
控制每个所述从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数通过所述外设接口向所述主GPU传输。
4.根据权利要求2所述的数据处理方法,其特征在于,所述每个从GPU将训练产生的修正参数存储至各自显存中的缓冲寄存器;
所述控制每个所述从GPU将训练产生且未经交换的修正参数通过所述外设接口向所述主GPU传输,包括:控制每个所述从GPU在其缓冲寄存器满时,将所述缓冲寄存器中的修正参数向所述主GPU传输。
5.根据权利要求1所述的数据处理方法,其特征在于,所述控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行预处理,将经过预处理后的修正参数向所述主GPU传输,包括:
控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行相加,将相加后的修正参数向所述主GPU传输;
或者,控制每个二级GPU计算其训练产生的修正参数和从各从GPU获得的修正参数的平均值,将计算得到的修正参数的平均值向所述主GPU传输。
6.根据权利要求1或5所述的数据处理方法,其特征在于,
所述控制所述从工作组中每个从GPU将其训练产生且未经交换的修正参数,向所述从GPU所在从工作组中的二级GPU传输,包括:控制所述从工作组中每个所述从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数向所述从GPU所在从工作组中的二级GPU传输;
所述控制所述主工作组中的从GPU将其训练产生且未经交换的修正参数向所述主GPU传输,包括:控制所述主工作组中的从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数向所述主GPU传输。
7.根据权利要求1或5所述的数据处理方法,其特征在于,所述每个从GPU将训练产生的修正参数存储至各自显存中的缓冲寄存器;
所述控制所述从工作组中每个从GPU将其训练产生且未经交换的修正参数,向所述从GPU所在从工作组中的二级GPU传输,包括:控制所述从工作组中每个所述从GPU在其缓冲寄存器满时,将所述缓冲寄存器中的修正参数,向所述从GPU所在从工作组中的二级GPU传输;
所述控制所述主工作组中的从GPU将其训练产生且未经交换的修正参数向所述主GPU传输,包括:控制所述主工作组中的从GPU在其缓冲寄存器满时,将所述缓冲 寄存器中的修正参数向所述主GPU传输。
8.一种电子设备的数据处理装置,其特征在于,包括:
训练数据集合加载单元,用于分别加载不同的训练数据集合至多个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传输所述修正后的模型参数。
9.根据权利要求8所述的数据处理装置,其特征在于,所述电子设备包括一个处理器,所述多个GPU通过外设接口连接至所述处理器,所述多个GPU中除所述主GPU之外的GPU为从GPU;
所述修正参数传输控制单元包括:第一参数交换控制单元,用于控制每个所述从GPU将训练产生且未经交换的修正参数通过所述外设接口向所述主GPU传输;
所述模型参数分发控制单元包括:第一分发控制单元,用于控制所述主GPU通过所述外设接口分别向所述从GPU传输所述修正后的模型参数。
10.根据权利要求9所述的数据处理装置,其特征在于,所述第一参数交换控制单元具体用于:控制每个所述从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数通过所述外设接口向所述主GPU传输。
11.根据权利要求9所述的数据处理装置,其特征在于,
训练过程控制单元具体用于控制每个从GPU将训练产生的修正参数存储至各自显存中的缓冲寄存器;
所述第一参数交换控制单元具体用于:控制每个所述从GPU在其缓冲寄存器满时,将所述缓冲寄存器中的修正参数向所述主GPU传输。
12.根据权利要求8所述的数据处理装置,其特征在于,第二参数交换控制单元在控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行预处理,将经过预处理后的修正参数向所述主GPU传输方面,具体用于:
控制每个二级GPU对其训练产生的修正参数和从各从GPU获得的修正参数进行相加,将相加后的修正参数向所述主GPU传输;
或者,控制每个二级GPU计算其训练产生的修正参数和从各从GPU获得的修正参数的平均值,将计算得到的修正参数的平均值向所述主GPU传输。
13.根据权利要求8或12所述的数据处理装置,其特征在于,
所述第二参数交换控制单元在控制所述从工作组中每个从GPU将其训练产生且未经交换的修正参数,向所述从GPU所在从工作组中的二级GPU传输方面,具体用于:控制所述从工作组中每个所述从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数向所述从GPU所在从工作组中的二级GPU传输;
所述第二参数交换控制单元在控制所述主工作组中的从GPU将其训练产生且未经交换的修正参数向所述主GPU传输方面,具体用于:控制所述主工作组中的从GPU在完成预设层的训练后或者在未经交换的修正参数达到预定数据量时,将训练产生且未经交换的修正参数向所述主GPU传输。
14.根据权利要求8或12所述的数据处理装置,其特征在于,训练过程控制单元具体用于控制每个从GPU将训练产生的修正参数存储至各自显存中的缓冲寄存器;
所述第二参数交换控制单元在控制所述从工作组中每个从GPU将其训练产生且未经交换的修正参数,向所述从GPU所在从工作组中的二级GPU传输方面,具体用于:控制从工作组中每个所述从GPU在其缓冲寄存器满时,将所述缓冲寄存器中的修正参数,向所述从GPU所在从工作组中的二级GPU传输;
所述第二参数交换控制单元在控制所述主工作组中的从GPU将其训练产生且未经交换的修正参数向所述主GPU传输方面,具体用于:控制所述主工作组中的从GPU在其缓冲寄存器满时,将所述缓冲 寄存器中的修正参数向所述主GPU传输。
15.一种电子设备,其特征在于,包括如权利要求8至14中任一项所述的数据处理装置。
CN201611155183.XA 2016-12-14 2016-12-14 数据处理方法、数据处理装置及电子设备 Active CN108229687B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201611155183.XA CN108229687B (zh) 2016-12-14 2016-12-14 数据处理方法、数据处理装置及电子设备
PCT/CN2017/110827 WO2018107934A1 (zh) 2016-12-14 2017-11-14 数据处理方法、装置及电子设备
US16/360,604 US10943324B2 (en) 2016-12-14 2019-03-21 Data processing method, apparatus, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611155183.XA CN108229687B (zh) 2016-12-14 2016-12-14 数据处理方法、数据处理装置及电子设备

Publications (2)

Publication Number Publication Date
CN108229687A CN108229687A (zh) 2018-06-29
CN108229687B true CN108229687B (zh) 2021-08-24

Family

ID=62557936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611155183.XA Active CN108229687B (zh) 2016-12-14 2016-12-14 数据处理方法、数据处理装置及电子设备

Country Status (3)

Country Link
US (1) US10943324B2 (zh)
CN (1) CN108229687B (zh)
WO (1) WO2018107934A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109343978B (zh) * 2018-09-27 2020-10-20 苏州浪潮智能科技有限公司 一种深度学习分布式框架用的数据交换方法与装置
CN110059813B (zh) 2019-02-13 2021-04-06 创新先进技术有限公司 利用gpu集群更新卷积神经网络的方法、装置及设备
CN110377342B (zh) * 2019-06-10 2022-08-30 平安科技(深圳)有限公司 基于卷积神经网络的显存处理方法、装置及存储介质
KR102472282B1 (ko) * 2019-10-12 2022-11-29 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템
CN112199885B (zh) * 2020-09-09 2021-07-06 北京达佳互联信息技术有限公司 一种分布式模型训练***及应用方法
CN112328532B (zh) * 2020-11-02 2024-02-09 长沙景嘉微电子股份有限公司 多gpu通信的方法及装置、存储介质、电子装置
CN113159284A (zh) * 2021-03-31 2021-07-23 华为技术有限公司 一种模型训练方法及装置
CN114356540B (zh) * 2021-10-30 2024-07-02 腾讯科技(深圳)有限公司 一种参数更新方法、装置、电子设备和存储介质
CN114862655B (zh) * 2022-05-18 2023-03-10 北京百度网讯科技有限公司 用于模型训练的运行控制方法、装置和电子设备
CN116934571B (zh) * 2023-07-20 2024-07-02 北京百度网讯科技有限公司 任务处理方法、装置、电子设备和存储介质
CN117290098A (zh) * 2023-09-22 2023-12-26 中国科学院自动化研究所 基于gpu内联直通的高速数据处理方法及装置
CN116991483B (zh) * 2023-09-25 2024-04-05 粤港澳大湾区数字经济研究院(福田) 一种针对语言模型计算的流水线并行方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104036451A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机***有限公司 基于多图形处理器的模型并行处理方法及装置
CN104035751A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机***有限公司 基于多图形处理器的数据并行处理方法及装置
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN104809426A (zh) * 2014-01-27 2015-07-29 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
CN104899641A (zh) * 2015-05-25 2015-09-09 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习***
CN105894087A (zh) * 2015-01-26 2016-08-24 华为技术有限公司 用于神经网络中训练参数集的***和方法
CN106056529A (zh) * 2015-04-03 2016-10-26 阿里巴巴集团控股有限公司 一种对用于图片识别的卷积神经网络训练的方法与设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224502A (zh) * 2015-09-28 2016-01-06 浪潮(北京)电子信息产业有限公司 一种基于gpu的深度学习方法及***
US11200664B2 (en) * 2015-12-18 2021-12-14 The Regents Of The University Of California Interpretation and quantification of emergency features on head computed tomography

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809426A (zh) * 2014-01-27 2015-07-29 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
CN104036451A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机***有限公司 基于多图形处理器的模型并行处理方法及装置
CN104035751A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机***有限公司 基于多图形处理器的数据并行处理方法及装置
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN105894087A (zh) * 2015-01-26 2016-08-24 华为技术有限公司 用于神经网络中训练参数集的***和方法
CN106056529A (zh) * 2015-04-03 2016-10-26 阿里巴巴集团控股有限公司 一种对用于图片识别的卷积神经网络训练的方法与设备
CN104899641A (zh) * 2015-05-25 2015-09-09 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习***

Also Published As

Publication number Publication date
WO2018107934A1 (zh) 2018-06-21
CN108229687A (zh) 2018-06-29
US20190251654A1 (en) 2019-08-15
US10943324B2 (en) 2021-03-09

Similar Documents

Publication Publication Date Title
CN108229687B (zh) 数据处理方法、数据处理装置及电子设备
US11928595B2 (en) Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same
CN108229654B (zh) 神经网络卷积运算装置及方法
CN102906726B (zh) 协处理加速方法、装置及***
CN109165728B (zh) 一种卷积神经网络的基本计算单元及计算方法
CN108694441B (zh) 一种网络处理器和网络运算方法
CN110750351B (zh) 多核任务调度器、多核任务调度方法、装置及相关产品
US9274831B2 (en) Information processing apparatus, information processing method, and storage medium
CN109416673A (zh) 存储器请求仲裁
CN112199036A (zh) 数据存储装置、数据处理***及其加速装置
CN111066058B (zh) 用于低功率实时对象检测的***和方法
CN109711540B (zh) 一种计算装置及板卡
CN109583579B (zh) 计算装置及相关产品
CN111199276B (zh) 数据处理方法及相关产品
EP3933703A1 (en) Dynamic loading neural network inference at dram/on-bus sram/serial flash for power optimization
CN116185942A (zh) 数据处理方法、装置、存储介质以及电子设备
CN111209230B (zh) 数据处理装置、方法及相关产品
CN110147873B (zh) 卷积神经网络的处理器及训练方法
CN112766475A (zh) 处理部件及人工智能处理器
WO2020192587A1 (zh) 人工智能计算装置及相关产品
CN111723920A (zh) 人工智能计算装置及相关产品
CN111831405B (zh) 一种数据处理方法、逻辑芯片及其设备
CN111210011B (zh) 数据处理装置及相关产品
CN111723921B (zh) 人工智能计算装置及相关产品
US20220147280A1 (en) Efficient buffering technique for transferring data

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