CN115860049A - 一种数据调度方法和设备 - Google Patents
一种数据调度方法和设备 Download PDFInfo
- Publication number
- CN115860049A CN115860049A CN202310189143.0A CN202310189143A CN115860049A CN 115860049 A CN115860049 A CN 115860049A CN 202310189143 A CN202310189143 A CN 202310189143A CN 115860049 A CN115860049 A CN 115860049A
- Authority
- CN
- China
- Prior art keywords
- neural network
- accelerator card
- memory
- hardware accelerator
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据调度方法,用于服务器将样本下发的硬件加速卡进行计算,以及相应的设备。根据本发明的硬件加速卡的数据调度方法包括循环神经网络接收步骤、样本处理信息接收步骤、循环神经网络执行步骤、计算完成消息上报步骤。根据本发明的服务器的数据调度方法包括循环神经网络模型确定步骤、加速卡可执行的指令生成步骤、循环神经网络注册步骤、样本处理信息下发步骤、计算完成消息接收步骤。本发明的方法和设备能够避免服务器频繁对每个元素的数据进行调度,降低输出延时。
Description
技术领域
本发明涉及数据调度方法和设备,尤其涉及用于神经网络的数据调度方法和设备。
背景技术
机器学习等人工智能算法目前已广泛应用于计算机视觉(CV)、自然语言处理(NLP)、语音识别等领域。然而,人工智能算法所需的数据量大,计算繁重,对部署人工智能算法的硬件提出了非常高的要求。通用型CPU或GPU已日益不能满足人工智能算法对算力的需要。因此,业界开始使用专用的人工智能芯片和人工智能硬件加速卡,以提高人工智能算法的整体运行效率。网络服务提供商常在服务器端部署人工智能加速卡,其完成的功能包括训练和推理等。训练是指训练算法模型的过程,通常要求高精度,对速度的要求不如推理严格。推理是指利用已经训练好的模型推理出结论的过程,可能发生于服务器与用户交互的过程中,因而要求更快的处理速度和更低的延时。
人工神经网络简称神经网络,是一种常见的机器学习模型。神经网络可以采用多种结构,例如卷积神经网络(CNN)、循环神经网络(RNN)等。其中,循环神经网络中的隐藏层的节点之间具备反馈,更适合于处理时序数据。因此,自然语言处理、语音识别等领域较多应用了循环神经网络。以自然语言处理为例,如果待处理的信息是一个句子,对于一个包括m个词(word)的句子,循环神经网络需要执行m次,m可以称为循环次数。在一次循环中,m个词中的一个作为输入数据输入到输入层,经过一个或多个隐藏层的计算后,由输出层输出。业界已经提出了多种循环神经网络模型,例如简单循环网络(SRN)模型、Transformer模型、长短期记忆网络(LSTM)模型等等,以适应不同的应用场景和要求。
现有的部署了人工智能加速卡的服务器(host)中,服务器的处理器根据神经网络的模型生成可由加速卡运行的指令,从服务器系统内存中读取待处理的数据,并且将指令与待处理的数据一起通过系统总线发送给人工智能加速卡。加速卡根据接收到的指令对数据进行处理,之后再将结果存储到服务器系统内存。如果运行的模型是循环神经网络,以自然语言处理为例,则在执行m次循环之中的每一次循环(例如处理m个词中的每一个词)时,服务器都需要将对应句子中的第m个词的数据下发到加速卡,计算完成后,加速卡再将对应第m个词的计算结果上报服务器。数据在服务器与加速卡之间传递所耗费的时间远远大于加速卡实际进行计算的时间。这样的数据调度流程导致调度时间长,输入到输出的延时大,严重限制了循环神经网络在要求低延时的领域的应用。
发明内容
鉴于此,本发明提供一种数据调度方法,用于服务器将样本下发的硬件加速卡进行计算,以及相应的设备。
根据本发明的一个方面,提供了一种硬件加速卡的数据调度方法,用于所述硬件加速卡从服务器接收样本和向所述服务器上报样本计算结果,所述样本包括多个元素,该方法包括:循环神经网络接收步骤,其接收所述服务器下发的循环神经网络的信息,所述循环神经网络的信息包括硬件加速卡可执行的指令以及循环神经网络模型,所述指令用于执行所述循环神经网络;样本处理信息接收步骤,其接收所述服务器下发的样本处理信息,所述样本处理信息包括输入内存的地址和输出内存的地址,所述输入内存和所述输出内存位于所述硬件加速卡;循环神经网络执行步骤,其执行所述循环神经网络,对所述输入内存中存储的样本执行所述指令,并将计算结果保存到所述输出内存;计算完成消息上报步骤,其向所述服务器上报计算完成消息。
根据本发明的一个方面,提供了一种硬件加速卡,所述硬件加速卡从服务器接收样本并向所述服务器上报样本计算结果,所述样本包括多个元素,该硬件加速卡包括:循环神经网络接收模块,其被配置为,接收所述服务器下发的循环神经网络的信息,所述循环神经网络的信息包括硬件加速卡可执行的指令以及循环神经网络模型,所述指令用于执行所述循环神经网络;样本处理信息接收模块,其被配置为,接收所述服务器下发的样本处理信息,所述样本处理信息包括输入内存的地址和输出内存的地址,所述输入内存和所述输出内存位于所述硬件加速卡;循环神经网络执行模块,其被配置为,执行所述循环神经网络,对所述输入内存中存储的样本执行所述指令,并将计算结果保存到所述输出内存;计算完成消息上报模块,其被配置为,向所述服务器上报计算完成消息。
根据本发明的一个方面,提供了一种服务器的数据调度方法,所述服务器向硬件加速卡发送样本,所述样本包括多个元素,该方法包括:循环神经网络模型确定步骤,其确定循环神经网络模型;硬件加速卡可执行的指令生成步骤,其编译所述循环神经网络模型,将需要重复执行的指令按一次循环展开,生成硬件加速卡可执行的指令;循环神经网络注册步骤,其将所述指令和所述循环神经网络模型发放到所述硬件加速卡;样本处理信息下发步骤,其将样本处理信息下发到加速卡,并将完整的样本存入输入内存,所述样本处理信息包括所述输入内存的地址和输出内存的地址,所述输入内存和所述输出内存位于所述硬件加速卡;计算完成消息接收步骤,其接收所述硬件加速卡上报的计算完成消息。
根据本发明的一个方面,提供了一种服务器,所述服务器向硬件加速卡发送样本,所述样本包括多个元素,该服务器包括:循环神经网络模型确定模块,其被配置为,确定循环神经网络模型;硬件加速卡可执行的指令生成模块,其被配置为,编译所述循环神经网络模型,生成硬件加速卡可执行的指令;循环神经网络注册模块,其被配置为,将所述硬件加速卡可执行的指令和循环神经网络模型发放到所述硬件加速卡;样本处理信息下发模块,其被配置为,将样本处理信息下发到加速卡,并将完整样本存入输入内存,该样本处理信息包括输入内存和输出内存的地址,所述输入内存和输出内存位于所述硬件加速卡;计算完成消息接收模块,其被配置为,接收所述硬件加速卡上报的计算完成消息。
根据本发明的一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,用于执行上述数据调度方法。
根据本发明的方法和设备能够避免服务器频繁对每个元素的数据进行调度,大大节约了服务器时间,降低了输出延时。此外,由于加速卡可执行的指令按一次循环展开,展开后的指令总长度大幅缩小,避免了很多无效计算,而且指令更有可能保存在加速卡处理器的缓存器中,从而减少了对内存的访问,降低了延时。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,但并不构成对本申请技术方案的限制。
图1为根据本发明的数据调度方法的服务器侧的流程图;
图2为根据本发明的数据调度方法的加速卡侧的流程图;
图3为示出根据本发明的数据调度方法的框图。
具体实施方式
下面将参照附图来详细描述本发明的各种示例性实施例。对示例性实施例的描述仅仅是说明性的,并不作为对本发明及其应用或使用的任何限制。本发明可以以许多不同的形式实现,不限于这里所述的实施例。提供这些实施例是为了使本发明透彻且完整,并且向本领域技术人员充分表达本发明的范围。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置和数值应被解释为仅仅是示例性的,而不是作为限制。
除非上下文另外明确地表明,如果未特意限定要素的数量,则该要素可以是一个也可以是多个。如本说明书使用的,术语“多个/若干”意指两个或更多,并且术语“基于”应解释为“至少部分地基于”。此外,术语“和/或”以及“……中的至少一个”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
另外,本说明书中有涉及“第一”、“第二”等的描述,该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。
根据本发明的方法,服务器将样本下发到硬件加速卡,由加速卡对其进行计算,并将计算结果上报服务器。该样本包括多个元素。为描述方便,本说明书以对一个句子的自然语言处理为例,描述本发明的数据调度方法。服务器将完整的句子作为样本下发到加速卡,句子中的每一个词作为样本的元素。这里所称的句子包括自然语言句子,也可以包括可被神经网络识别的经过抽象的句子。本文中,样本有时也称为句子,元素有时也称为词。
对于一个包括m个词(word)的句子,如果以Transformer模型中的编码器(Encoder)对其进行处理,则需要对完整的句子进行n次计算,n为该模型中编码器块(block)的个数,也即,n为循环次数。在一次循环中,该句子或上一个编码器块的输出的作为输入数据输入。
对于一个包括m个词(word)的句子,如果以Transformer模型中的解码器(Decoder)或长短期记忆网络(LSTM)对其进行处理,则循环神经网络需要执行m次。在一次循环中,m个词中的一个作为输入数据输入。循环神经网络的具体实现方式为本领域所知,在此不再赘述。
参考图1和图3,图1示出了根据本发明的数据调度方法的服务器侧的流程,图3为示出根据本发明的数据调度方法的框图。
在步骤S110,服务器确定所使用的循环神经网络模型。循环神经网络模型可以由服务器所运行的程序确定,其可以是Transformer模型中的编码器、Transformer模型中的解码器、长短期记忆网络模型等,但本发明不限于特定的神经网络模型。
在步骤S120,服务器根据循环神经网络模型生成加速卡可执行的指令(加速卡可执行计算单元)。在此步骤中,可以将需要加速卡执行的指令完全展开,以便加速卡顺序执行。即,可以将需要加速卡循环执行的指令完全展开,从而加速卡只需运行该指令一次,就可以完成此次运算。在此步骤中,也可以将需要重复执行的指令按一次循环展开,以便加速卡可以反复执行。例如,对于Transformer模型中的编码器(Encoder),其包括多个结构相同的编码器块(block),可以将单个编码器块按照加速卡支持的计算单元展开,展开的指令对应单个编码器块,以供加速卡循环执行该指令。再如,对于Transformer模型中的解码器或长短期记忆网络,需要对句子中的每个词逐个进行计算,相同的指令对每个词都运行一遍。因此,可以将Transformer模型中的解码器或长短期记忆网络按一次循环展开,即展开为对单个词进行运算的指令,以供加速卡循环执行。
在将循环神经网络展开后,可以在展开的指令开始之前插入表征循环开始的指令,在展开的指令最后插入表征循环结束的指令,以便加速卡识别,从而构成完整的加速卡可执行的顺序指令。如何生成所展开的指令由相应神经网络模型的算法决定,已为本领域技术人员所知,在此不再赘述。
生成加速卡可执行的顺序指令的过程即编译过程,编译过程可以由传统编译器执行,也可以由AI编译器执行。AI编译器根据神经网络模型的类型进行编译和优化,再生成加速卡可执行的顺序指令。具体的人工智能加速卡可能具有自定义的指令集,编译器应针对人工智能加速卡的特定指令集进行编译。
在步骤S130,服务器向加速卡注册已经展开的循环神经网络。具体而言,服务器将在步骤S120生成的指令以及循环神经网络的模型等信息按加速卡可识别的格式发放到加速卡。服务器与加速卡的通信可以通过例如PCIe总线完成,但本发明不限于特定的服务器与加速卡通信的方式。
在步骤S140,服务器向加速卡下发样本处理信息,并将完整的样本存入输入内存,样本处理信息包括输入内存和输出内存的地址。服务器按照循环神经网络的模型向加速卡申请输入内存和输出内存,该输入内存和输出内存位于硬件加速卡。服务器在输入内存存入待处理的样本,例如待处理的句子。输出内存用于存放加速卡的计算结果,例如对输入的句子的语义分析或翻译。对于Transformer模型中的编码器,输入内存和输出内存的大小由实际处理的句子长度决定,即,由实际样本长度决定。对于Transformer模型中的解码器或长短期记忆模型,输入内存和输出内存的大小由最大样本长度决定,例如为,可能的最大长度的句子,然后在句子中实际不存在词的位置补0。对此,服务器可以生成遮蔽(mask)矩阵,其可以用于遮蔽补0的位置,挑选出句子的有效部分。服务器下发的样本处理信息可以包括服务器确定的实际样本长度,也可以包括遮蔽矩阵,以供加速卡自行得出实际样本长度。
在步骤S150,服务器接收加速卡上报的计算完成消息,从而可以依据输出内存的地址读取该结果。服务器可以继而进一步处理使用该计算结果,例如发送给其他应用程序或向用户展示。
在上述过程中,服务器向加速卡下发样本处理信息后,由加速卡对完整的样本进行计算,即对整个句子进行计算,而无需服务器频繁为每个词的数据进行调度,大大节约了服务器时间,降低了输出延时。
本发明还提供了一种服务器,包括循环神经网络模型确定模块,其被配置为,根据服务器所运行的程序,确定循环神经网络模型。所确定的循环神经网络模型可以为Transformer模型中的编码器、Transformer模型中的解码器或长短期记忆网络等,但本发明不限于特定的神经网络模型。
该服务器还包括加速卡可执行的指令生成模块,其被配置为,编译循环神经网络模型,生成加速卡可以执行的指令。加速卡可执行指令生成模块可以将指令完全展开,以便加速卡顺序执行,也可以将需要重复执行的指令按一次循环展开。如果循环神经网络模型为Transformer模型中的编码器,则可以按照编码器的单个编码器块展开;如果循环神经网络模型为Transformer模型中的解码器或长短期记忆网络,则可以按照一次循环展开。
该服务器还包括循环神经网络注册模块,其被配置为,将加速卡可执行的指令和循环神经网络模型发放到加速卡。
该服务器还包括样本处理信息下发模块,其被配置为,将样本处理信息下发到加速卡,并将完整样本存入输入内存,该样本处理信息包括输入内存和输出内存的地址。该输入内存和输出内存位于硬件加速卡。对于Transformer模型中的编码器,输入内存和输出内存的大小由实际样本长度决定。对于Transformer模型中的解码器或长短期记忆模型,输入内存和输出内存的大小由最大样本长度决定。对此,服务器可以生成遮蔽(mask)矩阵,其可以用于遮蔽补0的位置,挑选出句子的有效部分。样本处理信息可以包括服务器确定的实际样本长度,也可以包括遮蔽矩阵,以供加速卡自行得出实际样本长度。
该服务器还包括计算完成消息接收模块,其被配置为,接收加速卡上报的计算完成消息。
下面参考图2和图3,图2示出了根据本发明的数据调度方法的加速卡侧的流程,图3为示出根据本发明的数据调度方法的框图。
在步骤S210,加速卡接收服务器下发的已经展开的循环神经网络的信息,包括服务器生成的加速卡可执行的指令以及循环神经网络模型等信息,该指令用于执行已经展开的循环神经网络。
在步骤S220,加速卡接收服务器下发的样本处理信息,包括输入内存和输出内存的地址。输入内存和输出内存的大小由服务器根据循环神经网络的模型确定。如果样本处理信息包括实际样本长度,加速卡还接收实际样本长度。如果样本处理信息还包括遮蔽矩阵,则加速卡还接收遮蔽矩阵,并且可以根据遮蔽矩阵的维度计算出实际样本长度。加速卡可以根据循环神经网络模型和实际样本长度,综合得出指令需要循环执行的次数,即循环次数。
在步骤S230,加速卡执行展开的循环神经网络。具体而言,加速卡执行在步骤S210接收到的指令,对步骤S220接收到的输入内存中存储的输入数据进行计算,并将结果保存到输出内存。每次执行从指令中的表征循环开始的指令开始,到表征循环结束的指令结束。执行表征循环结束的指令后,加速卡判断指令已被执行的次数是否达到了循环次数。如果指令已被执行的次数没有达到循环次数,则将指令已被执行的次数增加1,然后跳转回到表征循环开始的指令,对下一个输入数据再次执行指令。如果指令已被执行的次数达到了循环次数,则意味着对该样本的计算已经完成,输出内存中已经存入了样本计算结果。
在步骤S240,加速卡向服务器上报计算完成消息,从而服务器可以从输出内存读取计算结果。
值得注意的是,在上述过程中,加速卡仅仅在步骤S210、S220、S240与服务器通信,在执行循环神经网络的过程中不会再访问服务器,即,不会频繁地从服务器内存读取样本数据,从而大大降低了服务器与加速卡之间传递数据所耗费的时间。
下面具体描述根据本发明的加速卡执行Transformer模型中的编码器、Transformer模型中的解码器、长短期记忆网络模型的流程。应当注意,此处的三种循环神经网络模型仅仅是示意性的,本发明的方法流程可以扩展到任意其他循环神经网络模型。下面描述的步骤均为对应步骤S210-S240的具体化的步骤。
下面描述根据本发明的加速卡执行Transformer模型中的编码器的流程。
在步骤S310,加速卡从服务器接收到了当前处理的模型为Transformer模型中的编码器,以及对应Transformer模型中的编码器的加速卡可执行的指令。稍后,加速卡将循环执行该指令。
在步骤S320,加速卡接收到了样本处理信息,包括输入内存和输出内存的地址。对于Transformer模型中的编码器,第一次循环时的输入是完整的待处理的句子,之后每一次循环的输入是上一次循环的输出。因此,服务器此时在加速卡上申请了两份内存,一份作为输入内存,一份作为输出内存。加速卡根据当前处理的模型为Transformer模型中的编码器,并且确定循环次数为模型中编码器块的个数n。
在步骤S330,加速卡根据样本处理信息在加速卡运行指令。具体而言,在第一次循环时,加速卡对输入内存中保存的输入数据进行计算,计算结果保存在输出内存。之后的每一次循环中,以上一次循环的计算结果作为输入,并将新的计算结果保存在输出内存,继而判断指令被执行的次数是否达到循环次数n。若未达到n,则进行下一次循环,指令被执行的次数增加1。待指令被执行的次数达到循环次数n时,输出内存中保存的即为本次编码器模型的最终计算结果。
在步骤S340,加速卡向服务器上报计算完成的消息,从而服务器可以从输出内存读取计算结果。
下面描述根据本发明的加速卡执行Transformer模型中的解码器的流程。
在步骤S410,加速卡从服务器接收到了当前处理的模型为Transformer模型中的解码器,以及对应Transformer模型中的解码器的加速卡可执行的指令。稍后,加速卡将循环执行该指令。
在步骤S420,加速卡接收到了样本处理信息,包括输入内存和输出内存的地址。对于Transformer模型中的解码器,指令要对句子中的每个词逐个运行一遍,即,对第一个词运行一遍该顺序指令,再对第二个词运行一遍该顺序指令,以此类推,直到完成句子中全部m个词的计算。当指令被执行的次数达到循环次数m时,加速卡完成了本次计算。因此,循环次数为样本实际长度。如果样本处理信息包括实际样本长度,则加速卡直接将其定为循环次数。如果样本处理信息包括遮蔽矩阵,则加速卡根据遮蔽矩阵的维度计算出实际样本长度,从而确定循环次数。
在Transformer模型中的解码器模型中,每次执行指令时的输入为当前的词以及对上一个词计算的结果。因此,每个词的计算结果都依次序直接保存在输出内存,各个词的计算结果整合后作为对句子的计算结果。在对每个词的计算开始时,加速卡从输出内存调用上一个词的计算结果,作为本次执行顺序指令的输入。当对第一个词执行该顺序指令时,由于还没有上一个词的计算结果,可以调用已经初始化为0的输出内存作为输入。因此,服务器此时在加速卡上申请了两份内存,一份作为输入内存,一份作为输出内存。
在步骤S430,加速卡根据样本处理信息在加速卡运行指令。具体而言,加速卡从输入内存中保存的第一个词的数据开始进行第一次循环,第一次循环的计算结果保存在输出内存的第一个位置。在执行第二次循环时,以输入内存中保存的第二个词和输出内存的第一个位置中保存的第一个计算结果作为输入,第二次循环的计算结果保存在输出内存的第二个位置,以此类推。每次循环结束时,判断指令被执行的次数是否达到循环次数m。若未达到m,则进行下一次循环,指令被执行的次数增加1。待指令被执行的次数达到循环次数m时,输出内存中保存的即为本次解码器模型的最终计算结果。
在步骤S440,加速卡向服务器上报计算完成的消息,从而服务器可以从输出内存读取计算结果。
下面描述根据本发明的加速卡执行长短期记忆网络的流程。
在步骤S510,加速卡从服务器接收到了当前处理的模型为长短期记忆网络模型,以及对应长短期记忆网络模型的加速卡可执行的指令。稍后,加速卡将循环执行该指令。
在步骤S520,加速卡接收到了样本处理信息,包括输入内存和输出内存的地址。对于长短期记忆网络,指令要对句子中的每个词逐个运行一遍。因此,循环次数为样本实际长度m。如果样本处理信息包括实际样本长度,则加速卡直接将其定为循环次数。如果样本处理信息包括遮蔽矩阵,则加速卡根据遮蔽矩阵的维度计算出实际样本长度,从而确定循环次数。
在长短期记忆网络中,对句子中的每个词的计算有两个输出,分别称为ht和Ct,t是当前的词的标记,ht是对该词的计算结果,Ct是用于下一个词计算的中间变量。对句子中的每个词的计算有两个输入,分别为对上一个词t-1进行计算的输出Ct-1以及当前的词。因此,此时服务器申请了输入内存、中间内存、以及输出内存。中间内存用于保存每一次执行该指令输出的Ct。在对一个词的计算开始时,加速卡从输入内存调用当前的词,从中间内存调用上一个词输出的Ct-1,两者作为输入;经过计算后,将ht存入输出内存,将Ct存入中间内存以覆盖Ct-1。当对第一个词进行计算时,由于还没有上一个词输出的Ct-1,可以调用已经初始化为0的中间内存作为输入。
在步骤S530,加速卡根据样本处理信息在加速卡运行指令。具体而言,加速卡从输入内存中保存的第一个词开始进行计算,第一次循环以输入内存中保存的第一个词和已初始化为0的中间内存作为输入。第一次循环计算结果ht保存在输出内存的第一个位置,Ct保存在中间内存。在执行第二次循环时,以输入内存中保存的第二个词和中间内存中保存的第一个词的输出Ct-1作为输入。第二次循环计算结果ht保存在输出内存的第二个位置,Ct保存在中间内存。以此类推。每次循环结束时,判断指令被执行的次数是否达到循环次数m。若未达到m,则进行下一次循环,指令被执行的次数增加1。待指令被执行的次数达到循环次数m时,输出内存中保存的即为本次长短期记忆网络模型的最终计算结果。
在步骤S540,加速卡向服务器上报计算完成的消息,从而服务器可以从输出内存读取计算结果。
在上述方法中,服务器在加速卡本地内存上申请了输入内存、输出内存。作为本发明的一种变形,可以不在加速卡申请输入内存、输出内存,而是将输入输出保存在服务器内存。在需要读取输入数据时,加速卡可以直接访问服务器输入内存。得到计算结果之后,加速卡可以直接将结果存入服务器输出内存。由于指令的执行仍由加速卡独立完成,计算的中间结果仍然存储在加速卡,所以仍然可以减少服务器与加速卡之间的通信,降低输出延时。
本发明还提供了一种加速卡,包括循环神经网络接收模块,其被配置为,接收循环神经网络信息,包括加速卡可执行指令以及循环神经网络模型等信息。
该加速卡还包括样本处理信息接收模块,其被配置为,接收样本处理信息,包括服务器输入内存和服务器输出内存的地址,还可以包括实际样本长度,还可以包括遮蔽矩阵;如果样本处理信息包括遮蔽矩阵,则可以该模块根据遮蔽矩阵的维度计算实际样本长度。该模块可以根据循环神经网络模型和实际样本长度,综合得出循环次数。
该加速卡还包括循环神经网络执行模块,其被配置为,执行接收到的加速卡可执行指令,对输入内存中存储的输入数据进行计算,并将结果保存到输出内存。每次执行从指令中的表征循环开始的指令开始,到表征循环结束的指令结束。执行表征循环结束的指令后,加速卡判断指令已被执行的次数是否达到了循环次数。如果指令已被执行的次数没有达到循环次数,则将指令已被执行的次数增加1,然后跳转回到表征循环开始的指令,对下一个输入数据再次执行指令。如果指令已被执行的次数达到了循环次数,则意味着对该样本的计算已经完成,输出内存中已经存入了样本计算结果。
该加速卡还包括计算完成消息上报模块,其被配置为,向服务器上报计算完成消息。
如果循环神经网络模型为Transformer模型中的编码器,则循环次数为编码器块的个数n。循环神经网络执行模块进一步被配置为,第一次循环时的输入是完整的待处理的句子,之后每一次循环的输入是上一次循环的输出。
如果循环神经网络模型为Transformer模型中的解码器,则循环次数为实际样本长度,循环神经网络执行模块进一步被配置为,在对每个词的计算开始时,从输入内存调用当前的词,从输出内存调用上一个词的计算结果,作为本次执行的输入;当对第一个词执行该循环时,调用输入内存中的第一个词以及已经初始化为0的输出内存作为输入。
如果循环神经网络模型为长短期记忆网络,则循环次数为实际样本长度,循环神经网络执行模块进一步被配置为,对每个词依次执行指令时的输入为当前的词以及对上一个词计算的Ct-1,当对第一个词执行指令时,调用已经初始化为0的中间内存作为Ct-1,每个词的计算结果Ct保存在中间内存并覆盖针对前一个词计算的Ct-1,ht依次保存在输出内存。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被服务器执行时实现本发明的数据调度方法的服务器侧的流程。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被加速卡执行时实现本发明的数据调度方法的加速卡侧的流程。
作为示例而非限制,计算机可读存储介质可包括以用于存储例如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括但不限于,易失性存储器,例如随机存储器(RAM、DRAM、SRAM);以及非易失性存储器,例如闪存、各种只读存储器(ROM、PROM、EPROM、EEPROM)、磁性和铁磁/铁电存储器(MRAM、FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它已知的介质或今后开发的能够存储供计算机系统使用的计算机可读信息/数据。
虽然在附图和前面的描述中已经详细地说明和描述了本发明,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,本发明所要求保护的范围由权利要求而非上述说明限定,落在权利要求的等同要件的含义和范围内的所有变化均涵盖在本发明的保护范围内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。
Claims (25)
1.一种硬件加速卡的数据调度方法,用于所述硬件加速卡从服务器接收样本和向所述服务器上报样本计算结果,所述样本包括多个元素,该方法包括:
循环神经网络接收步骤,其接收所述服务器下发的循环神经网络的信息,所述循环神经网络的信息包括硬件加速卡可执行的指令以及循环神经网络模型,所述指令用于执行所述循环神经网络;
样本处理信息接收步骤,其接收所述服务器下发的样本处理信息,所述样本处理信息包括输入内存的地址和输出内存的地址,所述输入内存和所述输出内存位于所述硬件加速卡;
循环神经网络执行步骤,其执行所述循环神经网络,对所述输入内存中存储的样本执行所述指令,并将计算结果保存到所述输出内存;
计算完成消息上报步骤,其向所述服务器上报计算完成消息。
2.根据权利要求1所述的硬件加速卡的数据调度方法,其中,所述样本处理信息进一步包括循环次数。
3.根据权利要求1所述的硬件加速卡的数据调度方法,其中,所述样本处理信息进一步包括实际样本长度或遮蔽矩阵,所述样本处理信息接收步骤进一步包括,根据所述实际样本长度或所述遮蔽矩阵确定循环次数。
4.根据权利要求2或3所述的硬件加速卡的数据调度方法,其中,所述循环神经网络执行步骤进一步包括,判断所述指令已被执行的次数是否达到了所述循环次数;如果所述指令已被执行的次数没有达到循环次数,则将所述指令已被执行的次数增加1,然后再次执行所述指令;如果所述指令已被执行的次数达到了循环次数,则结束所述循环神经网络执行步骤。
5.根据权利要求4所述的硬件加速卡的数据调度方法,其中,所述循环神经网络模型为Transformer模型中的编码器,所述循环次数为编码器块的个数,所述循环神经网络执行步骤中,第一次循环时的输入是完整的样本,之后每一次循环的输入是上一次循环的输出。
6.根据权利要求4所述的硬件加速卡的数据调度方法,其中,所述循环神经网络模型为Transformer模型中的解码器,所述循环次数为实际样本长度,所述循环神经网络执行步骤中,在对每个元素的计算开始时,从输入内存调用当前的元素,从输出内存调用上一个元素的计算结果,作为本次执行的输入;当对第一个元素执行该循环时,调用输入内存中的第一个元素以及已经初始化为0的输出内存作为输入。
7.根据权利要求4所述的硬件加速卡的数据调度方法,其中,所述循环神经网络模型为长短期记忆网络,所述循环次数为实际样本长度,所述循环神经网络执行步骤中,对每个元素依次执行指令时的输入为当前的元素以及对上一个元素计算的Ct-1,当对第一个元素执行指令时,调用已经初始化为0的中间内存作为Ct-1,每个词的计算结果Ct保存在中间内存并覆盖针对前一个词计算的Ct-1,ht依次保存在输出内存。
8.一种硬件加速卡,所述硬件加速卡从服务器接收样本并向所述服务器上报样本计算结果,所述样本包括多个元素,该硬件加速卡包括:
循环神经网络接收模块,其被配置为,接收所述服务器下发的循环神经网络的信息,所述循环神经网络的信息包括硬件加速卡可执行的指令以及循环神经网络模型,所述指令用于执行所述循环神经网络;
样本处理信息接收模块,其被配置为,接收所述服务器下发的样本处理信息,所述样本处理信息包括输入内存的地址和输出内存的地址,所述输入内存和所述输出内存位于所述硬件加速卡;
循环神经网络执行模块,其被配置为,执行所述循环神经网络,对所述输入内存中存储的样本执行所述指令,并将计算结果保存到所述输出内存;
计算完成消息上报模块,其被配置为,向所述服务器上报计算完成消息。
9.根据权利要求8所述的硬件加速卡,其中,所述样本处理信息进一步包括循环次数。
10.根据权利要求8所述的硬件加速卡,其中,所述样本处理信息进一步包括实际样本长度或遮蔽矩阵,所述样本处理信息接收模块进一步被配置为,根据所述实际样本长度或所述遮蔽矩阵确定循环次数。
11.根据权利要求9或10所述的硬件加速卡,其中,所述循环神经网络执行模块进一步被配置为,判断所述指令已被执行的次数是否达到了所述循环次数;如果所述指令已被执行的次数没有达到循环次数,则将所述指令已被执行的次数增加1,然后再次执行所述指令,直至所述指令已被执行的次数达到了循环次数。
12.根据权利要求11所述的硬件加速卡,其中,所述循环神经网络模型为Transformer模型中的编码器,所述循环次数为编码器块的个数,所述循环神经网络执行模块被进一步配置为,第一次循环时的输入是完整的样本,之后每一次循环的输入是上一次循环的输出。
13.根据权利要求11所述的硬件加速卡,其中,所述循环神经网络模型为Transformer模型中的解码器,所述循环次数为实际样本长度,所述循环神经网络执行模块被进一步配置为,在对每个元素的计算开始时,从输入内存调用当前的元素,从输出内存调用上一个元素的计算结果,作为本次执行的输入;当对第一个元素执行该循环时,调用输入内存中的第一个元素以及已经初始化为0的输出内存作为输入。
14.根据权利要求11所述的硬件加速卡,其中,所述循环神经网络模型为长短期记忆网络,所述循环次数为实际样本长度,所述循环神经网络执行模块进一步被配置为,对每个元素依次执行指令时的输入为当前的元素以及对上一个元素计算的Ct-1,当对第一个元素执行指令时,调用已经初始化为0的中间内存作为Ct,每个词的计算结果Ct保存在中间内存并覆盖针对前一个词计算的Ct-1,ht依次保存在输出内存。
15.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时,执行权利要求1至7中任一项所述的数据调度方法。
16.一种服务器的数据调度方法,所述服务器向硬件加速卡发送样本,所述样本包括多个元素,该方法包括:
循环神经网络模型确定步骤,其确定循环神经网络模型;
硬件加速卡可执行的指令生成步骤,其编译所述循环神经网络模型,将需要重复执行的指令按一次循环展开,生成硬件加速卡可执行的指令;
循环神经网络注册步骤,其将所述指令和所述循环神经网络模型发放到所述硬件加速卡;
样本处理信息下发步骤,其将样本处理信息下发到加速卡,并将完整的样本存入输入内存,所述样本处理信息包括所述输入内存的地址和输出内存的地址,所述输入内存和所述输出内存位于所述硬件加速卡;
计算完成消息接收步骤,其接收所述硬件加速卡上报的计算完成消息。
17.根据权利要求16所述的服务器的数据调度方法,其中,所述循环神经网络模型确定步骤中,如果所述循环神经网络模型为Transformer模型中的编码器、Transformer模型中的解码器或长短期记忆网络。
18.根据权利要求16所述的服务器的数据调度方法,其中,所述硬件加速卡可执行的指令生成步骤中,如果所述循环神经网络模型为Transformer模型中的编码器,则指令按照编码器的单个编码器块展开;如果所述循环神经网络模型为Transformer模型中的解码器或长短期记忆网络,则指令按照一次循环展开。
19.根据权利要求16所述的服务器的数据调度方法,其中,所述样本处理信息下发步骤中,如果所述循环神经网络模型为Transformer模型中的编码器,则所述输入内存和输出内存的大小由实际样本长度决定;如果所述循环神经网络模型为Transformer模型中的解码器或长短期记忆网络,则所述输入内存和输出内存的大小由最大样本长度决定。
20.根据权利要求16所述的服务器的数据调度方法,其中,所述样本处理信息还包括实际样本长度和/或遮蔽矩阵。
21.一种服务器,所述服务器向硬件加速卡发送样本,所述样本包括多个元素,该服务器包括:
循环神经网络模型确定模块,其被配置为,确定循环神经网络模型;
硬件加速卡可执行的指令生成模块,其被配置为,编译所述循环神经网络模型,生成硬件加速卡可执行的指令;
循环神经网络注册模块,其被配置为,将所述硬件加速卡可执行的指令和循环神经网络模型发放到所述硬件加速卡;
样本处理信息下发模块,其被配置为,将样本处理信息下发到加速卡,并将完整样本存入输入内存,该样本处理信息包括输入内存和输出内存的地址,所述输入内存和输出内存位于所述硬件加速卡;
计算完成消息接收模块,其被配置为,接收所述硬件加速卡上报的计算完成消息。
22.根据权利要求21所述的服务器,其中,所述硬件加速卡可执行的指令生成模块被进一步配置为,如果所述循环神经网络模型为Transformer模型中的编码器,则指令按照编码器的单个编码器块展开;如果所述循环神经网络模型为Transformer模型中的解码器或长短期记忆网络,则指令按照一次循环展开。
23.根据权利要求21所述的服务器,其中,所述样本处理信息下发模块被进一步配置为,如果所述循环神经网络模型为Transformer模型中的编码器,则所述输入内存和输出内存的大小由实际样本长度决定;如果所述循环神经网络模型为Transformer模型中的解码器或长短期记忆网络,则所述输入内存和输出内存的大小由最大样本长度决定。
24.根据权利要求21所述的服务器,其中,所述样本处理信息还包括实际样本长度和/或遮蔽矩阵。
25.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时,执行权利要求16至20中任一项所述的数据调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310189143.0A CN115860049B (zh) | 2023-03-02 | 2023-03-02 | 一种数据调度方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310189143.0A CN115860049B (zh) | 2023-03-02 | 2023-03-02 | 一种数据调度方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115860049A true CN115860049A (zh) | 2023-03-28 |
CN115860049B CN115860049B (zh) | 2023-05-05 |
Family
ID=85659654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310189143.0A Active CN115860049B (zh) | 2023-03-02 | 2023-03-02 | 一种数据调度方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115860049B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180046897A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Hardware accelerator for compressed rnn on fpga |
US20180046901A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Hardware accelerator for compressed gru on fpga |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及系统 |
CN112784970A (zh) * | 2020-12-31 | 2021-05-11 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN113012689A (zh) * | 2021-04-15 | 2021-06-22 | 成都爱旗科技有限公司 | 一种电子设备和深度学习硬件加速方法 |
CN113196232A (zh) * | 2019-10-12 | 2021-07-30 | 深圳鲲云信息科技有限公司 | 神经网络调度方法、装置、计算机设备及可读存储介质 |
US20210248008A1 (en) * | 2020-02-10 | 2021-08-12 | Arm Limited | Hardware Accelerator for Natural Language Processing Applications |
US20210295137A1 (en) * | 2020-03-18 | 2021-09-23 | Arm Limited | Hybrid Memory Artificial Neural Network Hardware Accelerator |
CN114254740A (zh) * | 2022-01-18 | 2022-03-29 | 长沙金维信息技术有限公司 | 卷积神经网络加速计算方法、计算系统、芯片及接收机 |
CN115099398A (zh) * | 2022-06-16 | 2022-09-23 | 深圳市易成自动驾驶技术有限公司 | 硬件加速器运行优化方法、装置、电子设备及存储介质 |
-
2023
- 2023-03-02 CN CN202310189143.0A patent/CN115860049B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180046897A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Hardware accelerator for compressed rnn on fpga |
US20180046901A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Hardware accelerator for compressed gru on fpga |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及系统 |
CN113196232A (zh) * | 2019-10-12 | 2021-07-30 | 深圳鲲云信息科技有限公司 | 神经网络调度方法、装置、计算机设备及可读存储介质 |
US20210248008A1 (en) * | 2020-02-10 | 2021-08-12 | Arm Limited | Hardware Accelerator for Natural Language Processing Applications |
US20210295137A1 (en) * | 2020-03-18 | 2021-09-23 | Arm Limited | Hybrid Memory Artificial Neural Network Hardware Accelerator |
CN112784970A (zh) * | 2020-12-31 | 2021-05-11 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN113012689A (zh) * | 2021-04-15 | 2021-06-22 | 成都爱旗科技有限公司 | 一种电子设备和深度学习硬件加速方法 |
CN114254740A (zh) * | 2022-01-18 | 2022-03-29 | 长沙金维信息技术有限公司 | 卷积神经网络加速计算方法、计算系统、芯片及接收机 |
CN115099398A (zh) * | 2022-06-16 | 2022-09-23 | 深圳市易成自动驾驶技术有限公司 | 硬件加速器运行优化方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115860049B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144831B2 (en) | Regularized neural network architecture search | |
Kurach et al. | Neural random-access machines | |
US10810492B2 (en) | Memory side acceleration for deep learning parameter updates | |
Scheffler et al. | Corpus-based dialogue simulation for automatic strategy learning and evaluation | |
US10204097B2 (en) | Efficient dialogue policy learning | |
KR20200129197A (ko) | 어텐션-기반의 시퀀스 변환 신경망 | |
US10984319B2 (en) | Neural architecture search | |
US11227581B2 (en) | Systems and methods for generating a response based on task-independent conversational responses or task-specific responses | |
CN108287820B (zh) | 一种文本表示的生成方法及装置 | |
CN110489110B (zh) | 一种基于深度学习的代码生成方法及装置 | |
EP3496006A1 (en) | Operation unit, method and device capable of supporting operation data of different bit widths | |
US11694075B2 (en) | Partitioning control dependency edge in computation graph | |
WO2021011914A1 (en) | Scheduling operations on a computation graph | |
US20230186625A1 (en) | Parallel video processing systems | |
US20220383119A1 (en) | Granular neural network architecture search over low-level primitives | |
CN117744759A (zh) | 文本信息的识别方法、装置、存储介质及电子设备 | |
CN111737417B (zh) | 修正自然语言生成结果的方法和装置 | |
CN115860049B (zh) | 一种数据调度方法和设备 | |
CN111667819B (zh) | 基于crnn的语音识别方法、系统、存储介质及电子设备 | |
US20200302270A1 (en) | Budgeted neural network architecture search system and method | |
CN116822629A (zh) | 文本推理任务处理的方法、装置、设备以及存储介质 | |
JP6633556B2 (ja) | 音響モデル学習装置、音声認識装置、音響モデル学習方法、音声認識方法、およびプログラム | |
US20210383243A1 (en) | Stable and efficient training of adversarial models by an iterated update operation of second order or higher | |
CN111913812B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111967253A (zh) | 一种实体消歧方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |