人工智能芯片及其操作方法

文档序号:19991 发布日期:2021-09-21 浏览:23次 >En<

阅读说明:本技术 人工智能芯片及其操作方法 (Artificial intelligence chip and operation method thereof ) 是由 不公告发明人 于 2021-06-11 设计创作,主要内容包括:本发明提供一种人工智能芯片及其操作方法。人工智能芯片适于从网卡接收数据串。人工智能芯片包括集合通信引擎选择器以及多个集合通信引擎。这些集合通信引擎可以进行集合通信的不同处理。集合通信引擎选择器接收所述数据串,其中所述数据串带有第一数据以及操作码。集合通信引擎选择器解析所述操作码,以便从这些集合通信引擎中选择一个引擎。集合通信引擎选择器可以将所述第一数据提供给被选择引擎去进行所述集合通信的对应处理。(The invention provides an artificial intelligence chip and an operation method thereof. The artificial intelligence chip is adapted to receive the data string from the network card. The artificial intelligence chip includes an aggregate communication engine selector and a plurality of aggregate communication engines. These aggregate communication engines may perform different processing of aggregate communications. The aggregate communication engine selector receives the data string, wherein the data string carries the first data and the operation code. The aggregate communication engine selector parses the opcode to select one from among the aggregate communication engines. An aggregate communication engine selector may provide the first data to a selected engine for corresponding processing of the aggregate communication.)

人工智能芯片及其操作方法

技术领域

本发明涉及一种多芯片集群并行计算领域,尤其涉及一种人工智能芯片及其操作方法。

背景技术

在当前的多芯片集群并行计算领域,工业界普遍使用集合通信(CollectiveCommunication)方案来实现多个节点间共享数据和传输数据的操作。在当前的集合通信中,“节点1的芯片A发送数据给节点2的芯片B”的过程可以分为四个步骤。步骤1:节点1上的芯片A把数据发送到节点1的系统内存(system memory)。步骤2:节点1上的芯片A向节点1上的网卡发送网络请求,节点1上的网卡从节点1的系统内存读入“步骤1中芯片A复制到系统内存的数据”,并且将此数据发送到节点2的网卡。步骤3:节点2的网卡收到了节点1的网卡的数据,并且将此数据存储到节点2的系统内存中。步骤4:节点2的芯片B从节点2的系统内存中读入“来自节点1的芯片A的数据”。对集合通信的性能进一步优化,是本领域的诸多技术课题之一。

发明内容

本发明提供一种人工智能芯片及其操作方法,以有效率地进行集合通信(Collective Communication)。

在根据本发明的实施例中,所述人工智能芯片适于从网卡接收数据串。所述人工智能芯片包括集合通信引擎选择器以及多个集合通信引擎。这些集合通信引擎经配置以进行集合通信的不同处理。集合通信引擎选择器经配置以接收所述数据串,其中所述数据串带有第一数据以及操作码。所述集合通信引擎选择器解析所述操作码,以便从这些集合通信引擎中选择一个引擎。所述集合通信引擎选择器将所述第一数据提供给被选择引擎去进行所述集合通信的对应处理。

在根据本发明的实施例中,所述人工智能芯片包括多个集合通信引擎,以进行集合通信的不同处理。所述数据串带有第一数据以及操作码。所述操作方法包括:解析所述操作码,以便从这些集合通信引擎中选择一个引擎;以及将所述第一数据提供给被选择引擎去进行所述集合通信的对应处理。

基于上述,本发明诸实施例所述人工智能芯片的多个集合通信引擎可以进行集合通信的不同处理。集合通信引擎选择器解析数据串中的操作码,以便依据操作码从这些集合通信引擎中选择一个引擎。集合通信引擎选择器将数据串中的数据提供给被选择引擎去进行集合通信的对应处理。因此,所述人工智能芯片可以有效率地进行集合通信。

附图说明

图1A是依照本发明的一实施例的一种集合通信的系统示意图。

图1B是依照本发明的一实施例的一种远程直接内存访问(RDMA)技术的系统示意图。

图2是依照本发明的一实施例的一种人工智能芯片的电路方块(circuit block)示意图。

图3是依照本发明的一实施例的一种人工智能芯片的操作方法的流程示意图。

附图标记说明

10、20:节点

11、21、200:人工智能芯片

12、22、230:芯片内存

13、24:芯片组

14、25:中央处理器

15、25:系统内存

16、26、30:网卡

40:总线

210:集合通信引擎选择器

220:集合通信引擎

S111~S114、S121~S122、S310、S320、S330、S340:步骤

具体实施方式

现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同元件符号在图式和描述中用来表示相同或相似部分。

在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名组件(element)的名称,或区别不同实施例或范围,而并非用来限制组件数量的上限或下限,亦非用来限制组件的次序。另外,凡可能之处,在图式及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。

图1A是依照本发明的一实施例的一种集合通信(Collective Communication)的系统示意图。图1A所示集合通信系统包括节点10与节点20。节点10与(或)节点20可以是计算机或是其他计算平台。在当前的集合通信方案中,“节点10的人工智能芯片11发送数据给节点20的人工智能芯片21”的过程可以分为四个步骤。步骤S111:节点10上的人工智能芯片11把芯片内存12的数据通过芯片组(chip set)13与中央处理器(Central ProcessingUnit,CPU)14发送到节点10的系统内存(system memory)15。所述人工智能芯片11可以包括图形处理单元(graphics processing unit,GPU)与(或)其他芯片。所述芯片内存12可以包括GPU内存与(或)其他芯片内存。步骤S112:节点10上的人工智能芯片11向节点10上的网卡(network interface controller,NIC)16发送网络请求,节点10上的网卡16从节点10的系统内存15读入“步骤S111中人工智能芯片11复制到系统内存15的数据”,并且网卡16将此数据发送到节点20的网卡26。步骤S113:节点20的网卡26收到了节点10的网卡16的数据,并且此数据通过芯片组23与CPU 24被存储到节点20的系统内存25中。步骤S114:节点20的人工智能芯片21通过芯片组23与CPU 24从节点20的系统内存25中读入“来自节点10的人工智能芯片11的数据”,并且将此数据存储到芯片内存22中。这四个步骤经历了1次数据传输和2次数据拷贝。

为了缩减集合通信的传输时延,远程直接内存访问(Remote Direct MemoryAccess,RDMA)技术可以被应用至图1A所示集合通信系统。图1B是依照本发明的一实施例的一种RDMA技术的系统示意图。RDMA技术可以在网卡16上注册芯片内存(例如GPU内存)12的地址。同理,RDMA技术可以在网卡26上注册芯片内存(例如GPU内存)22的地址。在需要数据传输时,由网卡直接访问人工智能芯片(例如GPU),以缩短不同节点的芯片之间数据通信的时延,进而提高性能。RDMA技术可以省略2次数据拷贝,而把数据传输缩减为2步骤。步骤S121:节点10上的人工智能芯片(例如GPU)11向网卡16发送数据传输请求,其中该数据传输请求的内存地址是事先注册在网卡16上的“节点10的人工智能芯片11的芯片内存12的地址”。节点10的网卡16根据数据传输请求从芯片内存12读入人工智能芯片11需要传输的数据并发送到节点20的网卡26。步骤S122:节点20的网卡26收到了节点10的网卡16的数据,并直接写入到节点20的人工智能芯片21的芯片内存22中。

以上过程是在2个人工智能芯片(例如GPU)11与21之间进行数据传输。在实际应用中,尤其是在人工智能运算中的权重(WEIGHT)值的计算,节点20的人工智能芯片21在接收到网卡26的数据之后,需要将接收到的数据跟本地数据进行集合通信处理,然后再使用。那么基于RDMA技术的跨节点集合通信需要经历如下三个步骤。步骤1:节点10的人工智能芯片(例如GPU)11向网卡16发送数据传输请求,而节点10的网卡16根据数据传输请求从芯片内存12读入人工智能芯片11需要传输的数据并发送到节点20的网卡26。步骤2:节点20的网卡26收到了节点10的网卡16的数据,并直接写入到节点20的人工智能芯片(例如GPU)21的芯片内存22中(记为操作1,直接写操作)。步骤3:节点20的人工智能芯片21进行一次集合通信处理(根据集合通信的类型,人工智能芯片21做不同的对应处理),并将结果数据保存在人工智能芯片21的芯片内存22中(记为操作2,集合通信操作)。其中,步骤2做完之后需要进行同步,之后再做步骤3。步骤3需要再一次從从芯片内存22读取节点10的数据再和本地数据进行集合通信处理。步骤2与步骤3存在一次额外操作,即节点10的数据写入芯片内存22之后再从芯片内存22读出,以便和本地数据进行集合通信处理。该次额外操作带来以下的开销:1、增加了整个过程的时间(其中步骤2做完之后需要同步,很大程度增加了时延);2、步骤2对节点20的芯片内存22有一次写操作(节点10的数据写入芯片内存22),而步骤3需要再次对芯片内存22进行一次读操作(从芯片内存22读取节点10的数据)和一次写操作(集合通信处理的结果数据写入芯片内存22)。增加了对芯片内存22读写的负担,占用了更多的内存读写操作带宽。

以下实施例将说明在数据串中加入操作码的技术,以便把在前述实施例(亦即,将RDMA技术应用至跨节点集合通信操作)中需要经历的3个步骤缩短至2个步骤,即下述步骤A与步骤B。步骤A:节点10的人工智能芯片11向网卡16发送数据传输请求,其中该数据传输请求的内存地址是事先注册在网卡16上的“节点10的芯片内存12的地址”。节点10的网卡16根据数据传输请求从芯片内存12读入人工智能芯片11需要传输的数据并发送到节点20的网卡26。步骤B:节点20的网卡26收到了来自节点10的人工智能芯片11的数据,并将数据发送给节点20的人工智能芯片(例如GPU)21,节点20上的人工智能芯片21根据集合通信的处理类型将数据串的数据发送到对应的集合通信引擎去进行相应的集合通信处理。例如,在进行数据归约(REDUCE)集合通信时,人工智能芯片21将数据和操作码发送给REDUCE计算引擎;在进行数据广播(BROADCAST)集合通信时,人工智能芯片21将数据和操作码发送给BROADCAST引擎。然后,人工智能芯片21将集合通信处理的结果数据写入到人工智能芯片21的芯片内存22中。

从节点10的人工智能芯片11传输数据到节点20的人工智能芯片21的过程中有发生不同处理的可能。举例来说,在从节点10的人工智能芯片11到节点20的人工智能芯片21的传输操作是数据分散(SCATTER)集合通信处理的情况下,所传输的数据不会被人工智能芯片21进一步处理而直接被写入芯片内存22。或者,在从节点10的人工智能芯片11到节点20的人工智能芯片21的传输操作是REDUCE集合通信处理的情况下,所传输的数据(节点10的数据)需要和节点20的数据进行REDUCE处理。或者,在从节点10的人工智能芯片11到节点20的人工智能芯片21的操作是BROADCAST集合通信处理的情况下,所传输的数据(节点10的数据)不仅需要被写到芯片内存22,还需要被写到节点20的其他人工智能芯片的芯片内存。本实施例可以在数据流中加入操作码,以支持以上不同处理。本实施例使用集合通信引擎选择器去解析操作码来支持不同处理。

图2是依照本发明的一实施例的一种人工智能芯片200的电路方块(circuitblock)示意图。依据实际设计,图2所示网卡30与人工智能芯片200可以参照图1A和(或)图1B所示网卡26与人工智能芯片21(或者,网卡16与人工智能芯片11)的相关说明,以及(或是),图1A和(或)图1B所示网卡26与人工智能芯片21(或者,网卡16与人工智能芯片11)可以参照图2所示网卡30与人工智能芯片200的相关说明。在图2所示实施例中,人工智能芯片200可以通过总线40连接至网卡30。依据实际设计,总线40可以是高速周边组件互连(Peripheral Component Interconnect Express,PCIe)总线或是其他总线。人工智能芯片200可以从网卡30接收数据串。

人工智能芯片200包括集合通信引擎选择器210以及多个集合通信引擎220。不同的集合通信引擎220可以进行集合通信(Collective Communication)的不同处理。举例来说,依据实际设计,集合通信引擎220可以包括REDUCE计算引擎、SCATTER引擎、BROADCAST引擎以及(或是)其他集合通信引擎。在本实施例中,集合通信引擎220可以用硬件方式实现。在其他实施例中,集合通信引擎220可以用固件(或软件)方式实现。人工智能芯片200还包括芯片内存230。芯片内存230耦接至集合通信引擎220。依据实际设计,图2所示芯片内存230可以参照图1A和(或)图1B所示芯片内存22(或者,芯片内存12)的相关说明,以及(或是),图1A和(或)图1B所示芯片内存22(或者,芯片内存12)可以参照图2所示芯片内存230的相关说明。

图3是依照本发明的一实施例的一种人工智能芯片的操作方法的流程示意图。请参照图2与图3。在步骤S310中,集合通信引擎选择器210可以接收网卡30所传输的数据串。举例来说,人工智能芯片200可以基于远程直接内存访问(Remote Direct Memory Access,RDMA)的规范与集合通信(Collective Communication)的规范,从网卡30接收数据串。所述数据串带有数据以及操作码。集合通信引擎选择器210可以解析所述操作码(步骤S320),以便依据所述操作码从这些集合通信引擎220中选择一个引擎(步骤S330)。依据在网卡30所传输的数据串中的操作码,集合通信引擎选择器210可以将在网卡30所传输的数据串中的数据提供给被选择引擎去进行集合通信的对应处理(步骤S340)。在本实施例中,集合通信引擎选择器210可以用固件(或软件)方式实现。在其他实施例中,集合通信引擎选择器210可以用硬件方式实现。

在网卡30所传输的数据串中的操作码的具体数据结构可以依照实际设计去决定。举例来说,在一些实施例中,所述操作码可以包含操作类型字段。所述操作类型字段可以依照实际设计而具有若干字节。以占用一个字节为例,在一些实施例中,所述操作类型字段可以被定义如下述表1。在表1所示实施例中,操作类型字段的内容为“0”表示,在网卡30所传输的数据串中的数据应该进行SCATTER处理。操作类型字段的内容为“2”表示,在网卡30所传输的数据串中的数据应该进行BROADCAST处理。操作类型字段的内容为“3”表示,在网卡30所传输的数据串中的数据应该进行REDUCE处理。

表1:在操作码中的操作类型字段的定义范例

依照实际设计,所述操作码还可以包含REDUCE类型字段。所述REDUCE类型字段可以依照实际设计而具有若干字节。以占用一个字节为例,在一些实施例中,所述REDUCE类型字段可以被定义如下述表2。在表2所示实施例中,REDUCE类型字段的内容为“0”表示,所传输的数据和本地数据做完加法计算后写入本地芯片内存。REDUCE类型字段的内容为“1”表示,所传输的数据和本地数据做完乘法计算后写入本地芯片内存。REDUCE类型字段的内容为“2”表示,所传输的数据和本地数据做完取最大值后写入本地芯片内存。REDUCE类型字段的内容为“3”表示,所传输的数据和本地数据做完取最小值后写入本地芯片内存。

表2:在操作码中的REDUCE类型字段的定义范例

依照实际设计,所述操作码还可以包含数据类型字段。所述数据类型字段可以依照实际设计而具有若干字节。以占用一个字节为例,在一些实施例中,所述数据类型字段可以被定义如下述表3。在表3所示实施例中,数据类型字段的内容为“0”表示,所传输的数据属于“Int8”类型(8位整数)。数据类型字段的内容为“10”表示,所传输的数据属于“Float”类型(浮点数)。

表3:在操作码中的数据类型字段的定义范例

数据类型字段 数据类型
0 Int8
1 Uint8
2 Int16
3 Uint16
4 Int32
5 Uint32
6 Int64
7 Uint64
8 Int128
9 Uint128
10 Float
11 Double
12 Half

