CN104036451A - 基于多图形处理器的模型并行处理方法及装置 - Google Patents

基于多图形处理器的模型并行处理方法及装置 Download PDF

Info

Publication number
CN104036451A
CN104036451A CN201410281130.7A CN201410281130A CN104036451A CN 104036451 A CN104036451 A CN 104036451A CN 201410281130 A CN201410281130 A CN 201410281130A CN 104036451 A CN104036451 A CN 104036451A
Authority
CN
China
Prior art keywords
gpu
data
thread
subregion
data processing
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
Application number
CN201410281130.7A
Other languages
English (en)
Other versions
CN104036451B (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.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems 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 Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201410281130.7A priority Critical patent/CN104036451B/zh
Publication of CN104036451A publication Critical patent/CN104036451A/zh
Priority to US15/107,475 priority patent/US9607355B2/en
Priority to PCT/CN2015/081964 priority patent/WO2015192806A1/en
Priority to EP15810386.1A priority patent/EP3158529B1/en
Application granted granted Critical
Publication of CN104036451B publication Critical patent/CN104036451B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于多图形处理器(GPU)的并行数据处理方法,包括以下步骤:在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU;将每个工作线程与对应的一个GPU绑定;从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU显存中;在对应于一个工作组的多个GPU之间以点对点(Peer to Peer)的方式传输GPU进行数据处理所需要的数据;通过所述工作线程控制所述多个GPU并行进行数据处理。所述方法可以提升多GPU并行数据处理的效率。此外,本发明还提供一种并行数据处理装置。

Description

基于多图形处理器的模型并行处理方法及装置
技术领域
本发明涉及计算技术领域,特别涉及一种基于多图形处理器(GPU)的数据并行处理方法及装置。
背景技术
深度神经网络技术目前是机器学习领域比较热门的技术,在学术界及工业界均已有成功案例,包括语音识别、图像识别、自然语言处理以及广告推荐等。Rajat Raina,Anand Madhavan,Andrew Y.Ng等人在第26届国际机器学习会议(Montreal,Canada,2009)上发表的文章“Large-scale Deep Unsupervised Learning using Graphics Processors”介绍了使用单个图形处理器(GPU)训练深度神经网络的方法及系统实现;Alex Krizhevsky,Ilya Sutskever,Geoffrey E.Hinton等人在《神经信息处理系统》2012(《Neural Information Processing Systems》)上发表的“使用深度卷积神经网络进行图像分类(ImageNet Classification with Deep Convolutional Neural Networks)”一文介绍了使用单GPU训练卷积神经网络的方法及系统实现。
在通用计算方向,随着NVIDIA CUDA(Compute Unified Device Architecture,统一计算设备架构)的出现和发展,利用GPU完成通用计算变得越来越简单,在业界广泛应用的通用计算领域等众多应用中可获得几倍、几十倍,甚至上百倍的加速比。请参见David B.Kirk,Wen-mei W.Hwu.大规模并行处理器编程实战(第二版)[M].清华大学出版社,2013年11月。
GPU处理器采用了与CPU处理器完全不同的设计理念,如图1所示,区别于CPU的“多核”概念,GPU的设计走向“众核”方向,众核即由 大量较小的内核组成,随着计算机的发展,内核的数量也在不断翻倍。
深度神经网络训练中用到的反向传播算法(BP算法)基本思想是学习过程由样本输入前向传播与误差的反向传播两个过程组成。前向传播由输入层加载输入数据,传播到各隐藏层处理,最后到输出层输出特征;反向传播将某种形式的输出误差反向通过各隐藏层逐层传播,并在各隐藏层上通过更新的误差值计算更新的梯度,最后反馈到输入层。在每次前向传播和反向传播后,各层均需要将梯度更新到权重参数上。请参见A.T.C.Goh.Back-propagation neural networks for modeling complex systems[J].Artificial Intelligence in Enineering,1995.
Omry Yadan,Keith Adams,Yaniv Taigman,Marc’Aurelio Ranzato.Multi-GPU Training of ConvNets.arXiv:1312.5853v4[cs.LG],Feb.18th,2014是Facebook公司发表的卷积神经网络在多GPU上训练的实现,取得了有效的加速成果,使用4GPU相比1 GPU最多可达到2.2倍加速比。从实践上证明深度神经网络的训练过程中存在着较为充分的任务并行性和数据并行性,而多GPU技术的应用有效利用了并行性特点,能够起到加速深度神经网络的训练过程,从而缩减开展试验的时间成本和经费成本,获得更高的成果收益。
随着GPU硬件的快速发展,图形处理器上聚合着大规模并行处理器资源,从而有利于将通用计算中的并行计算部分映射到GPU平台,使得GPU技术来加速并行应用程序越来越流行。然而,基于单GPU实现深度神经网络系统由于目前实现方案的并行度主要存在于矩阵运算的并行化方面,将成千上万维矩阵的运算映射到GPU并行计算场景来提升单次处理的速度,而处理数据、各批次数据计算之间、深度神经网络本身存在的并行性并未加以考虑,依旧是串行化实现。面对大规模训练数据、训练较复杂的深度网络的需求,采用GPU开展训练,在实验过程中已存在的严重性能不足,往往需要一周乃至数周时间才能达到模型的收敛,不能满足 对于训练大规模网络、开展更多的试验的需求。目前服务器上安装多个GPU卡已经非常普遍,在通用计算领域使用多GPU并行加速技术扩展计算密集型应用程序的并行性、提高程序性能也是越来越热门的发展方向。
基于点对点数据交换模型在性能上存在严重不足:在超过2个并行单元时需要更多的数据交换周期,并且每个数据交换周期内存在等待,没有充分利用空闲的总线带宽。需要在多GPU数据并行技术中创新地实现一种参数交换机制来得以解决。
解决了模型训练的性能问题后,还需要解决模型训练过程中收敛速度问题,从训练算法方面再以提高训练性能。现有技术采用固定学习率更新参数,训练实验过程掺杂大量手动调节学习率及判断收敛工作,复杂繁琐而效率较低。
发明内容
有鉴于此,本发明提供一种基于多图形处理器(GPU)的并行数据处理方法及装置,其可提升数据的并行处理效率。
一种基于多图形处理器(GPU)的并行数据处理方法,包括以下步骤:
在中央处理器(CPU)内创建用于分别控制多个工作组的多个工作线程(Worker),所述工作组包括一个或多个GPU;
将每个工作线程与对应的一个GPU绑定;
从非易失性存储器内分别加载多个批次(Batch)的训练数据至所述多个工作组内的GPU显存中;以及
通过所述工作线程控制所述多个GPU进行并行数据处理。
一种基于多图形处理器(GPU)的数据并行处理装置,包括:
线程创建模块,用于在中央处理器(CPU)内创建用于分别控制多个工作组的多个工作线程(Worker),所述工作组包括一个或多个GPU;
线程绑定模块,用于将每个工作线程与对应的一个GPU绑定;
数据分发模块,用于从非易失性存储器内分别加载多个批次(Batch)的训练数据至所述多个工作组内的GPU显存中;
数据处理控制模块,用于通过所述工作线程控制所述多个GPU进行并行数据处理。
一种基于多图形处理器(GPU)的并行数据处理方法,包括以下步骤:
在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU;
将每个工作线程与对应的一个GPU绑定;
从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU显存中;
在对应于一个工作组的多个GPU之间以点对点(Peer to Peer)的方式传输GPU进行数据处理所需要的数据;
通过所述工作线程控制所述多个GPU并行进行数据处理。
一种基于多图形处理器(GPU)的数据并行处理装置,包括:
线程创建模块,用于在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU;
线程绑定模块,用于将每个工作线程与对应的一个GPU绑定;
数据分发模块,用于从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU显存中;
传输模块,用于在对应于一个工作组的多个GPU之间以点对点方式传输GPU进行数据处理所需要的数据;以及
数据处理控制模块,通过所述工作线程控制所述多个GPU并行进行数据处理。
根据上述的方法及装置,具体的处理运算在多个GPU中并行进行,而各GPU的调度由独占的CPU线程实现,因此,整个数据处理的过程,无论是GPU中的处理运算还是CPU内的线程调度都以并行的方式运行,从而提升了数据处理效率。此外,通过传输模块的引入,提升了存储访问的效率,进一步提升了数据处理的效率。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为CPU与GPU的架构对比示意图。
图2为一种服务器的结构框图。
图3为图2的服务器中GPU的连接结构示意图。
图4为单GPU数据处理与多GPU并行数据处理流程对比示意图。
图5为本发明实施例提供的数据处理方法控制流程图。
图6为本发明实施例提供的数据处理方法中数据在不同存储器间存取示意图。
图7为本发明实施例提供的数据处理方法运行时间利用效率示意图。
图8为卷积神经网络模型训练过程中梯度及参数更新示意图。
图9-11为本发明实施例提供的数据处理方法中参数交换示意图。
图12为本发明实施例提供的数据处理方法中工作组划分示意图。
图13为卷积神经网络的多层次模型示意图。
图14为单GPU单模型数据处理与多GPU单模型数据处理的对比示意图。
图15为本发明实施例提供的数据处理方法控制流程图。
图16为卷积神经网络的多层次模型示意图。
图17为本发明实施人列提供的数据处理方法中在不同GPU之间传输数据的示意图。
图18为第一实施例提供的数据处理方法流程图。
图19为第二实施例提供的数据处理方法流程图。
图20为第三实施例提供的数据处理方法流程图。
图21为第四实施例提供的数据处理方法流程图。
图22为第五实施例提供的数据处理方法流程图。
图23为第六实施例提供的数据处理方法流程图。
图24为第七实施例提供的数据处理方法流程图。
图25为第八实施例提供的数据处理装置的模块图。
图26为第九实施例提供的数据处理装置的模块图。
图27为第十实施例提供的数据处理装置的模块图。
图28为第十一实施例提供的数据处理装置的模块图。
图29为第十二实施例提供的数据处理装置的模块图。
图30为第十三实施例提供的数据处理装置的模块图。
图31为第十四实施例提供的数据处理装置的模块图。
具体实施方式
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
图2示出了一种计算机或者服务器的结构框图。如图2所示,服务器100包括存储器102、一个或多个处理器104、存储控制器106、外设接口108、以及一个或多个GPU 110。可以理解,图2所示的结构仅为示意,其并不对服务器100的结构造成限定。例如,服务器100还可包括比图2 中所示更多或者更少的组件,或者具有与图2所示不同的配置。
存储器102可用于存储软件程序以及模块,如本发明实施例中的即使通讯会话的方法及装置对应的程序指令/模块,处理器104通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。
存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器102可进一步包括相对于处理器106远程设置的存储器,这些远程存储器可以通过网络连接至电子终端100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。
外设接口108将各种输入/输入装置耦合至处理器106。处理器106运行存储器102内的各种软件指令计算机100执行各种功能以及进行数据处理。在一些实施例中,外设接口108、处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
GPU 110通过外设接口总线,例如PCIe(Peripheral Component Interconnect Express,周边装置高速互联接口)总线,连接至处理器104。在一个具体的实例中,服务器100包括多个(如2个)处理器104以及多个(如8个)GPU 110。图3为该具体实例GPU 110与处理器104的连结架构示意图。两个处理器104(CPU 0与CPU 1)以及一个I/O集线器(I/O Hub)三者之间相互通过英特尔公司(Intel)的快速互联通道(Quick-Path Interconnect,QPI)方式相联。而I/O集线器连接有两个PCIe交换器,而每个PCIe交换器再分别连接两个PCIe交换器,位于末端的PCIe交换器 每个接入两个GPU,因此I/O集线器实质上将8个GPU接入总线中。可以理解,GPU的数目或者PCIe交换器的数目并不限于图3所示,其还可包括更多或得更少的GPU。
在实际生产环境中,安装多GPU计算机的硬件体系结构如图3所示,示例中揭示了一个8 GPU节点计算机的硬件配置,每两个GPU插槽安装在一个GPU专用PCI槽位上再通过PCIe交换器将GPU插槽0、1、2、3安装在一颗CPU上,GPU插槽4、5、6、7安装在另一颗CPU上,两颗CPU通过IOH连接。
上述的软件程序以及模块包括:操作系统122以及数据处理模块124。其中操作系统122例如可为LINUX,UNIX,WINDOWS或者其他任意可用的操作系统,操作系统122可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。并行数据处理模块124运行在操作系统122的基础上,用于实现本发明实施例提供的并行数据处理方法。
图4揭示了从单GPU训练到多GPU数据并行训练的相异之处主要在于:单GPU每个训练周期只能训练1个最小批次(mini-batch),最小批次训练结束后即顺带完成了更新模型参数的操作;在多个GPU同时训练多组最小批次数据,每个数据并行组充分利用分配在本组上独占的GPU计算资源,在最小批次训练结束时还需要一个将参数从各个GPU上交换并更新的过程,最终使得每个GPU上都持有最新模型副本,继续进行下一轮训练过程。
训练数据分发是在CPU中开始的,而具体的训练操作由GPU工作组执行。每个GPU工作组包括一个或者多个GPU。由于GPU卡通常意义上被看成是一种加速卡或协处理器卡,必须在基于CPU的主机上下文中 被调用来做计算,也就是说,在GPU中的数据并行训练的调度要基于CPU中的线程实现。为了发挥多GPU共同参与计算时的并行性效能,可将一个GPU绑定至一个CPU线程(工作线程,也叫Worker),然后在CPU上下文中通过这些CPU线程实现数据并行训练的调度。在一个实例中,CPU线程与GPU以及GPU工作组之间的绑定关系如表1所示。
表1 4GPU数据并行CPU线程、GPU卡与工作组绑定关系
GPU数据并行+模型并行CPU线程、GPU卡与工作组、工作单元绑定关系
整体的训练的过程如图5所示。首先,从闪存、磁盘、固态存储器等非易失性存储器内读取批次文件,并将数据写入在主存储器(随机存储器)内开辟的缓存区内。随机存储器内可包括两个相同大小的缓存区,其中一个用于写数据,可记为写缓存区;而另一个用于供GPU工作组读取数据,可记为读缓存区。缓存区的大小是与GPU工作组的数量相关的。若用于存储一个GPU工作组的存储结构占用的存储空间是M,则缓存区的大小即为GPU工作组的数量*M。每次写入一个批次文件,判断写缓存是否已满,若写缓存已满则进入下一个阶段的流程。在向写缓存写入数据期间,所有与GPU工作组绑定的CPU线程处于全线程阻止状态,以等待数据读 取完成。
若写缓存已满,则将随机存储器内的写缓存区与读缓存区进行交换。可以理解,在缓存区交换期间,所有与GPU工作组绑定的CPU线程处于全线程阻止状态,以等待缓存区交换完成。
在完成交换后,CPU内的数据读取过程与GPU内的数据训练过程并行进行。在CPU中,开始从非易失性存储器中读取下一个批次的训练数据至写缓存中。值得注意的是,此时虽然也是写缓存,由于在之前的流程中进行了缓存区交换,写缓存在随机存储器中具体的存储区域已经不同于上一次。
与此同时,在GPU中开始进行具体的数据训练过程,可将相应批次数据的存储结构指针传递给相应的工作组,由工作组从读缓存中读取对应的数据至显存中。例如,在NVIDA公司的统一计算设备架构(Compute Unified Device Architecture,CUDA)中通过cudaMemcpyHostToDevice调用将随机存储器内读缓存区内的数据复制至对应的GPU中。可以理解,不同的GPU会复制读缓存内不同区域的数据。例如,GPU0读取的是Cache(0),而GPU 1读取的是Cache(1)的数据。
在将数据复制至显存内之后,由GPU每次取出最小批次数据,进行最小批次训练,根据最小批次训练结果得到本次计算的梯度Δw,根据梯度Δw更新模型参数,将梯度Δw同步给其他GPU内的模型,并同时接收其他GPU同步过来的梯度,并再次更新模型参数,如此,并行训练的多个GPU中都具有了最新的模型参数。
在完成参数更新后判断训练数据是否已经处理完,若未处理完,则继续获取下一次最小批次的训练数据进行训练。否则,根据模型参数更新学习率。与梯度相似,也需要将本GPU的学习率变化梯度同步至其他GPU并根据其他GPU同步过来的学习率变化梯度更新辅助变量。
在完成辅助变量的更新操作后,再次进入全线程阻止状态,等待其他所有GPU完成训练,以及CPU中数据读取操作完成。
重复以上过程,即可完成模型的训练过程。
在整个训练过程中,数据的存储组织如图6所示。训练数据以批次(Batch)文件的形式存储在磁盘中,每个文件存储1个批次的图像数据。运行时训练数据分发模块124每次读取工作组(Worker Group)总数(Worker_Group_Number)个批次的文件。
读取的文件首先存储在主存上并将相应批次数据的存储结构指针传递给相应的工作组,训练开始时每个工作组将主存上的数据拷贝到相应GPU的显存上(例如在NVIDA公司的统一计算设备架构(Compute Unified Device Architecture,CUDA)中通过cudaMemcpyHostToDevice调用),在训练数据中依次取出最小批次做最小批次训练,前向、后向训练中在显存存储各层输出、权重副本及辅助空间等数据。其中所有卷积层和全连接层的权重副本在主存上也开辟有对应的存储空间,每当到达写模型快照的时候从GPU显存上拷贝回主机内存(例如在CUDA中通过cudaMemcpyDeviceToHost调用),进而落地为磁盘文件,成为实时模型的快照文件。
基于最小批次的训练,现有技术方案在训练卷积神经网络时,每次从数据文件中读入和处理1个批次数据,在GPU计算某一批次时由CPU预读取和预处理下一批次。
但是随着训练集图片像素数增大,读取和处理时间随之增加,由于上述实施例的方案采用多GPU技术减少了单个批次的计算时间,CPU中数据处理的性能瓶颈问题随之而来,因此需要减少CPU中训练数据读取及训练数据预处理的用时,以使最终加速效果取决于计算用时。
因此,在读取训练数据方面,可以独立的CPU线程作为I/O线程读 入数据;在训练数据处理方面,采用线程池以充分利用所有剩余的CPU资源以做训练数据的预处理。总体看来,本实施例的卷积神经网络训练过程中始终是在执行一条三重并行的流水线:计算本次批次数据(GPU完成),预处理下个批次数据(线程池在CPU上完成),读入再下次批次数据(I/O线程完成)。
参阅图7,除在训练过程最开始的时候,读入批次数据以及处理批次数据需要花费额外的初始化时间外,其余所有批次的数据处理过程中,GPU中的数据处理与CPU中数据读取及处理并行完成,且GPU中不同批次之间的数据处理之间无须等待CPU读取数据以及处理结果,因此充分利用了GPU的并行计算能力,提升了训练效率。
使用基于最小批次的随机梯度下降算法时,每计算完成1个最小批次后需要将本次计算得到梯度(图中记为Δw)应用到相应参数(图中记为w)上,朴素的参数更新公式为:
weight i + 1 = weight i - ∈ * ⟨ ∂ L ∂ w | w i ⟩
公式中,i是参数更新的次数,weight指代某个参数,ε是学习速率, 是本次反向传播算法计算出的梯度,即Δw。
参阅图8,在数据并行的实现中,影响性能的瓶颈在于多GPU间的参数交换。这是因为按照参数更新公式来看,需要将所有模型副本的梯度交换到参数服务器并更新到相应参数上,这看起来像是个串行操作,破坏了数据并行中一贯的并行性。如图4所示。值得注意的是,此处的参数服务器既可以是指通过网络与服务器100相连的用于进行参数更新的服务器,也可以是服务器100自身,也就是说,服务器100内具有用于在不同GPU之间同参数的同步模块。
在一个实施方式中,为了解决不同GPU之间参数同步效率较低的问 题,直观的想法是依靠多GPU之间点到点的数据传输,即在每两个GPU之间建立数据传输连接,交换各自的Δw。但是这样的解决方案提升的性能有限,主要在于任一GPU上计算出的Δw在PCIe总线上需要多次传输才能更新到所有GPU的参数模型上,过多占用和消耗PCIe总线带宽。而随着GPU数增多,交换时间随之呈指数级增加。
为了进一步提升参数交换的效率,本发明实施例针对多GPU场景设计了参数交换的线形拓扑方式:从空间上将存储模型参数的矩阵、存储梯度的矩阵等量划分了分区,而分区的数量取决于数据并行组数(也就是工作组的总数),为其一半,这是出于充分利用GPU之间通信效率而考虑的,因为GPU通讯是点对点的,两个GPU参与一次通信,因此分组数目为工作组总数(对于单GPU工作组,也就是GPU总数)/2。
参阅图9,在一个实施方式中,工作组并行数为6,其序号分别为0、1、2、3、4、5。每个工作组具有3(6/2)个分区,分区序号分别0、1、2。对于序号为k(k为奇数)的工作组,标记其为序号为(k-1)/2的分区的所有者。例如,Group 1就是分区0的所有者,Group 2就是分区1的所有者,而Group 5就是分区2的所有者。标记一个工作组是某个分区的所有者的含义在于,在经过本实施例的参数交换过程后,该工作组的该分区内的参数是同步了所有其他工作组内的参数的完整结果。可以理解的是,此处选取序号为奇数的工作组仅为示例,例如也可以选择序号为偶数的工作组作为分区的所有者,当然后续的过程需要相应变化。
本实施例的参数交换过程包括多个周期。具体地,周期数为数据并行组数-1。在图9所示的架构中,数据并行组数为6,因此,周期数为5。在每个周期内,将所有分区的数据从上游工作组向下游工作推送一次,推送过程包括从上游工作组复制分区数据和本地合并数据两步操作。可以理解,此处的上游工作组与下游工作组是随意定义的。在一个实施方式中, 工作组之间是按标识的大小顺序排序的,并定义标识最大与最小的两个工作组为相邻的工作组,从而工作组之间形成一个环状结构。按照一个指定的方向,即可确定某个工作的上游工作组与下游工作组。例如,Group 0是Group 1的上游工作组,反之Group 1是Group 0的下游工作组。对于Group 0,Group 5作为其上游工作组,对如Group 5,可将Group 0作为其下游工作组。
总体上来说,上述的将所有分区的数据从上游工作组向下游工作推送一次具体可包括进行以下操作:在序号为k(k为整数且1≤k≤2N-1)的周期内,将该N个分区中一个给定的分区从序号为i的GPU中复制至序号为j的GPU中,并进行梯度的合并,其中i=(2m+k+1)%N,j=(2m+k+2)%N,m为整数且0≤m≤N-1。可以理解的是,此处的公式仅仅是对于给定的序号推算出来,然而本领域普通技术人员可以将采用其他任意等效的公式取代,只要其取值相同,甚至取值具有相同的规律即可。
值得注意的是,在每一个周期中,并不是每一个GPU都会接收到其他GPU的数据。参阅图10,在第一个周期内(合并步骤1),GPU 0内所有分区的数据被复制至GPU 1中,GPU 2内所有分区的数据会被复制至GPU 3中,而GPU 4内所有分区的数据会被复制至GPU 5中。可以理解,GPU 0、2、4在第一个周期内只是数据提供者,而不会接收到其他GPU的数据。在数据复制后,执行数据合并的步骤,即将两个模型计算得出的梯度Δw相加,对于GPU 1来说,Σ=Δw1+Δw0;对于GPU 3来说Σ=Δw2+Δw3;对于GPU 5来说Σ=Δw4+Δw5。也就是说,在经过第一个周期后,GPU 1中已经合并GPU 0与GPU 1中的数据,GPU 3中已经合并GPU 2与GPU 3中的数据,而GPU 5中已经合并GPU 4与GPU 5中的数据。
在第二个周期中(合并步骤2),GPU 5内所有分区的数据被复制至 GPU 0中,GPU 1内所有分区的数据会被复制至GPU 2中,而GPU 3内所有分区的数据会被复制至GPU 4中。可以理解,GPU 5、1、3在第二个周期内只是数据提供者,而不会接收到其他GPU的数据。在数据复制后,执行数据合并的步骤,即将两个模型计算得出的梯度Δw相加,对于GPU 0来说,分区1内Σ=Δw4+Δw5+Δw0;对于GPU 2来说,分区2内Σ=Δw0+Δw1+Δw2;对于GPU 4来说分区0内Σ=Δw2+Δw3+Δw4。也就是说,在经过第二个周期后,GPU 0的分区1内中已经合并GPU 0、4、5中的数据,GPU 2的分区2内已经合并GPU 0、1、2中的数据,而GPU 4的分区0内已经合并GPU 2、3、4中的数据。
在第三个周期中(合并步骤3),数据的复制过程与第一个周期相同,在执行数据合并的步骤后,对于GPU 1的分区1来说,Σ=Δw4+Δw5+Δw0+Δw1;对于GPU 3的分区2来说Σ=Δw0+Δw1+Δw2+Δw3;对于GPU 5的分区0来说Σ=Δw2+Δw3+Δw4+Δw5。也就是说,在经过第三个周期后,GPU 1的分区1中已经合并GPU 0、1、4、5中的数据,GPU 3的分区2中已经合并GPU 0、1、2、3中的数据,而GPU 5的分区0中已经合并GPU 2、3、4、5中的数据。
在第四个周期中(合并步骤4),数据的复制过程与第二个周期相同,在执行数据合并的步骤后,对于GPU 0的分区0来说,Σ=Δw2+Δw3+Δw4+Δw5+Δw0;对于GPU 2的分区1来说Σ=Δw4+Δw5+Δw0+Δw1+Δw2;对于GPU 4的分区2来说Σ=Δw0+Δw1+Δw2+Δw3+Δw4。也就是说,在经过第四个周期后,GPU 0的分区0中已经合并GPU 2、3、4、5、0中的数据,GPU 2的分区1中已经合并GPU 4、5、0、1、2中的数据,而GPU 4的分区2中已经合并GPU 0、1、2、3、4中的数据。
在第五个周期中(合并步骤5),数据的复制过程与第一个周期相同, 在执行数据合并的步骤后,对于GPU 1分区0来说,Σ=Δw2+Δw3+Δw4+Δw5+Δw0+Δw1;对于GPU 3的分区1来说Σ=Δw4+Δw5+Δw0+Δw1+Δw2+Δw3;对于GPU 5的分区2来说Σ=Δw0+Δw1+Δw2+Δw3+Δw4+Δw5。也就是说,在经过第三个周期后,GPU 1的分区0中已经合并GPU 0-5中的数据,GPU 3的分区1中已经合并GPU 0-5中的数据,而GPU 5的分区2中已经合并GPU 0-5中的数据。
在经过上述5个周期的过程后,每个分区的所有者对应的分区内包含合并了所有GPU内模型的数据梯度数据,然后,在更新参数的步骤中,可以分别更新所有者对应分区内的参数。例如,对于分区0的所有者,更新GPU 1内分区0内的参数;对于分区1的所有者,更新GPU 3内分区1内的参数;对于分区2的所有者,更新GPU 4内分区2内的参数。
可以理解,经过上述的步骤后,每个所有者分别持有某个分区的最新模型参数,因此需要将最新的模型参数分发至每一个GPU中。模型参数的分发过程可以参考参数交换的合并过程,在序号为k的周期内,将该N个分区中一个给定的分区从序号为a的GPU中复制至序号为b的GPU中,其中a=(2m+k)%N,b=(2m+k+1)%N。
参阅图11,在参数分发步骤1中,GPU 1分区0内的数据复制至GPU 2中,GPU 3分区1内的数据复制至GPU 4中,GPU 5分区2内的数据复制至GPU 0中。在参数分发步骤2中,GPU 0分区2内的数据复制至GPU 1中,GPU 2分区0内的数据复制至GPU 3中,GPU 4分区1内的数据复制至GPU 5中。在参数分发步骤3中,GPU 1分区2内的数据复制至GPU 2中,GPU 3分区0内的数据复制至GPU 4中,GPU 5分区1内的数据复制至GPU 0中。在参数分发步骤4中,GPU 0分区1内的数据复制至GPU 1中,GPU 2分区2内的数据复制至GPU 3中,GPU 4分区0内的数据复制至GPU 5中。在参数分发步骤5中,GPU 1分区1内的数据复制至GPU 2中,GPU 3分区2内的数据复制至GPU 4中,GPU 5分区0内的数据复制至GPU 0中。经过上述步骤后,所有GPU中都具有最新的模型参数。
PCIe总线带宽一定(设为W),取数据并行的组划分数目为2N,模型大小为M,在采用点到点全量参数交换的情景下,每两个数据并行组均需要进行对等的数据交换,因此数据传输的最短周期为2*(2N-1)次,每次在总线上传输数据量为M,故推导出参数交换用时2*(2N-1)*(M/W)。
而根据本实施例的线形拓扑方案,在每个组号为单数(1,3,5,…)的工作组(GPU)上维护着整个模型参数相应的1/N,按照线形拓扑,单次数据交换中只传输了(1/N)*M的数据量,参数归并周期为2N-1,参数分发周期也为2N-1,因此推导出参数交换用时为2*(2N-1)*(M/(N*W)),仅是点到点用时的1/N(N=1,2,3,…)。可见,数据并行的并发量越大,线形拓扑的性能收益效果越显著,更加具体的数据请参见表2。
表2 线形拓扑的性能分析
线形拓扑可以很容易地扩展到偶数个数据并行组的参数交换,其收集(推送)用时随数据并行组数增长而缓慢增长,且具有上界——2T0,这说明线形拓扑非常适用于更多GPU做数据并行。
在图5所示的训练流程中,还更新辅助变量。在一个实施例方式中, 辅助变量为用于计算自适应学习率的辅助梯度平方和(helper_sum),其计算公式如下:
helper _ sum i ′ = helper _ sum i + Δw i 2
其中,i为工作组或者GPU的序号。
辅助梯度平方和用于计算自适应学习率(learning_rate),自适应学习率的计算公式如下:
learning _ rate i = aggregating _ rate * ada grad _ rho ada grad _ rho + helper _ sum i ′
其中,aggregating_rate为聚合学习率,在初始状态下,其为预先配置的常数;adagrad_rho为用于计算自适应学习率的辅助量,其为另一个预先配置的常数。
在数据并行情景下,helper_sum的跨组更新规则与的数据并行参数交换过程中的推送阶段完全相同,由于梯度是在分区所有者上最先持有的完全累积结果,可以根据自适应梯度(Adagrad)参数更新公式应用到参数上,而这时只用到了分区所有者上的helper_sum,因此只需要在分区所有者上持有其所有的分区的最新helper_sum即可,其它非分区所有者在推送之后即需要将helper_sum清零,以便为下一次计算重新累积所用。由于helper_sum不需要分发,则交换helper_sum的过程只需要一次推送阶段即可完成。
因此,在数据并行情景时,对第i个位置上参数自适应学习率更新公式应表达为:
helper _ sum _ part i j ′ = helper _ sum _ part i j + Δw i j 2
(对于所有分区)
helper _ sum i ′ = Σ j = 0 GROUP _ NUM helper _ sum _ part i j ′
(仅适应于分区所有者)
learning _ rate i = aggregating _ rate * ada grad _ rho ada grad _ rho + helper _ sum i ′
(仅适应于分区所有者)
helper _ sum _ part i j ′ = 0
(仅对于非分区所有者)
结合Adagrad算法实际应用场景:即helper_sum的累积其实是对每个学习率调整的量化过程,其本身具有一定的近似性。基于性能考量,实际项目中使用一种近似的helper_sum收集:在每个最小批次结束后所有分区上做本地累积helper_sum计算,而在M(一般取值为8)个最小批次结束后才将其推送到所属的分区所有者完成最终累积。这样兼顾了算法效果和训练性能。
参阅图12,在同时使用数据并行和模型并行的场景下,将每颗GPU绑定在1个Worker上,近邻的两颗GPU组成一个Worker Group,即形成4路数据并行、组内2 GPU模型并行的并行化训练配置。在图12所示的架构中,每个Worker Group内一个GPU负责训练模型的一部分,而另一个GPU负责训练模型的另一部分,每个GPU对应一个工作单元(Worker)。
参阅图13,其为2路数据并行、组内2 GPU模型并行的并行化卷积神经网络的训练示意图。整个训练过程分为多个层,其中data表示数据输入层(Data Layer),convX-Y表示第X个卷积层(ConvolutionalLayer)的第Y部分、poolX-Y表示第X个池化层(Pooling layer)的第Y部分,rnormX-Y表示第X个输出归一化层(Normalization Layer)的第Y部分、fcX-Y表示第X个全连接层(Fully Connected Layer)的第Y部分、probs表示概率预测层(ProbabilityPredication Layer)、logprob表示代价函数层(log-probability layer)、labs表示数据标签层(Labeling Layer)。
如图14所示,从单GPU训练到多GPU模型并行训练的相异之处主要在于:在使用单GPU训练的场景下,模型不进行拆分,GPU显存上存储整个模型;模型并行的场景下,将模型拆分到多个GPU上存储,因此在训练过程中每个GPU上实际只训练了模型的一部分,通过执行引擎的调度一个工作组完成对整个模型的训练。
因此,在图13所示的流程中,对于组内多GPU模型并行训练方式,参数交换只用在对应的部分之间进行。例如,Worker(0,0)与Worker(1,0)之间交换参数,而Worker(0,1)与Worker(1,1)之间交换参数。也就是说,对于相同的模型部分,可以分别按照图10与图11所示流程进行参数交换。当每个模型部分都完成参数交换后,每个工作组的模型为最新的完整模型。
参阅图16,卷积神经网络(Convolutional Neural Networks,CNN)只在特定层(如数据输入层、全连接层)与其他层有全面的连接,而其他较为独立的直线连接关系即可作为模型的可并行部分。将模型的可并行部分拆分到多个GPU上,同时利用多个GPU的计算能力各执行子模型的计算,可以大大加快模型的单次前向-后向训练时间。图16中的inc表示下层对上层的等待,也就是上一层训练完的结果作为下一层的输入。例如,conv1-1就需要待数据接入层完成数据的准备。
CNN网络层次模型实际上是一张有向无环图(Directed Acyclic Graph,DAG),分配到每个模型并行工作单元上的层集合,是有向无环图的拓扑排序子集,所有子集组成整个网络的1组模型。
整个网络的拓扑排序集合:
{data,labels,conv1-1,conv1-2,pool1-1,pool1-2,rnorm1-1,rnorm1-2,conv2-1,conv2-2,pool2-1,pool2-2,rnorm2-1,rnorm2-2,conv3-1,conv3-2,conv4-1,conv4-2,conv5-1,conv5-2,pool5-1,pool5-2,fc6-1,fc6-2,fc7-1,fc7-2, fc8,probs,logprob}
分配在模型并行Worker0上的拓扑排序子集合:
{data,conv1-1,transfer_conv1-2,pool1-1,rnorm1-1,conv2-1,pool2-1,rnorm2-1,conv3-1,transfer_conv3-2,conv4-1,conv5-1,pool5-1,fc6-1,fc7-1,fc8,probs,transfer_labels,logprob}
分配在模型并行Worker1上的拓扑排序子集合:
{labels,conv1-2,pool1-2,rnorm1-2,transfer_conv3-1,conv3-2,conv4-2,conv5-2,pool5-2,fc6-2,fc7-2,transfer_fc8}
因此模型并行工作单元在计算时按数组序推进:前向传播时正序,反向传播时逆序,即满足了网络子模型的计算顺序要求。工作单元间同步等待控制逻辑是由每个工作单元上的工作组引擎来控制以保证模型计算推进的并行性和正确性。
可以看出,在拆分后子模型拓扑排序集合内,自动加入了传输层,这是对训练系统的自动化改造所实现的。当模型配置加载时识别到邻接的两层属于不同工作单元,即要将计算操作在不同GPU上,存在远程数据拷贝需要时,即自动在两层之间加入一个传输层,它在前向传播时负责将上邻接层输出(Output)复制到下邻接层所绑定的GPU上,作为其输入;在后向传播时负责将下邻接层传播过来的错误(error)拷贝到上邻接层所绑定的GPU上,用于反向梯度计算。
参阅图17,其为两个CNN多层模型中两个相邻的层之间的数据传递示意图。其中实线表示同GPU内前向或者后向传播,虚线表示跨GPU间的前向传播或者后向传播。可以理解,对于跨GPU间的前向传播与后台加入了传输层作为中转,负责在两个GPU之间传递数据。
如上所述,工作单元间同步等待控制逻辑是由每个工作单元上的工作组 引擎来控制。具体地,每个工作单元的执行引擎包括以下控制逻辑。
最小批次训练开始时,每个GPU的执行引擎同时启动;
执行引擎判断该工作单元(GPU)持有的子模型中是每个层是否具备执行前向传播或后向传播的条件,如果具备则执行。
某一层的前向计算执行完毕后,负责激活后邻接层的前向计算。例如,在池化层pool5-1执行完毕后,激活全连接层fc6-1。
某一层的后向计算执行完毕后,负责激活前邻接层的后向计算。
最终,所有工作单元上的子模型完成前向和后向计算,各自对子模型完成参数更新后,到达主线程同步点,开始下一最小批次的训练。
更加具体地,对于工作单元X的执行引擎其分别执行以下逻辑。
正向计算控制逻辑:当还有未完成正向播放计算的层时,针对所有层尝试执行前向传播计算,检查是否执行并置标志变量。
以上逻辑采用伪代码描述如下:
反向计算控制逻辑:当还有未完成反向计算的层时,针对所有层,判断该层是否属是梯度消费者(需要使用梯度),若是则尝试执行反向传播算法,检测是否成功执行,并置标志变量。
以上逻辑采用伪代码描述如下:
正向计算每一层的通用控制逻辑:判断接收到输入的总数是否等于本层的前连接层数,若是则执行本层的前向传播,此外将用于记录本层与后连接层接收到输入的数目加1。
以上逻辑采用伪代码描述如下:
反向计算每一层的通用控制逻辑:判断接收到输入的总数是否等于本层的后连接层数,若是则执行本层的反向传播,此外将用于记录本层与后连接层接收到输入的数目加1。
以上逻辑采用伪代码描述如下:
可以理解,上述的正向计算每一层的通用控制逻辑以及反向计算每一层的通用控制逻辑记录的变量值可用于线程之间的同步控制。
图18为本发明第一实施例提供的基于多图形处理器的并行数据处理方法的流程图。本实施例的方法包括以下步骤:
步骤S101、在中央处理器(CPU)内创建用于分别控制多个工作组的多个工作线程(Worker),所述工作组包括一个或多个GPU。
工作组的数目即为模型并行训练时的并发数。也就是说,如果对同一个模型进行4路并发训练,则需要4个工作组。分别参阅图3及图12,每个工作组内可包括一个或者多个(如2个或以上)的GPU。对于工作组内的每个GPU,创建一个独立的工作线程,该工作线程用于执行该GPU训练流程的控制逻辑。
步骤S102、将每个工作线程与对应的一个GPU绑定。
将工作线程与对应的GPU绑定是指建立不同的GPU与工作线程之间的映射关系。具体地,可以通过存储一个二维映射表来存储工作线程与GPU之间的映射关系,如表1所示。
步骤S103、从非易失性存储器内分别加载多个批次(Batch)的训练数据至所述多个工作组内的GPU中;
上述的非易失性存储器例如是指磁盘、闪存、固态存储器、光盘等非易失性存储器,与训练相关的原始数据,例如模型、各批次的数据均以文件的形式存储在非易失性存储器中。
参阅图6,在整个训练过程中,数据需要首先从非易失性存储器内复制 到主存储器(随机存储器)中,然后训练数据需要从主存储器中复制至显存进行并行处理。
步骤S104、通过所述工作线程控制所述多个GPU进行并行数据处理。
在训练数据被复制进GPU后,即可由GPU进行处理以获取处理结果。而整个处理流程的控制逻辑可进一步参阅5。
根据本实施例的方法,具体的处理运算在多个GPU中并行进行,而各GPU的调度由独占的CPU线程实现,因此,整个数据处理的过程,无论是GPU中的处理运算还是CPU内的线程调度都以并行的方式运行,从而提升了数据处理效率。
图19为本发明第二实施例提供的基于多图形处理器的并行数据处理方法的流程图。本实施例的方法与图18所示的方法相似,其不同之处在于,
在步骤S101之前还包括步骤S105、创建一个I/O线程,通过所述I/O线程将所述多个批次(Batch)的训练数据加载至随机存储器(RAM)内。
在步骤S105之后还包括步骤S106、通过线程池在CPU上对训练数据进行预处理,所述I/O线程、线程池内的线程以及GPU内的数据处理是并行进行的。
如图7所示,通过将I/O密集型操作、CPU计算密集型操作分别在不同的CPU线程中执行,将GPU计算密集型操作在GPU中进行,除在训练过程最开始的时候,读入批次数据以及处理批次数据需要花费额外的初始化时间外,其余所有批次的数据处理过程中,GPU中的数据处理与CPU中数据读取及处理并行完成,且GPU中不同批次之间的数据处理之间无须等待CPU读取数据以及处理结果,因此充分利用了GPU的并行计算能力,提升了训练效率。
图20为本发明第三实施例提供的基于多图形处理器的并行数据处理方法的流程图。本实施例的方法与图18所示的方法相似,其不同之处在于,在步骤S104之后还包括步骤S107、累积持有相同模型副本多个GPU的梯度,根据累积的梯度更新模型参数,及将最新的模型参数分发至所述持有相同模型副本多个GPU中每个GPU内。
在一个实施方式中,步骤S107具体包括以下步骤:
根据GPU的数目2N将每个GPU内存储模型参数及梯度的存储区域分成N个分区;
给定2N个GPU的序号分别为0、1、2…2N-1;
在序号为k(k为整数且1≤k≤2N-1)的周期内,将该N个分区中一个给定的分区从序号为i的GPU中复制至序号为j的GPU中,并进行梯度的合并,其中i=(2m+k+1)%N,j=(2m+k+2)%N,m为整数且0≤m≤N-1;以及
对于所述的2N个GPU中的分区所有者,根据对应的分区内梯度合并结果更新模型参数,其中所述的分区所有者指对于给定的分区,具有其他所有GPU中梯度归并结果的GPU。
进一步地,步骤S107还包括以下步骤:
在序号为k的周期内,将该N个分区中一个给定的分区从序号为a的GPU中复制至序号为b的GPU中,其中a=(2m+k)%N,b=(2m+k+1)%N。
以上梯度累积、参数更新及分发的过程还可进一步参阅图10-11及相关描述。
根据本实施例的方法,在每个组号为单数(1,3,5,…)的工作组(GPU)上维护着整个模型参数相应的1/N,按照线形拓扑,单次数据交换中只传输了(1/N)*M的数据量,参数归并周期为2N-1,参数分发周期也为2N-1, 因此推导出参数交换用时为2*(2N-1)*(M/(N*W)),仅是点到点用时的1/N(N=1,2,3,…)。且数据并行的并发量越大,线形拓扑的性能收益效果越显著。
图21为本发明第四实施例提供的基于多图形处理器的并行数据处理方法的流程图。本实施例的方法与图18所示的方法相似,其不同之处在于,在步骤S104之后还包括步骤S108、更新模型的自适应学习率。
步骤S108可包括以下步骤:
对于分区所有者,根据以下自适应学习率更新公式计算在位置i上参数的自适应学习率learning_ratei
helper _ sum i ′ = Σ j = 0 GROUP _ NUM helper _ sum _ part i j ′
learning _ rate i = aggregating _ rate * ada grad _ rho ada grad _ rho + helper _ sum i ′
其中,GROUP_NUM表示工作组数,aggregating_rate为聚合学习率,adagrad_rho为用于计算自适应学习率的辅助量;
对于非分区所有者,根据以下公式更新自适应学习率learning_ratei
helper _ sum _ part i j ′ = 0 .
结合Adagrad算法实际应用场景:即helper_sum的累积其实是对每个学习率调整的量化过程,其本身具有一定的近似性。基于性能考量,实际项目中使用一种近似的helper_sum收集:在每个最小批次结束后所有分区上做本地累积helper_sum计算,而在M(一般取值为8)个最小批次结束后才将其推送到所属的分区所有者完成最终累积。这样兼顾了算法效果和训练性能。
图22为本发明第五实施例提供的基于多图形处理器的并行数据处理方 法的流程图。本实施例的方法与图18所示的方法相似,其不同之处在于,还包括以下步骤:
步骤S109、根据卷积神经网络的模型配置文件加载其层次模型。
步骤S110、若识别到所述层次模型中邻接的两层由不同的GPU完成则在所述邻接的两层之间加入数据传输层,用于在两个GPU之间以点对点(Peer to Peer)方式传输数据。
CNN网络层次模型实际上是一张有向无环图(Directed Acyclic Graph,DAG),分配到每个模型并行工作单元上的层集合,是有向无环图的拓扑排序子集,所有子集组成整个网络的1组模型。
整个网络的拓扑排序集合:
{data,labels,conv1-1,conv1-2,pool1-1,pool1-2,rnorm1-1,rnorm1-2,conv2-1,conv2-2,pool2-1,pool2-2,rnorm2-1,rnorm2-2,conv3-1,conv3-2,conv4-1,conv4-2,conv5-1,conv5-2,pool5-1,pool5-2,fc6-1,fc6-2,fc7-1,fc7-2,fc8,probs,logprob}
分配在模型并行Worker0上的拓扑排序子集合:
{data,conv1-1,transfer_conv1-2,pool1-1,rnorm1-1,conv2-1,pool2-1,rnorm2-1,conv3-1,transfer_conv3-2,conv4-1,conv5-1,pool5-1,fc6-1,fc7-1,fc8,probs,transfer_labels,logprob}
分配在模型并行Worker1上的拓扑排序子集合:
{labels,conv1-2,pool1-2,rnorm1-2,transfer_conv3-1,conv3-2,conv4-2,conv5-2,pool5-2,fc6-2,fc7-2,transfer_fc8}
因此模型并行工作单元在计算时按数组序推进:前向传播时正序,反向传播时逆序,即满足了网络子模型的计算顺序要求。工作单元间同步等待控制逻辑是由每个工作单元上的工作组引擎来控制以保证模型计算推进的并行 性和正确性。
可以看出,在拆分后子模型拓扑排序集合内,自动加入了传输层,这是对训练系统的自动化改造所实现的。当模型配置加载时识别到邻接的两层属于不同工作单元,即要将计算操作在不同GPU上,存在远程数据拷贝需要时,即自动在两层之间加入一个传输层,它在前向传播时负责将上邻接层输出(Output)复制到下邻接层所绑定的GPU上,作为其输入;在后向传播时负责将下邻接层传播过来的错误(error)拷贝到上邻接层,用于反向梯度计算。
根据本实施例的方法,通过在不同GPU之间需要数据同步时引入传输层,提升了存储访问效率,从而加速了数据处理。
图23为本发明第六实施例提供的基于多图形处理器的并行数据处理方法的流程图。本实施例的方法与图18所示的方法相似,其不同之处在于,还包括以下步骤:
步骤S111、在随机存储器(RAM)内开辟写缓存与读缓存,所述写缓存与读缓存的大小为用于存储一个批次的训练数据的存储结构的大小*工作组总数。
步骤S112、在所述写缓存被写满之前使所有工作线程处理处于阻止状态。
步骤S113、在所述写缓存被写满之后将预先设置的指向所述写缓存与读缓存的索引交换。
参阅图5,通过设置两块缓存,可以实现训练数据的加载不间断的进行,从而减少了GPU等待CPU进行I/O操作的可能性,使具体进行数据处理的GPU利用率提升,提升了整体的数据处理效率。
图24为本发明第七实施例提供的基于多图形处理器的并行数据处理方 法的流程图。本实施例的方法包括以下步骤:
步骤S201、在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU;。
工作组的数目即为模型并行训练时的并发数。也就是说,如果对同一个模型进行4路并发训练,则需要4个工作组。分别参阅图12,本实施例中,每个工作组内可包括2个GPU。可以理解,一个工作组内还可包括更多的GPU。对于工作组内的每个GPU,创建一个独立的工作线程(Worker),该工作线程用于执行该GPU的训练流程的控制逻辑。
步骤S202、将每个工作线程与对应的一个GPU绑定。
将工作线程与对应的GPU绑定是指建立不同的GPU与工作线程之间的映射关系。例如,对于工作组Worker Group 0,可将不同的工作线程分别与GPU0、1绑定。
步骤S203、从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU中。
上述的非易失性存储器例如是指磁盘、闪存、固态存储器、光盘等非易失性存储器,与训练相关的原始数据,例如模型、各批次的数据均以文件的形式存储在非易失性存储器中。
参阅图6,在整个训练过程中,数据需要首先从非易失性存储器内复制到主存储器(随机存储器)中,然后训练数据需要从主存储器中复制至显存进行并行处理。
进一步地,参阅图16,一个工作组内只有一个GPU内具有数据接入层,因此主存储器内的数据只能复制至具有数据接入层的GPU中。
步骤S204、在对应于一个工作组的多个GPU之间以点对点(Peer to Peer)方式传输GPU进行数据处理所需要的数据。
步骤S202具体在前向传播时负责将上邻接层输出(Output)复制到下邻接层所绑定的GPU上,作为其输入;在后向传播时负责将下邻接层传播过来的错误(error)拷贝到上邻接层,用于反向梯度计算。
步骤S205、通过对应于一个工作线程的多个GPU并行进行数据处理。
在训练数据被复制进GPU后,即可由GPU进行处理以获取处理结果。而整个处理流程的控制逻辑可进一步参阅15。
根据本实施例的方法,通过在不同GPU之间需要数据同步时引入传输层,提升了存储访问效率,从而加速了数据处理。
图25为第八实施例提供的数据处理装置的模块图。本实施例的数据处理装置包括:线程创建模块31、线程绑定模块32、数据分发模块33、以及数据处理控制模块34。可以理解,本实施例的数据处理装置即可为图2中并行数据处理模块124的具体实现。
线程创建模块31用于在中央处理器(CPU)内创建用于分别控制多个工作组的多个工作线程(Worker),所述工作组包括一个或多个GPU。工作组的数目即为模型并行训练时的并发数。也就是说,如果对同一个模型进行4路并发训练,则需要4个工作组。分别参阅图3及图12,每个工作组内可包括一个或者多个(如2个或以上)的GPU。对于工作组内的每个GPU,创建一个独立的工作线程,该工作线程用于执行该GPU的数据处理的控制逻辑。
线程创建模块31还可用于创建I/O线程,以通过所述I/O线程将所述多个批次(Batch)的训练数据加载至随机存储器内。所述I/O线程、线程池内的线程、及用于进行训练数据预处理的线程池以及GPU内的数据处理是并行进行的。
线程绑定模块32用于将将每个工作线程与对应的一个GPU绑定。将工 作线程与对应的GPU绑定是指建立不同的GPU与工作线程之间的映射关系。具体地,可以通过存储一个二维映射表来存储工作线程与GPU之间的映射关系,如表1所示。可以理解,如果一个模型只需使用一个GPU,则步骤S102中是将GPU与工作线程一一对应起来;而当一个模型需要使用多个GPU时,则在步骤S102之外,可能还需要进行将多个工作线程关联至一个工作组的步骤。
数据分发模块33用于从非易失性存储器内分别加载多个批次(Batch)的训练数据至所述多个工作组内的GPU中。上述的非易失性存储器例如是指磁盘、闪存、固态存储器、光盘等非易失性存储器,与训练相关的原始数据,例如模型、各批次的数据均以文件的形式存储在非易失性存储器中。
参阅图6,在整个训练过程中,数据需要首先从非易失性存储器内复制到主存储器(随机存储器)中,然后训练数据需要从主存储器中复制至显存进行并行处理。
数据处理控制模块34通过过所述工作线程控制所述多个GPU进行并行数据处理。在训练数据被复制进GPU后,即可由GPU进行处理以获取处理结果。而整个处理流程的控制逻辑可进一步参阅5。
根据本实施例的装置,具体的处理运算在多个GPU中并行进行,而各GPU的调度由独占的CPU线程实现,因此,整个数据处理的过程,无论是GPU中的处理运算还是CPU内的线程调度都以并行的方式运行,从而提升了数据处理效率。
图26为第九实施例提供的数据处理装置的模块图。本实施例的装置与图25所示的装置相似,其不同之处在于,还包括数据处理模块35,用于通过线程池在CPU上对训练数据进行预处理。
采用线程池可以充分利用所有剩余的CPU资源以做数据处理。总体看来,本实施例的卷积神经网络训练过程中始终是在执行一条三重并行的流水线:计算本次批次数据,处理下个批次数据,读入再下次批次数据。
参阅图7,除在训练过程最开始的时候,读入批次数据以及处理批次数据需要花费额外的初始化时间外,其余所有批次的数据处理过程中,GPU中的数据处理与CPU中数据读取及处理并行完成,且GPU中不同批次之间的数据处理之间无须等待CPU读取数据以及处理结果,因此充分利用了GPU的并行计算能力,提升了训练效率。
图27为第十实施例提供的数据处理装置的模块图。本实施例的装置与图25所示的装置相似,其不同之处在于,还包括参数交换模块36,用于:累积持有相同模型副本多个GPU的梯度,根据累积的梯度更新模型参数,及将最新的模型参数分发至所述持有相同模型副本多个GPU中每个GPU内。
具体地,参数交换模块36用于进行以下步骤:
根据GPU的数目2N将每个GPU内存储模型参数及梯度的存储区域分成N个分区;
给定2N个GPU的序号分别为0、1、2…2N-1;
在序号为k(k为整数且1≤k≤2N-1)的周期内,将该N个分区中一个给定的分区从序号为i的GPU中复制至序号为j的GPU中,并进行梯度的合并,其中i=(2m+k+1)%N,j=(2m+k+2)%N,m为整数且0≤m≤N-1;以及
对于所述的2N个GPU中的分区所有者,根据对应的分区内梯度合并结果更新模型参数,其中所述的分区所有者指对于给定的分区,具有其他所有GPU中梯度归并结果的GPU。
进一步地,参数交换模块36还用于:
在序号为k的周期内,将该N个分区中一个给定的分区从序号为a的GPU中复制至序号为b的GPU中,其中a=(2m+k)%N,b=(2m+k+1)%N。
以上梯度累积、参数更新及分发的过程还可进一步参阅图10-11及相关描述。
根据本实施例的装置,在每个组号为单数(1,3,5,…)的工作组(GPU)上维护着整个模型参数相应的1/N,按照线形拓扑,单次数据交换中只传输了(1/N)*M的数据量,参数归并周期为2N-1,参数分发周期也为2N-1,因此推导出参数交换用时为2*(2N-1)*(M/(N*W)),仅是点到点用时的1/N(N=1,2,3,…)。且数据并行的并发量越大,线形拓扑的性能收益效果越显著。
图28为第十一实施例提供的数据处理装置的模块图。本实施例的装置与图25所示的装置相似,其不同之处在于,还包括自适应学习率更新模块37,用于:更新模型的自适应学习率。
对于分区所有者,根据以下自适应学习率更新公式计算在位置i上参数的自适应学习率learning_ratei
helper _ sum i ′ = Σ j = 0 GROUP _ NUM helper _ sum _ part i j ′
learning _ rate i = aggregating _ rate * ada grad _ rho ada grad _ rho + helper _ sum i ′
其中,GROUP_NUM表示工作组数,aggregating_rate为聚合学习率,adagrad_rho为用于计算自适应学习率的辅助量;
对于非分区所有者,根据以下公式更新自适应学习率learning_ratei
helper _ sum _ part i j ′ = 0 .
结合Adagrad算法实际应用场景:即helper_sum的累积其实是对每个学 习率调整的量化过程,其本身具有一定的近似性。基于性能考量,实际项目中使用一种近似的helper_sum收集:在每个最小批次结束后所有分区上做本地累积helper_sum计算,而在M(一般取值为8)个最小批次结束后才将其推送到所属的分区所有者完成最终累积。这样兼顾了算法效果和训练性能。
图29为第十二实施例提供的数据处理装置的模块图。本实施例的装置与图25所示的装置相似,其不同之处在于,还包括:
配置加载模块38,用于根据卷积神经网络的模型配置文件加载其层次模型;以及
传输层创建模块39,用于若识别到所述层次模型中邻接的两层由不同的GPU完成则在所述邻接的两层之间加入数据传输层,用于在两个GPU之间以点对点(Peer to Peer)方式传输数据。
CNN网络层次模型实际上是一张有向无环图(Directed Acyclic Graph,DAG),分配到每个模型并行工作单元上的层集合,是有向无环图的拓扑排序子集,所有子集组成整个网络的1组模型。
整个网络的拓扑排序集合:
{data,labels,conv1-1,conv1-2,pool1-1,pool1-2,rnorm1-1,rnorm1-2,conv2-1,conv2-2,pool2-1,pool2-2,rnorm2-1,rnorm2-2,conv3-1,conv3-2,conv4-1,conv4-2,conv5-1,conv5-2,pool5-1,pool5-2,fc6-1,fc6-2,fc7-1,fc7-2,fc8,probs,logprob}
分配在模型并行Worker0上的拓扑排序子集合:
{data,conv1-1,transfer_conv1-2,pool1-1,rnorm1-1,conv2-1,pool2-1,rnorm2-1,conv3-1,transfer_conv3-2,conv4-1,conv5-1,pool5-1,fc6-1,fc7-1,fc8,probs,transfer_labels,logprob}
分配在模型并行Worker1上的拓扑排序子集合:
{labels,conv1-2,pool1-2,rnorm1-2,transfer_conv3-1,conv3-2,conv4-2,conv5-2,pool5-2,fc6-2,fc7-2,transfer_fc8}
因此模型并行工作单元在计算时按数组序推进:前向传播时正序,反向传播时逆序,即满足了网络子模型的计算顺序要求。工作单元间同步等待控制逻辑是由每个工作单元上的工作组引擎来控制以保证模型计算推进的并行性和正确性。
可以看出,在拆分后子模型拓扑排序集合内,自动加入了传输层,这是对训练系统的自动化改造所实现的。当模型配置加载时识别到邻接的两层属于不同工作单元,即要将计算操作在不同GPU上,存在远程数据拷贝需要时,即自动在两层之间加入一个传输层,它在前向传播时负责将上邻接层输出(Output)复制到下邻接层所绑定的GPU上,作为其输入;在后向传播时负责将下邻接层传播过来的错误(error)拷贝到上邻接层,用于反向梯度计算。
根据本实施例的方法,通过在不同GPU之间需要数据同步时引入传输层,提升了存储访问效率,从而加速了数据处理。
图30为第十三实施例提供的数据处理装置的模块图。本实施例的装置与图25所示的装置相似,其不同之处在于,还包括:
缓存创建模块310,用于在随机存储器(RAM)内开辟写缓存与读缓存,所述写缓存与读缓存的大小为用于存储一个批次的训练数据的存储结构的大小*工作组总数;
线程阻止模块311,用于在所述写缓存被写满之前使所有工作线程处理处于阻止状态;以及
缓存交换模块312,用于在所述写缓存被写满之后将预先设置的指向所 述写缓存与读缓存的索引交换。
参阅图5,通过设置两块缓存,可以实现训练数据的加载不间断的进行,从而减少了GPU等待CPU进行I/O操作的可能性,使具体进行数据处理的GPU利用率提升,提升了整体的数据处理效率。
图31为第十四实施例提供的数据处理装置的模块图。本实施例的数据处理装置包括:线程创建模块41、线程绑定模块42、数据分发模块43、传输模块44、以及数据处理控制模块45。
线程创建模块41用于在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU。
工作组的数目即为模型并行训练时的并发数。也就是说,如果对同一个模型进行4路并发训练,则需要4个工作组。分别参阅图12,本实施例中,每个工作组内可包括2个GPU。可以理解,一个工作组内还可包括更多的GPU。对于工作组内的每个GPU,创建一个独立的工作线程,该工作线程用于执行该GPU的数据处理控制逻辑。
线程绑定模块42用于用于将每个工作线程与对应的一个GPU绑定。
将工作线程与对应的GPU绑定是指建立不同的GPU与工作线程之间的映射关系。例如,对于工作组Worker Group 0,可将对应的工作线程与GPU0、1绑定。
数据分发模块43用于从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU中。
上述的非易失性存储器例如是指磁盘、闪存、固态存储器、光盘等非易失性存储器,与训练相关的原始数据,例如模型、各批次的数据均以文件的形式存储在非易失性存储器中。
参阅图6,在整个训练过程中,数据需要首先从非易失性存储器内复制到主存储器(随机存储器)中,然后训练数据需要从主存储器中复制至显存进行并行处理。
进一步地,参阅图16,一个工作组内只有一个GPU内具有数据接入层,因此主存储器内的数据只能复制至具有数据接入层的GPU中。
传输模块44用于在对应于一个工作组的多个GPU之间以点对点方式传输GPU进行数据处理所需要的数据。
数据处理控制模块45用于通过对应于一个工作线程的多个GPU并行进行数据处理。
在训练数据被复制进GPU后,即可由GPU进行处理以获取处理结果。而整个处理流程的控制逻辑可进一步参阅15。
根据本实施例的方法,通过在不同GPU之间需要数据同步时引入传输层,提升了存储访问效率,从而加速了数据处理。
此外,本发明实施例还提供一种计算机可读存储介质,其内存储有计算机可执行指令,上述的计算机可读存储介质例如为非易失性存储器例如光盘、硬盘、或者闪存。上述的计算机可执行指令用于让计算机或者类似的运算装置完成上述的基于多图形处理器(GPU)的并行数据处理方法中的各种操作。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (16)

1.一种基于多图形处理器(GPU)的并行数据处理方法,其特征在于,所述方法包括以下步骤:
在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU;
将每个工作线程与对应的一个GPU绑定;
从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU显存中;
在对应于一个工作组的多个GPU之间以点对点(Peer to Peer)的方式传输GPU进行数据处理所需要的数据;
通过所述工作线程控制所述多个GPU并行进行数据处理。
2.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
创建1个I/O线程,通过所述I/O线程将所述多个批次(Batch)的训练数据加载至随机存储器内;以及
通过线程池在CPU上对训练数据进行预处理,所述I/O线程、线程池内的线程、工作线程以及GPU内的数据处理是并行进行的。
3.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
根据GPU的数目2N将每个GPU内存储模型参数及梯度的存储区域分成N个分区;
给定2N个GPU的序号分别为0、1、2…2N-1;
在序号为k(k为整数且1≤k≤2N-1)的周期内,将该N个分区中一个给定的分区从序号为i的GPU中复制至序号为j的GPU中,并进行梯度的合并,其中i=(2m+k+1)%N,j=(2m+k+2)%N,m为整数且0≤m≤N-1;以及
对于所述的2N个GPU中的分区所有者,根据对应的分区内梯度合并结果更新模型参数,其中所述的分区所有者指对于给定的分区,具有其他所有GPU中梯度归并结果的GPU。
4.如权利要求3所述的方法,其特征在于,所述方法还包括以下步骤:
在序号为k的周期内,将该N个分区中一个给定的分区从序号为a的GPU中复制至序号为b的GPU中,其中a=(2m+k)%N,b=(2m+k+1)%N。
5.如权利要求3所述的方法,其特征在于,所述方法还包括以下步骤:
对于分区所有者,根据以下自适应学习率更新公式计算在位置i上参数的学习率learning_ratei
helper _ sum i ′ = Σ j = 0 GROUP _ NUM helper _ sum _ part i j ′
learning _ rate i = aggregating _ rate * ada grad _ rho ada grad _ rho + helper _ sum i ′
其中,GROUP_NUM表示工作组数,aggregating_rate为聚合学习率,adagrad_rho为用于计算自适应学习率的辅助量;
对于非分区所有者,根据以下自适应更新公式计算在位置i上参数的学习率learning_ratei
helper _ sum _ part i j ′ = 0 .
6.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
根据卷积神经网络的模型配置文件加载其层次模型;以及
若识别到所述层次模型中邻接的两层由不同的GPU完成则在所述邻接的两层之间加入数据传输层,所述传输层用于执行所述在对应于一个工作组的多个GPU之间以点对点方式传输GPU进行数据处理所需要的数据的步骤。
7.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
在随机存储器(RAM)内开辟写缓存与读缓存,所述写缓存与读缓存的大小为用于存储一个批次的训练数据的存储结构的大小*工作组总数;
在所述写缓存被写满之前使所有工作线程处理处于阻止(barrier)状态;以及
在所述写缓存被写满之后将预先设置的指向所述写缓存与读缓存的索引交换。
8.如权利要求1所述的方法,其特征在于,所述通过所述工作线程控制所述多个GPU并行进行数据处理包括:通过所述工作线程控制同一工作组内的多个GPU分别训练同一模型的不同部分。
9.一种基于多图形处理器(GPU)的数据并行处理装置,其特征在于,所述装置包括:
线程创建模块,用于在中央处理器(CPU)内创建用于分别控制多个工作组(Worker Group)的多个工作线程(Worker),所述工作组包括多个GPU;
线程绑定模块,用于将每个工作线程与对应的一个GPU绑定;
数据分发模块,用于从非易失性存储器内加载一个批次(Batch)的训练数据至与一个工作组对应的一个GPU显存中;
传输模块,用于在对应于一个工作组的多个GPU之间以点对点方式传输GPU进行数据处理所需要的数据;以及
数据处理控制模块,通过所述工作线程控制所述多个GPU并行进行数据处理。
10.如权利要求9所述的装置,其特征在于,所述线程创建模块还用于创建1个I/O线程,通过所述I/O线程将所述多个批次(Batch)的训练数据加载至随机存储器内;以及
数据处理模块,用于通过线程池在CPU上对训练数据进行预处理;
所述I/O线程、线程池内的线程、工作线程以及GPU内的数据处理是并行进行的。
11.如权利要求9所述的装置,其特征在于,所述装置还包括参数交换模块,用于:
根据GPU的数目2N将每个GPU内存储模型参数及梯度的存储区域分成N个分区;
给定2N个GPU的序号分别为0、1、2…2N-1;
在序号为k(k为整数且1≤k≤2N-1)的周期内,将该N个分区中一个给定的分区从序号为i的GPU中复制至序号为j的GPU中,并进行梯度的合并,其中i=(2m+k+1)%N,j=(2m+k+2)%N,m为整数且0≤m≤N-1;以及
对于所述的2N个GPU中的分区所有者,根据对应的分区内梯度合并结果更新模型参数,其中所述的分区所有者指对于给定的分区,具有其他所有GPU中梯度归并结果的GPU。
12.如权利要求11所述的装置,其特征在于,所述参数交换模块还用于:
在序号为k的周期内,将该N个分区中一个给定的分区从序号为a的GPU中复制至序号为b的GPU中,其中a=(2m+k)%N,b=(2m+k+1)%N。
13.如权利要求11所述的装置,其特征在于,自适应学习率更新模块,用于:
对于分区所有者,根据以下自适应学习率更新公式计算在位置i上参数的学习率learning_ratei
helper _ sum i ′ = Σ j = 0 GROUP _ NUM helper _ sum _ part i j ′
learning _ rate i = aggregating _ rate * ada grad _ rho ada grad _ rho + helper _ sum i ′
其中,GROUP_NUM表示工作组数,aggregating_rate为聚合学习率,adagrad_rho为用于计算自适应学习率的辅助量;
对于非分区所有者,根据以下自适应更新公式计算在位置i上参数的学习率learning_ratei
helper _ sum _ part i j ′ = 0 .
14.如权利要求9所述的装置,其特征在于,所述装置还包括:
配置加载模块,用于根据卷积神经网络的模型配置文件加载其层次模型;以及
传输层创建模块,用于若识别到所述层次模型中邻接的两层由不同的GPU完成则在所述邻接的两层之间加入数据传输层,用于在两个GPU之间以点对点方式传输GPU进行数据处理所需要的数据。
15.如权利要求9所述的装置,其特征在于,所述装置还包括:
缓存创建模块,用于在随机存储器内开辟写缓存与读缓存,所述写缓存与读缓存的大小为用于存储一个批次的训练数据的存储结构的大小*工作组总数;
线程阻止模块(barrier),用于在所述写缓存被写满之前使所有工作线程处理处于阻止状态;以及
缓存交换模块,用于在所述写缓存被写满之后将预先设置的指向所述写缓存与读缓存的索引交换。
16.如权利要求9所述的装置,其特征在于,所述数据处理控制模块用于:通过所述工作线程控制同一工作组内的多个GPU分别训练同一模型的不同部分。
CN201410281130.7A 2014-06-20 2014-06-20 基于多图形处理器的模型并行处理方法及装置 Active CN104036451B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410281130.7A CN104036451B (zh) 2014-06-20 2014-06-20 基于多图形处理器的模型并行处理方法及装置
US15/107,475 US9607355B2 (en) 2014-06-20 2015-06-19 Model parallel processing method and apparatus based on multiple graphic processing units
PCT/CN2015/081964 WO2015192806A1 (en) 2014-06-20 2015-06-19 Model parallel processing method and apparatus based on multiple graphic processing units
EP15810386.1A EP3158529B1 (en) 2014-06-20 2015-06-19 Model parallel processing method and apparatus based on multiple graphic processing units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410281130.7A CN104036451B (zh) 2014-06-20 2014-06-20 基于多图形处理器的模型并行处理方法及装置

Publications (2)

Publication Number Publication Date
CN104036451A true CN104036451A (zh) 2014-09-10
CN104036451B CN104036451B (zh) 2018-12-11

Family

ID=51467212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410281130.7A Active CN104036451B (zh) 2014-06-20 2014-06-20 基于多图形处理器的模型并行处理方法及装置

Country Status (4)

Country Link
US (1) US9607355B2 (zh)
EP (1) EP3158529B1 (zh)
CN (1) CN104036451B (zh)
WO (1) WO2015192806A1 (zh)

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104506447A (zh) * 2015-01-13 2015-04-08 武汉大学 一种适合深度并行数据处理的无线Mesh网路由节点装置
WO2015192812A1 (en) * 2014-06-20 2015-12-23 Tencent Technology (Shenzhen) Company Limited Data parallel processing method and apparatus based on multiple graphic procesing units
WO2015192806A1 (en) * 2014-06-20 2015-12-23 Tencent Technology (Shenzhen) Company Limited Model parallel processing method and apparatus based on multiple graphic processing units
CN105224502A (zh) * 2015-09-28 2016-01-06 浪潮(北京)电子信息产业有限公司 一种基于gpu的深度学习方法及系统
CN105224410A (zh) * 2015-10-19 2016-01-06 成都卫士通信息产业股份有限公司 一种调度gpu进行批量运算的方法及装置
CN105302526A (zh) * 2015-10-19 2016-02-03 浪潮(北京)电子信息产业有限公司 一种数据处理系统及方法
CN105894087A (zh) * 2015-01-26 2016-08-24 华为技术有限公司 用于神经网络中训练参数集的系统和方法
CN106056529A (zh) * 2015-04-03 2016-10-26 阿里巴巴集团控股有限公司 一种对用于图片识别的卷积神经网络训练的方法与设备
CN106156810A (zh) * 2015-04-26 2016-11-23 阿里巴巴集团控股有限公司 通用机器学习算法模型训练方法、系统和计算节点
CN106991095A (zh) * 2016-01-21 2017-07-28 阿里巴巴集团控股有限公司 机器异常的处理方法、学习速率的调整方法及装置
CN107203780A (zh) * 2017-05-11 2017-09-26 南京瑞麒凰电子科技有限公司 基于深度学习的玻璃清洁度的检测方法及装置
WO2017167114A1 (zh) * 2016-03-31 2017-10-05 阿里巴巴集团控股有限公司 一种类Alexnet网络的模型训练方法和装置
CN107710238A (zh) * 2015-06-29 2018-02-16 微软技术许可有限责任公司 具有堆栈存储器的硬件加速器上的深度神经网络处理
CN107993185A (zh) * 2017-11-28 2018-05-04 北京潘达互娱科技有限公司 数据处理方法及装置
CN108122027A (zh) * 2016-11-29 2018-06-05 华为技术有限公司 一种神经网络模型的训练方法、装置及芯片
WO2018107934A1 (zh) * 2016-12-14 2018-06-21 腾讯科技(深圳)有限公司 数据处理方法、装置及电子设备
WO2018120016A1 (zh) * 2016-12-30 2018-07-05 上海寒武纪信息科技有限公司 用于执行lstm神经网络运算的装置和运算方法
WO2018133567A1 (zh) * 2017-01-20 2018-07-26 清华大学 神经元权重信息处理方法和系统、神经元信息处理方法和系统及计算机设备
CN108694694A (zh) * 2017-04-10 2018-10-23 英特尔公司 用于使得能够进行可扩展分布式机器学习的抽象库
CN108875930A (zh) * 2017-11-09 2018-11-23 北京旷视科技有限公司 基于多机集群的神经网络训练方法及系统
CN109034373A (zh) * 2018-07-02 2018-12-18 鼎视智慧(北京)科技有限公司 卷积神经网络的并行处理器及处理方法
CN109167979A (zh) * 2018-10-30 2019-01-08 深兰科技(上海)有限公司 多路监控视频人工智能分析的处理方法及系统
CN109214512A (zh) * 2018-08-01 2019-01-15 中兴飞流信息科技有限公司 一种深度学习的参数交换方法、装置、服务器及存储介质
CN109255439A (zh) * 2017-07-12 2019-01-22 北京图森未来科技有限公司 一种多个gpu并行的dnn模型训练方法和装置
CN109388496A (zh) * 2018-11-01 2019-02-26 北京视甄智能科技有限公司 一种基于多gpu卡的图像并发处理方法、装置及系统
CN109740747A (zh) * 2018-12-29 2019-05-10 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110276454A (zh) * 2018-03-14 2019-09-24 三星电子株式会社 用于机器学习的系统和控制该系统的方法以及电子系统
CN110389824A (zh) * 2018-04-20 2019-10-29 伊姆西Ip控股有限责任公司 处理计算任务的方法、设备和计算机程序产品
CN110401466A (zh) * 2019-06-25 2019-11-01 苏州浪潮智能科技有限公司 一种基于高速信号切换芯片的数据传输方法、装置及介质
CN110503194A (zh) * 2019-08-09 2019-11-26 苏州浪潮智能科技有限公司 一种分布式并行训练的方法和系统
CN110610449A (zh) * 2018-06-15 2019-12-24 伊姆西Ip控股有限责任公司 处理计算任务的方法、设备和计算机程序产品
CN110837395A (zh) * 2018-08-17 2020-02-25 北京图森未来科技有限公司 多gpu并行训练的归一化处理方法、装置和系统
CN111291869A (zh) * 2020-05-09 2020-06-16 支付宝(杭州)信息技术有限公司 并行训练业务模型的方法及装置
CN111462060A (zh) * 2020-03-24 2020-07-28 湖南大学 胎儿超声图像中标准切面图像的检测方法和装置
CN111971694A (zh) * 2018-04-04 2020-11-20 诺基亚技术有限公司 用于深度神经网络的训练数据的协同异构处理
CN112596811A (zh) * 2020-12-17 2021-04-02 杭州艾芯智能科技有限公司 动态数据加载减少内存开销的方法、系统、计算机设备及存储介质
CN112673347A (zh) * 2018-10-19 2021-04-16 日本电信电话株式会社 数据处理系统、中央运算处理装置和数据处理方法
CN114862655A (zh) * 2022-05-18 2022-08-05 北京百度网讯科技有限公司 用于模型训练的运行控制方法、装置和电子设备
US11657273B2 (en) 2019-12-27 2023-05-23 Industrial Technology Research Institute Hardware structure aware adaptive learning based power modeling method and system
CN117556273A (zh) * 2024-01-05 2024-02-13 支付宝(杭州)信息技术有限公司 一种通过多图形处理器计算对比损失的方法和装置
US11941724B2 (en) 2019-08-08 2024-03-26 Huawei Technologies Co., Ltd. Model inference method and apparatus based on graphics rendering pipeline, and storage medium
CN110276454B (zh) * 2018-03-14 2024-07-09 三星电子株式会社 用于机器学习的系统和控制该系统的方法以及电子系统

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002402B2 (en) * 2015-07-23 2018-06-19 Sony Corporation Learning convolution neural networks on heterogeneous CPU-GPU platform
CN109993285B (zh) * 2016-01-20 2020-02-07 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN106991478B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
WO2017218009A1 (en) 2016-06-17 2017-12-21 Hewlett-Packard Development Company, L.P. Shared machine-learning data structure
WO2018034681A1 (en) * 2016-08-13 2018-02-22 Intel Corporation Apparatuses, methods, and systems for access synchronization in a shared memory
US10380222B2 (en) 2016-10-17 2019-08-13 International Business Machines Corporation Matrix factorization with two-stage data block dispatch associated with graphics processing units
CN110348571B (zh) * 2016-11-29 2024-03-29 华为技术有限公司 一种神经网络模型训练方法、装置、芯片和系统
US10210594B2 (en) * 2017-03-03 2019-02-19 International Business Machines Corporation Deep learning via dynamic root solvers
US10783437B2 (en) 2017-03-05 2020-09-22 International Business Machines Corporation Hybrid aggregation for deep learning neural networks
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10614356B2 (en) * 2017-04-24 2020-04-07 International Business Machines Corporation Local multicast in single-host multi-GPU machine for distributed deep learning systems
US10891156B1 (en) * 2017-04-26 2021-01-12 EMC IP Holding Company LLC Intelligent data coordination for accelerated computing in cloud environment
US11599777B2 (en) * 2017-04-28 2023-03-07 Intel Corporation Scheduling configuration for deep learning networks
US10795842B2 (en) * 2017-05-08 2020-10-06 Liqid Inc. Fabric switched graphics modules within storage enclosures
KR20180124381A (ko) * 2017-05-11 2018-11-21 현대자동차주식회사 운전자의 상태 판단 시스템 및 그 방법
KR102477404B1 (ko) * 2017-08-31 2022-12-13 캠브리콘 테크놀로지스 코퍼레이션 리미티드 칩 장치 및 관련 제품
US10535001B2 (en) * 2017-11-06 2020-01-14 International Business Machines Corporation Reducing problem complexity when analyzing 3-D images
KR20190055610A (ko) 2017-11-15 2019-05-23 삼성전자주식회사 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US11468312B2 (en) 2018-02-02 2022-10-11 Samsung Electronics Co., Ltd. Memory management for machine learning training on GPU
US11630994B2 (en) 2018-02-17 2023-04-18 Advanced Micro Devices, Inc. Optimized asynchronous training of neural networks using a distributed parameter server with eager updates
US20210073615A1 (en) * 2018-04-12 2021-03-11 Nippon Telegraph And Telephone Corporation Neural network system, neural network method, and program
CN110503593A (zh) 2018-05-18 2019-11-26 微软技术许可有限责任公司 多个图形处理单元的调度
CN111066058B (zh) * 2018-06-29 2024-04-16 百度时代网络技术(北京)有限公司 用于低功率实时对象检测的系统和方法
EP3837622A4 (en) * 2018-09-11 2021-10-13 Huawei Technologies Co., Ltd. HETEROGENEOUS PLANNING FOR SEQUENTIAL CALCULATION DAG
US11526759B2 (en) * 2018-11-05 2022-12-13 International Business Machines Corporation Large model support in deep learning
US11175946B2 (en) 2018-12-06 2021-11-16 Advanced Micro Devices, Inc. Pipelined matrix multiplication at a graphics processing unit
CN109711323B (zh) * 2018-12-25 2021-06-15 武汉烽火众智数字技术有限责任公司 一种实时视频流分析加速方法、装置和设备
EP3830764A4 (en) * 2019-10-12 2021-06-09 Baidu.com Times Technology (Beijing) Co., Ltd. METHOD AND SYSTEM TO ACCELERATE AI TRAINING WITH ADVANCED CONNECTION TECHNOLOGIES
CN111078415A (zh) * 2019-12-19 2020-04-28 北京奇艺世纪科技有限公司 数据处理方法、装置、服务器及计算机可读存储介质
US11436533B2 (en) 2020-04-10 2022-09-06 Capital One Services, Llc Techniques for parallel model training
KR102477243B1 (ko) * 2020-07-08 2022-12-13 울산과학기술원 파라미터 동기화 모델에 기반한 기계 학습 트레이닝 방법 및 그 트레이닝 시스템
KR20220064665A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 인공지능 모델을 분산 처리하는 전자 장치 및 그 동작 방법
US20220240408A1 (en) * 2021-01-22 2022-07-28 Nvidia Corporation Static data center power balancing and configuration
CN113608882B (zh) * 2021-10-11 2022-01-28 广州紫麦科技股份有限公司 基于人工智能和大数据的信息处理方法、系统及云平台
CN117311948B (zh) * 2023-11-27 2024-03-19 湖南迈曦软件有限责任公司 Cpu与gpu异构并行的自动多重子结构数据处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999756A (zh) * 2012-11-09 2013-03-27 重庆邮电大学 基于gpu实现pso-svm对道路标志的识别方法
CN103020990A (zh) * 2012-12-06 2013-04-03 华中科技大学 一种基于gpu的运动目标检测方法
CN103488662A (zh) * 2013-04-01 2014-01-01 哈尔滨工业大学深圳研究生院 基于图形处理单元的自组织映射神经网络聚类方法及系统
CN103532710A (zh) * 2013-09-26 2014-01-22 中国科学院数据与通信保护研究教育中心 基于gpu的sm2算法实现方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776030B2 (en) * 2008-04-09 2014-07-08 Nvidia Corporation Partitioning CUDA code for execution by a general purpose processor
US8225325B2 (en) * 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US9330430B2 (en) 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9582848B2 (en) * 2012-12-28 2017-02-28 Apple Inc. Sprite Graphics rendering system
CN103617085A (zh) 2013-11-19 2014-03-05 浪潮电子信息产业股份有限公司 一种cpu+gpu协同计算并行框架
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999756A (zh) * 2012-11-09 2013-03-27 重庆邮电大学 基于gpu实现pso-svm对道路标志的识别方法
CN103020990A (zh) * 2012-12-06 2013-04-03 华中科技大学 一种基于gpu的运动目标检测方法
CN103488662A (zh) * 2013-04-01 2014-01-01 哈尔滨工业大学深圳研究生院 基于图形处理单元的自组织映射神经网络聚类方法及系统
CN103532710A (zh) * 2013-09-26 2014-01-22 中国科学院数据与通信保护研究教育中心 基于gpu的sm2算法实现方法及装置

Cited By (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282809B2 (en) 2014-06-20 2019-05-07 Tencent Technology (Shenzhen) Company Limited Data parallel processing method and apparatus based on multiple graphic processing units
WO2015192812A1 (en) * 2014-06-20 2015-12-23 Tencent Technology (Shenzhen) Company Limited Data parallel processing method and apparatus based on multiple graphic procesing units
WO2015192806A1 (en) * 2014-06-20 2015-12-23 Tencent Technology (Shenzhen) Company Limited Model parallel processing method and apparatus based on multiple graphic processing units
US9607355B2 (en) 2014-06-20 2017-03-28 Tencent Technology (Shenzhen) Company Limited Model parallel processing method and apparatus based on multiple graphic processing units
CN104506447A (zh) * 2015-01-13 2015-04-08 武汉大学 一种适合深度并行数据处理的无线Mesh网路由节点装置
CN105894087A (zh) * 2015-01-26 2016-08-24 华为技术有限公司 用于神经网络中训练参数集的系统和方法
CN106056529A (zh) * 2015-04-03 2016-10-26 阿里巴巴集团控股有限公司 一种对用于图片识别的卷积神经网络训练的方法与设备
CN106056529B (zh) * 2015-04-03 2020-06-02 阿里巴巴集团控股有限公司 一种对用于图片识别的卷积神经网络训练的方法与设备
CN106156810A (zh) * 2015-04-26 2016-11-23 阿里巴巴集团控股有限公司 通用机器学习算法模型训练方法、系统和计算节点
CN106156810B (zh) * 2015-04-26 2019-12-03 阿里巴巴集团控股有限公司 通用机器学习算法模型训练方法、系统和计算节点
CN107710238A (zh) * 2015-06-29 2018-02-16 微软技术许可有限责任公司 具有堆栈存储器的硬件加速器上的深度神经网络处理
CN107710238B (zh) * 2015-06-29 2021-07-23 微软技术许可有限责任公司 具有堆栈存储器的硬件加速器上的深度神经网络处理
CN105224502A (zh) * 2015-09-28 2016-01-06 浪潮(北京)电子信息产业有限公司 一种基于gpu的深度学习方法及系统
CN105302526A (zh) * 2015-10-19 2016-02-03 浪潮(北京)电子信息产业有限公司 一种数据处理系统及方法
CN105224410A (zh) * 2015-10-19 2016-01-06 成都卫士通信息产业股份有限公司 一种调度gpu进行批量运算的方法及装置
CN106991095A (zh) * 2016-01-21 2017-07-28 阿里巴巴集团控股有限公司 机器异常的处理方法、学习速率的调整方法及装置
CN107292385A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种类Alexnet网络的模型训练方法和装置
WO2017167114A1 (zh) * 2016-03-31 2017-10-05 阿里巴巴集团控股有限公司 一种类Alexnet网络的模型训练方法和装置
CN108122027A (zh) * 2016-11-29 2018-06-05 华为技术有限公司 一种神经网络模型的训练方法、装置及芯片
WO2018099085A1 (zh) * 2016-11-29 2018-06-07 华为技术有限公司 一种神经网络模型的训练方法、装置及芯片
CN108122027B (zh) * 2016-11-29 2021-01-12 华为技术有限公司 一种神经网络模型的训练方法、装置及芯片
CN108229687B (zh) * 2016-12-14 2021-08-24 腾讯科技(深圳)有限公司 数据处理方法、数据处理装置及电子设备
US10943324B2 (en) 2016-12-14 2021-03-09 Tencent Technology (Shenzhen) Company Limited Data processing method, apparatus, and electronic device
WO2018107934A1 (zh) * 2016-12-14 2018-06-21 腾讯科技(深圳)有限公司 数据处理方法、装置及电子设备
CN108229687A (zh) * 2016-12-14 2018-06-29 腾讯科技(深圳)有限公司 数据处理方法、数据处理装置及电子设备
WO2018120016A1 (zh) * 2016-12-30 2018-07-05 上海寒武纪信息科技有限公司 用于执行lstm神经网络运算的装置和运算方法
WO2018133567A1 (zh) * 2017-01-20 2018-07-26 清华大学 神经元权重信息处理方法和系统、神经元信息处理方法和系统及计算机设备
CN108694694B (zh) * 2017-04-10 2024-03-19 英特尔公司 用于使得能够进行可扩展分布式机器学习的抽象库
CN108694694A (zh) * 2017-04-10 2018-10-23 英特尔公司 用于使得能够进行可扩展分布式机器学习的抽象库
CN107203780A (zh) * 2017-05-11 2017-09-26 南京瑞麒凰电子科技有限公司 基于深度学习的玻璃清洁度的检测方法及装置
CN109255439B (zh) * 2017-07-12 2021-04-02 北京图森智途科技有限公司 一种多个gpu并行的dnn模型训练方法和装置
CN109255439A (zh) * 2017-07-12 2019-01-22 北京图森未来科技有限公司 一种多个gpu并行的dnn模型训练方法和装置
CN108875930A (zh) * 2017-11-09 2018-11-23 北京旷视科技有限公司 基于多机集群的神经网络训练方法及系统
CN108875930B (zh) * 2017-11-09 2022-06-10 北京旷视科技有限公司 基于多机集群的神经网络训练方法及系统
CN107993185A (zh) * 2017-11-28 2018-05-04 北京潘达互娱科技有限公司 数据处理方法及装置
CN110276454B (zh) * 2018-03-14 2024-07-09 三星电子株式会社 用于机器学习的系统和控制该系统的方法以及电子系统
TWI788476B (zh) * 2018-03-14 2023-01-01 南韓商三星電子股份有限公司 用於機器學習的系統及方法
CN110276454A (zh) * 2018-03-14 2019-09-24 三星电子株式会社 用于机器学习的系统和控制该系统的方法以及电子系统
US11461869B2 (en) 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
CN111971694A (zh) * 2018-04-04 2020-11-20 诺基亚技术有限公司 用于深度神经网络的训练数据的协同异构处理
CN110389824A (zh) * 2018-04-20 2019-10-29 伊姆西Ip控股有限责任公司 处理计算任务的方法、设备和计算机程序产品
CN110610449A (zh) * 2018-06-15 2019-12-24 伊姆西Ip控股有限责任公司 处理计算任务的方法、设备和计算机程序产品
CN110610449B (zh) * 2018-06-15 2023-09-22 伊姆西Ip控股有限责任公司 处理计算任务的方法、设备和计算机程序产品
CN109034373A (zh) * 2018-07-02 2018-12-18 鼎视智慧(北京)科技有限公司 卷积神经网络的并行处理器及处理方法
CN109034373B (zh) * 2018-07-02 2021-12-21 鼎视智慧(北京)科技有限公司 卷积神经网络的并行处理器及处理方法
CN109214512B (zh) * 2018-08-01 2021-01-22 中兴飞流信息科技有限公司 一种深度学习的参数交换方法、装置、服务器及存储介质
CN109214512A (zh) * 2018-08-01 2019-01-15 中兴飞流信息科技有限公司 一种深度学习的参数交换方法、装置、服务器及存储介质
CN110837395B (zh) * 2018-08-17 2022-03-25 北京图森智途科技有限公司 多gpu并行训练的归一化处理方法、装置和系统
CN110837395A (zh) * 2018-08-17 2020-02-25 北京图森未来科技有限公司 多gpu并行训练的归一化处理方法、装置和系统
CN112673347A (zh) * 2018-10-19 2021-04-16 日本电信电话株式会社 数据处理系统、中央运算处理装置和数据处理方法
CN109167979B (zh) * 2018-10-30 2020-09-11 深兰科技(上海)有限公司 多路监控视频人工智能分析的处理方法及系统
CN109167979A (zh) * 2018-10-30 2019-01-08 深兰科技(上海)有限公司 多路监控视频人工智能分析的处理方法及系统
CN109388496A (zh) * 2018-11-01 2019-02-26 北京视甄智能科技有限公司 一种基于多gpu卡的图像并发处理方法、装置及系统
CN109740747A (zh) * 2018-12-29 2019-05-10 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
US11893414B2 (en) 2018-12-29 2024-02-06 Cambricon Technologies Corporation Limited Operation method, device and related products
CN110689138A (zh) * 2018-12-29 2020-01-14 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109740747B (zh) * 2018-12-29 2019-11-12 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110401466A (zh) * 2019-06-25 2019-11-01 苏州浪潮智能科技有限公司 一种基于高速信号切换芯片的数据传输方法、装置及介质
US11941724B2 (en) 2019-08-08 2024-03-26 Huawei Technologies Co., Ltd. Model inference method and apparatus based on graphics rendering pipeline, and storage medium
CN110503194B (zh) * 2019-08-09 2022-05-24 苏州浪潮智能科技有限公司 一种分布式并行训练的方法和系统
CN110503194A (zh) * 2019-08-09 2019-11-26 苏州浪潮智能科技有限公司 一种分布式并行训练的方法和系统
US11657273B2 (en) 2019-12-27 2023-05-23 Industrial Technology Research Institute Hardware structure aware adaptive learning based power modeling method and system
CN111462060A (zh) * 2020-03-24 2020-07-28 湖南大学 胎儿超声图像中标准切面图像的检测方法和装置
CN111291869A (zh) * 2020-05-09 2020-06-16 支付宝(杭州)信息技术有限公司 并行训练业务模型的方法及装置
CN112596811A (zh) * 2020-12-17 2021-04-02 杭州艾芯智能科技有限公司 动态数据加载减少内存开销的方法、系统、计算机设备及存储介质
CN114862655A (zh) * 2022-05-18 2022-08-05 北京百度网讯科技有限公司 用于模型训练的运行控制方法、装置和电子设备
CN114862655B (zh) * 2022-05-18 2023-03-10 北京百度网讯科技有限公司 用于模型训练的运行控制方法、装置和电子设备
CN117556273A (zh) * 2024-01-05 2024-02-13 支付宝(杭州)信息技术有限公司 一种通过多图形处理器计算对比损失的方法和装置
CN117556273B (zh) * 2024-01-05 2024-04-05 支付宝(杭州)信息技术有限公司 一种通过多图形处理器计算对比损失的方法和装置

Also Published As

Publication number Publication date
US20160321776A1 (en) 2016-11-03
US9607355B2 (en) 2017-03-28
WO2015192806A1 (en) 2015-12-23
CN104036451B (zh) 2018-12-11
EP3158529A4 (en) 2017-05-31
EP3158529A1 (en) 2017-04-26
EP3158529B1 (en) 2020-09-16

Similar Documents

Publication Publication Date Title
CN104035751B (zh) 基于多图形处理器的数据并行处理方法及装置
CN104036451A (zh) 基于多图形处理器的模型并行处理方法及装置
JP7451483B2 (ja) ニューラルネットワーク計算タイル
WO2021057746A1 (zh) 神经网络处理方法、装置、计算机设备及存储介质
US8400458B2 (en) Method and system for blocking data on a GPU
CN109388777A (zh) 一种用于经优化的Winograd卷积加速器的系统和方法
CN109993683A (zh) 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性
WO2022068663A1 (zh) 内存分配方法、相关设备及计算机可读存储介质
CN109993684A (zh) 机器学习和深度学习处理中的压缩
CN105426344A (zh) 基于Spark的分布式大规模矩阵乘法的矩阵计算方法
US20190279038A1 (en) Data flow graph node parallel update for machine learning
US20190138373A1 (en) Multithreaded data flow processing within a reconfigurable fabric
US20190130270A1 (en) Tensor manipulation within a reconfigurable fabric using pointers
CN107229463A (zh) 计算设备和相应计算方法
CN115136123A (zh) 用于集成电路架构内的自动化数据流和数据处理的瓦片子系统和方法
US20190057060A1 (en) Reconfigurable fabric data routing
CN105893319A (zh) 一种多车道/多核系统和方法
CN105468439A (zh) 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法
US20190197018A1 (en) Dynamic reconfiguration using data transfer control
US11934308B2 (en) Processor cluster address generation
US20190279086A1 (en) Data flow graph node update for machine learning
CN111985629A (zh) 用于训练神经网络的并行化策略
CN112783554A (zh) 用于程序间数据交换的持久便签内存
CN114402337A (zh) 加速神经网络计算的硬件电路
CN111160535A (zh) 基于Hadoop的DGCNN模型加速方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant