CN113272854A - 利用高级互连技术加速ai训练的方法和系统 - Google Patents

利用高级互连技术加速ai训练的方法和系统 Download PDF

Info

Publication number
CN113272854A
CN113272854A CN201980005606.5A CN201980005606A CN113272854A CN 113272854 A CN113272854 A CN 113272854A CN 201980005606 A CN201980005606 A CN 201980005606A CN 113272854 A CN113272854 A CN 113272854A
Authority
CN
China
Prior art keywords
data
gpus
gpu
training
data blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980005606.5A
Other languages
English (en)
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.)
Kunlun core (Beijing) Technology Co.,Ltd.
Original Assignee
Baidu com Times Technology Beijing Co Ltd
Baidu USA LLC
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 Baidu com Times Technology Beijing Co Ltd, Baidu USA LLC filed Critical Baidu com Times Technology Beijing Co Ltd
Publication of CN113272854A publication Critical patent/CN113272854A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)

Abstract

根据各种实施方式,提供了利用高级互连通信技术和在分布式训练系统上进行系统零值压缩来加速人工智能(AI)模型训练的方法和系统。在对布置成逻辑环的处理器(117、119、121)集群执行分散规约(Scatter‑Reduce)过程以训练神经网络模型(701)的每次迭代期间,处理器从逻辑环中的先前处理器(107)接收压缩数据块,对接收的压缩数据块和在该处理器(117、119、121)上生成的压缩数据块执行操作以获得计算的数据块,并将计算的数据块发送到逻辑环(702)中的后续处理器(117、119、121)。可以在每个处理器(117、119、121)上识别根据来自多个处理器(117、119、121)的相应数据块计算的压缩数据块,并且将其分发到其他处理器(117、119、121)中的每一个并在其中进行解压缩,以便在AI模型训练(703)中使用。

Description

利用高级互连技术加速AI训练的方法和系统
技术领域
本公开的实施方式大体上涉及机器学习。更具体地,本公开的实施方式涉及神经网络训练。
背景技术
为了解决复杂的问题,神经网络变得日益复杂。复杂的神经网络在训练阶段需要复杂的深度学习算法和更高的数据带宽。结果,增加了训练时间、成本和功耗。为了加速训练,高级服务器(例如,具有更复杂接口的更快的服务器或服务器集群)已被用于改进计算和通信以降低昂贵硬件的成本。然而,在性能和成本方面,现有的解决方案仍然存在挑战。
发明内容
根据第一方面,本公开的一些实施方式提供了一种使用数据处理(DP)加速器进行人工智能(AI)模型训练的计算机实现的方法,该方法包括:从中央处理单元(CPU)接收请求,用于根据具有从CPU分发的多个数据块的一组训练数据来训练AI模型;以及由布置成逻辑环的多个通用处理单元(GPU)执行多次DP迭代,以训练AI模型,包括:针对DP迭代中的每一次,在第一DP循环期间,GPU中的每一个分别并行地对数据块之一执行第一预定DP操作,生成相应DP结果,以及在第二DP循环期间,GPU中的每一个经由处理器间链路将第一相应DP结果传送到逻辑环中的下游GPU以在其中进一步处理。
根据第一方面,本公开的一些实施方式提供了一种数据处理系统,该系统包括:至少一个中央处理单元(CPU);以及多个通用处理单元(GPU),其耦合到CPU,其中GPU中的每一个被配置为执行从CPU分发的人工智能(AI)数据处理(DP)操作,该操作包括:从中央处理单元(CPU)接收请求,用于根据具有从CPU分发的多个数据块的一组训练数据来训练AI模型,以及由布置成逻辑环的多个通用处理单元(GPU)执行多次DP迭代,以训练AI模型,包括:针对DP迭代中的每一次,在第一DP循环期间,GPU中的每一个分别并行地对数据块之一执行第一预定DP操作,生成相应DP结果,以及在第二DP循环期间,GPU中的每一个经由处理器间链路将第一相应DP结果传送到逻辑环中的下游GPU以在其中进一步处理。
根据第三方面,本公开的一些实施方式提供一种其中存储有指令的非暂时性机器可读介质,该指令在由处理器执行时使处理器执行人工智能(AI)训练的操作,该操作包括:从中央处理单元(CPU)接收请求,用于根据具有从CPU分发的多个数据块的一组训练数据来训练AI模型;以及由布置成逻辑环的多个通用处理单元(GPU)执行多次DP迭代,以训练AI模型,包括:针对DP迭代中的每一次,在第一DP循环期间,GPU中的每一个分别并行地对数据块之一执行第一预定DP操作,生成相应DP结果,以及在第二DP循环期间,GPU中的每一个经由处理器间链路将第一相应DP结果传送到逻辑环中的下游GPU以在其中进一步处理。
附图说明
本公开的实施方式在附图的图中以示例的方式而不是限制的方式示出,在附图中相似的附图标记表示类似的元件。
图1示出了根据实施方式的用于AI模型训练的系统的示例。
图2A至图2F示出了根据实施方式的AI模型训练中的数据传递的示例性过程。
图3示出了表示对图2A至图2F中的过程的改进的示例性过程。
图4示出了根据实施方式的数据压缩、数据操作和互连总线的示例性架构。
图5示出了根据实施方式的零和压缩技术。
图6示出了根据实施方式的对压缩数据的示例性操作。
图7示出了根据实施方式的AI模型训练的示例性过程。
具体实施方式
将参考以下讨论的细节来描述本公开的各种实施方式和方面,并且附图将示出各种实施方式。以下描述和附图是对本公开的说明,而不应被解释为限制本公开。为了提供对本公开的各种实施方式的透彻理解,描述了许多具体细节。然而,在某些情况下,为了提供对本公开的实施方式的简洁讨论,没有描述公知的或常规的细节。
在说明书中提及“一个实施方式”或“实施方式”意味着结合该实施方式描述的特定特征、结构或特性可以被包括在本公开的至少一个实施方式中。在说明书的各种地方出现的短语“在一个实施方式中”不一定都指同一实施方式。
根据各种实施方式,本文提供了利用高级互连通信技术来加速人工智能(AI)训练的方法和系统。利用软件和硬件组件,本公开中描述的实施方式可以显著地降低互连通信带宽要求、功耗,并减少训练时间,从而在没有精度损失的代价的情况下改进训练性能。在分布式系统上使用系统数据压缩和解压缩来进行AI模型训练,并结合使用高效的全减(All-Reduce)算法。
根据一实施方式,一种AI模型训练的计算机实现的方法包括以下操作:在处理器集群上在分散规约(Scatter-Reduce)过程中执行多次迭代,处理器中的每一个都可以为图形处理单元(GPU)。处理器可以被布置成逻辑环以训练神经网络模型,每个处理器包括多个数据块,每个数据块表示神经网络模型中的一组参数或用于更新一组参数的一组梯度。
在每次迭代期间,处理器从逻辑环中的先前处理器接收压缩数据块,对所接收的压缩数据块和在该处理器上生成的压缩数据块执行操作,以获得计算出的数据块,并将计算出的数据块发送到逻辑环中的后续处理器。在多次迭代结束时,多个处理器上的每个数据块都将被压缩且经过操作。该方法还包括在多个处理器的每一个上识别压缩数据块的操作,该压缩数据块是从多个处理器的对应数据块计算的。
在一实施方式中,所识别的压缩数据块可以被分发到逻辑环中的其他处理器中的每一个,并且可以在该处理器上被解压缩以用于更新神经网络模型中的参数。处理器可以附接到分布式AI模型训练系统的不同系统中的中央处理单元(CPU)。在一实施方式中,每个处理器可以包括基于硬件或基于软件的压缩模块,其利用零值压缩技术来压缩和解压缩数据块。压缩数据块可以由具有位掩码部分和压缩数据部分的数据结构来表示,并且位掩码包括指示数据块中具有非零值的位置的位。
根据一实施方式,当从中央处理单元(CPU)接收到对AI训练的请求时,布置成逻辑环的通用处理单元(GPU)中的每一个被配置为以管道化(pipline)方式迭代地对从CPU分发的数据块执行数据处理(DP)操作。相对于CPU,每个GPU都操作为DP加速器。对于每次迭代,在第一DP循环期间,每个GPU分别并行地对数据块中的一个执行第一预定DP操作(例如,数据压缩),并生成相应的DP结果。在第二DP循环期间,每个GPU经由相应的处理器间链路将相应的DP结果传送到逻辑环中的相应下游GPU以在其中进一步处理。为了说明的目的,采用GPU作为DP加速器的示例,然而,其他类型的处理器或处理逻辑也可以被用作DP加速器。
在一实施方式中,在第二DP循环期间,每个GPU还经由相应的处理器间链路从逻辑环中的其相应的上游GPU接收处理结果,以用于在GPU处进一步处理。在一实施方式中,在第三DP循环期间,GPU中的每一个同时对由其自身处理的第一数据块(例如,处理结果)和从其上游GPU接收的第二数据块(例如,上游GPU的处理结果)执行第二预定DP操作(例如,组合操作,诸如求和)。在一实施方式中,在第四DP循环期间,GPU中的每一个执行进一步的DP操作,诸如数据解压缩操作。
图1示出了根据实施方式的用于AI模型训练的系统的示例。如图1所示,系统包括分散在多个服务器(例如,服务器A 103和服务器B105)中的GPU集群101,其中每个服务器包括一个或多个CPU,并且每个CPU与一个或多个诸如GPU的DP加速器相关联。服务器可以包括经由以太网连接111彼此通信的CPU 107和CPU 109。在图1所示的示例性系统中,每个CPU可以具有多个GPU,该多个GPU经由PCIe(周边装置互连高速)交换机连接到CPU。例如,在服务器A 103中,GPU 117、GPU 119和GPU 121经由PCIe交换机A 113连接到CPU A 107;在服务器B105中,GPU 123、GPU 125和GPU 127经由PCIe B 115连接到CPU B 109。
CPU 107和CPU 109可以经由诸如以太网连接111的处理器间链路彼此通信,以协调训练神经网络的任务。例如,作业命令可以经由以太网连接111被分发到每个服务器。然后可以将作业命令从服务器中的CPU分派到连接到该CPU的GPU。一旦作业命令被分派,系统中的GPU之间的数据就可以经由相应的处理器间链路或诸如加速器的缓存一致性互连(CCIX)兼容连接的连接来传递。如图1所示,尽管可以使用单向环形拓扑,但系统中的GPU被布置成双向环形拓扑。
CCIX是由CCIX联盟开发的开放缓存一致性互连架构。CCIX被设计成通过对标准PCIe的缓存一致性扩展来简化系统中的中央处理器(例如CPU)和各种加速器(例如GPU)之间的通信。CCIX是一种高性能的芯片到芯片互连架构,它提供了用于异构系统架构的缓存一致性框架。在系统中的中央处理单元和各种其他加速器之间的缓存一致性始终自动保持。每个支持CCIX的设备至少包括一个CCIX端口,CCIX端口与任何其他启用CCIX的设备是引脚兼容的。CCIX支持大量拓扑,诸如芯片到芯片、芯片到交换机到芯片、网格、菊花链和环。
在一实施方式中,GPU被配置为以管道化方式对从其相应CPU分发的数据块执行AI训练操作。GPU中的每一个还经由处理器间链路彼此通信。GPU可以被配置成环形布置,以接收上游GPU的处理结果,用于进一步的数据处理。每个GPU可进一步将处理结果发送到其对应的下游GPU以在其中进行进一步处理。因此,GPU中的每一个并行地执行其所分配的DP操作,并将其DP结果发送到下游GPU。同时,每个GPU还从其上游GPU接收处理结果,以便在其中进行进一步处理。
图2A至图2F示出了根据实施方式的AI模型训练中的数据传递的示例性过程。尽管本文示出了三个GPU 203、GPU 205和GPU 207,但是示例性过程可以根据多个因素来使用尽可能多的GPU(例如,数千个GPU),上述多个因素例如是要训练的神经网络的复杂度、训练数据的大小以及用户期望的训练速度。
可以在示例系统上训练的神经网络的示例包括多层感知器(MLP)神经网络,其包括连接的神经元的集合。随着一个层中的每个神经元以参数(例如,权重和偏置)与后续层中的每个神经元连接,MLP神经网络中的神经元可以被完全连接。
在神经网络模型的训练期间,可以使用梯度下降(即,反向传播)来确定一组参数,以最小化神经网络模型的期望值和实际输出之间的差异。梯度下降包括以下步骤:计算损失/误差函数的梯度,以及响应于该梯度更新现有参数。可以重复该循环,直到达到损失函数的极小值。
在一实施方式中,用于神经网络模型的训练数据集可以被分成多个子集,每个子集用于在GPU中的一个上训练神经网络模型,使得神经网络的训练可以由多个GPU并行地进行。每个GPU可以具有神经网络模型的完整副本。
训练数据集的每个子集可以逻辑地分成多个相等大小的数据块。在示例性过程中,块的数量可以等于GPU的数量。神经网络模型的并行化训练需要针对梯度下降的多次迭代。对于每次迭代,每个GPU在该GPU上的数据上运行神经网络模型的前向传播,接着是误差反向传播,以计算损耗相对于网络参数的梯度。GPU可随后彼此通信以计算梯度的统计量(例如,平均值、最大值或最小值),并应用统计量(例如,平均梯度)以获得更新的参数。神经网络模型可以具有大量参数(例如,数十亿个参数),并且每个参数可以与梯度值相关联。这样,对于神经网络来说,梯度的大小可能是巨大的,并且在GPU之间传递梯度会占用大量的带宽。
返回参照图2A至图2F,示例性过程示出了用于减少GPU之间的数据传递的带宽要求的算法。在一实施方式中,本文使用的带宽是给定网络连接上的最大数据传递速率。该算法可以包括两个过程。第一过程是分散规约(Scatter-Reduce)过程,第二过程是全聚集(Allgather)过程。在Scatter-Produce过程期间,GPU可以交换数据,使得每个GPU以大量的最终结果块而结束。在Allgather过程期间,GPU可交换那些结果块,使得所有GPU以完整的最终结果结束。
每个GPU可以包括一个或多个应用,其被配置为将该GPU上的训练数据集的子集划分为相等大小的数据块;在示例性系统中,每个GPU上的数据块的数量是GPU的数量。在神经网络模型的训练期间,每个数据块可以生成它自己的梯度组。
在此示例中,如上文所示,由于在系统中存在三个GPU,因此,每个GPU上的数据块的数量为三。从GPU#0 203上的训练数据的子集,可以生成三组梯度a0 215、b0 231、c0 237;从GPU#1 205上的训练数据的子集,还可以生成三组梯度a1 217、b1 223、c1 239。类似地,从GPU#2 207上的训练数据的子集,生成三组梯度a2 219、b2 235、c2 241。在一实施方式中,可以以阵列或另一种数据结构存储每个GPU上的不同梯度组。
作为说明,该算法被设计为对由训练数据集的每个子集生成的梯度进行求和,使得在算法完成时,每个GPU将具有从训练数据集生成的梯度的和。
示例性过程中的GPU可以在Scatter-Reduce过程期间具有N-1次迭代,其中N是系统中GPU的总数。这样,示例性系统中的GPU可以具有2次迭代。在每次迭代中,每个GPU可将GPU上的一组梯度发送到其右侧相邻者,从其左侧相邻者接收一组梯度,并且将该两组梯度相加以生成一组新的梯度。对于每次迭代,每个GPU发送和接收的梯度的组是不同的;第n个GPU通过发送第n组梯度开始,并接收第(n-1)组梯度,然后由此反向进行处理。
图2A至图2C示出了Scatter-Reduce过程。图2A示出了在Scatter-Reduce过程的第一迭代中的数据传递。在完成第一发送和第一接收之后,每个GPU将具有拥有表示两个不同GPU上的两组梯度之和的值的阵列元素。例如,GPU 205上的第一元素a1可以包括来自第二GPU 205和第一GPU 215的梯度组之和。图2B示出了在Scatter-Reduce过程的第二迭代中的数据传递,并且还示出了在Scatter-Reduce过程的第一迭代完成之后的中间和。在第二迭代中,Scatter-Reduce过程继续,并且在Scatter-Reduce过程结束时(即,在本示例中在第二迭代之后),每个GPU将具有包含跨越所有GPU的对应阵列元素中的所有梯度之和的一个阵列元素。图2C示出了在Scatter-Reduce过程结束时的最终状态。
图2D至图2F示出了Allgather过程,其与Scatter-Reduce相同地进行并且也具有N-1次迭代,不同之处在于,所接收的梯度会覆盖接收GPU上的对应阵列元素中的梯度,而不是累积GPU接收的梯度。图2D示出了在Allgather过程的第一迭代中的数据传递。如图2E中所示,在完成第一迭代之后,每个GPU将具有各自包含跨越所有GPU的对应阵列元素中的所有梯度之和的两个阵列元素。图2E示出了在第二迭代中的Allgather过程,即在示例性过程中的最终迭代。在如图2F所示的Allgather过程结束时,GPU将具有来自整个训练数据集的完全累积的梯度。由于所有数据传递在离散迭代中同步发生,因此示例性过程是带宽最优的。
图3示出了表示对图2A至图2F中的过程的改进的示例性过程。在一实施方式中,图3中所示的示例性过程可以用于在神经网络模型的训练期间传递用于更新神经网络参数的梯度,其中数十兆字节的数据可能需要在分布式服务器之间传递并且协同操作。这需要高效的硬件和软件来改进性能和延迟。
在一实施方式中,示例性过程利用All-Reduce算法以及软件和硬件协同设计来改进性能和延迟。软件和硬件协同设计是指同时设计硬件和软件以实现期望的功能。该示例性过程使用硬件组件,诸如加速器的缓存一致性互连(CCIX)、用于连接集群中的GPU,以及软件模块,诸如零值压缩模块和其他压缩模块,以使得能够基于压缩数据进行硬件计算。该示例性过程在设计为执行高效All-Reduce过程的分布式系统上使用系统数据压缩。因此,能够更快地将从训练数据集的不同子集生成的梯度累积并分发到每个GPU,从而加速AI模型训练。
在图3中,4的左部分示出了典型的All-Reduce过程302,其已经在图2A至图2F中详细描述;而右部分描述了在分布式系统上使用系统压缩的改进的All-Reduce过程。图3使用三个GPU作为示例,并且该三个GPU被布置为形成逻辑环。
在典型的All-Reduce过程302和改进的All-Reduce过程中,将于CPU之间传递的数据块被存储在数据结构(例如,阵列)中,并且数据块可以是从用于训练神经网络模型的训练数据集的子集的不同块生成的梯度。每个GPU可具有待训练的神经网络模型的完整副本。梯度在GPU之间传递,用于更新神经网络模型的参数。
在一实施方式中,在Scatter-Reduce过程的第一迭代或第一处理周期期间,每个GPU上的数据块可以由压缩模块压缩,该压缩模块可以在硬件上实现或以软件模块实现。例如,在操作301、315和329中,GPU#0203上的数据块a0、GPU#1 205上的数据块b1以及GPU#2207中的数据块c2都分别被压缩。
可在下一个处理循环中将经压缩的数据块发送到相邻GPU。例如,在操作303中,GPU#0 203上的压缩数据块可以被发送到GPU#1 205,在操作317中,GPU#1 205上的压缩数据块可以被发送到GPU#2 207,并且在操作331中,GPU#2 207上的压缩数据块可以被发送到GPU#0203。
在一实施方式中,在压缩数据块被发送到相邻GPU的同时,每个GPU上的不同数据块可以被压缩并且被添加到如上所述接收的压缩数据。在该示例实施方式中,加法操作被用作示例;也可使用其他操作(例如,乘法、演绎和数学平均)。
例如,在操作305中,GPU#0 203上的数据块c0可被压缩,并被添加到已从GPU#2205接收的压缩数据块c2。在操作319中,GPU#1 205上的数据块a1可被压缩并添加到已从GPU#0接收到的压缩数据块a0。在操作333中,GPU#2上的数据块b2可以被压缩,可以被添加到已经从GPU#0 203接收到的压缩数据块b1
可以对Scatter-Reduce过程的每一次剩余迭代重复上述过程。迭代的数量可以是GPU的数量减去1。这样,在改进的All-Reduce过程中的Scatter-Reduce过程305可以具有2次迭代。在剩余迭代的每一次中,每个GPU不是在GPU上发送原始压缩数据块,而是可以将压缩数据块之和从多个GPU发送到下一GPU。
例如,在第二迭代期间,在操作309,GPU#0 203可以将压缩数据块c0和压缩数据块c2之和发送到GPU#1 205。在操作32中,GPU#1 205可以将压缩数据块a0和压缩数据块a1之和发送到GPU#2 207。在操作335中,GPU#2 207可以将压缩数据块b1和压缩数据块b2之和发送到GPU#0203。
在一实施方式中,在压缩数据块之和被发送到相邻GPU的同时,每个GPU可以压缩GPU上的剩余数据块并将压缩数据块添加到之前从逻辑环中的先前GPU接收的压缩数据块之和。例如,在操作309中,GPU#0202上的数据块b0可以被压缩并且被添加到压缩数据块b1和b2之和。在操作323中,GPU#1 205上的数据块c1可以被压缩并被添加到压缩数据块c0和c2之和。在操作337中,GPU#2 207上的数据块a2可以被压缩并且被添加到压缩数据块a0和a1之和。
因此,在Scatter-Reduce过程结束时,在示例性过程中,每个GPU将具有来自阵列中跨越所有GPU的对应位置的压缩数据块的和。
在Allgather过程期间,每个GPU可以将压缩数据块的和从阵列中的对应位置分发到彼此的GPU,使得在Allgather过程结束时,每个GPU将具有所有压缩数据块之和的副本。然后,如操作313、327和341所示,每个GPU可以解压缩经压缩的总和。每个GPU上的解压缩的总和可以用于更新该GPU上的神经网络模型的副本的参数。
图4示出了根据实施方式的数据压缩、数据操作和互连总线的示例性架构。
图3中的图示出了压缩原始数据块405和407,以及在互连总线416和418上传递压缩数据块,对压缩数据进行操作413和419,并将压缩数据解压缩为原始数据的数据流。
如图3所示,在每个GPU上可以使用一对压缩模块和解压缩模块。例如,在GPU A401上,使用压缩模块412和解压缩模块409,而在GPU B 403上,使用压缩模块417和解压缩模块415。
对于压缩模块412和417,可以使用任何压缩算法。示例性压缩算法是零值压缩算法/技术,其在以下公开中详细描述。在零值比为50%的情况下,采用零值压缩算法,可以节省接近50%的数据传递的带宽;当与互连总线和压缩数据上的各种操作相结合时,带宽效益可以超过50%。
图5示出了根据实施方式的零和压缩技术。在图5中,矩阵513是用于训练神经网络模型的原始4×4数据阵列。数据结构510示出了使用零值压缩技术的矩阵513的压缩形式。数据结构510包括多个字段,例如类型字段501、长度字段503、位掩码字段505和压缩数据字段507。可以使用压缩511和解压缩509将矩阵513和数据结构510相互转换。
在一实施方式中,类型字段501表示矩阵415中的值的数据类型。数据类型的示例可以包括浮点(FP)32、FP16和整数型(INT)8。长度以字节表示位掩码字段505和压缩数据字段507的总大小;或者表示具有固定大小的位掩码字节的压缩数据字段507的大小。位掩码字段505字段以设置成“1”表示矩阵513中特定位置中的非零值,以及以设置成“0”表示零值。压缩数据字段507仅包括具有正确对准/偏移的非零值数据。位掩码字段也可由解压缩模块(例如,图4中的解压缩模块409或415)使用,以将非零值写回其在4×4数据阵列513中的原始位置。
图6示出了根据实施方式的对压缩数据的示例性操作。如图6所示,提供求和操作作为示例,以说明如何对两个压缩数据块进行操作。
在一实施方式中,压缩数据617是以矩阵A 613的压缩形式表示矩阵A 613的数据结构,以及压缩数据619是以矩阵B 615的压缩形式表示矩阵B 615的数据结构。使用图5中所描绘的压缩技术生成这两个结构,且可使用解压缩模块(例如,解压缩模块409或415)将两个结构分别解压缩成矩阵A 613和矩阵B 615。
在一实施方式中,为了将两个压缩的矩阵613和615以其压缩形式求和,硬件压缩模块(例如,图4中的压缩模块411或417)可以首先对两个压缩的数据结构617和619管道化,将一个数据结构中的位掩码字段中的位与另一个数据结构的位掩码字段中的位进行比较,并基于该比较输出结果621。
通过以压缩形式在GPU之间传递数据,可以降低对数据传递的带宽的要求。此外,压缩数据块比其未压缩形式占用更少的存储器,因为在操作期间从存储器读取和写入到存储器中的位更少,因此也降低了对操作压缩数据块的存储器的要求。
例如,求和操作可能需要两次读取和一次写入。由于从存储器读取并写入存储器的数据是压缩形式的,因此降低了对求和操作的存储器的要求。
图7示出了根据实施方式的AI模型训练的示例性过程700。过程700可由能够包括软件、硬件或其组合的处理逻辑来执行。
返回参照图7,在操作701中,在布置成逻辑环的多个处理器上执行多次迭代,以训练神经网络模型,其中每个处理器包括多个数据块。在操作702中,对于多次迭代中的每一次,多个处理器中的一处理器从逻辑环中的先前处理器接收压缩数据块,对所接收的压缩数据块和在该处理器上生成的压缩数据块执行操作以获得计算的数据块,并将计算的数据块发送到逻辑环中的后续处理器。在操作703中,在多个处理器中的每一个上识别根据来自多个处理器的对应数据块计算的压缩数据块。所识别的数据块被分发给其他处理器中的每一个并且在其中被解压缩以用于AI模型训练,例如更新神经网络模型的参数。
注意,可以用软件、硬件或其组合来实现如上所示和所述的一些或全部组件。例如,这种组件可以被实现为安装和存储在永久存储设备中的软件,该软件可以由处理器(未示出)在存储器中加载和执行,以实现在整个本申请中描述的过程或操作。可替代地,可将这种组件实现为经编程或嵌入到诸如集成电路(例如,专用IC或ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)的专用硬件中的可执行代码,可经由对应的驱动器和/或操作系统从应用中访问可执行代码。此外,这种组件可以实现为处理器或处理器核中的特定硬件逻辑,作为由软件组件经由一个或多个特定指令可访问的指令组的一部分。
已经根据对计算机存储器内的数据位的操作的算法和符号表示来呈现了前面详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来向本领域的其他技术人员最有效地传达其工作实质的方式。这里,算法通常被认为是导致期望结果的自相容的操作序列。这些操作是那些需要对物理量进行物理操纵的操作。
所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的便利标签。除非如从上面的讨论中显而易见地那样另外明确地指出,否则应当理解,在整个说明书中,利用诸如以下权利要求书中所阐述的术语的讨论是指计算机系统或类似的电子计算设备的动作和过程、其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据转换为类似地表示为计算机系统存储器或寄存器或其他这种信息存储、传送或显示设备中的物理量的其他数据。
本公开的实施方式还涉及用于执行本文中的操作的装置。这种计算机程序存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备。
在前面的图中描绘的过程或方法可以由包括硬件(例如,电路、专用逻辑等)、软件(例如,包含在非暂时性计算机可读介质上)、或两者的组合的处理逻辑来执行。尽管以上根据一些顺序操作描述了过程或方法,但是应当理解,所描述的一些操作可以以不同的顺序执行。此外,一些操作可以并行而不是顺序地执行。
本公开的实施方式并未参考任何特定编程语言来描述。应当理解,可使用各种编程语言来实现如本文所描述的本公开的实施方式的教导。
在前面的说明书中,已经参考本公开的具体示例性实施方式描述了本公开的实施方式。显而易见的是,可以对其进行各种修改,而不背离如后面的权利要求书中所阐述的本公开的更宽的精神和范围。因此,说明书和附图被认为是说明性的,而不是限制性的。

Claims (20)

1.使用数据处理DP加速器进行人工智能AI模型训练的计算机实现的方法,所述方法包括:
从中央处理单元CPU接收请求,所述请求用于根据具有从所述CPU分发的多个数据块的一组训练数据来训练AI模型;以及
由布置成逻辑环的多个通用处理单元GPU执行多次DP迭代,以训练所述AI模型,所述多次DP迭代包括:针对所述DP迭代中的每一次,
在第一DP循环期间,所述GPU中的每一个分别并行地对所述数据块之一执行第一预定DP操作,以生成相应DP结果,以及
在第二DP循环期间,所述GPU中的每一个经由处理器间链路将第一相应DP结果传送到所述逻辑环中的下游GPU以在其中进一步处理。
2.根据权利要求1所述的方法,还包括:在所述第二DP循环期间,由所述GPU中的每一个经由相应处理器间链路从所述逻辑环中的上游GPU接收第二相应DP结果以用于进一步处理。
3.根据权利要求2所述的方法,还包括:在第三DP循环期间,由所述GPU中的每一个同时对处理的以及从相应上游GPU接收的数据块执行第二预定DP操作。
4.根据权利要求3所述的方法,其中,对由当前GPU处理的第一数据块以及由相应上游GPU处理的第二数据块执行所述第二预定DP操作,以生成第一DP结果。
5.根据权利要求4所述的方法,其中,所述第二预定DP操作包括所述第一数据块和所述第二数据块的组合操作。
6.根据权利要求4所述的方法,还包括:在第四DP循环期间,由所述GPU中的每一个同时对所述第一DP结果执行第三预定DP操作。
7.根据权利要求6所述的方法,其中,所述第三预定DP操作包括数据解压缩操作。
8.根据权利要求1所述的方法,其中,所述处理器间链路包括加速器的缓存一致性互连CCIX连接。
9.根据权利要求1所述的方法,其中,所述数据块中的至少一部分表示作为所述AI模型训练的一部分生成的参数或梯度。
10.根据权利要求1所述的方法,其中,所述第一处理DP操作包括数据压缩操作。
11.根据权利要求10所述的方法,其中,使用零值压缩算法来执行所述数据压缩操作,所述零值压缩算法将一个或多个数据块压缩成具有位掩码部分和压缩的数据部分的数据结构,其中所述位掩码包括指示所述数据块中具有非零值的位置的位。
12.数据处理系统,包括:
至少一个中央处理单元CPU;以及
多个通用处理单元GPU,联接到所述CPU,其中所述GPU中的每一个被配置为执行从所述CPU分发的人工智能AI数据处理DP操作,所述操作包括:
从中央处理单元CPU接收请求,所述请求用于根据具有从CPU分发的多个数据块的一组训练数据来训练AI模型,以及
由布置成逻辑环的多个通用处理单元GPU执行多次DP迭代,以训练所述AI模型,所述多次DP迭代包括:针对所述DP迭代中的每一次,
在第一DP循环期间,所述GPU中的每一个分别并行地对所述数据块之一执行第一预定DP操作,以生成相应DP结果,以及
在第二DP循环期间,所述GPU中的每一个经由处理器间链路将第一相应DP结果传送到所述逻辑环中的下游GPU以在其中进一步处理。
13.根据权利要求12所述的系统,其中,所述操作还包括:在所述第二DP循环期间,由所述GPU中的每一个经由相应处理器间链路从所述逻辑环中的上游GPU接收第二相应DP结果以用于进一步处理。
14.根据权利要求13所述的系统,其中,所述操作还包括:在第三DP循环期间,由所述GPU中的每一个同时对处理的以及从相应上游GPU接收的数据块执行第二预定DP操作。
15.根据权利要求14所述的系统,其中,对由当前GPU处理的第一数据块以及由相应上游GPU处理的第二数据块执行所述第二预定DP操作,以生成第一DP结果。
16.根据权利要求15所述的系统,其中,所述第二预定DP操作包括所述第一数据块和所述第二数据块的组合操作。
17.根据权利要求15所述的系统,其中,所述操作还包括:在第四DP循环期间,由所述GPU中的每一个同时对所述第一DP结果执行第三预定DP操作。
18.根据权利要求17所述的系统,其中,所述第三预定DP操作包括数据解压缩操作。
19.非暂时性机器可读介质,所述非暂时性机器可读介质中存储有指令,所述指令在由处理器执行时使所述处理器执行人工智能AI训练的操作,所述操作包括:
从中央处理单元CPU接收请求,所述请求用于根据具有从所述CPU分发的多个数据块的一组训练数据来训练AI模型;以及
由布置成逻辑环的多个通用处理单元GPU执行多次DP迭代,以训练所述AI模型,所述多次DP迭代包括:针对所述DP迭代中的每一次,
在第一DP循环期间,所述GPU中的每一个分别并行地对所述数据块之一执行第一预定DP操作,以生成相应DP结果,以及
在第二DP循环期间,所述GPU中的每一个经由处理器间链路将第一相应DP结果传送到逻辑环中的下游GPU以在其中进一步处理。
20.根据权利要求19所述的机器可读介质,其中,所述操作还包括:在所述第二DP循环期间,由所述GPU中的每一个经由相应处理器间链路从所述逻辑环中的上游GPU接收第二相应DP结果以用于进一步处理。
CN201980005606.5A 2019-10-12 2019-10-12 利用高级互连技术加速ai训练的方法和系统 Pending CN113272854A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/110814 WO2021068243A1 (en) 2019-10-12 2019-10-12 Method and system for accelerating ai training with advanced interconnect technologies