举例来说,所述集合通信引擎220包括REDUCE计算引擎,其中所述REDUCE计算引擎耦接至芯片内存230。依据在网卡30所传输的数据串的操作码中的操作类型字段,集合通信引擎选择器210可以决定所述REDUCE计算引擎作为“被选择引擎”。集合通信引擎选择器210可以依据所述操作码中的REDUCE类型字段去设定集合通信引擎220中的所述REDUCE计算引擎的REDUCE类型。集合通信引擎选择器210可以依据所述操作码中的数据类型字段去将在网卡30所传输的数据串中的数据的数据类型通知给集合通信引擎220中的所述REDUCE计算引擎。在所述REDUCE计算引擎接收到网卡30所传输的数据(第一数据)时,在所述第一数据未被存储至芯片内存230的情况下,所述REDUCE计算引擎可以依据网卡30所传输的数据串中的地址字段从芯片内存230读取本地数据(第二数据)。所述REDUCE计算引擎可以依据所述REDUCE类型去对所述第一数据及所述第二数据进行REDUCE计算以产生运算结果。所述REDUCE计算引擎依据所述数据串中的所述地址字段将所述运算结果写入芯片内存230。

再举例来说,所述集合通信引擎220包括SCATTER引擎,其中所述SCATTER引擎耦接至芯片内存230。集合通信引擎选择器210可以依据网卡30所传输的数据串的所述操作码中的操作类型字段去决定所述SCATTER引擎作为“被选择引擎”。所述集合通信引擎选择器210可以依据所述操作码中的数据类型字段去将在网卡30所传输的数据串中的数据的数据类型通知给集合通信引擎220中的SCATTER引擎。所述SCATTER引擎将网卡30所传输的数据(第一数据)写入芯片内存230。

依照实际设计,所述操作码还可以包含芯片编号字段。所述芯片编号字段可以依照实际设计而具有若干字节。以占用2个字节为例,在一些实施例中,所述芯片编号字段可以表示一个无符号短整型数。在所述无符号短整型数中,每一个位表示一个人工智能芯片。举例来说,所述无符号短整型数的值为11(二进制表示为0b1011),因为二进制值中从右向左第0、1、3位的值为“1”,所以所述无符号短整型数的值“11”指出芯片编号为“0”、“1”、“3”的人工智能芯片。

举例来说,所述集合通信引擎220包括BROADCAST引擎。集合通信引擎选择器210可以依据所述操作码中的操作类型字段决定BROADCAST引擎作为“被选择引擎”。所述集合通信引擎选择器210可以依据所述操作码中的数据类型字段将在网卡30所传输的数据串中的数据的数据类型通知给集合通信引擎220中的BROADCAST引擎。集合通信引擎选择器210可以依据所述操作码中的芯片编号字段将集合通信的广播处理的广播对象信息提供给BROADCAST引擎。BROADCAST引擎可以将网卡30所传输的数据(第一数据)写入芯片内存230,以及BROADCAST引擎可以依据所述广播对象信息将所述第一数据传递给人工智能芯片200所在平台的其他芯片。例如,所述操作码的芯片编号字段的内容为无符号短整型数“11”,集合通信引擎选择器210可以将集合通信的广播处理的广播对象信息“0”、“1”、“3”提供给BROADCAST引擎。那么,BROADCAST引擎可以知道广播处理的广播对象为芯片编号“0”、“1”、“3”的人工智能芯片。

综上所述,实施例所述人工智能芯片200的多个集合通信引擎220可以进行集合通信的不同处理。集合通信引擎选择器210解析数据串中的操作码,以便依据操作码从这些集合通信引擎220中选择一个引擎。集合通信引擎选择器210将数据串中的数据提供给被选择引擎去进行集合通信的对应处理。因此,人工智能芯片200可以有效率地进行集合通信。集合通信引擎选择器210解析操作码,以及依据解析结果去进行多节点集合通信操作。因此,人工智能芯片200可以提高在大规模芯片集群场景下跨节点集合通信的操作性能。对于人工智能训练等市场典型应用场景的整体性能提升做出贡献。实施例提供了灵活丰富的扩展机制。在一些实施例中,无需硬件支持即可支持操作类型和数据类型的扩展。在另一些实施例中,也可以在硬件支持某种扩展之后进行相应的软件扩展,支持在现有硬件框架下进行功能扩展。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:在粗粒度可重构阵列上加速非完美嵌套循环的方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!