CN114997380A - 采样器以及用于图神经网络模型执行的装置 - Google Patents

采样器以及用于图神经网络模型执行的装置 Download PDF

Info

Publication number
CN114997380A
CN114997380A CN202110231273.7A CN202110231273A CN114997380A CN 114997380 A CN114997380 A CN 114997380A CN 202110231273 A CN202110231273 A CN 202110231273A CN 114997380 A CN114997380 A CN 114997380A
Authority
CN
China
Prior art keywords
integer value
integer
sampler
neighbor nodes
random
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
CN202110231273.7A
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.)
Alibaba Innovation Co
Original Assignee
Alibaba Singapore Holdings Pte 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 Alibaba Singapore Holdings Pte Ltd filed Critical Alibaba Singapore Holdings Pte Ltd
Priority to CN202110231273.7A priority Critical patent/CN114997380A/zh
Priority to US17/677,927 priority patent/US20220318592A1/en
Publication of CN114997380A publication Critical patent/CN114997380A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/047Probabilistic or stochastic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Complex Calculations (AREA)

Abstract

公开了一种采样器以及用于图神经网络模型执行的装置。该采样器用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,包括:随机数生成器,用于生成多个随机数;计算单元,用于执行数学运算,所述数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于所述多个随机数在所述多个子区间内获得多个第三整数值,其中,所述第一整数值表示所述指定节点周围的所有邻居节点的数量,所述第二整数值表示针对所述指定节点,要采样的邻居节点的数量;执行部件,用于从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值采样部分邻居节点。本公开提供的采样器能够针对指定节点均匀采样其周围的邻居节点。

Description