Publications (1)

Publication Number Publication Date
CN113272854A true CN113272854A (zh) 2021-08-17

Family

ID=75437678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980005606.5A Pending CN113272854A (zh) 2019-10-12 2019-10-12 利用高级互连技术加速ai训练的方法和系统

Country Status (6)

Country Link
US (1) US11544067B2 (zh)
EP (1) EP3830764A1 (zh)
JP (1) JP7256811B2 (zh)
KR (1) KR102472282B1 (zh)
CN (1) CN113272854A (zh)
WO (1) WO2021068243A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118119963A (zh) * 2021-08-16 2024-05-31 百度时代网络技术(北京)有限公司 硬件自适应多模型调度
CN114764942B (zh) * 2022-05-20 2022-12-09 清华大学深圳国际研究生院 一种难正负样本在线挖掘方法和人脸识别方法
CN115250253B (zh) * 2022-06-22 2024-02-27 西南交通大学 带宽感知的归约处理方法以及ai模型的训练方法
EP4361890A1 (en) * 2022-10-31 2024-05-01 Imagination Technologies Limited Implementing a scatter function on a neural network accelerator

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229687A (zh) * 2016-12-14 2018-06-29 腾讯科技(深圳)有限公司 数据处理方法、数据处理装置及电子设备
US20190213039A1 (en) * 2018-01-08 2019-07-11 Accenture Global Solutions Limited Utilizing an artificial intelligence model determined for a target domain based on a dataset associated with a source domain
CN110134636A (zh) * 2018-02-09 2019-08-16 中兴通讯股份有限公司 模型训练方法、服务器和计算机可读存储介质
CN110197275A (zh) * 2018-02-27 2019-09-03 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784966A (ja) * 1993-08-06 1995-03-31 Toshiba Corp データ処理装置
GB2447494A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt A method and circuit for compressing data using a bitmap to identify the location of data values
GB2457303A (en) * 2008-02-11 2009-08-12 Linear Algebra Technologies Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104035751B (zh) * 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
CN104899641B (zh) * 2015-05-25 2018-07-13 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习系统
US10763893B2 (en) * 2016-07-20 2020-09-01 Georges Harik Method for data compression
KR102457463B1 (ko) 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
US10599935B2 (en) * 2017-02-22 2020-03-24 Arm Limited Processing artificial neural network weights
WO2018184224A1 (en) * 2017-04-07 2018-10-11 Intel Corporation Methods and systems for boosting deep neural networks for deep learning
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10403003B2 (en) 2017-04-24 2019-09-03 Intel Corporation Compression mechanism
US10922606B2 (en) 2017-06-13 2021-02-16 International Business Machines Corporation Multi-directional reduction in large scale deep-learning
US10726335B2 (en) * 2017-10-26 2020-07-28 Uber Technologies, Inc. Generating compressed representation neural networks having high degree of accuracy
US11080611B2 (en) 2017-12-22 2021-08-03 Intel Corporation Compression for deep learning in case of sparse values mapped to non-zero value
US11270201B2 (en) * 2017-12-29 2022-03-08 Intel Corporation Communication optimizations for distributed machine learning
US10728091B2 (en) 2018-04-04 2020-07-28 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment
CN109214512B (zh) * 2018-08-01 2021-01-22 中兴飞流信息科技有限公司 一种深度学习的参数交换方法、装置、服务器及存储介质
US11295236B2 (en) * 2018-12-10 2022-04-05 International Business Machines Corporation Machine learning in heterogeneous processing systems
CN209044577U (zh) * 2018-12-27 2019-06-28 北京盛博协同科技有限责任公司 综合显示控制模块
US11501160B2 (en) * 2019-03-28 2022-11-15 International Business Machines Corporation Cloud computing data compression for allreduce in deep learning

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108229687A (zh) * 2016-12-14 2018-06-29 腾讯科技(深圳)有限公司 数据处理方法、数据处理装置及电子设备
US20190213039A1 (en) * 2018-01-08 2019-07-11 Accenture Global Solutions Limited Utilizing an artificial intelligence model determined for a target domain based on a dataset associated with a source domain
CN110134636A (zh) * 2018-02-09 2019-08-16 中兴通讯股份有限公司 模型训练方法、服务器和计算机可读存储介质
CN110197275A (zh) * 2018-02-27 2019-09-03 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品

