CN115081607A - 基于嵌入算子的反向计算方法、装置、设备以及存储介质 - Google Patents
基于嵌入算子的反向计算方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN115081607A CN115081607A CN202210718629.4A CN202210718629A CN115081607A CN 115081607 A CN115081607 A CN 115081607A CN 202210718629 A CN202210718629 A CN 202210718629A CN 115081607 A CN115081607 A CN 115081607A
- Authority
- CN
- China
- Prior art keywords
- precision
- data
- calculated
- atomic
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000012856 packing Methods 0.000 claims description 3
- 238000013135 deep learning Methods 0.000 abstract description 6
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 238000003058 natural language processing Methods 0.000 description 5
- 238000002474 experimental method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了基于嵌入算子的反向计算方法、装置、设备以及存储介质,涉及人工智能技术领域,尤其涉及深度学习领域。具体实现方案为:获取索引张量和待计算梯度表,其中,所述索引张量包括多个元素,每个元素对应一个索引号,所述待计算梯度表存储有待计算数据;根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表,其中,所述预设规则与所述待计算数据的数据类型有关。本申请能够提高图形处理器GPU的利用率,有效提高计算性能。
Description
技术领域
本公开涉及人工智能技术领域,具体涉及深度学习领域,尤其涉及基于嵌入算子的反向计算方法、装置、设备、存储介质以及计算机程序产品。
背景技术
Embedding层(嵌入层)为可以将字母、单词等文本符号表示为计算机能处理且能起到语义表示作用的词向量。Embedding算子是自然语言处理领域(NLP)的诸多深度学习模型中最常使用的算子。近年来,图形处理器GPU凭借其强大的计算吞吐和带宽能力,已成为深度学习模型训练部署最常用的硬件。
发明内容
本公开提供了一种基于嵌入算子的反向计算方法、装置、设备、存储介质以及计算机程序产品,提高了GPU的利用率,有效缓解了写冲突问题。
根据本公开的一方面,提供了一种基于嵌入算子的反向计算方法,包括:获取索引张量和待计算梯度表,其中,所述索引张量包括多个元素,每个元素对应一个索引号,所述待计算梯度表存储有待计算数据;根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表,其中,所述预设规则与所述待计算数据的数据类型有关
根据本公开的另一方面,提供了一种基于嵌入算子的反向计算装置,包括:获取单元,被配置为获取索引张量和待计算梯度表,其中,所述索引张量包括多个元素,每个元素对应一个索引号,所述待计算梯度表存储有待计算数据;反向计算单元,被配置为根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表,其中,所述预设规则与所述待计算数据的数据类型有关。
根据本公开的又一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行上述基于嵌入算子的反向计算方法。
根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行上述基于嵌入算子的反向计算方法。
根据本公开的再一方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现上述基于嵌入算子的反向计算方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的反向计算的过程示意图;
图2是根据本公开第一实施例的基于嵌入算子的反向计算方法的流程图;
图3是根据本公开实施例的前向计算的过程示意图;
图4是根据本公开第二实施例的基于嵌入算子的反向计算方法的流程图;
图5是根据本公开第三实施例的基于嵌入算子的反向计算方法的流程图;
图6是根据本公开实施例的对单精度fp32类型的反向计算的验证比较示意图;
图7是根据本公开实施例的对半精度fp16类型的反向计算的验证比较示意图;
图8是根据本公开又一个实施例提出的基于嵌入算子的反向计算装置的框图;
图9是用来实现本公开实施例的基于嵌入算子的反向计算方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
Embedding算子实际上是一种查表操作,其包括前向计算和反向计算,是自然语言处理领域(NLP)的诸多深度学习模型中最常使用的算子。然而,如图1所示,在反向计算时,输出梯度out_grad的每一行向量根据索引张量index中的索引号累加至输出词表梯度table_grad的相应行时,由于索引张量index中可能存在重复的索引号,当不同线程处理的索引号相同时会存在写冲突的问题。现有技术中,利用Pytorch深度学习框架、PaddlePaddle深度学习框架以及Tensorflow深度学习框架中的Embedding算子进行反向计算,通过采用共享内存或原子指令的方式处理块内写冲突,然而存在对于某些类型的数据,其计算性能不佳的问题。
为此,本公开从已有方案的不足出发,提出一种基于嵌入算子的反向计算方法,参考图2,其示出了根据本公开的基于嵌入算子的反向计算方法的一个实施例的流程200。该方法包括以下步骤:
步骤201、获取索引张量和待计算梯度表,其中,索引张量包括多个元素,每个元素对应一个索引号,待计算梯度表存储有待计算数据。
为加深对反向计算的理解,本实施例首先结合前向计算的过程对反向计算的过程进行说明。图3示出了前向计算的计算过程,其输入为索引张量index和词表向量table,输出为out;其中,index的维度为查询次数[num_indices],需要说明的是,索引张量也可以为多维,但底层实现时可展开成一维进行计算,故本实施例中以一维为例,索引张量包括多个元素,每个元素对应一个索引号;table是词表向量,其维度为[vocab_size,embed_dim],其中,vocab_size为词表长度,embed_dim为嵌入长度,词表向量table中存储着每一个索引对应的词向量。在前向计算时,将index中的每一个索引号所对应的table中的向量复制到输出out中,最终输出out的维度为[num_indices,embed_dim]。
步骤202、根据索引号将待计算数据按照预设规则输出,得到词表梯度表,其中,预设规则与待计算数据的数据类型有关。
在本实施例中,反向计算时,将上述前向计算的输出out的梯度out_grad和索引张量index作为输入,输出输出out的梯度out_grad的每一行向量根据index中的索引号累加到输出table_grad的相应行中。其中,table_grad记为词表梯度表;前向计算的输出out的梯度out_grad记为待计算梯度表,待计算梯度表存储有待计算数据。
本实施例提供的基于嵌入算子的反向计算方法,首先获取索引张量和待计算梯度表,其次,根据索引号将待计算数据按照预设规则输出,得到词表梯度表,其中,预设规则与待计算数据的数据类型有关,即根据不同的数据类型调用不同的原子加指令,能够缓解反向计算时的写冲突问题。
进一步参见图4,其示出了根据本公开的基于嵌入算子的反向计算方法的另一个实施例的流程400。该反向计算方法包括以下步骤:
步骤401、获取索引张量和待计算梯度表,其中,索引张量包括多个元素,每个元素对应一个索引号,待计算梯度表存储有待计算数据。
在本实施例中,步骤401具体操作已在图2所示的实施例中步骤201进行了详细的介绍,在此不再赘述。
步骤402、确定待计算数据的数据类型。
在本实施例中,待计算数据的数据类型包括半精度fp16、单精度fp32以及双精度fp64。
步骤403、根据数据类型调用相应的原子指令,对待计算数据进行计算,得到词表梯度表。
在本实施例中,为了提高原子计算速度,GPU在硬件层面添加了越来越多的支持,并提供对应原子指令接口供用户使用。本实施例中,原子指令包括双精度原子加指令atomicAdd(double*)、单精度原子加指令atomicAdd(float*)、半精度原子加指令atomicAdd(half_*)以及向量半精度原子加指令,本实施例中依据待计算数据的数据类型,调用相应的原子指令进行计算,能够缓解写冲突问题。
需要说明的是,上述原子指令是示例性的,不构成对原子指令的具体限定,本领域技术人员能够依据实际情况对不同的待计算数据的数据类型,调用相应的原子指令进行计算。
进一步参见图5,其示出了根据本公开的基于嵌入算子的反向计算方法的另一个实施例的流程500。该反向计算方法包括以下步骤:
步骤501、获取索引张量和待计算梯度表,其中,索引张量包括多个元素,每个元素对应一个索引号,待计算梯度表存储有待计算数据。
在本实施例中,步骤501具体操作已在图2所示的实施例中步骤201进行了详细的介绍,在此不再赘述。
步骤502、确定待计算数据的数据类型。
在本实施例中,步骤502具体操作已在图4所示的实施例中步骤402进行了详细的介绍,在此不再赘述。
步骤503、响应于数据类型为非fp16,调用与数据类型一致的原子指令进行原子加操作,得到词表梯度表,其中,当数据类型为fp32时,调用单精度原子加指令;当数据类型为fp64时,调用双精度原子加指令。
在本实施例中,对待计算数据的数据类型进行判断,若当前数据类型为非fp16,即数据类型为fp32或fp64时,由于单精度原子加指令和双精度原子加指令性能良好,能够缓解反向计算中的写冲突问题。因此,本实施例中,当数据类型为fp32时,调用单精度原子加指令;当数据类型为fp64时,调用双精度原子加指令。
步骤504、响应于数据类型为fp16以及待计算数据所处的当前行的首地址为32字节对齐,将待计算数据中相邻的两个半精度元素打包,得到向量半精度元素;调用向量半精度原子加指令对向量半精度元素进行原子加操作,得到词表梯度表。
fp16类型的数据性能不佳主要是由于半精度原子加指令性能比较差导致的,而向量半精度原子加指令的性能比较好。基于这一发现,本实施例中采取将半精度原子加指令atomicAdd(half*)转换成向量半精度原子加指令atomicAdd(half_2*)的思路对反向计算进行优化。
其中,当数据类型为fp16并且数据所处的当前行的首地址为32字节对齐时,即首地址能够整除32时为32字节对齐,通过将计算数据中相邻的两个半精度元素打包的方式得到向量半精度元素,从而调用性能较好的向量半精度原子加指令,得到词表梯度表,有效缓解了写冲突问题,优化了反向计算的性能。
步骤505、响应于数据类型为fp16以及待计算数据所处的当前行的首地址为32字节不对齐,对待计算数据中的半精度元素进行零填充,得到向量半精度元素;调用向量半精度原子加指令对向量半精度元素进行原子加操作,得到词表梯度表,其中,向量半精度元素包括半精度元素和0。
本实施例中,由于数据类型为fp16,同样采取将半精度原子加指令atomicAdd(half*)转换成向量半精度原子加指令atomicAdd(half_2*)的思路对反向计算进行优化。
本领域技术人员应当明了,当前行首地址不是32字节对齐时,即首地址不能整除32时,若直接打包会因为不对齐导致调用atomicAdd(half_2*)计算时的性能不佳。此时,本申请中以该行的每一个元素为单位,将每一个半精度half元素直接拓展成一个向量半精度half_2元素,其中,half_2中的另一个元素使用零进行填充,进而调用atomicAdd(half_2*)指令进行计算。
需要说明的是,在实际中,由于索引张量中embed_dim通常取值为偶数,例如768、1024和4096。也就是说,若输出的首地址是32字节对齐的,则每一行首地址也能够保证32字节对齐,因此,在实际应用中,上述直接将相邻的两个半精度元素打包的方式最为常见。
本申请通过将性能不佳的atomicAdd(half*)指令转换成性能良好的atomicAdd(half_2*)原子指令,能够实现在数据类型为fp16时获得良好的计算性能,并缓解了写冲突问题。
此外,本申请提出的基于嵌入算子的反向计算方法在图形处理器GPU上执行。本领域技术人员应当明了,GPU(Graphics Processing Unit)是一种异构加速处理器,是当前深度学习训练的主要硬件平台。通常由流多处理器(SM)、全局显存(global memory)、共享显存(share memory)和总线接口等组成。
其中,流多处理器SM是GPU上主要的计算资源,一个SM通常由多个流处理器(SP)组成。在软件层面,为方便并行编程,硬件厂商提供一些并行编程模型。以NVIDIA CUDA为例,CUDA对硬件的并行进行了多层次抽象,提供了网格(grid)和线程块(threadblock)等概念。网格对应GPU上运行的kernel(核)函数。一个网格由多个线程块组成,一个线程块上有多个线程。其中,线程块与硬件的SM是相对应的,一个SM能够同时处理多个线程块,在底层,每个线程块会被调度到一个特定的SM上,直到执行完成才会退出。
在本实施例中,GPU包括多个线程块,每个线程块包括多个线程。例如,在并行编程时,用户可以通过配置线程块和块内线程数的大小来控制并行执行的总线程数。配置时,CUDA允许最多三个维度的设置,比如设置线程块为(8,8,8)代表x,y和z方向分别配置8个线程,即一共512个线程。
在本实施例中,采用的任务划分策略为:让一个线程块处理index中一个元素的查表;同一个线程块内的多个线程协作完成table中的一行数据的操作,从而提高反向计算时的并行性能,即通过线程块对索引张量中多个元素以及待计算数据进行处理;通过线程块内的多个线程得到词表梯度表中的数据,得到词表梯度表。
为了提高GPU的利用率,本申请对线程块数进行重新配置,定义流多处理器SM的数量为M,以及线程块的数量与元素数量相同为N,流多处理器的数量与线程块的数量满足N=2M。例如,当流多处理器SM的数量为40时,GPU中能够配置80个线程块;当流多处理器SM的数量为50时,GPU中能够配置100个线程块。
需要说明的是上述线程块和流多处理器的数量是示例性的,本领域技术人员能够依据GPU中计算资源设置合理的配置方式,相比之前固定的线程块数值,能够保证在具有不同流多处理器SM数目的架构下,灵活设置线程块的数量,从而减少SM空闲的数量,提高GPU的利用率。
下面对本申请提出的基于嵌入算子的反向计算方法进行验证,具体的,选用PaddlePaddle框架,并设计了两组实验分别展示Embedding算子本身的优化效果及在应用中的性能提升情况。其中,实验测试环境是NVIDIA A100GPU,其显存是80GB,CUDA版本是CUDA11.6。
(1)第一组实验:Embedding算子的优化效果
在该组实验中,固定embed_dim和vocab_size的大小分别为1024和30522,变化index的查询次数从[56,28672]进行取值。对fp32和fp16数据类型的反向计算进行性能验证。
如图6所示,当输入数据为fp32类型时,相比PaddlePaddle已有(PaddlePaddle-before)Embedding实现,性能获得0.99-1.51x提升,该性能提升主要是由于重新对线程块数目进行配置,提高了GPU利用率;相比Tensorflow(Tensorflow),获得性能比较大,很多case下都超过了50倍,最大可达60多倍,这主要是由于不当的任务划分导致的并行度不够造成的;相比Pytorch Embedding(Pytorch)获得了0.94-1.97x提升,该性能收益主要来自于两者处理写冲突采用了不同的方法。并且观察到,由于GPU硬件底层对fp32原子指令的支持越来越好,使用原子指令的方法相比基于排序的方法在大多数情况下更有潜力取得更佳性能。
如图7所示,当输入数据为fp16类型时,本文的优化相比已有工作也带来了很大的性能提升:相比PaddlePaddle优化前提升了1.67-37.3x,相比Pytorch Embedding实现获得了5.72-19.2x加速;相比Tensorlow Embedding实现获取的提升更大一些,很多case下都超过了50倍,最大可达100多倍,这体现了充分利用硬件实现的高效原子指令相比软件模拟实现的优势。
(2)第二组实验:在bert-large模型中验证性能效果
接下来使用PaddlePaddle框架在bert-large模型中验证Embedding算子在实际应用中的性能提升情况。使用来自wikipedia-2020的数据集进行训练任务。在Bert-large模型中,设置批大小(batch_size)、序列长度(seq_len)、和embed_dim分别为56,512和1024。该模型中一共有三处Embedding层,三层具有相同的检索次数n_indices(值为batch_size*seq_len),但三层的词表长度vocab_size不同,分别设置为30522,512和2。此外,使用混合精度模式进行训练,即除sum和mean之外的所有算子,都使用fp16进行计算。
表1展示了最终的性能效果,能够看到,在使用本申请提出的反向计算优化前,Embedding算子耗时达到了模型总耗时的9.1%左右,严重影响了模型的训练吞吐。使用优化后,在模型中的耗时占比从9.1%降到了0.5%,模型吞吐量获得约10.9%提升。
表1
Embedding算子耗时占比 | 吞吐量(seq/s) | |
优化前 | 9.1% | 169.6 |
优化后 | 0.5% | 298.9 |
性能提升 | -8.6% | +10.9% |
上述验证,进一步说明,本申请的基于嵌入算子的反向计算方法能够在一定程度上提高GPU上Embedding算子反向计算的并行实现的性能以及提高NLP模型的训练吞吐量。
进一步参考图8,作为对上述各图所示方法的实现,本公开提供了一种基于嵌入算子的反向计算装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,本实施例的反向计算装置600可以包括获取单元601,反向计算单元602。其中,获取单元,被配置为获取索引张量和待计算梯度表,其中,索引张量包括多个元素,每个元素对应一个索引号,待计算梯度表存储有待计算数据;反向计算单元,被配置为根据索引号将所计算数据按照预设规则输出,得到词表梯度表,其中,预设规则与待计算数据的数据类型有关。
在本实施例中,反向计算装置600中:获取单元601和反向计算单元602的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤200-202的相关说明,在此不再赘述。
在本实施例的一些可选实现方式中,反向计算单元602包括:数据类型确定模块,被配置为确定待计算数据的数据类型;调用模块,被配置为根据数据类型调用相应的原子指令,对待计算数据进行计算,得到词表梯度表。
在本实施例的一些可选实现方式中,数据类型包括半精度fp16、单精度fp32以及双精度fp64;原子指令包括单精度原子加指令、双精度原子加指令、半精度原子加指令以及向量半精度原子加指令。
在本实施例的一些可选实现方式中,调用模块包括:第一调用子模块,被配置为响应于数据类型为非fp16,调用与数据类型一致的原子指令进行原子加操作,得到词表梯度表,其中,
当数据类型为fp32时,调用单精度原子加指令;
当数据类型为fp64时,调用双精度原子加指令。
在本实施例的一些可选实现方式中,调用模块包括:第二调用子模块,被配置为响应于数据类型为fp16以及待计算数据所处的当前行的首地址为32字节对齐,
将待计算数据中相邻的两个半精度元素打包,得到向量半精度元素;
调用向量半精度原子加指令对向量半精度元素进行原子加操作,得到词表梯度表。
在本实施例的一些可选实现方式中,第三调用子模块,被配置为响应于数据类型为fp16以及待计算数据所处的当前行的首地址为32字节不对齐,
对待计算数据中的半精度元素进行零填充得到向量半精度元素;
调用向量半精度原子加指令对向量半精度元素进行原子加操作,得到词表梯度表,其中,向量半精度元素包括半精度元素和0。
在本实施例的一些可选实现方式中,该反向计算装置还包括图形处理器GPU,其中,GPU包括多个线程块,每个线程块包括多个线程,其中,
线程块被配置为对索引张量中多个元素以及待计算数据进行处理;
线程块内的多个线程被配置为得到词表梯度表中的数据,得到词表梯度表。
在本实施例的一些可选实现方式中,GPU还包括流多处理器,线程块被调度至流多处理器上,其中,流多处理器的数量为M,线程块的数量与元素数量相同为N,流多处理器的数量与线程块的数量满足N=2M。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图9示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图9所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如基于嵌入算子的反向计算方法。例如,在一些实施例中,方法基于嵌入算子的反向计算方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的基于嵌入算子的反向计算方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法基于嵌入算子的反向计算方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (19)
1.一种基于嵌入算子的反向计算方法,包括:
获取索引张量和待计算梯度表,其中,所述索引张量包括多个元素,每个元素对应一个索引号,所述待计算梯度表存储有待计算数据;
根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表,其中,所述预设规则与所述待计算数据的数据类型有关。
2.根据权利要求1所述的方法,其中,所述根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表包括:
确定所述待计算数据的数据类型;
根据所述数据类型调用相应的原子指令,对所述待计算数据进行计算,得到所述词表梯度表。
3.根据权利要求2所述的方法,其中,所述数据类型包括半精度、单精度以及双精度;所述原子指令包括单精度原子加指令、双精度原子加指令、半精度原子加指令以及向量半精度原子加指令。
4.根据权利要求3所述的方法,其中,所述根据所述数据类型调用相应的原子指令包括:
响应于所述数据类型为非半精度时,调用与所述数据类型一致的原子指令进行原子加操作,得到所述词表梯度表,其中,
当数据类型为单精度时,调用单精度原子加指令;
当数据类型为双精度时,调用双精度原子加指令。
5.根据权利要求3所述的方法,其中,根据所述数据类型调用相应的原子指令包括:
响应于所述数据类型为半精度以及所述待计算数据所处的当前行的首地址为32字节对齐,
将所述待计算数据中相邻的两个半精度元素打包,得到向量半精度元素;
调用所述向量半精度原子加指令对所述向量半精度元素进行原子加操作,得到所述词表梯度表。
6.根据权利要求3所述的方法,其中,根据所述数据类型调用相应的原子指令包括:
响应于所述数据类型为半精度以及所述待计算数据所处的当前行的首地址为32字节不对齐,
对所述待计算数据中的半精度元素进行零填充,得到向量半精度元素;
调用向量半精度原子加指令对所述向量半精度元素进行原子加操作,得到所述词表梯度表,其中,所述向量半精度元素包括所述半精度元素和0。
7.根据权利要求1-6中任一项所述的方法,在图形处理器GPU上执行,其中,所述GPU包括多个线程块,每个所述线程块包括多个线程,所述根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表包括:
通过所述线程块对所述索引张量中多个元素以及待计算数据进行处理;
通过所述线程块内的多个线程得到所述词表梯度表中的数据,得到词表梯度表。
8.根据权利要求7所述的方法,其中,所述GPU还包括流多处理器,所述线程块被调度至所述流多处理器上,其中,所述流多处理器的数量为M,所述线程块的数量与所述元素数量相同为N,所述流多处理器的数量与所述线程块的数量满足N=2M。
9.一种基于嵌入算子的反向计算装置,包括:
获取单元,被配置为获取索引张量和待计算梯度表,其中,所述索引张量包括多个元素,每个元素对应一个索引号,所述待计算梯度表存储有待计算数据;
反向计算单元,被配置为根据所述索引号将所述待计算数据按照预设规则输出,得到词表梯度表,其中,所述预设规则与所述待计算数据的数据类型有关。
10.根据权利要求9所述的装置,其中,所述反向计算单元包括:
数据类型确定模块,被配置为确定所述待计算数据的数据类型;
调用模块,被配置为根据所述数据类型调用相应的原子指令,对所述待计算数据进行计算,得到所述词表梯度表。
11.根据权利要求10所述的装置,其中,所述数据类型包括半精度、单精度以及双精度;所述原子指令包括单精度原子加指令、双精度原子加指令、半精度原子加指令以及向量半精度原子加指令。
12.根据权利要求11所述的装置,其中,所述调用模块包括:
第一调用子模块,被配置为响应于所述数据类型为非半精度时,调用与所述数据类型一致的原子指令进行原子加操作,得到所述词表梯度表,其中,
当数据类型为单精度时,调用单精度原子加指令;
当数据类型为双精度时,调用双精度原子加指令。
13.根据权利要求11所述的装置,其中,所述调用模块包括:
第二调用子模块,被配置为响应于所述数据类型为半精度以及所述待计算数据所处的当前行的首地址为32字节对齐,
将所述待计算数据中相邻的两个半精度元素打包,得到向量半精度元素;调用所述向量半精度原子加指令对所述向量半精度元素进行原子加操作,得到所述词表梯度表。
14.根据权利要求11所述的装置,其中,所述调用模块包括:
第三调用子模块,被配置为响应于所述数据类型为半精度以及所述待计算数据所处的当前行的首地址为32字节不对齐,
对所述待计算数据中的半精度元素进行零填充得到向量半精度元素;
调用向量半精度原子加指令对所述向量半精度元素进行原子加操作,得到所述词表梯度表,其中,所述向量半精度元素包括所述半精度元素和0。
15.根据权利要求9-14中任一项所述的装置,还包括图形处理器GPU,其中,所述GPU包括多个线程块,每个所述线程块包括多个线程,其中,
所述线程块被配置为对所述索引张量中多个元素以及待计算数据进行处理;
所述线程块内的多个线程被配置为得到所述词表梯度表中的数据,得到词表梯度表。
16.根据权利要求15所述的装置,其中,所述GPU还包括流多处理器,所述线程块被调度至所述流多处理器上,其中,所述流多处理器的数量为M,所述线程块的数量与所述元素数量相同为N,所述流多处理器的数量与所述线程块的数量满足N=2M。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210718629.4A CN115081607A (zh) | 2022-05-19 | 2022-05-19 | 基于嵌入算子的反向计算方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210718629.4A CN115081607A (zh) | 2022-05-19 | 2022-05-19 | 基于嵌入算子的反向计算方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115081607A true CN115081607A (zh) | 2022-09-20 |
Family
ID=83255515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210718629.4A Pending CN115081607A (zh) | 2022-05-19 | 2022-05-19 | 基于嵌入算子的反向计算方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115081607A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115759294A (zh) * | 2022-11-25 | 2023-03-07 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990687B1 (en) * | 2017-01-19 | 2018-06-05 | Deep Learning Analytics, LLC | Systems and methods for fast and repeatable embedding of high-dimensional data objects using deep learning with power efficient GPU and FPGA-based processing platforms |
US20180204117A1 (en) * | 2017-01-19 | 2018-07-19 | Google Inc. | Dynamic-length stateful tensor array |
CN111737193A (zh) * | 2020-08-03 | 2020-10-02 | 深圳鲲云信息科技有限公司 | 数据存储方法、装置、设备和存储介质 |
CN111796797A (zh) * | 2020-06-04 | 2020-10-20 | 中国科学院信息工程研究所 | 一种利用ai加速器实现环上多项式乘法计算加速的方法和装置 |
WO2021234577A1 (en) * | 2020-05-21 | 2021-11-25 | Element Ai Inc. | Method of and system for training machine learning algorithm for object classification |
CN114281755A (zh) * | 2021-12-30 | 2022-04-05 | 中国人民解放军国防科技大学 | 一种面向向量处理器的半精度向量化卷积方法及系统 |
-
2022
- 2022-05-19 CN CN202210718629.4A patent/CN115081607A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990687B1 (en) * | 2017-01-19 | 2018-06-05 | Deep Learning Analytics, LLC | Systems and methods for fast and repeatable embedding of high-dimensional data objects using deep learning with power efficient GPU and FPGA-based processing platforms |
US20180204117A1 (en) * | 2017-01-19 | 2018-07-19 | Google Inc. | Dynamic-length stateful tensor array |
WO2021234577A1 (en) * | 2020-05-21 | 2021-11-25 | Element Ai Inc. | Method of and system for training machine learning algorithm for object classification |
CN111796797A (zh) * | 2020-06-04 | 2020-10-20 | 中国科学院信息工程研究所 | 一种利用ai加速器实现环上多项式乘法计算加速的方法和装置 |
CN111737193A (zh) * | 2020-08-03 | 2020-10-02 | 深圳鲲云信息科技有限公司 | 数据存储方法、装置、设备和存储介质 |
CN114281755A (zh) * | 2021-12-30 | 2022-04-05 | 中国人民解放军国防科技大学 | 一种面向向量处理器的半精度向量化卷积方法及系统 |
Non-Patent Citations (1)
Title |
---|
张随雨;杨成;: "一种多标签统一域嵌入的推荐模型", 哈尔滨工业大学学报, no. 05, 10 May 2020 (2020-05-10) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115759294A (zh) * | 2022-11-25 | 2023-03-07 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115759294B (zh) * | 2022-11-25 | 2023-10-24 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112561079A (zh) | 分布式的模型训练装置、方法及计算机程序产品 | |
CN114911465B (zh) | 算子的生成方法、装置、设备以及存储介质 | |
US10572463B2 (en) | Efficient handling of sort payload in a column organized relational database | |
CN114120414B (zh) | 图像处理方法、装置、电子设备和介质 | |
CN115150471A (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
CN113570033A (zh) | 神经网络处理单元、神经网络的处理方法及其装置 | |
CN115203126A (zh) | 一种算子融合处理方法、装置、设备及存储介质 | |
CN116451174A (zh) | 任务执行装置、方法、电子设备和存储介质 | |
CN115421922A (zh) | 一种分布式系统的限流方法、装置、设备、介质及产品 | |
US11354573B2 (en) | Dynamically resizing minibatch in neural network execution | |
CN115081607A (zh) | 基于嵌入算子的反向计算方法、装置、设备以及存储介质 | |
KR102686643B1 (ko) | 애플릿 페이지 렌더링 방법, 장치, 전자 설비 및 저장 매체 | |
CN117273069A (zh) | 一种基于神经网络模型的推理方法、装置、设备及介质 | |
CN114817845B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115904240A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN111143461A (zh) | 映射关系处理系统、方法和电子设备 | |
CN115688917A (zh) | 神经网络模型的训练方法、装置、电子设备及存储介质 | |
CN113642654B (zh) | 图像特征的融合方法、装置、电子设备和存储介质 | |
CN115629879A (zh) | 分布式模型训练的负载均衡方法和装置 | |
CN115438007A (zh) | 一种文件合并方法、装置、电子设备及介质 | |
CN114090247A (zh) | 用于处理数据的方法、装置、设备以及存储介质 | |
CN113361621A (zh) | 用于训练模型的方法和装置 | |
CN113408304A (zh) | 文本翻译方法、装置、电子设备及存储介质 | |
CN115034198B (zh) | 语言模型中嵌入模块计算优化的方法 | |
CN113570034B (zh) | 处理装置、神经网络的处理方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |