CN114692854A - 用于生成人工神经网络模型的内核的npu及其方法 - Google Patents

用于生成人工神经网络模型的内核的npu及其方法 Download PDF

Info

Publication number
CN114692854A
CN114692854A CN202111332117.6A CN202111332117A CN114692854A CN 114692854 A CN114692854 A CN 114692854A CN 202111332117 A CN202111332117 A CN 202111332117A CN 114692854 A CN114692854 A CN 114692854A
Authority
CN
China
Prior art keywords
kernel
npu
neural network
data
memory
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
CN202111332117.6A
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.)
Tipu Aikesi Co ltd
Original Assignee
Tipu Aikesi Co 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 Tipu Aikesi Co ltd filed Critical Tipu Aikesi Co ltd
Publication of CN114692854A publication Critical patent/CN114692854A/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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

提供了一种神经处理单元(NPU)、驱动人工神经网络(ANN)模型的方法和ANN驱动装置。NPU包括半导体电路,该半导体电路包括被配置为处理人工神经网络(ANN)模型的操作的至少一个处理元件(PE);以及至少一个可配置以存储第一内核和第一内核滤波器的存储器。NPU被配置为基于第一内核和第一内核滤波器生成第一调制内核,并且基于第一内核和通过将数学函数应用于第一内核滤波器生成的第二内核滤波器而生成第二调制内核。通过减少从单独的存储器读取到人工神经网络处理器的内核的数据大小和/或通过减少存储器读取请求的数量来减少功耗和存储器读取时间。

Description

用于生成人工神经网络模型的内核的NPU及其方法
相关申请的交叉引用
本申请要求于2020年12月29日向韩国知识产权局提交的韩国专利申请 No.10-2020-0186375的优先权,其公开内容通过引用并入本文。
技术领域
本公开内容涉及人工神经网络。
背景技术
人类具备可以进行识别、分类、推理、预测和控制/决策的智 能。人工智能(AI)是指人工模仿人类智能。
人脑由称为神经元的大量神经细胞组成。每个神经元通过称为 突触的连接与数百到数千个其他神经元相连。对生物神经元的工作原理和神 经元之间的连接关系进行建模以模拟人类智能,并且被称为人工神经网络 (ANN)模型。换句话说,人工神经网络是一个系统,其中模拟神经元的节点 以层结构连接。
ANN模型根据层数分为单层神经网络和多层神经网络,一般的 多层神经网络由输入层、隐藏层和输出层组成。这里,输入层是接收外部数 据的层,其中输入层的神经元的数量与输入变量的数量相同;隐藏层位于输 入层和输出层之间,接收来自输入层的信号以提取特征并且将特征传输到输 出层;而输出层接收来自隐藏层的信号,并将接收到的信号输出到外部。神 经元之间的输入信号乘以值为零(0)到一(1)的每个连接强度,然后相加,如果 总和大于神经元的阈值,则神经元被激活并且通过激活函数被实现为输出 值。
同时,为了实现更高的人工智能,隐藏层数增加的人工神经网 络被称为深度神经网络(DNN)。
DNN有多种类型,但众所周知,卷积神经网络(CNN)易于从输 入数据中提取特征并识别特征模式。
卷积神经网络(CNN)是一种神经网络,其功能类似于人脑视觉 皮层中的图像处理。众所周知,卷积神经网络适用于图像处理。
参考图7,卷积神经网络以卷积通道和池化通道交替重复的形 式配置。在卷积神经网络中,大部分计算时间都被卷积运算占用。卷积神经 网络通过经由矩阵型内核提取每个通道的图像特征并且经由池化提供例如动 态或失真之类的动态平衡来识别对象。对于每个通道,通过输入数据和内核 的卷积得到特征图,并且应用例如修正线性单元(ReLU)之类的激活函数来生 成对应通道的激活图。然后可以应用池化。实际对模式进行分类的神经网络 位于特征提取神经网络的末端,并且称为全连接层。在卷积神经网络的计算 处理中,大部分计算都是通过卷积或矩阵乘法进行的。这时,从存储器中读 取必要内核的频率是相当频繁的。卷积神经网络的很大一部分操作需要时间 从存储器中读取与每个通道对应的内核。
存储器由多个存储单元组成,存储器的每个存储单元具有唯一 的存储地址。当人工神经网络处理器生成存储在存储器中的内核读取命令 时,可能会出现几个时钟周期的延迟,直到访问与该存储器地址对应的存储 单元。
因此,存在一个问题,即从存储器中读取必要的内核并执行卷 积所消耗的时间和功率非常大。
发明内容
本公开的发明人已经认识到,在人工神经网络模型的推理操作 过程中,NPU会频繁地从单独的存储器读取人工神经网络模型各层的节点和/ 或内核的权重值。
本公开的发明人已经认识到,神经处理单元(NPU)从单独的存 储器读取人工神经网络模型的节点和/或内核的权重值的处理速度很慢并且消 耗大量能量。
本公开的发明人已经认识到,已经训练的人工神经网络模型的 内核彼此具有非常高的相似性。
本公开的发明人已经认识到,即使在一定范围内部分调整人工 神经网络模型的某些内核的权重值,人工神经网络模型的推理准确度也不会 大幅下降。
因此,本公开的发明人已经认识到,彼此具有非常高相似性的 内核可以利用参考内核通过简单等式来表达。
此外,本公开的发明人已经认识到,即使对模型进行训练或再 训练使得人工神经网络模型的内核之间的相似性很高,即内核之间的偏差很 小,人工神经网络模型的推理准确度也可以保持在商业上可用的水平。
因此,本公开的发明人已经认识到,可以通过在训练期间设置 成本函数来训练人工神经网络模型,以提高目标准确度并最小化人工神经网 络模型的参考内核与其他内核之间的最大偏差。
此外,本公开的发明人已经认识到,当最小化从单独的存储器 进行的节点和/或内核权重值的读取,并且使用神经处理单元(NPU)内的简单 操作来计算和使用靠近参考节点和/或内核的节点和/或内核的权重值时,可以 提高用于处理人工神经网络模型的系统的处理速度和/或降低其功耗。
因此,本公开的一个方面是提供一种能够以简单的算法生成调 制内核、减少存储器的读取操作次数、降低功耗的神经处理单元及其操作方 法。
然而,本公开不限于此,本领域技术人员将根据以下描述清楚 地理解其他方面。
根据本公开的实施方案,提供了一种包括电路的神经处理单元 (NPU)。所述电路可以包括:至少一个处理元件(PE),其被配置为处理人工神 经网络(ANN)模型的操作;和至少一个存储器,其能配置为存储第一内核和 第一内核滤波器。所述NPU可以被配置为基于所述第一内核和所述第一内核 滤波器生成第一调制内核。
所述第一内核可以包括K×M矩阵,K和M是整数,并且所述 K×M矩阵可以包括适用于所述ANN模型的第一层的至少一个第一权重值或 多个权重值。
所述第一内核滤波器可以被配置为基于所述第一内核的至少一 个内核权重值与所述第一调制内核的至少一个调制内核权重值之间的差来生 成。
在所述ANN模型的训练过程期间设置所述第一内核滤波器。
所述电路可以被配置为基于所述第一内核和所述第一内核滤波 器生成所述第一调制内核。
所述电路可以被配置为基于所述第一内核和第二内核滤波器生 成第二调制内核。所述第二内核滤波器可以被设置为通过将数学函数应用于 所述第一内核滤波器来生成,并且,所述数学函数可以包括delta函数、旋转 函数、转置函数、偏置函数(biasfunction)和全局权重函数中的至少一种。
所述电路可以被配置为基于所述第一内核、所述第一内核滤波 器、应用于所述第一内核或所述第一内核滤波器的所述数学函数、应用于所 述第一内核或所述第一内核滤波器的系数、以及应用于所述第一内核或所述 第一内核滤波器的偏移量中的一者。
所述至少一个存储器还可以配置为存储至少一个内核和至少一 个内核滤波器之间的映射信息,以生成至少一个调制内核。
所述ANN模型包括关于第一权重位的位分配的信息,所述第 一权重位包括在用于第一模式的第一内核滤波器中。
所述NPU可以以多种模式中的一种操作,所述多种模式包括: 第一模式,其中将包括在所述第一内核中的多个权重位的第一部分应用于所 述ANN模型;和第二模式,其中将所述第一内核中包括的多个权重位中的全 部都应用于所述ANN模型。如果根据所述第一模式激活所述第一部分,则可 以选择所述第一部分中的所述权重位。
所述第一内核可以包括被分组为第一部分和第二部分的多个权 重位,以及,所述第一部分和所述第二部分可以被配置为选择性地使用。
所述第一内核滤波器可以被配置为使得所述第一内核滤波器中 的值的位宽小于所述第一内核的权重的位宽。
根据本公开的另一实施方案,提供了一种人工神经网络(ANN) 模型的驱动方法。该方法可以包括:执行所述ANN模型的多个操作;和存储 多个内核以及多个内核滤波器,以用于多个操作。所述多个操作可以包括基 于所述多个内核中的至少一个和所述多个内核滤波器中的至少一个中的相应 内核滤波器生成多个调制内核。
为所述ANN模型执行的所述多个操作还可以包括:在所述 ANN模型的所述多个内核中设置任意内核,所述任意内核对应于所述多个内 核中的基本内核;以及为与所述基本内核对应的所述任意内核设置所述多个 内核滤波器中的任意内核滤波器。
为所述ANN模型执行的所述多个操作还可以包括:根据准确 度成本函数和权重大小成本函数,基于训练数据集和验证数据集训练ANN模 型;以及确定所述多个内核中的基本内核与所述多个内核滤波器中的任意内 核滤波器之间的映射数据。
为所述ANN模型执行的所述多个操作可以由包括电路的神经 处理单元(NPU)执行,所述电路包括至少一个处理元件(PE)和至少一个存储 器。为所述ANN模型执行的所述多个操作还可以包括:从所述至少一个存储 器中读取所述多个内核中的第一内核;通过将所述多个内核中的所述第一内 核应用到所述ANN模型的第一层或所述ANN模型的第一通道来执行第一操 作;从所述至少一个存储器中读取所述内核滤波器;基于所述多个内核中的所述第一内核和所述多个内核滤波器中的第一内核滤波器生成第一调制内 核;以及通过将所述第一调制内核应用到所述ANN模型的第二层或所述 ANN模型的第二通道,为所述ANN模型执行第二操作。
根据本公开的另一实施方案,提供了一种装置。该装置可以包 括:半导体基板,其上形成有导电图案;至少一个第一存储器,其电连接到 所述半导体基板并且能配置为存储关于第一内核的信息;以及至少一个神经 处理单元(NPU),其电连接到所述基板并且能配置为访问所述至少一个第一 存储器,所述NPU包括半导体电路,该半导体电路包括:至少一个处理元件 (PE),其被配置为处理人工神经网络(ANN)模型的操作,以及至少一个内部 存储器,其能配置为存储关于第一内核滤波器的信息。如果关于所述第一内 核的信息是从所述至少一个第一存储器中读取的,则所述第一内核可以被存 储在所述至少一个内部存储器中,并且,所述ANN模型的所述操作可以包括 基于所述第一内核和所述第一内核滤波器生成第一调制内核。
根据本公开,通过生成至少一个基本内核并且处理卷积神经网 络的卷积运算,可以降低每次卷积运算读取对应内核所需的功耗,并且可以 减少存储器读取时间。
根据本公开,通过利用基本内核和内核滤波器,可以减少存储 在存储器中的内核的数量和/或数据的大小。
此外,由于从存储器读取到人工神经网络处理器的内核的数据 大小减少和/或存储器读取请求的次数减少,因此具有降低功耗和减少存储器 读取时间的效果。
此外,根据本公开,可以减少存储器和神经处理单元的数据传 输量和/或存储器读取请求的数量。由于减少了人工神经网络处理器的数据匮 乏和/或空闲(IDLE)时间的发生,因此可以提高人工神经网络处理器的运行效 率。
附图说明
图1是示出根据本公开的神经处理单元的示意图。
图2是示出可以应用于本公开的处理元件阵列的一个处理元件 的示意图。
图3是示出图1的神经处理单元100的修改实施方案的示例 图。
图4是示出示例性人工神经网络模型的示意图。
图5A是示出包括图1或图3的神经处理单元100的ANN驱动 装置的配置的示例图,图5B是示出在神经处理单元100的操作期间的能量消 耗的示例图。
图6A是示出包括图1或图3的神经处理单元100的ANN驱动 装置的修改配置的示例图。
图6B是示出包括图1或图3的神经处理单元100的ANN驱动 装置的修改配置的示例图。
图7是说明卷积神经网络的基本结构的图。
图8是示出卷积层的输入数据和用于卷积运算的内核的图。
图9是示出使用内核生成激活图的卷积神经网络的操作的图。
图10是示出图7到图9中描述的卷积神经网络的操作的总图以 便更好的理解。
图11是示出内核滤波器的生成的图。
图12是示出恢复原始内核或生成与原始内核相似的内核的示例 的示例图。
图13是示出恢复原始内核或生成与原始内核相似的内核的另一 示例的示例图。
图14是示出恢复原始内核或生成与原始内核相似的内核的另一 示例的示例图。
图15示出了通过旋转基本内核来生成另一个内核的示例。
图16示出了通过转置基本内核来生成另一个内核的示例。
图17示出了通过转置基本内核来生成另一个内核的示例。
图18是示出排列在表格中以便更好理解的内核生成算法(或内 核恢复算法)的示例图。
图19是示出使用多个基本内核和多个内核滤波器来恢复人工神 经网络(例如,CNN)模型的结构的概念的示例图。
图20是示出用于确定基本内核和内核滤波器的步骤的流程图。
图21是示出卷积神经网络的内核恢复之后的步骤的流程图。
图22是图1或图3的神经处理单元的操作的示例性流程图。
图23A和23B是示出每个模式的内核的活动位的示例图。
具体实施方式
根据在本说明书或申请中公开的本公开内容的构思的实施方案 的特定结构或逐步描述仅举例用于说明根据本公开的构思的实施方案的目 的,并且根据本公开的构思的实施方案可以以各种形式体现,并且根据本公 开的构思的实施方案可以以各种形式体现,并且不应被解释为限于本说明书 或申请中描述的实施方案。
由于根据本公开的构思的实施方案可以具有各种修改并且可以 具有各种形式,因此特定实施方案将在附图中示出并且在本说明书或申请中 进行详细描述。然而,这并不旨在就具体的公开形式来限制根据本公开的构 思的实施方案,并且应当理解为包括在本公开的精神和范围内的所有修改、 等同和替代方案。
诸如第一和/或第二之类的术语可用于描述各种要素,但这些要 素不应受这些术语的限制。上述术语仅用于将一个要素与另一要素区分开 来,例如,在不脱离根据本公开的构思的范围的情况下,第一要素可称为第 二要素,类似地,第二要素也可以称为第一要素。
当一个元件被称为与另一个元件“连接”或“接触”时,应理 解,另一个元件可以直接连接到另一个元件或与另一个元件接触,但其他元 件可以被设置在它们之间。另一方面,当提到某个元件“直接连接到”或 “直接接触”另一个元件时,应该理解为在它们之间不存在其他元件。描述 元件之间的关系的其他表述,例如“介于……之间”和“紧邻……之间”或 “邻近”和“紧邻”等,应作类似解释。
此处使用的术语仅用于描述具体实施方案,并且不意图用于限 制本公开。除非上下文另有明确规定,否则单数表达可包括复数表达。
应当理解,如本文所用的,诸如“包含”或“具有”等术语旨 在表示所陈述的特征、数量、步骤、动作、部件、部分或它们的组合存在, 但并不排除添加或存在至少一个其他特征或数量、步骤、操作、元件、部分 或其组合的可能性。
除非另有定义,否则本文中使用的所有术语,包括技术或科学 术语,都具有与本公开内容所属领域的普通技术人员通常理解的含义相同的 含义。诸如在常用词典中定义的术语应理解为具有与相关技术背景中的含义 一致的含义,并且不应理解为理想的或过于正式的含义,除非在本说明书中 明确定义。
在描述实施方案时,可以省略在本公开所属的技术领域中公知 的并且与本公开没有直接关系的技术内容的描述。这是为了更清楚地传达本 公开的主旨,而不会通过省略不必要的描述而模糊本公开的主旨。
在下文中,为了便于理解本说明书中呈现的公开内容,将简要 概括本说明书中使用的术语。
NPU:神经处理单元(NPU)的缩写,其可以指专门用于计算人 工神经网络模型的处理器,其与中央处理单元(CPU)分开。
ANN:人工神经网络的缩写。为了模仿人类智能,它可以指通 过模仿人脑中的那些神经元以层状结构连接节点的网络通过突触连接。
关于人工神经网络结构的信息:包括关于层数的信息、层中的 节点数、每个节点的值、运算处理方法的信息、应用于每个节点的权重矩阵 的信息等等的信息。
关于人工神经网络数据局部性的信息:允许神经处理单元根据 向单独的存储器请求的数据访问请求顺序来预测由神经处理单元处理的人工 神经网络模型的操作顺序的信息。
DNN:深度神经网络的缩写,其可以意指增加人工神经网络的 隐藏层数,以实现更高的人工智能。
CNN:卷积神经网络的缩写,一种神经网络,其功能类似于人 脑视觉皮层中的图像处理。众所周知,卷积神经网络适用于图像处理,并且 众所周知,优于从输入数据中提取特征和识别特征的模式。
内核:其可以意指应用于CNN的权重矩阵。
基本内核:它可以意指在应用于CNN的多个内核中具有代表 性的内核。
内核滤波器:它可以意指用于从基本内核或包含值的矩阵生成/ 重新生成另一个内核的值。
在下文中,将通过参照附图描述本公开的优选实施方案来详细 描述本公开。在下文中,将参考附图详细描述本公开的实施方案。
图1示出了根据本公开的神经处理单元。
图1的神经处理单元(NPU)100是专门执行人工神经网络的操作 的处理器。
人工神经网络是指一种人工神经元的网络,其在接收到多个输 入或刺激时,会将权重相乘和相加,并通过激活函数转换和传输被添加有附 加偏置(bias)的值。以这种方式训练的人工神经网络可用于从输入数据中输出 推理结果。
神经处理单元100可以是实现为电气/电子电路的半导体。电气/ 电子电路可以包括多个电子部件(例如,晶体管和电容器)。神经处理单元100 可以包括处理元件(PE)阵列110、NPU内部存储器120、NPU调度器130和 NPU接口140。处理元件阵列110、NPU内部存储器120、NPU调度器130 和NPU接口140中的每一个可以是连接有多个晶体管的半导体电路。因此, 其中的一些可能难以用人眼识别和区分,并且可能仅通过其操作来识别。例 如,任何电路都可以作为处理元件阵列110运行,或者可以作为NPU调度器 130运行。
神经处理单元100可以包括处理元件阵列110、被配置为存储 可以由处理元件阵列110推理的人工神经网络模型的NPU内部存储器120、 被配置为基于关于人工神经网络模型的局部性信息或结构的信息控制处理元 件阵列110和NPU内部存储器120的NPU调度器130。这里,人工神经网络 模型可以包括关于人工神经网络模型的数据局部性或结构的信息。人工神经 网络模型可以指经过训练以执行特定推理功能的AI识别模型。
处理元件阵列110可以执行人工神经网络的操作。例如,当输 入数据被输入时,处理元件阵列110可以使人工神经网络执行训练。在训练 完成之后,如果输入数据被输入,则处理元件阵列110可以通过经训练的人 工神经网络执行推导推理结果的操作。
NPU接口140可以通过系统总线与图5A、图6A或图6B的 ANN驱动装置中的各种元件(例如存储器)通信。
例如,神经处理单元100可以将存储在图5A、图6A或图6B 的存储器200中的人工神经网络模型的数据通过NPU接口140加载到NPU 内部存储器120。
NPU调度器130可以被配置为控制处理元件阵列110的操作以 用于神经处理单元100的推理操作和NPU内部存储器120的读取和写入序 列。
NPU调度器130可以被配置为通过分析人工神经网络模型的数 据局部性信息或关于其结构的信息来控制处理元件阵列110和NPU内部存储 器120。
NPU调度器130可以分析人工神经网络模型的结构以在处理元 件阵列110中操作。人工神经网络模型可以包括的人工神经网络数据可以存 储每一层的节点数据、关于层的排列数据的局部性或结构的信息,以及连接 每一层节点的每个连接网络的权重数据。人工神经网络的数据可以存储在 NPU调度器130或NPU内部存储器120内部提供的存储器中。NPU调度器 130可以通过访问图5A、图6A或图6B的存储器200来利用必要的数据。然 而,本公开不限于此;也就是说,可以根据人工神经网络模型的例如节点数 据和权重数据之类的数据生成人工神经网络模型的数据局部性信息或关于其 结构的信息。权重数据也可能被称为权重内核。节点数据也可以称为特征 图。例如,可以在设计人工神经网络模型或完成训练时生成定义人工神经网 络模型结构的数据。然而,本公开不限于此。
NPU调度器130可以基于人工神经网络模型的数据局部性信息 或结构信息来调度人工神经网络模型的操作序列。
NPU调度器130可以基于人工神经网络模型的数据局部性信息 或结构信息获得其中存储人工神经网络模型的层的节点数据和连接网络的权 重数据的存储器地址值。例如,NPU调度器130可以获得存储在存储器中的 人工神经网络模型的层的节点数据和连接网络的权重数据的存储器地址值。 因此,NPU调度器130可以将要驱动的人工神经网络模型的层的节点数据和 连接网络的权重数据从存储器200中取出并存储在NPU内部存储器120中。每层的节点数据可以有对应的各自的存储器地址值。每个连接网络的权重数 据可以有对应的各自的存储器地址值。
NPU调度器130可以基于人工神经网络模型的数据局部性信息 或结构信息(例如关于人工神经网络模型的人工神经网络的层的局部性信息或 结构的信息)调度处理元件阵列110的操作顺序。
由于NPU调度器130基于人工神经网络模型的数据局部性信息 或结构信息来执行调度,所以它的操作可以不同于一般的CPU调度概念。一 般CPU的调度通过考虑公平性、效率、稳定性和响应时间来实现最佳效率。 也就是说,考虑到优先级和操作时间,安排在同一时间内执行最多的处理作 业。
考虑到诸如每个处理的优先级顺序和操作处理时间等数据,传 统的CPU使用用于调度任务的算法。
然而,NPU调度器130可以基于关于人工神经网络模型的数据 局部性或结构的信息来确定处理序列。
此外,NPU调度器130可以基于关于人工神经网络模型的数据 局部性信息或结构的信息和/或神经处理单元100的数据局部性信息或关于其 结构的信息来确定将使用的处理序列。
然而,本公开不限于关于神经处理单元100的数据局部信息或 结构的信息。例如,关于神经处理单元100的数据局部信息或结构的信息可 以通过利用NPU内部存储器120的存储器大小、NPU内部存储器120的层级 结构、处理元件PE1至PE12数据的数量、处理元件PE1至PE12的算子架构 中的至少一者来确定处理顺序。即,关于神经处理单元100的数据局部性信 息或结构的信息可以包括NPU内部存储器120的存储器大小、NPU内部存储 器120的层级结构、处理元件PE1到PE12的算子架构中的至少一种数据。 然而,本公开不限于关于神经处理单元100的数据局部性信息或结构的信 息。NPU内部存储器120的存储器大小可以包括关于存储器容量的信息。 NPU内部存储器120的层级结构可以包括关于每个层级结构的特定层级之间 的连接关系的信息。处理元件PE1至PE12的算子架构可以包括关于处理元件内部的部件的信息。
根据本公开的实施方案的神经处理单元100可包括至少一个处 理元件、可存储可由所述至少一个处理元件推理的人工神经网络模型的NPU 内部存储器120、以及NPU调度器130,该NPU调度器130被配置为基于人 工神经网络模型的数据局部性信息或结构信息来控制至少一个处理单元和 NPU内部存储器120。NPU调度器130可被配置为进一步接收关于神经处理 单元100的数据局部性信息或结构的信息。此外,关于神经处理单元100的 数据局部性信息或结构的信息可包括NPU内部存储器120的存储器大小、 NPU内部存储器120的层级结构、至少一个处理单元的编号数据以及至少一 个处理单元的算子架构的至少一个数据。
根据人工神经网络模型的结构,依次进行每一层的计算。也就 是说,当确定人工神经网络模型的结构后,就可以确定每一层的操作序列。 根据人工神经网络模型的结构的操作序列或数据流可以被定义为人工神经网 络模型在算法层面的数据局部性。
当编译器编译待在神经处理单元100中执行的神经网络模型 时,可以重建神经网络模型在神经处理单元-存储器级别的神经网络数据局部 性。
也就是说,可以根据编译器、应用于神经网络模型的算法以及 神经处理单元100的操作特性来配置神经网络模型在神经处理单元-存储器级 别的数据局部性。
例如,即使在相同的人工神经网络模型的情况下,可以根据神 经处理单元100计算相应的人工神经网络模型的方法进行不同地配置待处理 的人工神经网络模型的人工神经网络数据的局部性,例如特征图平铺、处理 单元的平稳技术等,神经处理单元100的处理单元数量、特征图的高速缓冲 存储器大小和神经网络处理单元100中的权重,神经处理单元100中的存储 器层次,确定用于处理人工神经网络模型的神经处理单元100的计算操作的 序列的编译器的算法特性等。这是因为,即使通过上述因素处理相同的人工 神经网络模型,神经处理单元100也可以在时钟周期单元中不同地确定每次 操作所需的数据顺序。
编译器可以以神经处理单元100的字单元中在神经处理单元-存 储器级别配置神经网络模型的神经网络数据局部性,以确定物理运算处理所 需的数据序列。
换句话说,可以将存在于神经处理单元-存储器级别的人工神经 网络模型的神经网络数据局部性定义为使得神经处理单元100能基于向存储 器200请求的数据访问请求序列来预测由神经处理单元100处理的人工神经 网络模型的操作顺序的信息。
NPU调度器130可以被配置为存储关于人工神经网络的数据局 部性信息或结构的信息。
也就是说,即使至少仅利用关于人工神经网络模型的人工神经 网络的数据局部性信息或结构的信息,NPU调度器130也可以确定处理序 列。也就是说,NPU调度器130可以通过使用关于从人工神经网络的输入层 到输出层的数据局部性或结构的信息来确定操作序列。例如,可以先调度输 入层操作,最后调度输出层操作。因此,当向NPU调度器130提供关于人工 神经网络模型的数据局部性信息或结构的信息时,可以知道人工神经网络模 型的所有操作序列。因此,具有可以确定所有调度序列的效果。
此外,NPU调度器130可以考虑关于人工神经网络模型的数据 局部性信息或结构的信息以及神经处理单元100的数据局部性信息或关于其 结构的信息来确定处理序列。此外,NPU调度器130可以针对每个确定的序 列优化处理。
因此,当NPU调度器130接收关于人工神经网络模型的数据局 部性信息或结构的信息以及关于神经处理单元100的数据局部性信息或结构 的信息时,具有进一步提高由人工神经网络模型的数据局部性信息或结构信 息确定的每个调度序列的计算效率的效果。例如,NPU调度器130可以获得 四层人工神经网络层和具有连接每一层的三层权重数据的网络数据。在这种 情况下,下面将描述NPU调度器130,例如,就基于关于人工神经网络模型的数据局部性信息或结构的信息来调度处理序列的方法进行描述。
例如,NPU调度器130可以调度以首先将用于推理操作的输入 数据设置为作为人工神经网络模型的输入层的第一层的节点数据,并且接着 首先对第一层的节点数据和与第一层对应的第一连接网络的权重数据执行乘 法和累加(MAC)操作。然而,本公开的示例不限于MAC操作,可以使用乘 法器和加法器来执行人工神经网络操作,乘法器和加法器可以进行各种修改 和实现以执行人工神经网络操作。在下文中,为了描述方便,可以将相应的 操作称为第一操作,将第一操作的结果称为第一操作值,将相应的调度称为 第一调度。
例如,NPU调度器130可以将第一操作值设置为对应于第一连 接网络的第二层的节点数据,并且可以调度第二层的节点数据和与第二层对 应的第二连接网络的权重数据的待在第一次调度后执行的MAC操作。在下 文中,为了描述方便,相应的操作可以被称为第二操作,第二操作的结果可 以被称为第二操作值,并且相应的调度可以被称为第二调度。
例如,NPU调度器130可以将第二操作值设置为与第二连接网 络对应的第三层的节点数据,并且可以调度第三层的节点数据和与第三层对 应的第三连接网络的权重数据待在第二次调度时执行的MAC操作。在下文 中,为了描述方便,可以将相应的操作称为第三操作,可以将第三操作的结 果称为第三操作值,将相应的调度称为第三调度。
例如,NPU调度器130可以将第三操作值设置为对应于第三连 接网络的第四层的节点数据,并且可以调度将存储在第四层的节点数据中的 推理结果存储在NPU内部存储器120中。在下文中,为了方便描述,可以将 相应的调度称为第四调度。
总之,NPU调度器130可以控制NPU内部存储器120和处理 元件阵列110,从而以第一调度、第二调度、第三调度和第四调度序列执行 操作。即,NPU调度器130可以被配置为控制NPU内部存储器120和处理元 件阵列110,从而以设定的调度序列执行操作。
总之,根据本公开的实施方案的神经处理单元100可以被配置 为基于人工神经网络的层的结构和与该结构对应的操作序列数据来调度处理 序列。
例如,NPU调度器130可以被配置为基于从人工神经网络模型 的人工神经网络的输入层到输出层的结构数据或人工神经网络数据局部性信 息来调度处理序列。
NPU调度器130通过利用基于人工神经网络模型结构数据或人 工神经网络数据局部性信息的调度序列来控制NPU内部存储器120,以提高 神经处理单元的操作速率。因此,具有提高神经处理单元的操作速率和存储 器重用率的效果。
由于根据本公开的实施方案的由神经处理单元100驱动的人工 神经网络操作的性质,一层的操作值会在特性上成为下一层的输入数据。
因此,当神经处理单元100根据调度序列控制NPU内部存储器 120时,具有可以提高NPU内部存储器120的存储器重用率的效果。存储器 重用可以由存储在存储器中的数据被读取的次数决定。例如,如果特定数据 存储在存储器中,然后该特定数据仅被读取一次,然后相应的数据被删除或 覆盖,则存储器重用率可以是100%。例如,如果特定数据存储在存储器中, 特定数据被读取四次,然后相应的数据被删除或覆盖,则存储器重用率可能 为400%。存储器重用率可以定义为初始存储的数据的重用次数。也就是说, 存储器重用可以意指重用存储在存储器中的数据或存储特定数据的特定存储 器地址。
具体地,如果NPU调度器130被配置为接收人工神经网络模型 的结构数据或人工神经网络数据局部性信息,当提供的人工神经网络模型的 结构数据或人工神经网络数据局部性信息可以确定人工神经网络操作的序列 数据时,则NPU调度器130识别出:人工神经网络模型的特定层的节点数据 和特定连接网络的权重数据的操作结果成为下一个对应层的节点数据。
因此,NPU调度器130可以在后续操作中重用存储特定操作结 果的存储器地址的值。因此,可以提高存储器重用率。
例如,上述第一调度的第一操作值被设置为第二调度的第二层 的节点数据。具体地,NPU调度器130可以将与NPU内部存储器120中存储 的第一调度的第一操作值对应的存储器地址值重置为与第二调度的第二层的 节点数据对应的存储器地址值。也就是说,可以重用存储器地址值。因此, 由于NPU调度器130重用第一调度的存储器地址的数据,因而具有NPU内 部存储器120可以利用第二调度的第二层节点数据而无需单独的存储器写操 作的效果。
例如,上述第二调度的第二操作值被设置为第三调度的第三层 的节点数据。具体地,NPU调度器130可以将与NPU内部存储器120中存储 的第二调度的第二操作值对应的存储器地址值重置为与第三调度的第三层的 节点数据对应的存储器地址值。也就是说,可以重用存储器地址值。因此, 由于NPU调度器130重用第二调度的存储器地址的数据,因而具有NPU内 部存储器120可以利用第三调度的第三层节点数据而无需单独的存储器写入 操作的效果。
例如,上述第三调度的第三操作值被设置为第四调度的第四层 的节点数据。具体地,NPU调度器130可以将与NPU内部存储器120中存储 的第三调度的第三操作值对应的存储器地址值重置为与第四调度的第四层的 节点数据对应的存储器地址值。也就是说,可以重用存储器地址值。因此, 由于NPU调度器130重用第三调度的存储器地址的数据,因而具有NPU内 部存储器120可以利用第四调度的第四层节点数据而无需单独的存储器写操 作的效果。
此外,NPU调度器130还可以被配置为通过确定调度序列和存 储器重用来控制NPU内部存储器120。在这种情况下,具有NPU调度器130 可以通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来 提供高效调度的效果。此外,由于存储器可重用操作所需的数据不会被复制 并存储在NPU内部存储器120中,因此具有可以减少存储器使用的效果。此 外,NPU调度器130具有通过计算因存储器重用而减少的存储器使用来提高 NPU内部存储器120的效率的效果。
此外,NPU调度器130可以被配置为基于神经处理单元100的 结构数据来监控NPU内部存储器120的资源使用、处理元件PE1到PE12的 资源使用。因此,具有提高神经处理单元100的硬件资源利用效率的效果。
根据本公开的实施方案的神经处理单元100的NPU调度器130 具有通过利用人工神经网络模型结构数据或人工神经网络数据局部性信息来 重用存储器的效果。
换句话说,当人工神经网络模型为深度神经网络时,层数和连 接数可以显著增加,在这种情况下,可以进一步最大化存储器重用的效果。
也就是说,如果神经处理单元100没有识别结构数据或人工神 经网络数据局部性信息和人工神经网络模型的操作序列,则NPU调度器130 不能确定是否重用存储在NPU内部存储器120中的值的存储。因此,NPU调 度器130不必要地生成每次处理所需的存储器地址,并且基本上相同的数据 必须从一个存储器地址复制到另一个存储器地址。因此,会产生不必要的存 储器读写操作,并且在NPU内部存储器120中存储了重复值,这可能导致存 储器被不必要地浪费的问题。
处理元件阵列110是指其中布置多个处理元件PE1至PE12的 配置,所述处理元件PE1至PE12被配置为计算人工神经网络的节点数据和 连接网络的权重数据。每个处理元件可以被配置为包括乘法和累加(MAC)算 子和/或算术逻辑单元(ALU)算子。然而,根据本公开的实施方案不限于此。 处理元件阵列110可以被称为多个处理元件,并且每个处理元件可以彼此独 立地操作,或者一组处理元件可以作为一组操作。
虽然图2示例性地示出了多个处理元件,但是还可以通过在一 个处理元件中替换MAC来配置实现为多个乘法器和加法器树的算子以并行 布置。在这种情况下,处理元件阵列110可以被称为包括多个算子的至少一 个处理元件。
处理元件阵列110被配置为包括多个处理元件PE1至PE12。图 2中的多个处理元件PE1至PE12仅为描述方便的示例,多个处理元件PE1至 PE12的数量不限于此。处理元件阵列110的大小或数目可由多个处理元件 PE1至PE12的数目决定。处理元件阵列110的尺寸可以以N×M矩阵的形式 实现。这里,N和M是大于零的整数。处理元件阵列110可以包括N×M个处理元件。即,可以有至少一个处理元件。
可以考虑到神经处理单元100在其中操作的人工神经网络模型 的特性来设计处理元件阵列110的尺寸。换言之,可以考虑要操作的人工神 经网络模型的数据量、所需的操作速度、所需的功耗等来确定处理元件的数 量。人工神经网络模型的数据量可以根据人工神经网络模型的层数和每层的 权重数据量来确定。
因此,根据本公开的实施方案的神经网络处理单元100的处理 元件阵列110的尺寸不限于此。随着处理元件阵列110的处理元件的数量增 加,正在运行的人工神经网络模型的并行计算能力增加,但神经处理单元 100的制造成本和物理尺寸可能增加。
例如,在神经处理单元100中操作的人工神经网络模型可以是 被训练以检测三十个特定关键字的人工神经网络,即AI关键字识别模型。在 这种情况下,考虑到计算量特性,可以将神经处理单元100的处理元件阵列 110的尺寸设计为4×3。换言之,神经处理单元100可以被配置为包括十二 个处理元件。然而,不限于此,多个处理元件PE1至PE12的数量可在例如8 至16,384的范围内选择。即,本公开的实施方案在处理元件的数量方面不受 限制。
处理元件阵列110被配置为执行人工神经网络操作所需的诸如 加法、乘法和累加之类的功能。换言之,处理元件阵列110可以被配置为执 行乘法和累加(MAC)操作。
在下文中,参照图2,以处理元件阵列110的第一处理元件 PE1为例进行说明。
图2图示了可以应用于本公开的实施方案的图1的PE1至PE12 处理元件阵列中的一个处理元件(即PE1)的示意性概念图。
再简单参考图1,根据本公开的实施方案的神经处理单元100 包括:处理元件阵列110;NPU内部存储器120,其被配置为存储可以从处 理元件阵列110推理出的人工神经网络模型或存储人工神经网络模型的至少 一些数据;以及NPU调度器130,其被配置为基于人工神经网络模型结构数 据或人工神经网络数据局部性信息来控制处理元件阵列110和NPU内部存储 器120,以及处理元件阵列110可被配置为量化并输出MAC运算结果。然 而,本公开的实施方案不限于此。
NPU内部存储器120可以根据人工神经网络模型的存储器大小 和数据量存储人工神经网络模型的全部或部分。
参考图2,第一处理元件PE1可以被配置为包括乘法器111、 加法器112、累加器113和位量化单元114。然而,根据本公开的实施方案不 限于此,并且可以考虑人工神经网络的计算特性来修改处理元件阵列110。
乘法器111将接收到的(N)位数据和(M)位数据相乘。乘法器 111的操作值输出为(N+M)位数据,其中N和M为大于零的整数。用于接收 (N)位数据的第一输入单元可以被配置为接收具有诸如可变之类的特性的值, 并且用于接收(M)位数据的第二输入单元可以被配置为接收具有诸如恒定之类 的特性的值。当NPU调度器130区分变量值和常量值特性时,NPU调度器 130具有提高NPU内部存储器120的存储器重用率的作用。然而,乘法器 111的输入数据不限于常量值和变量值。也就是说,根据本公开的实施方 案,由于处理元件的输入数据可以通过理解变量值和常量值的特性来操作, 因此可以提高神经处理单元100的计算效率。然而,神经处理单元100不限 于输入数据的常量值和变量值的特性。
这里,具有类似变量的特性的值的含义或变量的含义意指每当 输入的输入数据被更新时,存储相应值的存储器地址的值被更新。例如,每 一层的节点数据可以是其中应用人工神经网络模型的权重数据的MAC操作 值。在用相应的人工神经网络模型推理运动图像数据的对象识别的情况下, 由于输入图像每一帧都在变化,所以每一层的节点数据都会发生变化。
这里,具有类似常量的特征的值的含义或常量的含义意指存储 相应值的存储器地址的值被保留,而不管输入的输入数据如何更新。例如, 连接网络的权重数据是人工神经网络模型唯一的推理判断标准,即使人工神 经网络模型推理出运动图像数据的对象识别,连接网络的权重数据也可以不 改变。
也就是说,乘法器111可以被配置为接收一个变量和一个常 量。更详细地,输入到第一输入单元的变量值可以是人工神经网络的层的节 点数据,节点数据可以是人工神经网络的输入层的输入数据、隐藏层的累加 值、以及输出层的累加值。输入到第二输入单元的常量值可以是人工神经网 络的连接网络的权重数据。
NPU调度器130可以被配置为考虑到常量值的特性来提高存储 器重用率。
变量值是每一层的计算值,并且NPU调度器130可以控制 NPU内部存储器120以识别可重用的变量值并且基于人工神经网络模型结构 数据或人工神经网络数据局部性信息重用存储器。
常量值是每个网络的权重数据,NPU调度器130可以控制NPU 内部存储器120以识别重复使用的连接网络的常量值并基于人工神经网络模 型结构数据或人工神经网络数据局部性信息重用存储器。
也就是说,NPU调度器130基于人工神经网络模型的结构数据 或人工神经网络数据局部性信息识别可重用变量值和可重用常量值,并且 NPU调度器130可被配置为控制NPU内部存储器120以重用存储器。
当零被输入到乘法器111的第一输入单元和第二输入单元中的 一个时,处理元件即使不执行该操作也知道该操作的结果为零。因此,可以 限制乘法器111的操作,从而不执行该操作。
例如,当零被输入到乘法器111的第一输入单元和第二输入单 元中的一个时,乘法器111可以被配置为以零跳跃方式操作。
输入到第一输入单元和第二输入单元的数据的位数可以根据人 工神经网络模型的每一层的节点数据和权重数据的量化来确定。例如,可以 将第一层的节点数据量化为五位,并且可以将第一层的权重数据量化为七 位。在这种情况下,第一输入单元可以被配置为接收五位数据,第二输入单 元可以被配置为接收七位数据。
当存储在NPU内部存储器120中的量化数据被输入到处理元件 的输入端时,神经处理单元100可以控制要实时转换的量化位的数量。也就 是说,每一层的量化位数可以不同,当输入数据的位数被转换时,处理元件 可以被配置为实时接收来自神经处理单元100的位数信息并实时转换位数以 生成输入数据。
累加器113在L个循环中通过使用加法器112将乘法器111的 操作值和累加器113的操作值累加。因此,累加器113的输出单元和输入单 元中的数据位数可以输出为(N+M+log2(L))位,其中L是大于零的整数。
当累加完成时,累加器113可以接收初始化复位以将存储在累 加器113中的数据初始化为零。然而,根据本公开的实施方案不限于此。
位量化单元114可以减少从累加器113输出的数据的位数。位 量化单元114可以由NPU调度器130控制。量化数据的位数可以作为X位输 出,其中X是大于零的整数。根据上述配置,处理元件阵列110被配置成执 行MAC操作,处理元件阵列110具有将MAC操作结果量化并输出的作用。 特别地,随着L个循环的数量增加,这种量化具有进一步降低功耗的效果。此外,如果降低功耗,则还具有可以降低边缘设备的发热的效果。特别地, 减少热量产生具有减少由于神经处理单元100的高温引起的故障可能性的效 果。
位量化单元114的输出数据X位可以是下一层的节点数据或卷 积的输入数据。如果人工神经网络模型已经被量化,则位量化单元114可以 被配置为从人工神经网络模型接收量化信息。然而,不限于此,NPU调度器130可以被配置为通过分析人工神经网络模型来提取量化信息。因此,可以 将输出数据X位转换为量化的位数以对应于量化的数据量并输出。位量化单 元114的输出数据X位可以作为量化的位的数量存储在NPU内部存储器120 中。
根据本公开的实施方案的神经处理单元100的处理元件阵列 110包括乘法器111、加法器112、累加器113和位量化单元114。处理元件 阵列110可以通过位量化单元114将从累加器113输出的(N+M+log2(L))位数 据的位数减少为X位的位数。NPU调度器130可以控制位量化单元114以将 输出数据的位数从最低有效位(LSB)到最高有效位(MSB)减少预定位。当输出 数据的位数减少时,可以减少功耗、计算量和存储器使用。然而,当位数减 少到特定长度以下时,可能会出现人工神经网络模型的推理准确度可能会迅 速降低的问题。相应地,输出数据的位数(即量化程度)的减少可以基于功 耗、计算量和存储器使用的减少与人工神经网络模型的推理准确度的降低来 确定。也可以通过确定人工神经网络模型的目标推理准确度并在逐渐减少位 数的同时对其进行测试来确定量化程度。可以为每一层的每个操作值确定量 化程度。
根据上述第一处理元件PE1,通过调整乘法器111的N位数据 和M位数据的位数并通过位量化单元114减少操作值X位的位数,处理单元 阵列110具有在提高MAC操作速度的同时降低功耗的效果,并且具有更高 效地进行人工神经网络的卷积运算的效果。
神经处理单元100的NPU内部存储器120可以是考虑到处理元 件阵列110的MAC操作特性和功耗特性而配置的存储器系统。
例如,考虑到处理元件阵列110的MAC操作特性和功耗特 性,神经处理单元100可以被配置为减少处理元件阵列110的操作值的位 数。
神经处理单元100的NPU内部存储器120可以被配置为最小化 神经网络处理单元100的功耗。
考虑到要操作的人工神经网络模型的数据量和操作步骤,神经 处理单元100的NPU内部存储器120可以是被配置为以低功率控制存储器的 存储器系统。
考虑到人工神经网络模型的数据量和操作步骤,神经处理单元 100的NPU内部存储器120可以是配置为重用其中存储权重数据的特定存储 器地址的低功率存储器系统。
神经处理单元100可以提供用于提供非线性的各种激活函数。 例如,可以提供sigmoid函数、双曲正切函数或ReLU函数。在MAC操作之 后可以选择性地应用激活函数。应用激活函数的操作值可以被称为激活图。
图3图示了图1的神经处理单元100的修改示例。
由于图3的神经处理单元100与图1中示例性示出的神经处理 单元100基本相同,不同之处在于处理元件阵列310,因此下文中,为了描 述方便,会省略多余的描述。
图3中示例性地示出的处理元件阵列110被配置为包括多个处 理元件PE1至PE12以及对应于处理元件PE1至PE12中的每一者的相应的寄 存器文件RF1至RF12。
图3的多个处理元件PE1至PE12和多个寄存器文件RF1至 RF12仅是为了描述方便的示例,且多个处理元件PE1至PE12以及多个寄存 器文件RF1至RF12的数量不受其限制。
处理元件阵列110的大小或数量可由多个处理元件PE1至PE12 和多个寄存器文件RF1至RF12的数量确定。处理元件阵列110和多个寄存 器文件RF1至RF12的大小可以以N×M矩阵的形式来实现,其中,N和M 是大于零的整数。
处理元件阵列110的阵列尺寸可以考虑到神经处理单元100在 其中操作的人工神经网络模型的特征来设计。换言之,可以考虑到人工神经 网络模型操作的数据大小、所需的操作速度和所需的功耗等等来确定寄存器 文件的存储器大小。
神经处理单元100的寄存器文件RF1到RF12是直接连接到处 理元件PE1到PE12的静态存储器单元。例如,寄存器文件RF1至RF12可以 包括触发器和/或锁存器。寄存器文件RF1到RF12可以被配置为存储相应的 处理元件RF1到RF12的MAC运算值。寄存器文件RF1至RF12可以被配置 为向NPU系统存储器120提供权重数据和/或节点数据或被配置为针对NPU系统存储器120接收权重数据和/或节点数据。
图4图示了示例性的人工神经网络模型。
在下文中,将描述可以在神经处理单元100中操作的示例性人 工神经网络模型110a的操作。
图4的示例性人工神经网络模型110a可以是通过神经处理单元 100训练或通过图5A所示的设备、图6A或6B所示的设备或单独的机器学 习设备训练的人工神经网络。人工神经网络模型110a可以是人工神经网络, 其被训练以执行各种推理功能,例如对象识别和语音识别。
人工神经网络模型110a可以是深度神经网络(DNN)。
然而,根据本公开内容的实施方案的人工神经网络模型110a不 限于深度神经网络。
例如,人工神经网络模型110a可以实现为模型,例如VGG、 VGG16、DenseNet和具有编码器-解码器结构的全卷积网络(FCN),深度神经 网络(DNN),例如SegNet、DeconvNet、DeepLAB V3+、U-net、 SqueezeNet、Alexnet、ResNet18、MobileNet-v2、GoogLeNet、Resnet-v2、 Resnet50、Resnet101、Inception-v3等。然而,本公开不限于上述模型。此 外,人工神经网络模型110a可以是基于至少两个不同模型的集成模型。
人工神经网络模型110a可以存储在神经处理单元100的NPU 内部存储器120中。替代地,人工神经网络模型110a可以以这样的方式实 现,使得其被存储在图5A的装置1000中,或者图6A或6B的装置1000的 存储器200中,然后在操作人工神经网络模型110a时加载到神经处理单元 100中。
在下文中,将参考图4描述由神经处理单元100推理示例性人 工神经网络模型110a的过程。
人工神经网络模型110a是示例性的深度神经网络模型,其被配 置成包括输入层110a-1、第一连接网络110a-2、第一隐藏层110a-3、第二连 接网络110a-4、第二隐藏层110a-5、第三连接网络110a-6和输出层110a-7。 然而,本公开内容不限于图4中所示的人工神经网络模型。第一隐藏层110a- 3和第二隐藏层110a-5可以称为多个隐藏层。
输入层110a-1可以包括例如x1和x2输入节点。即,输入层 110a-1可以包括具有两个节点值的节点数据。图1或图3所示的NPU调度器 130可以设置在图1或图3中所示的NPU内部存储器120中存储输入层110a- 1的输入数据的存储器地址。
第一连接网络110a-2可以包括例如具有权重值的连接,该权重 值包括连接输入层110a-1的每个节点和第一隐藏层110a-3的每个节点的六个权 重值。图1或图3的NPU调度器130可以设置在NPU存储器系统120中存 储第一连接网络110a-2的权重数据的存储器地址。每个权重值与每个输入节 点值相乘,相乘后的值的累加值存储在第一隐藏层110a-3中。
第一隐藏层110a-3可以包括例如节点a1、a2和a3。即,第一隐 藏层110a-3可以包括包含三个节点值的节点数据。图1或图3的NPU调度器 130可以设置在NPU内部存储器120中存储第一隐藏层110a-3的节点值的存 储器地址。
第二连接网络110a-4可以包括例如具有权重值的连接,该权重 值包括连接第一隐藏层110a-3的每个节点和第二隐藏层110a-5的每个节点的九 个权重值。每个连接网络包括各自的权重值。图1或图3的NPU调度器130 可以设置在NPU内部存储器120中存储第二连接网络110a-4的权重值的存储 器地址。第二连接网络110a-4的权重值分别与第一隐藏层110a-3的输入节点值 相乘,相乘后的值的累加值存储在第二隐藏层110a-5中。
第二隐藏层110a-5可以包括例如节点b1、b2和b3。即,第二隐 藏层110a-5可以包括关于三个节点值的信息。NPU调度器130可以设置用于 在NPU内部存储器120中存储关于第二隐藏层110a-5的节点值的信息的存储 器地址。
第三连接网络110a-6可以包括例如具有关于连接第二隐藏层 110a-5的每个节点和输出层110a-7的每个节点的六个权重值的信息。NPU调度 器130可以设置用于在NPU内部存储器120中存储第三连接网络110a-6的权 重值的存储器地址。第三连接网络110a-6的权重值与第二隐藏层110a-5的输入 节点值相乘,相乘后的值的累加值存储在输出层110a-7中。
输出层110a-7可以包括例如y1和y2节点。即,输出层110a-7可 以包括关于两个节点值的信息。NPU调度器130可以设置用于在NPU内部存 储器120中存储关于输出层110a-7的节点值的信息的存储器地址。
也就是说,NPU调度器130可以分析或接收人工神经网络模型 的结构以在处理元件阵列110中操作。人工神经网络模型可以包括的人工神 经网络数据可以包括每一层的节点值,关于层的布局数据的局部性信息或结 构的信息,或连接每一层的节点的每个网络的权重值的信息。
由于NPU调度器130被提供有示例性神经网络模型110a的结构 数据或人工神经网络数据局部性信息,NPU调度器130还能够分析从人工神 经网络模型110a的输入到输出的操作序列。
因此,考虑到调度序列,NPU调度器130可以设置在NPU内 部存储器120中存储每层的MAC操作值的存储器地址。例如,具体的存储 器地址可以是输入层110a-1和第一连接网络110a-2的MAC操作值,同时可以 是第一隐藏层110a-3的输入数据。然而,本公开不限于MAC操作值,并且 MAC操作值也可以称为人工神经网络操作值。
此时,由于NPU调度器130知道输入层110a-1和第一连接网络 110a-2的MAC操作结果是第一隐藏层110a-3的输入数据,所以可以使用相同 的存储器地址。即,NPU调度器130可基于人工神经网络模型结构数据或人 工神经网络数据局部性信息重用MAC操作值。因此,具有NPU内部存储器 120可以提供存储器重用功能的效果。
也就是说,NPU调度器130根据调度序列将人工神经网络模型 110a的MAC操作值存储在NPU内部存储器120的特定存储器地址中,以及 存储MAC操作值的特定存储器地址可以用作下一个调度顺序的MAC操作的 输入数据。
从第一处理元件PE1的角度来看MAC操作
将根据第一处理元件PE1详细描述MAC操作。第一处理元件 PE1可以被指定执行第一隐藏层110a-3的a1节点的MAC操作。
首先,第一处理元件PE1将输入层110a-1的x1节点数据输入到 乘法器111的第一输入单元,并将x1节点和a1节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累 加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这 种情况下,L次循环的计数器值可以是1。
其次,第一处理元件PE1将输入层110a-1的x2节点值输入到乘 法器111的第一输入单元,并将x2节点和a1节点之间的权重值输入到乘法 器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的 操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的x1 节点值和在x1节点与a1节点之间的权重的乘积值。因此,加法器112生成 与a1节点对应的x1节点和x2节点的MAC操作值。
第三,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第一处理元件PE1的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。
位量化单元114可以根据累加值被适当地控制。更详细地,随 着L次循环的次数增加,输出值的位数增加。此时,NPU调度器130可以去 除预定的低位,使得第一处理元件PE1的操作值的位数变为X位。
从第二处理元件PE2的角度来看MAC操作
将根据第二处理元件PE2详细描述MAC操作。可以指定第二 处理元件PE2来执行第一隐藏层110a-3的a2节点的MAC操作。
首先,第二处理元件PE2将输入层110a-1的x1节点值输入到乘 法器111的第一输入单元,并将x1节点和a2节点之间的权重值输入到乘法 器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的 操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加 值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种 情况下,L次循环的计数器值可以是1。
其次,第二处理元件PE2将输入层110a-1的x2节点值输入到乘 法器111的第一输入单元,并将x2节点和a2节点之间的权重值输入到乘法 器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的 操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的x1 节点值和在x1节点与a2节点之间的权重的乘积值。因此,加法器112生成 与a2节点对应的x1节点和x2节点的MAC操作值。
第三,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第二处理元件PE2的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
从第三处理元件PE3的角度来看MAC操作
将根据第三处理元件PE3详细描述MAC操作。可以指定第三 处理元件PE3来执行第一隐藏层110a-3的a3节点的MAC操作。
首先,第三处理元件PE3将输入层110a-1的x1节点值输入到乘 法器111的第一输入单元,并将x1节点和a3节点之间的权重值输入到乘法 器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的 操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加 值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种 情况下,L次循环的计数器值可以是1。
其次,第三处理元件PE3将输入层110a-1的x2节点值输入到乘 法器111的第一输入单元,并将x2节点和a3节点之间的权重值输入到乘法 器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的 操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的x1 节点值和在x1节点与a3节点之间的权重的乘积值。因此,加法器112生成 与a3节点对应的x1节点和x2节点的MAC操作值。
第三,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第三处理元件PE3的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
因此,神经处理单元100的NPU调度器130可以同时使用三个 处理元件PE1至PE3来执行第一隐藏层110a-3的MAC操作。
从第四处理元件PE4的角度来看MAC操作
将根据第四处理元件PE4来详细描述MAC操作。可以指定第 四处理元件PE4执行第二隐藏层110a-5的b1节点的MAC操作。
首先,第四处理单元PE4将第一隐藏层110a-3的a1节点值输入 到乘法器111的第一输入单元,将a1节点和b1节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累 加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这 种情况下,L次循环的计数器值可以是1。
其次,第四处理单元PE4将第一隐藏层110a-3的a2节点值输入 至乘法器111的第一输入单元,将a2节点与b1节点之间的权重值输入至乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的 a1节点值和在a1节点与b1节点之间的权重的乘积值。因此,加法器112生 成与b1节点对应的a1节点和a2节点的MAC操作值。在这种情况下,L次 循环的计数器值可以是2。
第三,第四处理元件PE4将输入层110a-1的a3节点值输入到乘 法器111的第一输入单元,将a3节点和b1节点之间的权重值输入到乘法器 111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作 值相加。此时,当L次循环的次数为2时,存储在上一步计算出的与b1节点 对应的a1节点和a2节点的MAC操作值。因此,加法器112生成与b1节点 对应的a1节点、a2节点和a3节点的MAC操作值。
第四,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第四处理元件PE4的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
从第五处理元件PE5的角度来看MAC操作
将根据第五处理元件PE5来详细描述MAC操作。第五处理元 件PE5可以被指定为执行第二隐藏层110a-5的b2节点的MAC操作。
首先,第五处理单元PE5将第一隐藏层110a-3的a1节点值输入 到乘法器111的第一输入单元,将a1节点和b2节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累 加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这 种情况下,L次循环的计数器值可以是1。
其次,第五处理单元PE5将第一隐藏层110a-3的a2节点值输入 至乘法器111的第一输入单元,将a2节点与b2节点之间的权重值输入至乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的 a1节点值和在a1节点与b2节点之间的权重的乘积值。因此,加法器112生 成与b2节点对应的a1节点和a2节点的MAC操作值。在这种情况下,L次 循环的计数器值可以是2。
第三,第五处理单元PE5将第一隐藏层110a-3的a3节点值输入 到乘法器111的第一输入单元,将a3节点和b2节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为2时,存储在上一步计算出的与 b2节点对应的a1节点和a2节点的MAC操作值。因此,加法器112生成与b2节点对应的a1节点、a2节点和a3节点的MAC操作值。
第四,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第五处理单元PE5的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
从第六处理元件PE6的角度来看MAC操作
将根据第六处理元件PE6来详细描述MAC操作。第六处理元 件PE6可以被指定为执行第二隐藏层110a-5的b3节点的MAC操作。
首先,第六处理元件PE6将第一隐藏层110a-3的a1节点值输入 到乘法器111的第一输入单元,将a1节点和b3节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累 加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这 种情况下,L次循环的计数器值可以是1。
其次,第六处理元件PE6将第一隐藏层110a-3的a2节点值输入 至乘法器111的第一输入单元,将a2节点与b3节点之间的权重值输入至乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的 a1节点值和在a1节点与b3节点之间的权重的乘积值。因此,加法器112生 成与b3节点对应的a1节点和a2节点的MAC操作值。在这种情况下,L次 循环的计数器值可以是2。
第三,第六处理元件PE6将第一隐藏层110a-3的a3节点值输入 到乘法器111的第一输入单元,将a3节点和b3节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为2时,存储在上一步计算出的与 b3节点对应的a1节点和a2节点的MAC操作值。因此,加法器112生成与b3节点对应的a1节点、a2节点和a3节点的MAC操作值。
第四,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第六处理元件PE6的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
因此,神经处理单元100的NPU调度器130可以同时使用三个 处理元件PE4至PE6来执行第二隐藏层110a-5的MAC操作。
从第七处理元件PE7的角度来看MAC操作
将根据第七处理元件PE7详细描述MAC操作。第七处理元件 PE7可以被指定为执行输出层110a-7的y1节点的MAC操作。
首先,第七处理元件PE7将第二隐藏层110a-5的b1节点值输入 到乘法器111的第一输入单元,将b1节点和y1节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累 加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这 种情况下,L次循环的计数器值可以是1。
其次,第七处理元件PE7将第二隐藏层110a-5的b2节点值输入 至乘法器111的第一输入单元,将b2节点与y1节点之间的权重值输入至乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的 b1节点值和在b1节点与y1节点之间的权重的乘积值。因此,加法器112生 成与y1节点对应的b1节点和b2节点的MAC操作值。在这种情况下,L次 循环的计数器值可以是2。
第三,第七处理元件PE7将第二隐藏层110a-5的b3节点值输入 到乘法器111的第一输入单元,将b3节点和y1节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为2时,存储在上一步计算出的与 y1节点对应的b1节点和b2节点的MAC操作值。因此,加法器112生成与y1节点对应的b1节点、b2节点和b3节点的MAC操作值。
第四,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第七处理元件PE7的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
从第八处理元件PE8的角度来看MAC操作
将根据第八处理元件PE8详细描述MAC操作。第八处理元件 PE8可以被指定为执行输出层110a-7的y2节点的MAC操作。
首先,第八处理元件PE8将第二隐藏层110a-5的b1节点值输入 到乘法器111的第一输入单元,将b1节点和y2节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累 加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这 种情况下,L次循环的计数器值可以是1。
其次,第八处理元件PE8将第二隐藏层110a-5的b2节点值输入 至乘法器111的第一输入单元,将b2节点与y2节点之间的权重值输入至乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的 b1节点值和在b1节点与y2节点之间的权重的乘积值。因此,加法器112生 成与y2节点对应的b1节点和b2节点的MAC操作值。在这种情况下,L次 循环的计数器值可以是2。
第三,第八处理元件PE8将第二隐藏层110a-5的b3节点值输入 到乘法器111的第一输入单元,将b3节点和y2节点之间的权重值输入到乘 法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113 的操作值相加。此时,当L次循环的次数为2时,存储在上一步计算出的与 y2节点对应的b1节点和b2节点的MAC操作值。因此,加法器112生成与y2节点对应的b1节点、b2节点和b3节点的MAC操作值。
第四,NPU调度器130可基于人工神经网络模型的结构数据或 人工神经网络数据局部性信息终止第八处理元件PE8的MAC操作。此时, 可以通过输入初始化复位来初始化累加器113。也就是说,L次循环的计数器 值可以初始化为零。位量化单元114可以根据累加值被适当地控制。
因此,神经处理单元100的NPU调度器130可以同时使用两个 处理元件PE7至PE8来执行输出层110a-7的MAC操作。
当第八处理元件PE8的MAC操作完成时,可以完成人工神经 网络模型110a的推理操作。即,可以确定人工神经网络模型110a已经完成了 一帧的推理操作。如果神经处理单元100实时推理视频数据,则下一帧的图 像数据可以输入到输入层110a-1的x1和x2输入节点。在这种情况下,NPU 调度器130可以将下一帧的图像数据存储在存储输入层110a-1的输入数据的 存储器地址中。如果对每一帧重复该过程,则神经处理单元100可以实时处 理推理操作。此外,还具有可以重用预设存储器地址的效果。
总结图4的人工神经网络模型110a的情况,神经处理单元100 的NPU调度器130可基于人工神经网络模型110a结构数据或人工神经网络数 据局部性信息确定操作调度序列,以用于人工神经网络模型110a的推理操 作。NPU调度器130可以基于操作调度序列来设置NPU内部存储器120所需 的存储器地址。NPU调度器130可以基于神经网络模型110a的结构数据或人 工神经网络数据局部性信息来设置用于重用存储器的存储器地址。NPU调度器130可以通过指定推理操作所需的处理元件PE1至PE8来执行推理操作。
此外,如果连接到一个节点的权重数据的数量增加L,则处理 元件的累加器的L次循环的数量可以被设置为L-1。也就是说,即使人工神 经网络的权重数据的数量增加,累加器也具有通过增加累加器的累加次数而 容易地执行推理操作的效果。
也就是说,根据本公开的实施方案的神经处理单元100的NPU 调度器130可以基于包括人工神经网络模型的输入层110a-1、第一连接网络 110a-2、第一隐藏层110a-3、第二连接网络110a-4、第二隐藏层110a-5、第三连 接网络110a-6和输出层110a-7的结构数据的结构数据或人工神经网络数据局部 性信息来控制处理元件阵列100和NPU内部存储器120。
也就是说,NPU调度器130可以将与输入层110a-1的节点数 据、第一连接网络110a-2的权重数据、第一隐藏层110a-3的节点数据、第二连 接网络110a-4的权重数据、第二隐藏层110a-5的节点数据、第三连接网络 110a-6的权重数据、以及输出层110a-7的节点数据对应的存储器地址值设置在 NPU内部存储器120中。
在下文中,将详细描述NPU调度器130的调度。NPU调度器 130可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息来 调度人工神经网络模型的操作序列。
NPU调度器130可以基于人工神经网络模型结构数据或人工神 经网络数据局部性信息获得存储人工神经网络模型的层的节点数据和连接网 络的权重数据的存储器地址值。
例如,NPU调度器130可以获得在主存储器中存储人工神经网 络模型的层的节点数据和连接网络的权重数据的存储器地址值。因此,NPU 调度器130可以将要驱动的人工神经网络模型的层的节点数据和连接网络的 权重数据从主存储器中取出并将其存储在NPU内部存储器120中。每层的节 点数据可以有对应的各自的存储器地址值。每个连接网络的权重数据可以有 对应的各自的存储器地址值。
NPU调度器130可以基于人工神经网络模型的结构数据或人工 神经网络数据局部性信息,例如在编译时构建的人工神经网络模型的人工神 经网络的层的排列结构数据或人工神经网络数据局部性信息,调度处理元件 阵列110的操作序列。
例如,NPU调度器130可以获得具有四个人工神经网络层和连 接每一层的三层的权重值的权重数据,即网络连接数据。在这种情况下,下 面将举例说明NPU调度器130基于神经网络模型的结构数据或人工神经网络 数据局部性信息对处理序列进行调度的方法。
例如,NPU调度器130将用于推理操作的输入数据设置为第一 层(第一层是人工神经网络模型110a的输入层110a-1)的节点数据,并且首先可 以调度以执行第一层的节点数据和与第一层对应的第一连接网络的权重数据 的MAC操作。在下文中,为了描述方便,相应的操作可以被称为第一操 作,第一操作的结果可以被称为第一操作值,并且相应的调度可以被称为第 一调度。
例如,NPU调度器130将第一操作值设置为对应于第一连接网 络的第二层的节点数据,并且可以调度待在第一调度后执行的第二层的节点 数据和与第二层对应的第二连接网络的权重数据的MAC操作。在下文中, 为了描述方便,相应的操作可以被称为第二操作,第二操作的结果可以被称 为第二操作值,并且相应的调度可以被称为第二调度。
例如,NPU调度器130将第二操作值设置为对应于第二连接网 络的第三层的节点数据,并且可以调度待在第二调度中执行的第三层的节点 数据和与第三层对应的第三连接网络的权重数据的MAC操作。在下文中, 为了描述方便,相应的操作可以被称为第三操作,第三操作的结果可以被称 为第三操作值,并且相应的调度可以被称为第三调度。
例如,NPU调度器130将第三操作值设置为对应于第三连接网 络的第四层(即输出层110a-7)的节点数据,并且可以调度以将存储在第四层的 节点数据中的推理结果存储在NPU内部存储器120中。以下为了方便描述, 相应的调度可以被称为第四调度。推理结果值可以被发送和使用到装置1000 的各种元件。
例如,如果推理结果值是检测特定关键字的结果值,则神经处 理单元100将推理结果发送到中央处理单元,以便装置1000可以执行对应于 特定关键字的操作。
例如,NPU调度器130可以在第一调度中驱动第一处理元件 PE1至第三处理元件PE3。
例如,NPU调度器130可以在第二调度中驱动第四处理元件 PE4至第六处理元件PE6。
例如,NPU调度器130可以在第三调度中驱动第七处理元件 PE7至第八处理元件PE8。
例如,NPU调度器130可以在第四调度中输出推理结果。
总之,NPU调度器130可以控制NPU内部存储器120和处理 元件阵列110,以便在第一调度、第二调度、第三调度和第四调度序列中执 行操作。即,NPU调度器130可以被配置为控制NPU内部存储器120和处理 元件阵列110,从而以设定的调度序列执行操作。
总之,根据本公开的实施方案的神经处理单元100可以被配置 为基于人工神经网络的层的结构和与该结构对应的操作序列数据来调度处理 序列。调度的处理顺序可以包括至少一个操作。例如,由于神经处理单元 100可以预测所有操作的序列,因此也可以调度后续的操作,也可以按照特 定的序列来调度操作。
NPU调度器130具有通过以下方式来提高存储器重用率的效 果:基于人工神经网络模型结构数据或人工神经网络数据局部性信息通过利 用调度序列来控制NPU内部存储器120。
由于根据本公开的实施方案的由神经处理单元100驱动的人工 神经网络操作的性质,一层的操作值可能具有成为下一层的输入数据的特 性。
因此,当神经处理单元100根据调度序列控制NPU内部存储器 120时,具有可以提高NPU内部存储器120的存储器重用率的效果。
具体地,如果NPU调度器130被配置为接收人工神经网络模型 的结构数据或人工神经网络数据局部性信息,则可以基于所提供的人工神经 网络模型结构数据或人工神经网络数据局部性信息来确定执行人工神经网络 的计算的序列,NPU调度器130可以确定人工神经网络模型的特定层的节点 数据和特定连接网络的权重数据的运算结果变为连续层的节点数据。因此, NPU调度器130可以在后续操作中重用存储操作结果的存储器地址的值。
例如,上述第一调度的第一操作值被设置为第二调度的第二层 的节点数据。具体地,NPU调度器130可以将与在NPU内部存储器120中存 储的第一调度的第一操作值对应的存储器地址值重置为与第二调度的第二层 的节点数据对应的存储器地址值。也就是说,可以重用存储器地址值。因 此,通过由NPU调度器130重用第一调度的存储器地址值,具有NPU内部 存储器120可以使用第二调度的第二层节点数据而无需单独的存储器写入操 作的效果。
例如,上述第二调度的第二操作值被设置为第三调度的第三层 的节点数据。具体地,NPU调度器130可以将与在NPU内部存储器120中存 储的第二调度的第二操作值对应的存储器地址值重置为与第三调度的第三层 的节点数据对应的存储器地址值。也就是说,可以重用存储器地址值。因 此,通过由NPU调度器130重用第二调度的存储器地址值,具有NPU内部 存储器120可以使用第三调度的第三层节点数据而无需单独的存储器写入操 作的效果。
例如,上述第三调度的第三操作值被设置为第四调度的第四层 的节点数据。具体地,NPU调度器130可以将与在NPU存储器系统120中存 储的第三调度的第三操作值对应的存储器地址值重置为与第四调度的第四层 的节点数据对应的存储器地址值。也就是说,可以重用存储器地址值。因 此,通过由NPU调度器130重用第三调度的存储器地址值,具有NPU内部 存储器120可以使用第四调度的第四层节点数据而无需单独的存储器写入操 作的效果。
此外,NPU调度器130还可能被配置为通过确定调度序列和是 否重用存储器来控制NPU内部存储器120。在这种情况下,具有NPU调度 器130可以通过分析人工神经网络模型结构数据或人工神经网络数据局部性 信息来提供优化调度的效果。此外,由于存储器可重用操作所需的数据不会 被复制并存储在NPU内部存储器120中,因此具有可以减少存储器使用的效 果。此外,NPU调度器130通过计算通过存储器重用而减少的存储器使用而 具有优化NPU内部存储器120的效果。
根据本公开的实施方案的神经处理单元100,第一处理元件 PE1可以被配置为使得具有N位输入的第一输入接收变量值并且具有M位输 入的第二输入接收常量值。此外,可以为处理元件阵列110的其他处理元件 相同地设置这样的配置。也就是说,处理元件的一个输入可以被配置为接收 变量值,而另一个输入可以被配置为接收常量值。因此,具有可以减少常量 值的数据更新的次数的效果。
此时,NPU调度器130利用人工神经网络模型100A的结构数 据或数据局部性信息,并且可以设置输入层110a-1、第一隐藏层110a-2、第二 隐藏层110a-3和输出层110a-4的节点数据作为变量,以及设置第一连接网络 110a-1的权重数据、第二连接网络110a-2的权重数据和第三连接网络110a-3的 权重数据作为常量。也就是说,NPU调度器130可以区分常量值和变量值。 然而,本公开不限于常量和变量数据类型,本质上,可以通过区分频繁变化的值和不频繁变化的值来提高NPU内部存储器120的重用率。
也就是说,NPU内部存储器120可以被配置为在神经处理单元 100的推理操作继续的同时保存存储在NPU内部存储器120中的连接的权重 数据。因此,具有减少存储器读/写操作的效果。
也就是说,NPU内部存储器120可以被配置为在继续推理操作 的同时重用存储在NPU内部存储器120中的MAC操作值。
也就是说,关于存储处理元件阵列110的每个处理元件,存储 第一输入的N位输入数据的存储器地址的数据更新频率可以大于其中存储第 二输入单元的M位输入数据的存储器地址的数据更新频率。也就是说,存在 第二输入单元的数据更新的频率可以小于第一输入单元的数据更新的频率的 效果。
图5A示出了包括图1或图3的神经处理单元100的人工神经网 络(ANN)驱动装置,图5B示出了在神经处理单元100的操作期间消耗的能 量。
参考图5A,ANN驱动装置1000可以包括神经处理单元100、 存储器200、内核生成器300和基板400。
导电图案可以形成在基板400上。此外,神经处理单元100、 存储器200和内核生成器300可以耦合到基板400以电连接到导电图案。导 电图案可以作为允许神经处理单元100、存储器200和内核生成器300进行 通信的系统总线操作。
神经处理单元100可以包括图1或图3中所示的元件。
存储器200是用于在诸如计算机或智能电话之类的主机设备的 控制下存储数据的设备。存储器200可以包括易失性存储器和非易失性存储 器。
易失性存储设备可以是仅在供电时存储数据并且在供电被切断 时丢失存储的数据的存储设备。易失性存储器可以包括静态随机存取存储器 (SRAM)、动态随机存取存储器(DRAM)等。
存储器200可以包括固态驱动器(SSD)、闪存、磁随机存取存储 器(MRAM)、相变RAM(PRAM)、铁电RAM(FeRAM)、硬盘、闪存存储器、 同步随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
将主要解释卷积神经网络(CNN),其是人工神经网络中的一种 深度神经网络(DNN)。
卷积神经网络可以是一个或几个卷积层、池化层和全连接层的 组合。卷积神经网络具有适合二维数据的学习和推理的结构,并且可以通过 反向传播算法进行训练。
在本公开的示例中,对于卷积神经网络的每个通道存在用于提 取通道的输入图像的特征的内核。内核可以由二维矩阵组成。内核在遍历输 入数据的同时进行卷积运算。内核的大小可以任意确定,内核遍历输入数据 的步幅也可以任意确定。内核与每个内核的所有输入数据的匹配程度可以是 特征图或激活图。
由于卷积运算是由输入数据和内核的组合组成的运算,因此此 后可以应用诸如ReLU之类的用于添加非线性的激活函数。当激活函数应用 于作为卷积运算的结果的特征图时,其可以被称为激活图。
卷积神经网络可能包括Alexnet、Squeezenet、VGG16、 Resnet152、Moblienet等。每个神经网络模型中一次推理所需的乘法次数分别 为727MFLOPs、837MFLOPs、16MFLOPs、11MFLOPs、11MFLOPs和 579MFLOPs,并且包括内核在内的所有权重的数据大小分别为233MB、5 MB、528MB、230MB、16M。所以可以看出需要相当大量的硬件资源和功 耗。
传统上,这些内核存储在每个相应通道的存储器中,并且针对 每个卷积过程通过从存储器中读取它们来处理输入数据。例如,如图5B所 示,对于卷积运算期间的32位数据读取操作,神经处理单元100的作为 SRAM的NPU内部存储器120可能消耗5pj的能量,而作为DRAM的存储 器200可能消耗640pj。将存储器与其他运算相比,8位加法运算消耗0.03 pj,16位加法运算消耗0.05pj,32位加法运算消耗0.1pj,8位乘法消耗0.2 pj。也就是说,存储器消耗相当多的功率并导致整体性能下降。也就是说, 当从存储器200读取内核时所消耗的功率比从神经处理单元100的内部存储 器读取内核时所消耗的功率大128倍。
也就是说,存储器200的操作速度比神经处理单元100的操作 速度慢,但是每单位操作的功耗相对较大。因此,最小化存储器200的读取 操作会影响装置1000的功耗的降低。
为了克服这种低效率,本公开公开了一种用于通过最小化数据 移动来生成具有改进计算性能的人工神经网络内核的方法和系统,该数据移 动在每个卷积过程中从存储器200调用内核以减少由于数据移动导致的总体 硬件资源和功率消耗。
具体地,存储器200可以包括基本内核存储单元210、内核滤 波器存储单元220和内核生成算法存储单元230。
根据本公开的示例,可以根据根据基于基本内核的内核生成算 法(或内核恢复算法)确定的规则来生成多个内核。
存储器200可以通过分配区域来设置存储基本内核的基本内核 存储装置210、存储内核滤波器的内核滤波器存储装置220和内核生成算法 存储装置230。可以通过设置存储器200的存储器地址来配置基本内核存储 装置210、内核滤波器存储装置220和内核生成算法存储装置230。然而,本 公开不限于此。
图5A示出了基本内核存储装置210、内核滤波器存储装置220 和内核生成算法存储装置230存储在存储器200中。然而,根据一个示例, 它可以存储在被包括在神经处理单元100中的NPU内部存储器120中。此 外,虽然内核生成器300被示为独立于神经处理单元100,但是内核生成器 300可以位于神经处理单元100中,如图6A所示。
基本内核存储装置210可以存储作为内核生成基础的基本内 核。基本内核可以是基于生成另一层的内核、另一层的通道和/或同一层的另 一通道的基本内核。基本内核不一定是单个的,并且根据一个示例,可以存 在多个基本内核。每个基本内核可以具有不同的权重值。
可以将基本内核应用于通道或层的单元中。例如,可以在彩色 图像图像中将每个基本内核应用于RGB通道的单元中,并且可以从应用于每 个通道的基本内核到每个通道生成特征图。例如,可以基于基本内核生成另 一层的内核。
也就是说,可以从基本内核生成用于计算另一通道的特征图的 内核。因此,ANN驱动装置1000可以根据用于生成对应于每个通道和/或层 的内核的内核生成算法(或内核恢复算法)选择合适的权重并将其作为基本内 核分配。可以参考稍后描述的内核滤波器来确定基本内核。
例如,ANN驱动设备1000可以通过学习过程将包括统计上具 有最高推理准确度的权重的内核确定为基本内核。
例如,可以将具有使得多个通道和/或层的内核之间的权重差值 的平均值最小的权重的任意核设置为基本内核。
然而,本公开不限于上述示例,并且可以根据各种算法来确定 基本内核。
内核滤波器存储装置220可以存储基于基本内核和其他内核之 间的差值(即,德尔塔Δ值)生成的内核滤波器。
在已训练的卷积神经网络的情况下,存储了许多最终的内核。 ANN驱动装置1000选择多个内核中的至少一些内核作为基本内核。另外, 可以将多个内核中未被选为基本内核的内核转换为与基本内核对应的内核滤 波器,然后进行存储。即,如果对基本内核应用内核滤波器,则可以恢复原 始内核或者可以生成类似于原始内核的内核。以这种方式恢复的内核可以称 为修改内核或更新内核。也就是说,原始内核可以分为基本内核和内核滤波器。
内核生成器300可以从存储器200中读取基本内核、内核滤波 器和内核生成算法(包括映射信息)并将其存储在内部存储器310中,然后恢复 原始内核或生成类似于原始内核的内核,然后将其传输到神经处理单元 100。一旦将基本内核、内核滤波器和映射信息存储在内核生成器300的内部 存储器中,内核生成器300可能不需要再次访问存储器200。因此,通过访 问内部存储器310而不是访问存储器200,可以节省高达128倍的功耗。
ANN驱动装置1000可以通过由内核生成器300选择性地反映 基本内核和内核滤波器来恢复人工神经网络的每一层或通道所需的原始内核 或生成与原始内核相似的内核。因此,通过仅存储参考基本内核和内核滤波 器而不是将与每一层或每个通道对应的所有内核存储在存储器200中,与存 储所有内核相比,可以具有提高的存储效率。
作为一个具体的示例,第一层(或第一通道)的第一内核中包括 的权重值可以是八,第二层(或第二通道)的第二内核中包括的权重值可以是 七。为了存储第一层(或第一通道)的第一内核和第二层(或第二通道)的第二内 核,可能分别需要4位的存储器量。
根据本公开的示例,权重值八和权重值七之间的差值(即,Δ值) 是一。因此,可能只需要一位存储器来存储该差值一。
图6A示出了包括图1或图3的神经处理单元100的ANN驱动 装置的修改配置。
参考图6A,ANN驱动装置1000可以包括神经处理单元100、 存储器200、内核生成器300和基板400。
导电图案可以形成在基板400上。另外,神经处理单元100和 存储器200可以耦合到基板400上以电连接到导电图案。导电图案可以充当 允许神经处理单元100和存储器200彼此通信的系统总线。
存储器200可以包括基本内核存储装置210、内核滤波器存储 装置220和内核生成算法存储装置230。除了图1或图3所示的元件之外,神 经处理单元100还可以包括内核生成器150。在图5A中,内核生成器300被 图示为设置在神经处理单元100之外,但在图6A中,核生成器150被示为设 置在神经处理单元100中。
内核生成器150可以根据内核生成算法(或内核恢复算法)基于 存储在存储器200中的基本内核和内核滤波器来生成(恢复)相应层或通道的原 始内核。
图6B图示了包括图1或图3的神经处理单元100的ANN驱动 装置的修改配置。
参考图6B,ANN驱动装置1000可以包括神经处理单元100、 存储器200、内核生成器300和基板400。
导电图案(electrically conductive pattern)可以形成在基板400 上。另外,神经处理单元100和存储器200可以耦合到基板400以电连接到 导电图案。导电图案可以充当允许神经处理单元100和存储器200彼此通信 的系统总线。
存储器200可以包括基本内核存储装置210、内核滤波器存储 装置220、内核生成算法存储装置230和内核生成器240。
在图6A中,内核生成器150被图示为设置在神经处理单元100 中,但在图6B中,内核生成器240被示为设置在存储器200中。
也就是说,如果存储器200的运行速度与神经处理单元100的 运行速度一样高,并且具有内置的计算功能,每单位运行的功耗得到改善且 非常小,则存储器200可以包括内核生成器240。
在下文中,将详细描述图5A、6A和6B的内核生成算法存储装 置230。
内核生成算法(或内核恢复算法)可以包括基本内核、相应的内 核滤波器和恢复(调制)内核之间的映射信息。这将在后面参考图18进行描 述。
内核生成算法(或内核恢复算法)可以是承诺通过学习过程最小 化内核滤波器的大小(即数据大小)的方法的算法。
内核生成算法(或核恢复算法)可以根据通过一系列学习过程确 定为具有最佳准确度的算法来生成。
内核生成算法(或内核恢复算法)可以包括人工神经网络中使用 的内核(即,包含权重值的矩阵)的至少一部分、通道数、层数、输入数据信 息、算法处理方法,以及从存储器200获取内核的顺序。具体地,内核生成 算法(或内核恢复算法)可以指示生成(或恢复)特定层的内核的方法。
至少一个基本内核可用于创建内核滤波器。基本内核不一定是 第一层的内核,可以将任意层的内核或任意通道的内核确定为基本内核。
内核生成器300可以通过在层的单元内应用基本内核并且使用 参考层的内核作为基本内核来生成用于另一层的内核滤波器。此外,在一层 中,可以基于每个通道仅将至少一个内核确定为基本内核,并且可以基于基 本内核生成内核滤波器。
在一示例中,可能存在输入数据仅包含三个RGB通道的情况, 以及使用数十个或更多通道的情况。内核生成器300可以根据基于每个通道 的不同基本内核的各种技术来生成内核滤波器。
此外,使用基本内核生成另一内核的各种技术可以不同地应用 于每一层或每个通道。具体地,使用基本内核生成另一内核的技术可以包括 将基本内核原样用于另一层或通道的第一种方法、使用内核滤波器的第二种 方法、不考虑内核滤波器的情况下修改基本内核本身的第三种方法、同时修 改内核滤波器和基本内核的第四种方法等中的一种。
特别地,第三种方法,即修改基本内核本身的方法,可以通过 改变从存储器200中检索数据的顺序的方法来实现。存储在存储器200中的 数据可以表示为指示其位置的地址。例如,在存储器200中,位置可以由列 地址和行地址表示。人工神经网络可以根据内核生成算法(或内核恢复算法) 通过将改变后的地址发送到存储器200来改变接收基本内核的每个数据值的 顺序。
例如,内核生成算法(或内核恢复算法)可以指示:第一层(或第 一通道)按原样使用基本内核,与第二层(或第二通道)至第四层(或第四通道) 对应的内核待通过旋转基本内核产生,与第五层(或第五通道)对应的内核待 通过将基本内核转置产生,与第六层(或第六通道)至第八层(或第八通道)对应 的内核待通过在基本内核上加减内核滤波器生成,与第九层对应的内核在乘 以内核滤波器的同时进行旋转。
特别是,修改基本内核本身的第三种方法可能对训练卷积神经 网络以进行对象识别是有效的。例如,如果应用旋转和转置,则在识别对象 时可以有效地训练和识别以各种角度旋转的图像。也就是说,当人工神经网 络学习识别特定对象时,如果有旋转基本内核的第一内核和转置基本内核的 第二内核,则旋转或转置特定对象的图像时的识别率也可以改进。换句话 说,当人工神经网络只学习正面人脸时,眼睛、鼻子和嘴巴的位置是颠倒的,所以它可能无法识别180度颠倒的人脸。特别地,根据本公开的示例, 可以不通过旋转或转置基本内核而从存储器200中读取每个对应的内核。因 此,考虑到存储器读取,具有降低功耗的效果。
从基本内核生成另一内核的方法不限于此,可以利用用户可以 通过程序实现的各种算法。
如上所述,通过将内核滤波器应用于基本内核,可以恢复原始 内核或者可以生成类似于原始内核的内核。因此,具有能够有效地减少存储 器200的容量的效果。也就是说,如果选择基本内核,使得内核滤波器的值 最小化,则内核滤波器的数据大小可以最小化,并且存储内核滤波器的权重 的数据的位宽可以最小化。
换句话说,即使所有层(或通道)的内核未存储在存储器200 中,也可以仅使用基本内核来重新生成其他内核。因此,可以有效地减少存 储器使用量,并且提高操作速度。
此外,通过使用每一层的预定的内核滤波器,与存储每一层的 原始内核相比,可以减少所需的存储器量,并且可以根据人工智能的需求水 平灵活地应用训练过程后确定的各层的内核滤波器。因此,可以提供针对用 户环境优化的用户定制的人工智能。
图7图示了卷积神经网络的基本结构。
参考图7,当从当前层移动到下一层时,卷积神经网络可以通 过卷积反映层之间的权重并且将权重传输到下一层。
例如,卷积由两个主要参数定义。输入数据的大小(通常为1× 1、3×3或5×5矩阵)和输出特征图的深度(内核数)可以通过卷积计算。这些 卷积可能从32的深度开始,继续到64的深度,并在128或256的深度结 束。
卷积可以通过在三维(3D)输入特征图上滑动大小为3×3或5× 5的窗口、在任意位置停止并提取周围特征的3-D块来进行操作。
这些3-D块中的每一个都可以通过具有被称为权重的相同训练 权重矩阵的张量积转换为一维(1-D)向量。这些向量可以在空间上重新组合成 3-D输出特征图。输出特征图的所有空间位置可以对应于输入特征图的相同 位置。
卷积神经网络可以包括在输入数据和在训练过程中经过多次梯 度更新迭代训练的内核(即权重矩阵)之间执行卷积操作的卷积层。如果(m,n) 为内核大小,W设为权重值,卷积层可以通过计算点积对输入数据和权重矩 阵进行卷积。
可以调整或训练卷积神经网络,以便输入数据导致特定的输出 估计。卷积神经网络可以基于真实数据(ground truth)和输出估计之间的比较 使用反向传播进行调整,直到输出估计逐渐匹配或接近真实数据。
卷积神经网络可以通过基于真实数据和实际输出之间的差异调 整神经元之间的权重来训练。
图8示出了卷积层的输入数据300和用于卷积运算的内核 340。
输入数据300可以是图像或显示为由特定大小的行310和特定 大小的列320组成的二维矩阵的图像。输入数据300可以具有多个通道 330,其中通道330可以表示输入数据图像的颜色分量的数量。
同时,内核340可以是用于卷积以在扫描输入数据300的特定 部分的同时提取其特征的公共参数。与输入数据图像一样,内核340可以被 配置为具有特定大小的行350、特定大小的列360和特定数量的通道370。通 常,内核340的行350和列360的大小被设置为相同,并且通道370的数量 可以与输入数据图像的通道330的数量相同。
图9示出了使用内核生成激活图的卷积神经网络的操作。
内核410可以通过以指定的间隔遍历输入数据420并执行卷积 来最终生成特征图430。当内核410应用于输入数据420的一部分时,卷积 可以通过将该部分的特定位置的输入数据值与内核410的相应位置的值分别 相乘,然后将所有生成的值相加来执行。
通过该卷积过程,生成特征图的计算值,并且每当内核410遍 历输入数据420时,生成卷积的结果值以配置特征图430。特征图的每个元 素值通过卷积层的激活函数将其转换为特征图430。
在图9中,输入到卷积层的输入数据420由大小为4×4的二维 矩阵表示,内核410由大小为3×3的二维矩阵表示。然而,卷积层的输入数 据420和内核410的大小不限于此,并且可以根据包括卷积层的卷积神经网 络的性能和要求进行各种改变。
如图所示,当输入数据420被输入到卷积层时,内核410以预 定间隔(例如,1)遍历输入数据420,并且输入数据420和内核对应位置逐元 素相乘(elementwisemultiplication)可以通过分别将410中相同位置的值相乘 来执行。内核410可以以规则的间隔遍历输入数据420并对通过多次相乘获 得的值求和。
具体地,内核410将在输入数据420的特定位置421处计算出 的对应位置逐元素相乘的值“十五”分配给特征图430的对应元素431。内 核410将在输入数据420的下一位置422计算出的对应位置逐元素相乘的值 “十六”分配给特征图430的对应元素432。内核410将在输入数据420的下 一位置423计算出的对应位置逐元素相乘的值“六”分配给特征图430的对 应元素433。接下来,内核410将在输入数据420的下一位置424处计算出的 对应位置逐元素相乘的值“十五”分配给特征图430的对应元素434。
如上所述,当内核410将在遍历输入数据420时计算出的所有 对应位置逐元素相乘的值分配给特征图430时,可以完成具有2×2大小的特 征图430。
此时,如果输入数据510由例如三个通道(R通道、G通道、B 通道)组成,则可以通过卷积生成每个通道的特征图,其中每个通道的相同的 内核或者不同通道在输入数据420的每个通道的数据上遍历,并且执行逐元 素相乘和相加。
图10说明了图7至图9中描述的卷积神经网络的操作。
参考图10,例如,输入图像被示出为具有大小为5×5的二维 矩阵。此外,在图10中,使用三个节点,即通道一、通道二、通道三作为示 例。
首先,将描述第一层的卷积操作。
输入图像在第一层的第一节点与通道一的第一内核卷积,结果 输出特征图一。此外,输入图像在第一层的第二节点与通道二的第二内核卷 积,结果输出特征图二。此外,输入图像在第三节点与通道三的第三内核卷 积,结果输出特征图三。
接下来,将描述用于第二层的池化操作。
从第一层输出的特征图一、特征图二和特征图三被输入到第二 层的三个节点。第二层可以接收从第一层输出的特征图作为输入并执行池 化。池化可以减小矩阵中的大小或强调特定值。池化方法可以包括最大池 化、平均池化和最小池化。最大池化用于收集矩阵特定区域内的最大值,而 平均池化可以用于查找特定区域内的平均值。
在图10的示例中,通过池化将5×5矩阵的特征图尺寸缩小为 4×4矩阵。
具体而言,第二层的第一节点接收通道一的特征图作为输入, 执行池化,并输出例如4×4矩阵。第二层的第二节点接收通道二的特征图二 作为输入,进行池化,输出例如4×4矩阵。第二层的第三节点接收通道三的 特征图三作为输入,进行池化,输出例如4×4矩阵。
接下来,将描述第三层的卷积操作。
第三层的第一节点接收来自第二层的第一节点的输出作为输 入,与第四内核进行卷积,并输出结果。第三层的第二节点接收第二层的第 二节点的输出作为输入,与通道二的第五内核进行卷积,并输出结果。同 理,第三层的第三节点接收第二层的第三节点的输出作为输入,与通道三的 内核六进行卷积,并输出结果。
这样,卷积和池化被重复,最后,如图7所示,输出可以由全 连接层输出。相应的输出可以再次输入人工神经网络以进行图像识别。
图11示出了内核滤波器的生成。
对于人工神经网络模型,可能有多个内核用于多个层和/或多个 通道。
在图11的示例中,图示了第u层(或第u通道)的内核和第i层 (或第i通道)的内核。这样的多个内核可以存储在图5A或图6A或6B所示的 存储器200中。
第u层/通道可以包括由斜条纹指示的第一内核,并且第i层/通 道可以包括由网格图案指示的第二内核。
第一内核和第二内核中的一个可以被设置为基本内核。
内核滤波器可以通过对多个内核执行任意操作阿尔法(α)来生 成。如图11所示,对第u层/通道的第一内核和第i层/通道的第二内核执行 任意操作α或变换以生成内核滤波器。操作α可以包括例如加法、乘法、除 法、算术运算的组合、卷积运算和各种其他运算。
由于生成的内核滤波器的位宽小于原始内核的位宽,因此优点 在于可以减少访问存储器200的负担。
在图11中,生成的内核滤波器可以存储在图1或3的NPU内 部存储器120中,或图5A或6A或6B的存储器200中。
如图11所示,内核滤波器由不同层的内核生成,但内核滤波器 可以由同一层的内核生成。
根据一示例,第u层和第i层可以是相邻层或远离层,或者至 少三个内核可以以各种方式组合以生成内核滤波器。
如图11所示,如果内核滤波器被生成并存储在存储器120或 200中,则图5A的内核生成器300、图6A的内核生成器150或图6B的内核 生成器240可以通过组合基本内核和内核滤波器来恢复原始内核或生成类似 于原始内核的内核。
在人工神经网络(例如,CNN)模型训练过程中,内核滤波器可 以设置为具有较小的位宽(或较小的位大小)。例如,在训练人工神经网络(如 CNN)模型的过程中,当可以生成多个内核滤波器的候选者时,可以选择最小 位宽(或小的位大小)的任一个作为内核滤波器。
内核滤波器可以用可编程实现的内核的各种组合来生成。例 如,在训练过程中,卷积神经网络在一个方向上进行训练,以最小化在相邻 层之间的内核之间的差异,同时最小化估计值与目标值之间的差异。在这种 情况下,可以基于在层之间的内核之间的差值来确定内核滤波器。替代地, 除了层之间的内核的加法、乘法、除法、算术运算的组合和卷积运算之外, 还可以通过不同的方法来生成内核滤波器。
图12图示了恢复原始内核或生成类似于原始内核的内核的示 例。
参考图12,基本内核被图示为4×4矩阵。如果基本内核的矩 阵元素的位宽为16位,则4×4矩阵的总数据大小可能为总计256位。参考 图12,内核滤波器被图示为4×4矩阵。如果内核滤波器的矩阵元素的位宽 为5位,那么具有4×4矩阵大小的内核滤波器的总数据大小可以为总计80 位。
当基于基本内核和第一内核滤波器执行恢复操作时,可以生成 第一恢复(或调制)内核。
此外,当基于基本内核和第二内核滤波器执行恢复操作时,可 以生成第二恢复(或调制)内核。
在图12中,第一和第二恢复(或调制)内核被示例性地表示为4 ×4矩阵。然而,替代地,第一或第二恢复(或调制)内核可以例如大于或小于 基本内核的矩阵大小。例如,第一恢复(或调制)内核可以是5×5矩阵,第二 恢复(或调制)内核可以是3×3矩阵。相反,第一恢复(或调制)内核可以是3× 3矩阵,第二恢复(或调制)内核可以是5×5矩阵。
图13示出了恢复原始内核或生成类似于原始内核的内核的另一 个示例。
参考图13,作为示例,基本内核被示为4×4矩阵。如果基本 内核的矩阵元素的位宽为16位,则4×4矩阵的数据大小总共可以为256 位。参考图13,内核滤波器被显示为示例性4×4矩阵。如果内核滤波器的 矩阵元素的位宽为5位,那么具有4×4矩阵大小的内核滤波器的数据大小可 以是总共80位。
当基于基本内核和第一内核滤波器执行恢复操作时,则可以生 成第一恢复(或调制)内核。
与图12的示例不同,在图13中,第二内核滤波器可以不应用 于基本内核,但可以应用于第一恢复的(或调制的)内核。
具体地,当基于第一恢复(或调制)内核和第二内核滤波器执行 恢复操作时,则可以生成第二恢复(或调制)内核。
在图13中,第一和第二恢复(或调制)内核被示例性地表示为4 ×4矩阵。然而,与此不同的是,第一或第二恢复(或调制)内核可以例如大于 或小于基本内核的矩阵大小。例如,第一恢复(或调制)内核可以是5×5矩 阵,第二恢复(或调制)内核可以是3×3矩阵。替代地,第一恢复(或调制)内 核可以是3×3矩阵,第二恢复(或调制)内核可以是5×5矩阵。
图14示出了恢复原始内核或生成类似于原始内核的内核的另一 个示例。
参考图14,作为示例,基本内核被显示为4×4矩阵。如果基 本内核的矩阵元素的位宽为16位,则4×4矩阵的数据大小可以为总共256 位。参考图14,内核滤波器被显示为示例性的4×4矩阵。如果内核滤波器 的矩阵元素的位宽为5位,那么具有4×4矩阵大小的内核滤波器的数据大小 可以是总共80位。
与图13的示例不同,在图14中,可以通过对第一内核滤波器 和第二内核滤波器执行任意操作来生成第二恢复的(或调制的)内核。
具体地,当基于基本内核和第一内核滤波器执行恢复操作时, 可以生成第一恢复(或调制)内核。
此外,当基于第一内核滤波器和第二内核滤波器执行恢复操作 时,可以生成第二恢复(或调制)内核。
在图14中,第一和第二恢复(或调制)内核被示例性地表示为4 ×4矩阵。然而,替代地,第一或第二恢复(或调制)内核可以例如大于或小于 基本内核的矩阵大小。例如,第一恢复(或调制)内核可以是5×5矩阵,第二 恢复(或调制)内核可以是3×3矩阵。相反,第一恢复(或调制)内核可以是3× 3矩阵,第二恢复(或调制)内核可以是5×5矩阵。
图15示出了通过旋转基本内核来生成另一内核的示例。
参考图15,可以通过旋转基本内核来生成另一基本内核。与图 12至14的示例相比,在图15的示例中,可以通过修改基本内核本身而不使 用内核滤波器来生成另一内核。
因此,与图12到14的示例(其中基本内核和内核滤波器必须从 存储器中加载)相比,具有减少要传输的数据量的效果。此外,根据所需的人 工智能性能,其可以与内核滤波器同时应用,以便在低功耗下运行。
图16示出了通过转置基本内核来生成另一个内核的示例。
参考图16,可以通过转置基本内核来生成另一基本内核。与图 12到14的示例相比,图16的示例还可以通过修改基本内核本身而不使用内 核滤波器来生成另一内核。
因此,与图12到图14的示例(其中基本内核和内核滤波器必须 从存储器中加载)相比,可以减少传输的数据量。此外,根据所需的人工智能 性能,其可以与内核滤波器同时应用,以便以更低的功耗运行。
图15所示的旋转和图16所示的转置仅仅是示例,并且可以根 据可以实现为程序的各种算法来生成内核。可以同时适当地选择和应用包括 旋转和转置的各种内核生成方法,并且卷积神经网络可以执行操作以找到最 佳组合。
图17示出了通过转置基本内核来生成另一内核的示例。
参考图17,作为示例,基本内核被示为4×4矩阵。
当基于基本内核和第一内核滤波器执行恢复操作时,可以生成 第一恢复(或调制)内核。
此外,当第一恢复的(或调制的)内核被转置时,如图16所示, 可以生成第二恢复的(或调制的)内核。
此外,如果第一内核滤波器被旋转,则可以生成第三重构的(或 调制的)内核。
图18示出了排列在表格中以便更好理解的内核生成算法(或内 核恢复算法)。
内核生成算法(或内核恢复算法)可以是通过训练过程定义输入 数据的运算处理方法的算法。内核生成算法(或内核恢复算法)可以根据通过 一系列训练过程被确定为具有最佳准确度的算法来生成。
内核生成算法(或内核恢复算法)可以包括使用的层数、输入数 据信息、算术处理方法、从存储器中获取内核的顺序等。
此外,内核生成算法(或内核恢复算法)可以包括用于恢复特定 层的原始内核或生成与原始内核相似的内核的信息,即映射信息。
使用基本内核恢复其他原始内核(即,调制的内核或恢复的内核) 或生成类似于原始内核的内核的方法可以对于每一层或每一通道不同地应 用。具体地,恢复原始内核或生成与原始内核相似的内核的方法可以包括将 基本内核原样用于另一层或通道的第一种方法、使用内核滤波器的第二种方 法、不考虑内核滤波器的情况下修改基本内核本身的第三种方法、同时修改 内核滤波器和基本内核的第四种方法等中的一种。
例如,内核生成算法(或内核恢复算法)可以指示:第一层按原 样使用基本内核;与第二层至第四层对应的内核待通过旋转基本内核产生; 与第五层对应的内核待通过将基本内核转置产生;与第六层至第八层对应的 权重待通过在基本内核上加减内核滤波器生成;以及与第九层对应的内核待 通过旋转内核同时添加内核滤波器生成。
根据本公开,如果使用在训练过程中确定的每一层的内核滤波 器,则与存储每一层的整个内核(即权重矩阵)相比,可以减少使用的存储器 量,训练过程中确定的层之间的内核滤波器可以根据人工智能的需求水平灵 活调整。因此,它具有提供针对用户环境优化的用户定制人工智能的效果。
参考图18,作为第一层的通道一的第一内核,第一内核被确定 为第一层中的基本内核。第一层的通道二的第二内核可以通过对应于基本内 核的第一内核和第二内核滤波器的组合来恢复(或生成)。第一层的通道三的 第三内核可以由对应于基本内核的第一内核、第一内核滤波器和旋转恢复(或 生成)。虽然未在表中示出,但可能还需要关于是针对第一内核还是针对第一 内核滤波器执行旋转的信息。第1层通道4的第四内核可以由第一内核、第 二内核滤波器和转置恢复(或创建)。虽然未在表中示出,但可能还需要关于 是针对第一内核还是针对第二内核滤波器执行转置的信息。
同时,第十一层的通道一的内核是第十内核,并且可以是第十 一层的基本内核。可以通过对应于基本内核的第十内核和第六内核滤波器的 组合来恢复(或生成)第十一层的通道二的第十一内核。另外,可以通过与基 本内核对应的第十内核和第八内核滤波器的组合来恢复(或生成)第十一层的 通道二的第十二内核。
用于恢复特定层的内核或生成与原始内核类似的内核的信息(即 映射信息,如图18中的表所示)的大小最多为数十或数百千字节(kB)。因此, 与存储所有层的整个内核所需的大小(例如,如已知技术中的数百兆字节)相 比,存储容量会显著减小。
图19示出了使用多个基本内核和多个内核滤波器来恢复人工神 经网络(例如,CNN)模型的结构的构思。
如图19所示,可以存在与第一基本内核对应的多个内核滤波 器,并且可以存在与第二基本内核对应的多个内核滤波器。根据图19所示的 示例,每个基本内核可以是例如256位,并且每个内核滤波器可以是例如16 位。
在图19中,显示了当通过组合第一基本内核和相应的内核滤波 器执行操作时,第一层和第二层的内核被恢复(或创建),并且显示了当通过 组合第二基本内核和相应的内核滤波器执行操作时,第三层和第四层的内核 被恢复(或生成)。
在图19所示的示例中,由于有四层,每层需要三个内核,所以 总共使用了十二个内核。在这种情况下,256位乘以12个内核需要3,702位 以存储在存储器中。但是,当使用内核滤波器时,所需的总存储器大小减少 到672位,其中包含两个256位大小的基本内核和五个16位大小的内核滤波 器。如上所述,当使用内核滤波器时,具有可以显著减少所需存储器大小的 优点。
图20示出了用于确定基本内核和内核滤波器的过程。
图20所示的程序可以在人工神经网络例如卷积神经网络的机器 学习过程中执行。机器学习可以是一种算法,其中计算机从数据中学习,自 己发现模式,并学习采取适当的行动。例如,机器学习可以包括监督学习、 无监督学习和强化学习。
在步骤S2001中,可以确定要应用于人工神经网络模型(例如, 卷积神经网络模型)的每一层和通道的内核(即,包括权重值的矩阵)。
例如,当输入信息是图像并且图像可以被划分为红色通道、绿 色通道和蓝色通道这三个通道时,可以为每一层确定三个通道的三个内核。 具体而言,在第一层可以确定三个通道的三个内核,在第二层可以确定三个 通道的三个内核。替代地,当输入图像可以分为五个通道时,可以为每一层 确定五个通道的五个内核。替代地,可以为每个通道确定多个内核候选者。 例如,当每个通道确定两个内核候选者时,如果有五个通道,则可以确定总共十个内核候选者。
在步骤S2003中,可以从多个内核中选择至少一个基本内核以 应用于每一层和通道。选择的基本内核可以最小化内核滤波器的位宽(或数据 大小)。
在步骤S2005中,基于所选择的基本内核和其他内核之间的相 关性,可以确定内核滤波器。
例如,当第一层的三个通道存在三个内核时,可以选择三个内 核中的任何一个作为第一层的基本内核。具体而言,可以从第一内核、第二 内核和第三内核中选择第一内核作为基本内核。此外,第一内核滤波器可以 基于基本内核和第二内核之间的相关性来确定,而第二内核滤波器可以基于 基本内核和第三内核之间的相关性来确定。
作为另一示例,当存在第一层的三个通道的三个内核,以及存 在第二层的三个通道的三个内核时,可以选择六个内核中的一个作为第一层 和第二层的基本内核。具体而言,从第一层的第一内核至第三内核和第二层 的第四至第六内核中选择第三内核作为基本内核,可以根据作为基本内核的 第三内核和其他内核之间的相关性确定内核滤波器。
作为另一示例,当第一层、第二层和第三层存在时,假设每一 层存在三个通道的三个内核,则总共存在九个内核。在这种情况下,可以选 择包括第一层中的三个内核和第二层中的两个内核的五个内核中的一个作为 第一基本内核。此外,可以选择包括第二层的剩余一个内核和第三层的三个 内核在内的四个内核中的一个作为第二基本内核。
作为另一示例,假设存在三层并且存在三个通道(例如,红色通 道、绿色通道和蓝色通道)。然后,在第一层中,存在红色通道的第一内核、 绿色通道的第二内核和蓝色通道的第三内核;在第二层中,存在红色通道的 第四内核、绿色通道的第五内核和蓝色通道的第六内核;并且,在第三层 中,存在红色通道的第七内核、绿色通道的第八内核和蓝色通道的第九内 核。此时,三个内核中的一个(即第一层的红色通道的第一内核,第二层的红 色通道的第四内核,第三层的红色通道的第七内核)可以选择作为第一基本内 核。类似地,可以选择第一层的绿色通道的第二内核、第二层的绿色通道的 第五内核和第三层的绿色通道的第八内核中的一个作为第二基本内核。类似 地,可以选择第一层的绿色通道的第三内核、第二层的蓝色通道的第六内核 和第三层的蓝色通道的第九内核中的一个作为第三基本内核。通常,一个通 道(例如,红色通道)的三层中的三个内核可能彼此相似。因此,可以选择三 个内核中的一个作为基本内核,并且可以通过内核滤波器恢复其他两个内 核。此外,由于一个通道(例如,红色通道)的三层中的三个内核可能彼此相 似,因此内核滤波器的位宽(或位大小)可以减小。
同时,对于内核滤波器可以存在多个候选者,但是可以通过训 练过程从多个候选中最终选择满足预定义的规则的内核滤波器。
预定义的规则可包括内核滤波器的位宽(或位大小)、计算量、 收益成本比、功率使用量、准确度或其组合。
例如,内核滤波器可以在ANN模型的训练过程中通过应用全 局加权函数来设置,所述全局加权函数包括具有准确度和权重大小减小率的 增量(delta)函数、系数函数、旋转函数、转置函数、偏置函数和成本函数。
作为特定示例,可以在多个内核滤波器候选者中选择具有最小 位宽(或位大小)和最高准确度的内核滤波器。内核滤波器的选择可以针对人 工神经网络的每个训练过程进行更新,可以在训练完成后最终完成。
在步骤S2007中,可以存储基本内核、相应的内核滤波器和恢 复(调制)内核之间的映射信息。映射信息可以存储在图5A或图6的存储器 200中的内核生成算法存储装置230中。
图21示出了卷积神经网络的内核恢复之后的应用程序。
参考图21,应用程序可以从图20的过程S2007开始。但是, 如果过程S2007和过程S2101之间有很长的时间差,则可以将其识别为单独 的过程。替代地,也可以通过由不同的装置执行而分别进行识别。例如,图 20所示的程序可以在具有高性能计算能力的设备中执行。图21所示的程序 可由包括图1或图3的神经处理单元100的装置执行。
在步骤S2101中,图5A的内核生成器300、图6A的神经处理 单元100中的内核生成器150或者图6B的存储器200中的内核生成器240从 存储器200读取包括映射信息、基本内核和内核滤波器的内核生成算法(即, 内核恢复算法)。
例如,图5A的内核生成器300可以存储被提取到内部存储器 310中的基本内核、内核滤波器和映射信息。替代地,图6A的神经处理单元 100中的内核生成器150可以存储被提取到NPU内部存储器120中的基本内 核、内核滤波器和映射信息。一旦基本内核、内核滤波器和映射信息存储在 内部存储器120中,则神经处理单元100可能不需要再次访问存储器200。 这样,通过允许神经处理单元100访问NPU内部存储器120而不是访问存储 器200,可以节省高达128倍的功耗。
在步骤S2103中,图5A的内核生成器300基于映射信息、基 本内核和内核滤波器生成恢复的(或调制的)内核,然后将其发送到神经处理 单元100。替代地,图6A的神经处理单元100中的内核生成器150基于映射 信息、基本内核和内核滤波器生成恢复的(或调制的)内核。替代地,图6B的 存储器200中的内核生成器240生成恢复的(或调制的)内核,然后将其发送到 神经处理单元100。通过这些操作,可以恢复原始内核或者可以生成类似于 原始内核的内核。
可以使用至少一个基本内核来恢复内核。基本内核不一定是第 一层的内核,可以将任意层的内核或任意通道的内核确定为基本内核。
换言之,可以基于基本内核和内核滤波器中的至少一个来生成 恢复(调制)内核。例如,当内核滤波器被表示为基本内核的系数函数时,可 以通过将系数应用于基本内核来生成恢复的(或调制的)内核。作为更具体的 示例,系数函数可以是相对于基本内核的所有元素添加或乘以常数值(例如, 2)。
在一示例中,可能存在输入数据仅由三个RGB通道组成的情况 以及使用数十个或更多通道的情况。内核生成器150、300或240可以基于每 个通道的几个基本内核,根据各种技术生成几个原始内核(即,调制的内核或 恢复的内核)。
此外,使用基本内核生成另一内核的各种技术可以不同地应用 于每一层或每个通道。具体地,用于生成内核的方法可以包括将基本内核原 样用于其他层或通道的第一种方法、变换基本内核本身的第二种方法等中的 一种。
特别地,第二种方法(即修改基本内核本身的方法)可以通过修 改从存储器中检索数据的顺序的方法来实现。存储器中存储的数据可以由指 示其位置的地址来表示。例如,位置可以由存储器中的列地址和行地址来表 示。卷积神经网络可以根据内核生成算法(或内核恢复算法)通过将修改后的 地址传送到存储器来改变接收基本内核的每个数据值的顺序。
例如,可以指示内核生成算法(或内核恢复算法)将基本内核原 样用于第一层,并且旋转基本内核以生成对应于第二至第四层的权重,并转 置基本内核以生成与第五层对应的权重。
传统上,每次在每个层或通道上执行操作时,整个内核都必须 从存储器中加载,因此效率低下。然而,根据本说明书的公开,可以实时生 成基本内核和恢复的内核(或调制的内核)。因此,可以降低对存储器200的访 问的频率,从而显著降低功耗。
在步骤S2105中,神经处理单元100使用基本内核执行矩阵乘 法、卷积或池化。
在步骤S2107中,神经处理单元100使用恢复(调制)内核来执 行矩阵乘法、卷积或池化。
在步骤S2109中,神经处理单元100可以通过使用矩阵乘法或 卷积的输出来执行人工神经网络操作。
图22示出了根据图1或图3的神经处理单元的模式进行的操 作,并且图23A和23B示出了每个模式的内核的活动位。
在步骤S2201中,神经处理单元100可以确定其操作模式。可 以基于预设的控制信息或控制信号来执行该确定。例如,当神经处理单元 100从外部接收到以任意操作模式操作的控制信号时,神经处理单元100可 以基于相应的控制信号来确定操作模式。
操作模式可以包括多种操作模式。
模式1可以是最大性能操作模式,模式2可以是低功率操作模 式或低性能操作模式。
模式1可以是用于在不考虑功耗的情况下实现高复杂度的人工 神经网络模型。替代地,模式1可以是用于通过人工神经网络模型处理高复 杂度的输入数据。模式1可以是使用内核或内核滤波器的所有位进行卷积或 池化。
模式2可以是用于考虑功耗或用于实现低复杂度的人工神经网 络模型。替代地,模式2可以用于通过人工神经网络模型处理低复杂度的输 入数据。
可以仅使用内核或内核滤波器的某些位来执行卷积或池化。为 此,内核或内核滤波器可以被划分为多个区域。模式2可以分为几个子模式 2-1、2-2和2-3。
在步骤S2203中,神经处理单元100可以基于确定的操作模式 在任意内核区域中选择权重位。
如在图23A中所示的,第一内核具有4×4矩阵的大小,并且 每个元素的位宽被示出为8位。模式1可以示例性地选择和使用所有8位元 素。
如图23B所示,模式2-1可以使用权重位中的任意区域的位。 如图所示,模式2-1可以使用在总共8位中的第一区域中的4位。模式2-2可 以使用在总共8位中的第二区域中的4位。
模式2-3可以仅使用例如4×4矩阵中的任意元素的一些位。根 据该模式2-3,例如,可以选择和使用具有3×3大小的矩阵,其中每个元素 具有4位大小。
在步骤S2205中,神经处理单元100可以通过使用在任意内核 中选择的权重位来执行卷积。
说明书和附图中所示的示例仅被提供来促进对本公开的主题的 描述并提供具体示例以帮助理解本公开,并且不旨在限制本公开的范围。对 于本公开所属领域的普通技术人员来说显而易见的是,除了在此公开的示例 之外,还可以实施基于本公开的技术精神的其他修改。

Claims (20)

1.一种神经处理单元(NPU),其包括电路,所述电路包括:
至少一个处理元件(PE),其被配置为处理人工神经网络(ANN)模型的操作;和
至少一个存储器,其能配置为存储第一内核和第一内核滤波器,
其中,所述NPU被配置为基于所述第一内核和所述第一内核滤波器生成第一调制内核。
2.根据权利要求1所述的NPU,
其中所述第一内核包括K×M矩阵,K和M是整数,并且
其中所述K×M矩阵包括适用于所述ANN模型的第一层的至少一个第一权重值或多个权重值。
3.根据权利要求1所述的NPU,其中,所述第一内核滤波器被配置为基于所述第一内核的至少一个内核权重值与所述第一调制内核的至少一个调制内核权重值之间的差来生成。
4.根据权利要求1所述的NPU,其中在所述ANN模型的训练过程期间设置所述第一内核滤波器。
5.根据权利要求1所述的NPU,其中所述电路被配置为基于所述第一内核和所述第一内核滤波器生成所述第一调制内核。
6.根据权利要求1所述的NPU,其中所述电路被配置为基于所述第一内核和第二内核滤波器生成第二调制内核。
7.根据权利要求6所述的NPU,
其中,所述第二内核滤波器被设置为通过将数学函数应用于所述第一内核滤波器来生成,并且
其中,所述数学函数包括delta函数、旋转函数、转置函数、偏置函数和全局权重函数中的至少一种。
8.根据权利要求1所述的NPU,其中,所述电路被配置为基于所述第一内核、所述第一内核滤波器、应用于所述第一内核或所述第一内核滤波器的所述数学函数、应用于所述第一内核或所述第一内核滤波器的系数、以及应用于所述第一内核或所述第一内核滤波器的偏移量中的一者。
9.根据权利要求1所述的NPU,其中,所述至少一个存储器还能配置为存储至少一个内核和至少一个内核滤波器之间的映射信息,以生成至少一个调制内核。
10.根据权利要求1所述的NPU,其中,所述ANN模型包括关于第一权重位的位分配的信息,所述第一权重位包括在用于第一模式的第一内核滤波器中。
11.根据权利要求1所述的NPU,其中所述NPU以多种模式中的一种操作,所述多种模式包括:
第一模式,其中将包括在所述第一内核中的多个权重位的第一部分应用于所述ANN模型;和
第二模式,其中将所述第一内核中包括的多个权重位中的全部都应用于所述ANN模型。
12.根据权利要求11所述的NPU,其中如果根据所述第一模式激活所述第一部分,则选择所述第一部分中的所述权重位。
13.根据权利要求1所述的NPU,
其中,所述第一内核包括被分组为第一部分和第二部分的多个权重位,以及
其中,所述第一部分和所述第二部分被配置为选择性地使用。
14.根据权利要求1所述的NPU,其中所述第一内核滤波器被配置为使得所述第一内核滤波器中的值的位宽小于所述第一内核的权重的位宽。
15.一种人工神经网络(ANN)模型的驱动方法,该方法包括:
执行所述ANN模型的多个操作;和
存储多个内核以及多个内核滤波器,以用于多个操作,
其中,所述多个操作包括基于所述多个内核中的至少一个和所述多个内核滤波器中的至少一个中的相应内核滤波器生成多个调制内核。
16.根据权利要求15所述的方法,其中为所述ANN模型执行的所述多个操作还包括:
在所述ANN模型的所述多个内核中设置任意内核,所述任意内核对应于所述多个内核中的基本内核;以及
为与所述基本内核对应的所述任意内核设置所述多个内核滤波器中的任意内核滤波器。
17.根据权利要求15所述的方法,其中为所述ANN模型执行的所述多个操作还包括:
根据准确度成本函数和权重大小成本函数,基于训练数据集和验证数据集训练ANN模型;以及
确定所述多个内核中的基本内核与所述多个内核滤波器中的任意内核滤波器之间的映射数据。
18.根据权利要求15所述的方法,其中为所述ANN模型执行的所述多个操作由包括电路的神经处理单元(NPU)执行,所述电路包括至少一个处理元件(PE)和至少一个存储器。
19.根据权利要求18所述的方法,其中为所述ANN模型执行的所述多个操作还包括:
从所述至少一个存储器中读取所述多个内核中的第一内核;
通过将所述多个内核中的所述第一内核应用到所述ANN模型的第一层或所述ANN模型的第一通道来执行第一操作;
从所述至少一个存储器中读取所述内核滤波器;
基于所述多个内核中的所述第一内核和所述多个内核滤波器中的第一内核滤波器生成第一调制内核;以及
通过将所述第一调制内核应用到所述ANN模型的第二层或所述ANN模型的第二通道,为所述ANN模型执行第二操作。
20.一种装置,其包括:
半导体基板,其上形成有导电图案;
至少一个第一存储器,其电连接到所述半导体基板并且能配置为存储关于第一内核的信息;以及
至少一个神经处理单元(NPU),其电连接到所述基板并且能配置为访问所述至少一个第一存储器,所述NPU包括半导体电路,该半导体电路包括:
至少一个处理元件(PE),其被配置为处理人工神经网络(ANN)模型的操作,以及
至少一个内部存储器,其能配置为存储关于第一内核滤波器的信息,
其中,如果关于所述第一内核的信息是从所述至少一个第一存储器中读取的,则所述第一内核被存储在所述至少一个内部存储器中,并且
其中,所述ANN模型的所述操作包括基于所述第一内核和所述第一内核滤波器生成第一调制内核。
CN202111332117.6A 2020-12-29 2021-11-11 用于生成人工神经网络模型的内核的npu及其方法 Pending CN114692854A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0186375 2020-12-29
KR1020200186375A KR20220094787A (ko) 2020-12-29 2020-12-29 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법