采样器以及用于图神经网络模型执行的装置
技术领域
本公开涉及人工智能领域,尤其涉及一种采样器以及用于图神经网络模型的装置。
背景技术
近年来,深度学习模型在诸如图像分类、语音识别、自然语言处理等方面都获得了广泛的发展,并取得了一系列的成功应用。但是越来越多的现实场景中,数据是以图(Graph)的形式表示的,图不仅包含实体,也包含实体之间的依赖关系,例如社交网络、蛋白质分子结构、电商平台的客户关系等等。图1是一个示例性的社交网络关系图,如图上所示,社交网络关系图包括实体以及实体之间的依赖关系(图上采用连接边表示依赖关系)。诸如图1所示的各种图被称为图数据,图上的实体在图数据中被称为节点,与某个节点直接或间接连接的节点被称为该节点的邻居节点。
随着业界对图数据和神经学习模型的深入研究,用于处理图数据的深度学习模型开始涌现,此类深度学习模型被统称为图神经网络(Graph Neural Network,GNN)模型。
为了加速执行图神经网络模型,业界设计了专用于图神经网络模型的硬件加速单元来执行图神经网络模型,这种加速单元被称为图神经网络加速单元。同时,业界也在持续地改进图神经网络加速单元。
在图神经网络加速单元中,包括各种采样器。其中,一种典型的采样器用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,采样到的节点信息被用于构建该指定节点的嵌入表达(或称为嵌入向量)。采样器只采样指定节点的部分邻居节点信息的主要原因在于,如果采样所有邻居节点信息,则由于很多节点的邻居节点的数量会随着图阶数(或层数)等增加而呈指数级上升,从而使得这些节点的嵌入表达过于复杂,且需要占用大量的存储开销。
图2是一个现有采样器的概念示意图。参考图2,采样器200包括随机数生成器202和执行部件203。当需要针对指定节点进行采样时,外部系统将该节点的N个邻居节点的索引值提供给执行部件203。同时随机数生成器202生成K个随机数,然后执行部件203将K个随机数与该节点的N个邻居节点的索引值进行比对,以确定其中要采样的K个邻居节点,其中,N和K是大于1的正整数。但是对于这种采样器,发明人发现,由于K个随机数的无序状态,导致执行部件203需要一直存储N个邻居节点的索引值以备比较,而且最终得到的K个邻居节点无法确保能够均匀地分布在指定节点的周围。
发明内容
本公开的目的是提供一种采样器以及用于图神经网络模型执行的装置,以解决现有技术中存在的技术问题。
根据本公开实施例的第一方面,提供一种采样器,所述采样器用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,所述采样器包括:
随机数生成器,用于生成多个随机数;
计算单元,用于执行数学运算,所述数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于所述多个随机数在所述多个子区间内获得多个第三整数值,其中,所述第一整数值表示所述指定节点周围的所有邻居节点的数量,所述第二整数值表示针对所述指定节点,要采样的邻居节点的数量;
执行部件,用于从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值确定要采样的邻居节点。
可选地,所述执行部件包括:
输入队列,由输入存储单元组成,用于存储所述指定节点周围的所有邻居节点的的索引值;
输出队列,由输出存储单元组成;
比较使能单元,用于将所述多个第三整数值与所述输入队列中的索引值进行比较,当与其中的第一索引值相同时,输出使能信号,通过使能信号驱动所述输出存储单元将所述输入存储单元输出的第一索引值写入到相应的输出存储单元中。
可选地,所述输入队列只包括一个输入存储单元,且所述所有邻居节点的索引值是按照从小到大的顺序在多个时钟周期被存储到所述输入存储单元中,
所述比较使能单元还包括:
针对接收到的一个新的第三整数值,在多个时钟周期内重复地将该第三整数值与所述输入存储单元内的索引值比较,只当该第三整数值与所述输入存储单元内的第一索引值相同时,才在下一个时钟周期内接收另一个新的第三整数值。
可选地,所述随机数生成器在所述多个子区间的第一个子区间生成所述多个随机数,所述计算单元将所述多个随机数映射到所述多个子区间。
可选地,所述计算单元执行公式(1)的数学运算:
sumI=round(randomI+N*J/K) 公式(1);
其中,round表示取整操作,N表示所述第一整数值,K表示所述第二整数值,sumI表示多个第三整数值,randomI表示[0,N/K]之间的随机数,J∈{0,1,2,3,…,K-1},I∈{0,1,2,3,…,K-1},N和K都为大于1的正整数,且N大于K。
可选地,所述随机数生成器在每个子区间内生成一个随机数,从而得到所述多个随机数。
可选地,所述计算单元执行公式(2)的数学运算:
sumI=round(randomI+N/K) 公式(2);
其中,round表示取整操作,N表示所述第一整数值,K表示所述第二整数值,sumI表示多个第三整数值,randomI表示相应子区间内的随机数,I∈{0,1,2,3,…,K-1},N和K都为大于1的正整数,且N大于K。
可选地,所述输入队列包括多个存储单元,则所述比较使能单元包括:
针对接收到的一个新的第三整数值,在多个时钟周期内重复地将该第三整数值与所述多个输入存储单元内的各个索引值比较,只有当该第三整数值与所述存储单元中的第一索引值相同后,才会在下一个时钟周期接收另一个新的第三整数值。
可选地,所述输入队列和所述输出队列均为先入先出队列。
根据本公开实施例的第二方面,提供一种处理装置,包括多个硬件实现的不同算子以执行图神经网络模型的各种指令,其中,所述算子包括上述任一项所述的采样器。
根据本公开实施例的第三方面,提供一种装置,包括:
上述的至少一个处理装置;
总线通道,用于接收图神经网络模型的各种指令;
命令处理器,用于解析所述各种指令,并将解析后的命令发送所述至少一个处理装置处理。
根据本公开实施例的第四方面,提供一种方法,用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,所述方法包括:
生成多个随机数;
执行数学运算,所述数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于所述多个随机数在所述多个子区间内获得多个第三整数值,其中,所述第一整数值表示所述指定节点周围的所有邻居节点的数量,所述第二整数值表示针对所述指定节点,要采样的邻居节点的数量;
从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值确定要采样的邻居节点。
可选地,所述从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值采样部分邻居节点包括:
接收并存储所述指定节点周围的所有邻居节点的的索引值;将所述多个第三整数值的每一个第三整数值与所述指定节点的所有邻居节点的索引值进行比较,当与其中的第一索引值相同时,将所述第一索引值输出记为要采样的邻居节点的索引值,并据此采样。
可选地,所述生成多个随机数包括:在所述多个子区间的第一个子区间生成所述多个随机数,所述数学运算包括:将所述多个随机数映射到所述多个子区间。
可选地,所述生成多个随机数包括:在每个子区间内生成一个随机数,从而得到所述多个随机数。
本公开实施例提供的采样器,针对指定节点,先将由零和指定节点周围的所有邻居节点的数量所限定的数值范围划分为多个子区间,然后按照在该多个子区间内得到的多个随机数来确定针对指定节点,要采样的邻居节点,从而实现针对指定节点均匀采样其周围的邻居节点。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是一个示例性的社交网络关系图;
图2是现有技术中的采样器的示意图;
图3是数据中心的层级结构图;
图4是数据中心的立体结构图;
图5是云服务器的结构示意图;
图6是GNN加速单元的结构示意图;
图7是本公开实施例的GNN核的结构示意图;
图8是本公开实施例提供的采样器的结构示意图;
图9用于示意N个邻居节点被划分的K个区间;
图10是基于图9产生的实施例变形的结构图;
图11用于示意时钟信号CLK和使能信号EN的波形图;
图12用于示意现有技术和本公开实施例的采样器的性能指标的柱形图;
图13用于本公开实施例提供的采样方法的流程图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
本文中使用以下术语:
加速单元:也称为神经网络加速单元,针对通用处理器在一些专门用途的领域(例如,处理图像、处理神经网络的各种运算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,它往往与通用处理器CPU配套使用,接受通用处理器的控制,执行一些特定用途或特定领域的处理,提高在特定用途或特定领域中的计算机处理效率。
片上内存:在主核或副核内单独使用,不能被共享的存储器。
命令处理器:在加速单元和驱动该加速单元工作的中央处理单元之间的命令接口。命令处理器接收中央处理单元让加速单元执行的指令,将这些指令分给加速单元中的各个核去执行。另外,它还负责加速单元中各个核的同步。
图神经网络模型:将连接与符号有机结合,不仅使深度学习模型能够应用在图这种非欧几里德结构上,还为深度学习模型赋予了一定的因果推理能力。图神经网络扩展了现有的神经网络,用于处理图数据。在图数据中,每个节点是由其特性和相关节点定义的,而边表示节点之间的关系。
数据中心
图3示出作为本公开实施例所应用的一种场景的数据中心的分层结构图。
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。而神经网络作为人工智能的重要技术,已经大量应用到数据中心大数据分析运算中。
在传统的大型数据中心,网络结构通常是图1所示的三层结构,即分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层:
接入层(Access Layer)103:有时也称为边缘层,包括接入交换机130和接入交换机所连接的各服务器140。各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。接入交换机130是用来让这些服务器接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器。
汇聚层(Aggregation Layer)102:有时候也称为分发层,包括汇聚交换机120。每台汇聚交换机120连接多台接入交换机,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心层(Core Layer)101:包括核心交换机110。核心交换机110为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性。整个数据中心的网络分为L3层路由网络和L2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的L3层路由网络。
通常情况下,汇聚交换机120是L2和L3层路由网络的分界点,汇聚交换机120以下的是L2网络,以上是L3网络。每组汇聚交换机管理一个传送点(POD,Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
交换机120和接入交换机130之间通常使用生成树协议(STP,Spanning TreeProtocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机120可用,其他的汇聚层交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚层,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
图4示出了图2的分层的数据中心中各部件的物理连接。如图2所示,一个核心交换机110连接多个汇聚交换机120,一个汇聚交换机120连接多个接入交换机130,一个接入交换机130接入多个服务器140。
云服务器
云服务器140才是数据中心真实的设备。由于云服务器140高速运转以执行诸如矩阵计算、图像处理、机器学习、压缩、搜索排序等各种任务,因此,为了能够高效完成上述各种任务,云服务器140通常包括中央处理器(CPU)和各种加速单元,如图5所示。加速单元例如各种神经网络的加速单元、数据传输单元(DTU)、图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)中的一个。以下图3所示为例对各个加速单元分别进行介绍。
数据传输单元(DTU)260:它是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备。DTU的主要功能是把远端设备的数据通过无线的方式传送回后台中心。在前端,DTU和客户的设备通过接口相连。DTU上电运行后先注册到移动的GPRS网络,然后去和设置在DTU中的后台中心建立套接字连接。后台中心作为套接字连接的服务端,DTU是套接字连接的客户端。因此DTU和后台软件配合一起使用,在建立连接后,前端的设备和后台的中心就可以通过DTU进行无线数据传输。
图形处理单元(GPU)240:是专门做图像和图形相关运算工作的处理器。使用GPU,克服了CPU中计算单元的空间过少的缺点,采用大量用于专门做图形计算的计算单元,使显卡减少了对CPU的依赖,承担了CPU原来承担的一些计算密集的图像处理工作。
专用集成电路(ASIC):是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。由于这种集成电路是按照用户要求定制的,其结构往往与特定用户要求相适应。
现场可编程门阵列(FPGA):是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数量有限的缺点。
图神经网络加速单元230:是专用于图神经网络模型的加速单元的统称。它可以是欧几里德结构数据(Euclidean Structure Data)的神经网络模型,还可以是处理非欧几里德结构数据(例如图数据)的神经网络模型。本文探讨的是处理图数据的图神经网络加速器。图神经网络模型(包括可执行代码和图数据)可存储在存储器210上,调度单元220将图神经网络模型部署到图神经网络加速单元230执行。具体地,调度单元220可通过指令的形式向图神经网络加速单元230告知图神经网络模型的可执行代码在存储器210的存储位置,图神经网络加速单元230然后可以根据这些位置进行寻址,将可执行指令加载到其上的高速内存中。调度单元220也可以通过指令的形式向图神经网络加速单元230发送图神经网络的可执行代码,图神经网络加速单元230接收可执行代码并加载到其上的高速内存中。同样,图神经网络加速单元230也可以通过上述方式获取图数据。图神经网络加速单元230获取可执行代码和图数据之后,执行可执行代码反馈执行结果。
下面结合图6,具体说明调度单元是如何控制加速单元进行工作的。应该理解,无论是适用于何种神经网络模型的加速单元,调度单元大体上以相同模式驱动加速单元工作。
下面结合图6的处理单元与图神经网络加速单元230的内部结构图,举例说明处理单元是如何控制加速单元工作的。如图6所示,处理单元220内包含多个处理器核222和被多个处理器核222共享的高速缓存221。每个处理器核222包括取指令单元203、指令译码单元224、指令发射单元225、指令执行单元226。
取指令单元223用于将要执行的指令从存储器210中搬运到指令寄存器(可以是图6示出的寄存器堆229中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,处理单元220进入指令译码阶段,指令译码单元224按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元225的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元225位于指令译码单元224与指令执行单元226之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元226,使得多个指令的并行操作成为可能。
指令发射单元225将指令发射到指令执行单元226后,指令执行单元226开始执行指令。但如果该指令执行单元226判断该指令应该是加速单元执行的,则将其转发到相应的加速单元执行。例如,如果该指令是图神经网络推理或图神经网络训练指令,指令执行单元226不再执行该指令,而是将该指令通过总线发送到图神经网络加速单元230,由图神经网络加速单元230执行。
图神经网络加速单元230内部包括一个或多个GNN核、命令处理器237、直接存储访问机制235、和总线通道231。
总线通道231是指令从总线进出图神经网络加速单元230的通道。按照不同的机制,总线通道231可以包括PCIE通道232、I2C通道233、JTAG通道234。
PCIE即PCI-Express,是一种高速串行计算机扩展总线标准,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。PCIE属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。它的主要优势就是数据传输速率高,而且还有相当大的发展潜力。目前,PCIE的总线大多是PCIE GEN3,但本公开实施例也可以采用PCIE GEN4,即遵循PCI-Express4.0标准的总线通道。
I2C通道233是由Philips公司开发的一种简单、双向二线制同步串行总线通道。它只需要两根线即可在连接于总线上的器件之间传送信息。
JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。此标准用于验证设计与测试生产出的印刷电路板功能。1990年JTAG正式由IEEE的1149.1-1990号文档标准化,在1994年,加入了补充文档对边界扫描描述语言(BSDL)进行了说明。从那时开始,这个标准被全球的电子企业广泛采用。边界扫描几乎成为了JTAG的同义词。JTAG通道234即是遵循该标准的总线通道。
直接内存访问(DMA,Direct Memory Access)机制235是一些计算机总线架构提供的功能,它能使数据从附加设备(例如外部的存储器)直接写入到图神经网络加速单元230的片上内存中。这种方式相比于设备之间所有的数据传输都要通过命令处理器237的方式,大大提高了数据访问的效率。正是因为有这样的机制,图神经网络加速单元230的核可以直接访问存储器210,读取深度学习模型中的参数(例如各节点的权重参数)等,大大提高了数据访问效率。虽然图上示出直接内存访问机制235位于处理器237和总线通道231之间,但是图神经网络加速单元230的设计不局限于此。在某些硬件设计中,每个GNN核都可以包含一个直接内存访问机制235,从而GNN核无需经由命令处理器237,而是直接从附加设备上读取数据并写入到图神经网络加速单元230的片上内存中。
命令处理器237将由处理单元220送至图神经网络加速单元230的指令分配给GNN核236执行。指令执行单元226将需要图神经网络加速单元230执行的待执行指令发送给图神经网络加速单元230或者指令执行单元226告知待执行指令在存储器210上的存储位置。待执行指令序列从总线通道231进入后,缓存在命令处理器237,由命令处理器237选择GNN核,将指令序列分配给其执行。待执行指令来自编译好的深度学习模型。需要明白的是,待执行指令序列中,可以包括在处理单元220执行的待执行指令和需要在图神经网络加速单元230执行的待执行指令。
GNN核
图7是一个GNN核的结构示意图。GNN核236是通过硬件实现图神经网络模型的核心部分,包括调度器604、缓存器608、寄存器606、诸如采样器、池化算子、卷积算子、激活算子等各种算子以及寄存器更新单元607。算子是执行图神经网络模型的某个或某些指令的硬件单元。
调度器604从外部接收指令,根据指令触发一个或多个图神经网络算子。图神经网络算子是用于执行图神经网络模型中的可执行指令的硬件单元。图神经网络算子之间使用消息队列620传递数据。例如,调度器604触发算子1执行,算子1将中间数据传送到消息队列620中,算子2从消息队列620中取出中间数据作为输入数据执行。消息队列620表示各个算子之间的消息队列的统称,但实际上,不同算子之间采用不同消息队列传输中间数据。同时,算子的执行结果写入到结果队列(也包含在消息队列620中)中,寄存器更新单元607从结果队列中取出算子执行结果,并据此更新相应的状态寄存器、结果寄存器和/或状态寄存器。调度器604还可以向外部发送各种请求,这些请求通过命令处理器237并经由总线通道231发送出去。例如,调度器604可向调度单元220发送数据加载请求,由调度单元220获得数据访问地址并将访问地址传送给调度器604,调度器604将数据访问地址提供给加速单元GNN核,加速单元GNN核可以将控制提供给直接内存访问机制609,由直接内存访问机制609控制数据加载。
应该指出的是,本文所指的图神经网络模型是神经网络在图数据上应用的所有模型的统称,但根据采用的技术不同和分类方法的不同,图神经网络模型可以分为不同种类,例如从传播的方式来看,图神经网络模型可以分为图卷积神经网络(GCN)模型,图注意力网络(GAT,缩写为了跟GAN区分)模型,Graph LSTM模型等等。因此,一种图神经网络加速单元通常专用于加速一类图神经网络模型,且不同图神经网络加速单元可设计不同的硬件算子,但是普遍地,图神经网络加速单元都会包括一种典型的采样器,该采样器用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,采样得到的部分节点信息被用于构建该指定节点的嵌入表达。
采样器
图8是本公开实施例提供的采样器的结构图。如图上所示,采样器800包括计算单元801、随机数生成器802和执行部件803。
随机数生成器802用于生成随机数。
计算单元801用于执行特定数学运算。具体地,该特定数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于从随机数生成器802接收的多个随机数在多个子区间内得到多个第三整数值,其中,第一整数值表示指定节点的多个邻居节点的数量,第二整数值表示针对指定节点,要采样的邻居节点的数量。
执行部件803用于从指定节点周围的所有邻居节点中,根据多个第三整数值确定要采样的邻居节点。
本公开实施例提供的采样器,针对指定节点,先将由零和指定节点周围的所有邻居节点的数量所限定的数值范围划分为多个子区间,然后按照在该多个子区间内得到的多个随机数来确定针对指定节点,要采样的邻居节点,从而实现针对指定节点能够均匀采样其周围的邻居节点。
此外,由于采样器是按照多个随机数的大小次序来采样指定节点周围的邻居节点,当完成一个随机数对应的采样操作时,该随机数所对应的子区间内的邻居节点的索引值即可以不再存储在执行部件中,这样可以节省执行部件中的存储开销。
在一个实施例中,执行部件803包括比较使能单元804、输入队列805和输出队列806。输入队列805由输入存储单元组成,用于存储指定节点的多个邻居节点的索引值。输出队列806由输出存储单元组成,这里将存储单元区分为输入存储单元和输出存储单元,只是为了方便描述,两者并无本质上的区分。比较使能单元804用于执行以下步骤:从计算单元801持续地接收第三整数值,并将第三整数值与输入存储单元内的索引值进行比较,当与其中的第一索引值相同时,输出使能信号,通过使能信号驱动输出存储单元将输入存储单元输出的第一索引值写入到输出队列806中的相应的输出存储单元中。
总结而言,本实施例是将零与第一整数值(指定节点的多个邻居节点的数量)之间的数值范围划分为多个相等的子区间,然后在每个子区间内获得一个随机整数,进而在多个邻居节点的多个索引值中找到与每个随机整数相同的索引值写入到输出队列中,最终输出队列的各个输出存储单元存储着要采样的邻居节点的索引值。由于本实施例是在每个子区间内获得一个随机整数,并将与每个随机整数相同的索引值作为被采样的邻居节点的索引值,换句话说,每个被采样的邻居节点的索引值都位于每个子区间中,因而被采样的邻居节点分布比较均匀,有利于平衡采样偏差。
继续参考图8所示,在一个实施例中,计算单元801包括除法器8011和加法器8012。除法器8011用于执行除法运算。我们将第一整数值记为N,第二整数值记为K,则除法运算为:step_len=N/K。随机数生成器802本质上是一个伪随机数生成器(即在指定范围生成随机数)。随机数生成器802生成K个取值范围在[0,step_len]、[step_len,2*step_len]、……、[(K-1)*step_len,K*step_len]之间的随机数random。加法器8012用于将除法器8011输出的运算结果step_len与随机数生成器802输出的随机数random相加得到两者之和sum,并将sum输出给比较使能单元804。随机数random的个数为K,因此,计算单元801将输出K个sum。
可采用以下公式表示计算单元802的数学运算。
step_len=N/K 公式(1)
sumI=round(randomI+step_len) 公式(2)
其中,N和K为大于1的正整数且N大于K,randomI表示每次输出的随机数,I∈{0,1,2,3,…,K-1},round是取整操作。
在另一个实施例中,随机数生成器802生成K个取值范围在[0,step_len]内的随机数random,计算单元801则还需要包括一个乘法器(未示出)。乘法器、加法器和除法器组成的数字运算通过公式(3)-(5)表示:
step_len=N/K 公式(3)
product=step_len*J 公式(4)
sum=round(random+product) 公式(5)
其中,N和K为大于1的正整数且N大于K,J为整数,J的取值范围满足公式J∈{0,1,2,3,…,K-1},round是取整操作。
下面基于图9进一步说明采样器的工作流程。图9用于示意N个邻居节点被划分为K个子区间。
根据本实施例,外部系统将某个节点的N个邻居节点的索引值存储到输入队列805中,这个存储过程是串行进行的,即每个时钟周期存储一个邻居节点的索引值,共耗用N个时钟周期完成N个邻居节点的索引值的存储操作。在这N个时钟周期内,随机数生成器802执行K次随机数生成操作,并得到K个随机数random。在这N个周期内,计算单元801输出K个sum。参考图9所示,K个sum就是[0,step_len],[step_len,2*step_len],[2*step_len,3*step_len]、……[(K-1)*step_len,K*step_len]内的K个随机整数。在这N个时钟周期内,比较使能单元804从计算单元801每接收一个新计算出来的sum,就将该sum与输入队列805中的各个索引值相比较,在得到与该sum相等的第一索引值时,向某个输出存储单元发送一个使能信号EN,该使能信号EN将驱动该输出存储单元将输入存储单元输出的第一索引值写入到该输出存储单元中。只有在找到与其相等的第一索引值后,才会接收下一个新计算出来的sum。进一步地,如果按照从小到大的顺序将N个索引值输入到输入队列805,那么当将K个逐步增加的sum与N个逐步增加的索引值比对时,只要将最新的sum与最新的索引值比对即可。如此,对于N个邻居节点,只需要不超过N个时钟周期就可以得到被采样的K个邻居节点的索引值。
在可选的实施例中,输入队列805和输出队列807都是先入先出队列。先入先出队列意味着先进入队列的索引值也将先从队列中输出,例如先进入输入队列805的索引值大于后进入到输入队列805中的索引值。
图10是基于图9产生的实施例变形的结构图。在图10中,唯一不同之处在于输入队列只包括一个输入存储单元807,即只能存储一个索引值。
图11用于示意时钟信号CLK和使能信号EN的波形图。下面基于图11来示例性地说明图10的采样器的信号控制流程。在CLK的第一个时钟周期,外部系统将index1存储到输入存储单元807中,同时比较使能单元804将输入存储单元807内的索引值index1与接收到的sum1做了比较,两者不同;然后在第二个时钟周期内,外部系统将index2存储到输入存储单元807中,同时比较使能单元804将sum1与输入存储单元807内的index2做了比较,两者相同,则输出高电平的使能信号EN作为输出队列806的写使能信号,以驱动输出队列806将索引值index2写入到输出队列806的相应的输出存储单元中;然后在第三个时钟周期内,外部系统将index3存储到输入存储单元807中,同时比较使能单元804接收sum2并将sum2与index3比较,两者不同;然后在第四个时钟周期内,外部系统将index4存储到输入存储单元807中,同时比较使能单元804将sum2与index4比较,两者相同,产生高电平的使能信号EN作为输出队列806的写使能信号,以驱动输出队列806将索引值index4写入到输出队列806的相应的输出存储单元中,以此类推。但这里需要的强调的是,外部系统在将索引值存储到输入存储单元807时,需按照从小到大的顺序进行存储,即index1<index2<index3<index4。综上,本公开实施例提供的采样器在N个时钟周期内完成K个邻居节点的采样操作,而现有技术需要在(N+K)完成N个邻居节点的采样操作,因此,本公开实施例提高了采样效率,降低了延迟度,而且采样得到的邻居节点更加均匀。
本公开实施例的采样器只使用一个存储单元来存储邻居节点的索引值,而现有技术提供的采样器则需要N个存储单元来存储邻居节点的索引值,因此,本公开实施例减少了存储器占用,有助于降低制造成本。
基于实验室环境,我们将现有技术的采样器和本公开实施例的采样器进行验证,能够得到如图12所示的柱形图。其中,BaseLine表示现有技术的采样器,Invented表示本公开实施例的采样器,左侧柱形图表示算法性能,右侧表示寄存器数量,经过试验可以确定,算法性能提高了91.9%,并节省了23%的寄存器。该试验的采样器的邻居节点数量NMAX=270,需采样的邻居节点的最大值KMAX=25。
与上述硬件实现的采样器对应,本公开实施例还提供一种软件实现的采样方法,该采样方法用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样。如图13所示,该方法包括以下步骤。
步骤S101,生成多个随机数。
步骤S102,执行数学运算,得到多个第三整数值。所述数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于多个随机数在多个子区间内获得多个第三整数值,其中,第一整数值表示指定节点周围的所有邻居节点的数量,第二整数值表示针对所述指定节点,要采样的邻居节点的数量。
步骤S103,从指定节点周围的所有邻居节点中,根据多个第三整数值确定要采样的邻居节点。
在一个实施例中,步骤S103包括:接收并存储指定节点周围的所有邻居节点的的索引值;以及将多个第三整数值的每一个第三整数值与指定节点的所有邻居节点的索引值进行比较,当与其中的第一索引值相同时,将第一索引值输出记为要采样的邻居节点的索引值,并据此采样。
在一个实施例中,步骤S101包括:在多个子区间的第一个子区间生成多个随机数,所述数学运算用于将多个随机数分别映射到多个子区间。该映射可采用以下公式(6)完成。
sumI=round(randomI+N*J/K) 公式(6);
其中,round表示取整操作,N表示邻居节点数量,K表示要划分的区间数量,J∈{0,1,2,3,…,K-1},I∈{0,1,2,3,…,K-1},N和K都为大于1的正整数,且N大于K。
本公开实施例的商业价值
本公开实施例提供的采样器应用于图神经网络加速单元中,能够均匀采样邻居节点。在进一步的实施例中,还可以减少存储器的数量并提高采样效率,从而降低图神经网络加速单元的制造成本。因此本公开实施例提供的采样器以及包括此类采样器的图神经网络加速单元应具有应用前景和商业价值。
本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (15)

1.一种采样器,所述采样器用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,所述采样器包括:
随机数生成器,用于生成多个随机数;
计算单元,用于执行数学运算,所述数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于所述多个随机数在所述多个子区间内获得多个第三整数值,其中,所述第一整数值表示所述指定节点周围的所有邻居节点的数量,所述第二整数值表示针对所述指定节点,要采样的邻居节点的数量;
执行部件,用于从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值确定要采样的邻居节点。
2.根据权利要求1所述的采样器,其中,所述执行部件包括:
输入队列,由输入存储单元组成,用于存储所述指定节点周围的所有邻居节点的的索引值;
输出队列,由输出存储单元组成;
比较使能单元,用于将所述多个第三整数值与所述输入队列中的索引值进行比较,当与其中的第一索引值相同时,输出使能信号,通过使能信号驱动所述输出存储单元将所述输入存储单元输出的第一索引值写入到相应的输出存储单元中。
3.根据权利要求2所述的采样器,其中,所述输入队列只包括一个输入存储单元,且所述所有邻居节点的索引值是按照从小到大的顺序在多个时钟周期被存储到所述输入存储单元中,
则所述比较使能单元还包括:
针对接收到的一个新的第三整数值,在多个时钟周期内重复地将该第三整数值与所述输入存储单元内的索引值比较,只当该第三整数值与所述输入存储单元内的第一索引值相同时,才在下一个时钟周期内接收另一个新的第三整数值。
4.根据权利要求1所述的采样器,其中,所述随机数生成器在所述多个子区间的第一个子区间生成所述多个随机数,所述计算单元将所述多个随机数映射到所述多个子区间。
5.根据权利要求4所述的采样器,其中,所述计算单元完成公式(1)的数学运算以将所述多个随机数映射到所述多个子区间:
sumI=round(randomI+N*J/K) 公式(1);
其中,round表示取整操作,N表示所述第一整数值,K表示所述第二整数值,sumI表示多个第三整数值,randomI表示[0,N/K]之间的随机数,J∈{0,1,2,3,…,K-1},I∈{0,1,2,3,…,K-1},N和K都为大于1的正整数,且N大于K。
6.根据权利要求1所述的采样器,其中,所述随机数生成器在每个子区间内生成一个随机数,从而得到所述多个随机数。
7.根据权利要求6所述的采样器,其中,所述计算单元执行公式(2)的数学运算:
sumI=round(randomI+N/K) 公式(2);
其中,round表示取整操作,N表示所述第一整数值,K表示所述第二整数值,sumI表示多个第三整数值,randomI表示相应子区间内的随机数,I∈{0,1,2,3,…,K-1},N和K都为大于1的正整数,且N大于K。
8.根据权利要求2所述的采样器,其中,所述输入队列包括多个存储单元,则所述比较使能单元包括:
针对接收到的一个新的第三整数值,在多个时钟周期内重复地将该第三整数值与所述多个输入存储单元内的各个索引值比较,只有当该第三整数值与所述存储单元中的第一索引值相同后,才会在下一个时钟周期接收另一个新的第三整数值。
9.根据权利要求2所述的采样器,其中,所述输入队列和所述输出队列均为先入先出队列。
10.一种处理装置,包括多个硬件实现的不同算子以执行图神经网络模型的各种指令,其中,所述算子包括如权利要求1至9任一项所述的采样器。
11.一种装置,包括:
如权利要求10所述的至少一个处理装置;
总线通道,用于接收图神经网络模型的各种指令;
命令处理器,用于解析所述各种指令,并将解析后的命令发送所述至少一个处理装置处理。
12.一种方法,用于完成对图神经网络模型的指定节点周围的邻居节点的随机采样,所述方法包括:
生成多个随机数;
执行数学运算,所述数学运算表示基于第二整数值将零与第一整数值之间的数值范围划分为多个相等的子区间,并基于所述多个随机数在所述多个子区间内获得多个第三整数值,其中,所述第一整数值表示所述指定节点周围的所有邻居节点的数量,所述第二整数值表示针对所述指定节点,要采样的邻居节点的数量;
从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值确定要采样的邻居节点。
13.根据权利要求12所述的方法,其中,所述从所述指定节点周围的所有邻居节点中,根据所述多个第三整数值确定要采样的邻居节点包括:
接收并存储所述指定节点周围的所有邻居节点的的索引值;
将所述多个第三整数值的每一个第三整数值与所述指定节点的所有邻居节点的索引值进行比较,当与其中的第一索引值相同时,将所述第一索引值输出并记为要采样的邻居节点的索引值。
14.根据权利要求12所述的方法,其中,所述生成多个随机数包括:在所述多个子区间的第一个子区间生成所述多个随机数,所述数学运算包括:将所述多个随机数映射到所述多个子区间。
15.根据权利要求12所述的方法,其中,所述生成多个随机数包括:在每个子区间内生成一个随机数,从而得到所述多个随机数。
CN202110231273.7A 2021-03-02 2021-03-02 采样器以及用于图神经网络模型执行的装置 Pending CN114997380A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110231273.7A CN114997380A (zh) 2021-03-02 2021-03-02 采样器以及用于图神经网络模型执行的装置
US17/677,927 US20220318592A1 (en) 2021-03-02 2022-02-22 Sampler and apparatus for executing graph neural network model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110231273.7A CN114997380A (zh) 2021-03-02 2021-03-02 采样器以及用于图神经网络模型执行的装置

Publications (1)

Publication Number Publication Date
CN114997380A true CN114997380A (zh) 2022-09-02

Family

ID=83018148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110231273.7A Pending CN114997380A (zh) 2021-03-02 2021-03-02 采样器以及用于图神经网络模型执行的装置

Country Status (2)

Country Link
US (1) US20220318592A1 (zh)
CN (1) CN114997380A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116797053B (zh) * 2023-08-25 2023-11-10 深圳普菲特信息科技股份有限公司 基于神经网络的化工生产数据分析方法、系统和介质

Also Published As

Publication number Publication date
US20220318592A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
US20220197714A1 (en) Training a neural network using a non-homogenous set of reconfigurable processors
US11847395B2 (en) Executing a neural network graph using a non-homogenous set of reconfigurable processors
WO2018103562A1 (zh) 一种数据处理系统及方法
US20230035910A1 (en) Method, system and device for parallel processing of data, and storage medium
US9495501B1 (en) Large cluster persistence during placement optimization of integrated circuit designs
WO2022088082A1 (zh) 基于缺陷检测的任务处理方法、装置及设备及存储介质
US9298084B2 (en) Preventing double patterning odd cycles
US11789733B2 (en) Instruction processing apparatus, acceleration unit, and server
CN110263277A (zh) 页面数据的显示方法、更新方法、装置、设备及存储介质
CN113642734A (zh) 一种深度学习模型的分布式训练方法、装置以及计算设备
WO2022133047A1 (en) Dataflow function offload to reconfigurable processors
US10568203B2 (en) Modifying a circuit design
CN108768778B (zh) 一种网络时延计算方法、装置、设备及存储介质
CN114997380A (zh) 采样器以及用于图神经网络模型执行的装置
US8739085B1 (en) Vectorization of bit-level netlists
US20220292390A1 (en) Uniform artificial intelligence model conversion
CN113139650A (zh) 深度学习模型的调优方法和计算装置
CN113269319A (zh) 深度学习模型的调优方法、编译方法及计算装置
CN113705798A (zh) 处理单元、计算装置及深度学习模型的计算图优化方法
CN116708591A (zh) 协议转换方法、装置、电子设备和存储介质
US20220343144A1 (en) Server and accelerator for neural network computations
CN113344214B (zh) 数据处理模型的训练方法、装置、电子设备及存储介质
CN112383443A (zh) 运行于rdma通信环境的并行应用通信性能预测方法
CN114238004B (zh) 互联电路的数据传输正确性检查方法及装置、电子设备
US20230367923A1 (en) Framework for system simulation using multiple simulators

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

Effective date of registration: 20240307

Address after: # 03-06, Lai Zan Da Building 1, 51 Belarusian Road, Singapore

Applicant after: Alibaba Innovation Co.

Country or region after: Singapore

Address before: Room 01, 45th Floor, AXA Building, 8 Shanton Road, Singapore

Applicant before: Alibaba Singapore Holdings Ltd.

Country or region before: Singapore