Also Published As

Publication number Publication date
JP7256811B2 (ja) 2023-04-12
US11544067B2 (en) 2023-01-03
EP3830764A4 (en) 2021-06-09
EP3830764A1 (en) 2021-06-09
KR102472282B1 (ko) 2022-11-29
WO2021068243A1 (en) 2021-04-15
US20210318878A1 (en) 2021-10-14
JP2022504995A (ja) 2022-01-14
KR20210044180A (ko) 2021-04-22

Similar Documents

Publication Publication Date Title
US11544067B2 (en) Accelerating AI training by an all-reduce process with compression over a distributed system
US11544545B2 (en) Structured activation based sparsity in an artificial neural network
US11615297B2 (en) Structured weight based sparsity in an artificial neural network compiler
EP3129870B1 (en) Data parallel processing method and apparatus based on multiple graphic procesing units
WO2017124644A1 (zh) 一种人工神经网络压缩编码装置和方法
US20190325302A1 (en) Implementing parameter server in networking infrastructure for high-performance computing
US11551028B2 (en) Structured weight based sparsity in an artificial neural network
WO2018058426A1 (zh) 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统
WO2019060290A1 (en) DIRECT ACCESS MATERIAL ACCELERATION IN A NEURONAL NETWORK
CN109685201B (zh) 运算方法、装置及相关产品
US20200279133A1 (en) Structured Sparsity Guided Training In An Artificial Neural Network
CN114402293A (zh) 具有持续且异步更新的流水线式神经网络处理
US20210209450A1 (en) Compressed weight distribution in networks of neural processors
US20210201110A1 (en) Methods and systems for performing inference with a neural network
BR112020019457A2 (pt) Multiplicador de matriz-vetor com um arquivo registrador de vetor que compreende uma memória com múltiplas portas
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
CN111353591A (zh) 一种计算装置及相关产品
US11562217B2 (en) Apparatuses and methods for approximating nonlinear function
US11615295B2 (en) Distributed AI training topology based on flexible cable connection
CN113452655A (zh) 一种分布式训练方法、梯度通信方法、装置以及计算设备
Zhou et al. Accelerating distributed deep learning training with compression assisted allgather and reduce-scatter communication
CN111886593A (zh) 数据处理系统和数据处理方法
US11500680B2 (en) Systolic array-friendly data placement and control based on masked write
EP4052188B1 (en) Neural network instruction streaming
US20220067509A1 (en) System and method for learning from partial compressed representation

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
TA01 Transfer of patent application right

Effective date of registration: 20211008

Address after: Baidu building, No. 10, Shangdi 10th Street, Haidian District, Beijing

Applicant after: Kunlun core (Beijing) Technology Co.,Ltd.

Address before: 100080 A2, 2nd floor, building 17, Zhongguancun Software Park, 8 Dongbeiwang West Road, Haidian District, Beijing

Applicant before: BAIDU.COM TIMES TECHNOLOGY (BEIJING) Co.,Ltd.

Applicant before: Baidu (USA) Co.,Ltd.

TA01 Transfer of patent application right