Publications (1)

Publication Number Publication Date
CN114692854A true CN114692854A (zh) 2022-07-01

Family

ID=82119262

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111332117.6A Pending CN114692854A (zh) 2020-12-29 2021-11-11 用于生成人工神经网络模型的内核的npu及其方法

Country Status (3)

Country Link
US (2) US11416737B2 (zh)
KR (2) KR20220094787A (zh)
CN (1) CN114692854A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507838B2 (en) * 2019-06-28 2022-11-22 Intel Corporation Methods and apparatus to optimize execution of a machine learning model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861484B2 (en) * 2018-09-28 2024-01-02 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) hardware pre-processing and post-processing
US11204976B2 (en) * 2018-11-19 2021-12-21 Groq, Inc. Expanded kernel generation
US11423117B2 (en) * 2019-08-27 2022-08-23 Arm Limited Data processing method and system for performing convolutions
KR20210076420A (ko) * 2019-12-16 2021-06-24 삼성전자주식회사 전자 장치 및 그 제어 방법
US11809836B2 (en) * 2020-08-27 2023-11-07 Arm Limited Method and apparatus for data processing operation

Also Published As

Publication number Publication date
US20220327368A1 (en) 2022-10-13
KR20240049671A (ko) 2024-04-16
US20220207336A1 (en) 2022-06-30
US11416737B2 (en) 2022-08-16
KR20220094787A (ko) 2022-07-06

Similar Documents

Publication Publication Date Title
Wang et al. SNrram: An efficient sparse neural network computation architecture based on resistive random-access memory
CN112840356B (zh) 运算加速器、处理方法及相关设备
TW202026858A (zh) 在深度神經網路中利用啟動稀疏性
Mazumder et al. A survey on the optimization of neural network accelerators for micro-ai on-device inference
CN111465943B (zh) 一种集成电路和用于神经网络处理的方法
US11669443B2 (en) Data layout optimization on processing in memory architecture for executing neural network model
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
CN110766127B (zh) 神经网络计算专用电路及其相关计算平台与实现方法
KR20240049671A (ko) 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법
US20230123828A1 (en) Neural processing unit capable of reusing data and method thereof
Luo et al. AILC: Accelerate on-chip incremental learning with compute-in-memory technology
US11599181B1 (en) Systems and methods for reducing power consumption of convolution operations of artificial neural networks
WO2022047802A1 (en) Processing-in-memory device and data processing method thereof
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
KR102544063B1 (ko) 데이터 재사용이 가능한 신경 프로세싱 유닛 및 그 방법
CN113986816A (zh) 可重构计算芯片
CN110765413B (zh) 矩阵求和结构及神经网络计算平台
Chen et al. SMALE: Enhancing Scalability of Machine Learning Algorithms on Extreme-Scale Computing Platforms
US20240152738A1 (en) Neural processing unit and method of operation thereof
Qu et al. A Coordinated Model Pruning and Mapping Framework for RRAM-based DNN Accelerators
KR20210014897A (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
US20230222315A1 (en) Systems and methods for energy-efficient data processing
US11501147B1 (en) Systems and methods for handling padding regions in convolution operations
US11586895B1 (en) Recursive neural network using random access memory
US20230237307A1 (en) Systems and methods for a hardware neural network engine

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