CN114402336A - 神经处理单元 - Google Patents

神经处理单元 Download PDF

Info

Publication number
CN114402336A
CN114402336A CN202080027203.3A CN202080027203A CN114402336A CN 114402336 A CN114402336 A CN 114402336A CN 202080027203 A CN202080027203 A CN 202080027203A CN 114402336 A CN114402336 A CN 114402336A
Authority
CN
China
Prior art keywords
neural network
data
npu
artificial neural
processing unit
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
CN202080027203.3A
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 CN114402336A publication Critical patent/CN114402336A/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0463Neocognitrons
    • 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/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Social Psychology (AREA)
  • Psychiatry (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)

Abstract

一种神经网络处理单元(NPU)包括处理元件阵列、配置为存储在处理元件阵列中处理的人工神经网络模型的数据的至少一部分的NPU存储器系统、以及配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列和NPU存储器系统的NPU调度器。

Description

神经处理单元
技术领域
本公开涉及一种神经网络处理单元,尤其涉及一种低功耗神经网络处理单元。
背景技术
人脑由大量称为神经元的神经细胞组成。每个神经元通过称为突触的连接件与数百到数千个其他神经元相连。对生物神经元的工作原理和在神经元之间的连接关系的建模用于模拟人类智能,并且称为人工神经网络(ANN)模型。换句话说,人工神经网络是一种系统,其中模拟神经元的节点以层结构连接。
这些人工神经网络模型根据层数分为“单层神经网络”和“多层神经网络”。
一般的多层神经网络由输入层、隐藏层和输出层组成。输入层是接收外部数据的层,并且输入层的神经元的数量与输入变量的数量相同。至少一个隐藏层位于输入层和输出层之间,从输入层接收信号,提取特征,并将它们发送到输出层。输出层接收来自至少一个隐藏层的信号并将其输出到外部。神经元之间的输入信号乘以具有0到1之间的值的每个连接强度,然后求和。如果总和大于神经元的阈值,则神经元被激活并通过激活函数实现为输出值。
同时,为了实现更高的人工智能,隐藏层数增加的人工神经网络被称为深度神经网络(DNN)。
DNN有多种类型,但众所周知,卷积神经网络(CNN)易于提取输入数据的特征并理解特征的模式。
卷积神经网络(CNN)是一种神经网络,其功能类似于人脑视觉皮层中的图像处理。众所周知,卷积神经网络适用于图像处理。
参考图13,以重复卷积通道和池化通道的形式配置卷积神经网络。在卷积神经网络中,大部分计算时间都被卷积运算占用了。卷积神经网络通过内核以矩阵的形式提取每个通道的图像的特征,并通过池化以提供诸如运动或失真等动态平衡的方式识别对象。在每个通道中,通过输入数据和内核的卷积得到特征图,然后应用例如修正线性单元(ReLU)等激活函数来生成对应通道的激活图。之后,可以应用池化。实际对模式进行分类的神经网络位于特征提取神经网络的后端,并且被称为全连接层。在卷积神经网络中,大部分运算都是通过卷积或矩阵乘法来完成的。这时候从存储器中读取所需内核的频率是相当频繁的。这种卷积神经网络的大部分运算都需要花费时间从存储器中读取对应于每个通道的内核。
存储器由多个存储器单元组成,存储器的每个存储器单元都有唯一的存储器地址。当处理器为存储在存储器中的内核生成读命令时,在访问与存储器地址对应的存储器单元之前可能会出现几个时钟的延迟。
随着人工智能的推理能力的发展,例如利用人工智能的声音识别、语音识别、图像识别、对象检测、驾驶员睡意检测、危险时刻检测和手势检测等各种推理服务被提供给各种电子设备,例如人工智能音箱、智能手机、智能冰箱、VR设备、AR设备、人工智能闭路电视(CCTV)、人工智能机器人真空吸尘器、平板电脑、笔记本电脑、自动驾驶汽车、双足步行机器人、四足步行机器人、工业机器人等。
随着最近深度学习技术的发展,基于大数据学习的人工神经网络推理服务的性能正在提高。这种人工神经网络推理服务在人工神经网络中迭代学习海量的训练数据,通过经过训练的人工神经网络模型推理出各种复杂的数据。因此,使用人工神经网络技术向上述电子设备提供各种服务。
然而,随着使用人工神经网络的推理服务所需的功能和精度的增大,人工神经网络模型的数据量、计算量和训练数据量呈指数级增长。因此,能够处理这种人工神经网络模型的推理操作的处理器和存储器的所需性能逐渐提高,并且在能够轻松处理大数据的基于云计算的服务器中积极提供人工神经网络推理服务。
发明内容
本公开的发明人通过使用人工神经网络模型技术研究了一种神经网络处理单元(NPU),其可以应用于用于边缘计算的各种电子设备。边缘计算是指计算发生的边缘或外围,是指直接产生数据的终端或位于终端附近的各种电子设备,边缘计算可以称为边缘设备。
为了进一步说明,在云计算系统中与数据中心的服务器分离、位于云计算系统的末端、并且与数据中心的服务器进行通信的计算系统可以定义为边缘设备。边缘设备还可用于执行必须立即可靠地执行的任务,例如需要在不到1/1,000秒的时间内处理大量数据的自动机器人或自动驾驶汽车。因此,边缘设备可以应用的领域正在迅速增加。
本公开的发明人试图通过使用人工神经网络模型技术向各种电子设备提供专门的推理功能,边缘设备可以以低功耗和低成本应用于这些电子设备。
本公开的发明人已经认识到,也应该考虑到每个电子设备的特性来优化可以应用于每个电子设备的人工神经网络技术,因为各种电子设备中的每一个的硬件性能彼此不同,并且所需要的推理功能的性能和特点也各不相同。
因此,本公开的发明人进行了研究和开发以开发可以针对各种电子设备中的每一个进行优化的独立的、低功耗的、低成本的神经网络处理单元。
首先,本公开的发明人认识到有必要开发一种独立的神经网络处理单元,其中实现了针对推理进行优化的处理元件,以优化每个电子设备中固有的并且能独立运算的人工神经网络推理技术。
也就是说,本公开的发明人认识到,可以嵌入各种电子设备的CPU针对串行计算进行了优化,不适用于并行处理海量数据的人工神经网络计算方法。这样,就存在人工神经网络模型的推理速度变慢并且消耗大量功率的问题。此外,由于必须执行除人工神经网络模型推理之外的各种任务,因此在实时稳定地提供人工神经网络模型推理计算方面存在问题。
也就是说,本公开的发明人认识到,可以嵌入各种电子设备中的图形处理单元(GPU)针对图像处理进行了优化,并且比中央处理单元更有利于人工神经网络模型推理。但是,由于GPU没有针对人工神经网络模型推理进行优化,因而功耗过大,制造成本高。因此,认识到存在应用于各种电子设备的成本问题。
也就是说,如果将人工神经网络模型的推理服务提供给各种电子设备,而没有使用优化的人工神经网络推理处理元件实现的神经网络处理单元,则在功耗、发热、存储、处理速度和成本方面存在效率问题。
因此,本公开的发明人认识到,由于例如功耗、发热、存储、处理速度和成本等问题,大多数电子设备在嵌入人工神经网络模型推理技术方面存在困难。因此,已经认识到有必要开发一种能够改进这些事情的神经网络处理单元。
因此,本公开要解决的问题是提供一种能够改善上述问题的独立的低功耗的低成本的神经网络处理单元。
此外,本公开的发明人研究了一种模拟人脑的神经形态模拟人工神经网络集成电路。这些神经形态集成电路是由或非(NOR)逻辑组成的模拟乘法器阵列,其优点是可以用两个简单的晶体管来实现,并且可以用低功耗的模拟电压提供推理功能,但容易受到各种噪声的影响,这是一个问题。也就是说,本公开的发明人已经认识到以下问题:由于神经形态集成电路受温度、湿度、周围电路的电磁干扰(EMI)、耦合效应、寄生电容等等的影响,因此模拟人工神经网络推理结果是不准确的。此外,认识到必须为模拟乘法器阵列的每个输出通道提供将模拟信号转换为数字信号的模数转换器(ADC),并且也认识到由于这样模数转换电路占用的面积相当大,当嵌入模数转换电路时,开发紧凑的神经形态集成电路是相当困难的。
因此,本公开要解决的另一问题是提供一种可以改善上述问题问题的独立的、低功耗、低成本的神经网络处理单元,其包括以数字形式而不是模拟形式实现的处理元件。
接下来,本公开的发明人已经认识到需要能够有效地执行至少一种专门的人工神经网络模型推理的独立的、低功耗的、低成本的神经网络处理单元。
也就是说,本公开的发明人认识到需要一种独立的、低功耗、低成本的神经网络处理单元,其被配置为不仅有效地执行专门用于一种具体的功能的上述人工神经网络模型推理操作,还有专门用于不同功能的多个不同的人工神经网络模型推理操作。换句话说,认识到有必要优化神经网络处理单元的有限资源并最小化功耗。
例如,人们认识到有必要优化神经网络处理单元的资源并且同时最小化功耗,使得能够嵌入各种电子设备中的神经网络处理单元的处理元件的一部分分配给第一人工神经网络模型的推理操作,另一部分分配给第二人工神经网络模型的推理操作,其余部分停止。即,也认识到神经网络处理单元需要被配置为进行语音识别推理和手势推理,或者推理从多个相机输入的不同图像数据的神经网络处理单元。
因此,本公开要解决的另一问题是提供一种神经网络处理单元,其能够推理至少一种专门的人工神经网络模型,该模型能够改善上述问题并降低功耗。
此外,本公开的发明人已经认识到,为了实现独立的、低功耗、低成本的神经网络处理单元,必须最小化经过训练的人工神经网络模型的数据量。
例如,每个经过训练的人工神经网络模型都可以提供每个专门的推理功能。这时候,每个经过训练的人工神经网络模型都可能有大量的权重数据、输入数据和操作值。操作值可以称为节点数据或特征图数据。
作为一个具体的示例,本公开的发明人已经训练识别30个特定语音关键字的具有VGG16深度学习架构的人工神经网络模型的权重数据的大小为550MB。再例如,自动驾驶汽车的自动驾驶需要处理1小时的自动驾驶相机的图像数据量可能为3TB或以上。在这种情况下,本公开的发明人已经认识到神经网络处理单元的存储器大小和处理元件的数量必须呈指数增加以计算大量人工神经网络模型推理的问题。另外,本公开的发明人已经认识到随着人工神经网络模型的权重数据量增加,由于半导体的集成度限制,导致神经网络的物理尺寸增大,使得需要增加处理元件的数量和存储器大小,从而导致功耗增加、发热增加和运算速度降低的问题。
此外,本公开的发明人已经认识到,为了实现独立的低功耗的低成本的神经网络处理单元,多个处理元件的操作位数必须是可调整的。即,认识到需要减少计算量和功耗,同时最小化推理精度的下降,使得特定人工神经网络模型的特定层的操作可以设置为8位操作,而其他层的操作可以设置为2位操作。
因此,本公开要解决的另一问题是提供一种能够改善上述问题的轻量化的人工神经网络模型,并且提供被配置成计算轻量化人工神经网络模型的神经网络处理单元及其操作方法。
因此,本公开要解决的另一问题是提供一种神经网络处理单元及其操作方法,其被配置为通过在最优条件下降低人工神经网络模型的权重来使用最小的功率和存储器,使得特定功能能够以超过预定的精度进行推理。
因此,本公开要解决的另一问题是提供一种神经网络处理单元及其操作方法,其包括人工神经网络模型,其中至少一层的权重数据、输入数据或操作值的位数通过针对经过训练的人工神经网络模型的每一层考虑推理精度、计算量、存储器和功耗中的至少一者来减少。
因此,本公开要解决的另一问题是提供一种神经网络处理单元,其包括人工神经网络模型,其中至少一层的权重数据、输入数据或操作值的位数通过以下方式来减少:在针对经过训练的人工神经网络模型的每一层考虑推理精度、计算量、存储器和功耗中的至少一者时,设置条件之间的相对优先级。
因此,本公开要解决的另一问题是通过设置神经网络处理单元的目标功耗来提供一种轻量化人工神经网络模型的方法,使得神经网络处理单元的功耗小于或等于目标功耗。
因此,本公开要解决的另一问题是提供一种通过设置神经网络处理单元的目标推理速度来轻量化人工神经网络模型的方法,使得神经网络处理单元的推理速度大于或等于目标推理速度。
因此,本公开要解决的另一问题是提供一种设置神经网络处理单元的存储器大小以降低人工神经网络模型的权重的方法,其中在推理神经网络时存储器使用效率高。
因此,本公开要解决的另一问题是提供一种通过针对神经网络处理单元的一种推理设置最大MAC限制来轻量化人工神经网络模型的方法,使得当神经网络处理单元进行推理操作时减少计算量。
因此,本公开要解决的另一问题是提供一种神经网络处理单元,其被配置为考虑到应用于神经网络处理单元的人工神经网络模型的每一层的特性,优化每一层的多个处理元件的值的位数。
因此,本公开要解决的另一问题是提供一种神经网络处理单元,其被配置成使得多个处理单元的值的位数小于或等于轻量化的人工神经网络模型的权重数据的位数。
接下来,本公开的发明人已经认识到,当提供被配置为始终在各种电子设备中运行的云型人工智能推理识别功能时会出现各种问题。
例如,当以云方法提供应用于车辆的驾驶员语音识别服务时,响应速度可能会较慢,具体取决于云服务器的状态。因此,根据通信网络的状态,可能无法提供服务,这是一个问题。
例如,当仅向电子设备提供云类型语音识别功能时,电子设备可以通过通信网络连接到云类型人工智能语音识别服务以接收语音识别功能。也就是说,当始终只向电子设备提供基于云端的语音识别推理功能时,电子设备必须实时连接基于大数据的云端人工智能语音识别服务。这种连接方式效率低下。进一步说明,电子设备在24小时期间内通过通信网络发送的声学数据几乎都可能是环境噪声。此外,通过这种方式发送的噪声数据增加了通信网络的流量,浪费了不必要的功率,并且可能会通过向服务器发送不必要的查询而导致延迟云端人工智能语音识别服务的响应速度的问题。特别是,如果语音识别的响应速度延迟,则用户对语音识别的满意度可能会下降。特别是,电池供电的电子设备还存在一个问题,即由于不必要的功耗,电子设备的操作时间可能会显著减少。
因此,本公开要解决的另一问题是提供一种神经网络处理单元及与其对应的能够控制通过神经网络处理单元不必要地浪费的电子设备的功耗的人工神经网络模型,其识别用户的语音命令或关键字,根据识别出的语音命令或关键字控制电子设备的功能,或控制相应电子设备的特定元件的功率。
因此,本公开要解决的另一问题是提供一种低功耗、低成本的神经网络处理单元,其中考虑到神经网络处理单元的处理能力,嵌入了轻量化的AI语音识别模型。
因此,本公开要解决的另一问题是提供一种低功耗、低成本的神经网络处理单元,其中考虑到神经网络处理单元的处理能力,嵌入了轻量化的AI声学识别模型。
因此,本公开要解决的另一问题是提供一种低功耗、低成本的神经网络处理单元,其中考虑到神经网络处理单元的处理能力,嵌入了轻量化的AI关键字识别模型。
因此,本公开要解决的另一问题是提供一种低功耗、低成本的神经网络处理单元,其中考虑到神经网络处理单元的处理能力,嵌入了轻量化的AI事件识别模型。
因此,本公开要解决的另一问题是提供一种具有AI语音识别模型、AI声学识别模型、AI关键字识别模型、AI事件识别模型中的多个人工神经网络模型(考虑到神经网络处理单元的处理能力,其被轻量化)的神经网络处理单元,并且提供一种分配神经网络处理单元的处理元件和存储器资源的方法,使得神经网络处理单元同时推理出至少多个人工神经网络模型。
因此,本公开要解决的另一问题是通过提供一种具有轻量化的AI关键字识别模型和神经网络处理单元的电子设备,大幅减少不必要的通信网络流量,减少不必要的功耗,以及减少不必要的查询,所述神经网络处理单元被配置成根据人工神经网络模型的关键字识别来控制电子设备的功率模式,并通过通信网络将电子设备与云端人工智能语音识别服务连接。
接下来,本公开的发明人关注了卷积神经网络以提高关键字识别的精度。与用于语音识别的循环神经网络或LSTM神经网络相比,卷积神经网络的优点是在推理图像相似性方面提供了相对优异的准确性,尽管推理单词连续性的能力相对不足。此外,本公开的发明人研究了一种能够将关键字的音频数据转换为图像的技术,具体而言,研究了将与特定关键字对应的音频数据转换为二维图像的技术。
因此,本公开要解决的另一问题是提供一种神经网络处理单元,其中嵌入了经过训练以识别图像关键字的AI关键字图像识别模型。
接下来,本公开的发明人认识到,为了提高关键字识别的准确率,考虑到AI关键字识别模型的学习特征,在生成AI关键字识别模型的训练数据时,可以提高AI关键字识别模型的识别率。
因此,本公开要解决的另一问题是提供经过训练以识别图像关键字的AI关键字图像识别模型的训练数据。
本公开的问题不限于上述问题,本领域技术人员从以下描述中将清楚地理解未提及的其他问题。
根据本公开的实施方案的神经网络处理单元可以包括:处理元件阵列;NPU存储器系统,其被配置为存储在所述处理元件阵列中处理的人工神经网络模型的数据的至少一部分;和NPU调度器,其被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制所述处理元件阵列和所述NPU存储器系统。
处理元件阵列可以包括被配置为执行MAC操作的多个处理元件。
NPU调度器还可以被配置为控制处理元件阵列和NPU存储器系统的读写序列。
NPU调度器还可以被配置为通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列和NPU存储器系统。
NPU调度器还可包括人工神经网络模型的每一层的节点数据、层的排列结构的数据、以及连接每一层的节点的网络的权重数据。
NPU调度器还可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来调度人工神经网络模型的操作序列。
NPU调度器可以被配置为基于人工神经网络模型结构数据中的人工神经网络模型的层的排列结构数据来调度包括在处理元件阵列中的多个处理元件的操作序列。
NPU调度器可以被配置为基于所述人工神经网络模型结构数据或人工神经网络数据局部性信息访问存储器地址值,在所述存储器地址值中存储所述人工神经网络模型的层的节点数据和连接网络的权重数据。
NPU调度器可以被配置为控制NPU存储器系统和处理元件阵列,从而以设定的调度序列执行操作。
人工神经网络模型可以被配置为基于人工神经网络的层的结构和与该结构对应的操作序列数据来调度处理序列。
NPU调度器可以被配置为基于从人工神经网络的输入层到输出层的结构数据或所述人工神经网络模型的人工神经网络数据局部性信息来调度处理序列。
NPU调度器可以被配置为通过以下方式来提高存储器重用率:基于人工神经网络模型结构数据或人工神经网络数据局部性信息,通过使用调度序列来控制所述NPU存储器系统。
NPU调度器可以被配置为重用存储器地址值,第一调度的第一操作值存储在该存储器地址值中作为与第二调度的第二层的节点数据对应的存储器地址值,该第二调度是从第一调度开始的下一调度。
NPU调度器可以被配置为重用存储器地址的值,操作结果存储于所述存储器地址中,以用于后续的操作。
NPU存储器系统可以包括静态存储器。
NPU存储器系统可以包括SRAM、MRAM、STT-MRAM、eMRAM、HBM和OST-MRAM中的至少一种。
根据本公开的实施方案的边缘设备可以被配置为包括中央处理单元;主存储器系统,其被配置为存储人工神经网络模型;系统总线,其控制所述中央处理单元和所述主存储器系统之间的通信;以及神经网络处理单元,其包括处理元件阵列、NPU存储器系统、被配置为控制所述处理元件阵列和所述NPU存储器系统的NPU调度器、以及NPU接口。所述NPU接口被配置为通过所述系统总线与所述中央处理单元通信,以及所述NPU接口可以被配置为直接与所述主存储器系统进行与所述人工神经网络模型相关的数据通信。
所述边缘设备可以是手机、智能手机、人工智能扬声器、数字广播终端、导航设备、可穿戴设备、智能手表、智能冰箱、智能电视、数字标牌、VR设备、AR设备、人工智能CCTV、人工智能机器人真空吸尘器、平板电脑、笔记本电脑、自动驾驶汽车、自动无人机、自动双足步行机器人、自动四足机器人、使用自动驾驶移动服务的设备、人工智能机器人、PDA和PMP中的一者。
神经网络处理单元的NPU存储器系统可以被配置为使得所述人工神经网络模型的推理操作的读/写速度比所述主存储器系统更快并且消耗更少的功率。
神经网络处理单元可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息提高所述NPU存储器系统的存储器重用率。
神经网络处理单元可以被配置为获取所述主存储器系统的存储器数量、存储器类型、数据发送速度和存储器大小中的至少一者的数据。
神经网络处理单元可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息控制存储在NPU存储器系统中的数据的重用,并且可以被配置为当数据被重用时不向主存储器系统请求存储器访问。
NPU存储器系统可以不包括DRAM,并且NPU存储器系统可以包括静态存储器,其被配置为具有比主存储器系统更快的读取和写入速度并且比主存储器系统消耗更少的功率。
NPU存储器系统可以被配置为通过比较要从主存储器系统加载的人工神经网络模型的数据量和NPU存储器系统的存储器大小来控制调度。
根据本公开的另一实施方案的神经网络处理单元可以被配置为包括:处理元件阵列、被配置为存储在处理元件阵列中处理的人工神经网络模型的NPU存储器系统、以及被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理单元阵列和NPU存储器系统的NPU调度器。处理元件阵列可以被配置为执行MAC运算,并且处理元件阵列可以被配置为对MAC运算结果进行量化并输出。
处理元件阵列的每个处理元件的第一输入可以被配置为接收可变值,并且处理元件阵列的每个处理元件的第二输入可以被配置为接收常量值。
处理元件可以被配置为包括乘法器、加法器、累加器和位量化单元。
NPU调度器可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息识别可重用变量值和可重用常量值,并使用所述可重用变量值和所述可重用常量值控制NPU存储器系统以重用存储器。
NPU调度器可以被配置为考虑到处理元件阵列的MAC操作特性和功耗特性来减少处理元件阵列的操作值的位数。
考虑到人工神经网络模型的数据量和操作步骤,NPU存储器系统可以是低功耗存储器系统,其被配置为重用其中存储权重数据的特定存储器地址。
NPU调度器根据调度序列将人工神经网络模型的MAC操作值存储在NPU存储器系统的特定存储器地址中,其中存储MAC操作值的特定存储器地址可以是下一个调度序列中的MAC操作的输入数据。
NPU系统存储器可以被配置为在推理操作继续时保存被存储在NPU系统存储器中的网络的权重数据。
在存储处理元件阵列的每个处理元件的第一输入单元的输入数据的存储器地址处的更新次数可以大于存储第二输入单元的输入数据的存储器地址处的更新次数。
NPU系统存储器可以被配置为在推理操作继续的同时重用存储在NPU系统存储器中的MAC操作值。
根据本公开的另一实施方案的神经网络处理单元可以包括:处理元件阵列,该处理元件阵列包括多个处理元件和多个寄存器文件;NPU存储器系统,其被配置为存储在所述处理元件阵列中处理的人工神经网络模型;以及NPU调度器,其被配置为基于人工神经网络模型的结构数据或人工神经网络数据局部性信息来控制处理元件阵列和NPU存储器系统。
多个寄存器文件中的每一个的存储器大小小于NPU存储器系统的存储器大小,并且多个寄存器文件中的每一个的最大发送速度可以高于NPU存储器系统的最大发送速度。
多个寄存器文件中的每一个的存储器大小可以被配置为具有比NPU存储器系统的存储器大小快的最大发送速度的存储器大小。
多个寄存器文件中的每一个的存储器大小小于NPU存储器系统的存储器大小,并且多个寄存器文件中的每一个的基于相同发送速度的功耗可以低于NPU存储器系统的基于相同的发送速度的功耗。
多个寄存器文件中的每一个的存储器大小可以被配置为具有在基于相同发送速度的功耗方面比NPU存储器系统的存储器大小更小的存储器大小。
多个寄存器文件中的每一个可以被配置为具有比NPU存储器系统更高的最大发送速度并且基于相同发送速度具有更小的功耗量的存储器。
NPU存储器系统还可包括具有分层结构的第一存储器、第二存储器和第三存储器。基于人工神经网络模型结构数据或在神经网络处理单元中运行的人工神经网络数据局部性信息,NPU调度器可以被配置为通过根据分层结构控制NPU存储器系统的第一存储器、第二存储器和第三存储器来提高NPU存储器系统的存储器重用率。
第一存储器可以被配置为与第二存储器和第三存储器通信,并且第二存储器和第三存储器可以被配置为与多个处理元件和多个寄存器文件通信。
NPU存储器系统可以被配置为具有针对存储器重用而优化的多个存储器分层结构。
NPU调度器可以被配置为确定每个调度序列的数据量,并且在第一存储器的可用限度内顺序地存储每个调度序列的数据。
NPU调度器可以被配置为通过比较存储器重用率将存储在第一存储器中的数据的一部分选择性地存储在第二存储器和第三存储器中的一个中。
存储在第二存储器中的数据的存储器重用率可以高于存储在第三存储器中的数据的存储器重用率。
NPU调度器可以被配置为当特征数据存储在第二存储器中时删除第一存储器中的冗余数据。
存储在第三存储器中的数据可以被配置为具有可以重用的可变特性。
根据本公开的另一实施方案的边缘设备可以包括被配置为检测声学数据的麦克风、被配置为检测图像数据的相机以及被配置为执行至少两种不同的推理操作的神经网络处理单元,其中所述神经网络处理单元可以被配置为驱动被训练以基于声学数据推理关键字的AI关键字识别模型,并且其中神经网络处理单元可以被配置为响应于关键字推理结果来驱动被训练以基于图像数据推理手势的AI手势识别模型。
边缘设备还包括中央处理单元,其中,当在预定时间段内没有输入时,中央处理单元可以生成进入第一模式的命令。功率控制单元可以被配置为在第一模式下向麦克风供电并且切断对相机的供电。
神经网络处理单元可以被配置为停止AI手势识别模型在第一模式下的推理操作。
中央处理单元可被配置为接收神经网络处理单元的AI关键字识别模型的推理结果,并且生成进入第二模式的命令。功率控制单元可以被配置为在第二模式下向相机供电。
神经网络处理单元可以被配置为在第二模式下执行AI手势识别模型的推理操作。
神经网络处理单元可以是独立的神经网络处理单元。
包括隐私数据的图像数据和声音数据可以被配置为在神经网络处理单元的推理操作之后被删除。
在第一模式下,当特定关键字被输入到麦克风时,可以响应于神经网络处理单元的AI关键字识别模型的推理结果来驱动AI手势识别模型。
根据本公开的另一实施方案的边缘设备可以包括被配置为提供多个感测数据的输入单元,以及被配置为驱动多个人工神经网络模型的神经网络处理单元,其中在所述多个人工神经网络模型中,第一人工神经网络模型可以是一直运行的人工神经网络模型,而在多个人工神经网络模型中的第二人工神经网络模型可以是配置为仅在预设条件下运行的人工神经网络模型。
所述第二人工神经网络模型可以被配置为根据所述第一人工神经网络模型的推理结果来被控制是否被驱动。
神经网络处理单元还包括NPU调度器,NPU调度器可被配置为基于多个人工神经网络模型的结构数据或人工神经网络数据局部性信息确定调度序列。
神经网络处理单元还包括多个处理元件,其中,NPU调度器可以被配置为基于多个人工神经网络模型的每一层的节点数据的数据量和每个网络的权重以及多个人工神经网络模型的结构数据或人工神经网络数据局部性信息来确定调度序列,并根据确定的调度序列分配处理元件。
神经网络处理单元还包括NPU存储器系统,并且NPU调度器可以被配置为对存储在NPU存储器系统中的数据进行优先排序。
根据本公开的另一实施方案的神经网络处理单元(NPU)可以包括处理元件阵列、被配置为存储在处理元件阵列中处理的人工神经网络模型的NPU存储器系统、被配置为控制处理元件阵列和NPU存储器系统的NPU调度器以及被配置为使用人工神经网络模型推理多个不同输入数据的NPU批处理模式。
多个不同的输入数据可以是多个图像数据。
NPU批处理模式可以被配置为通过组合多个图像数据来增加操作帧。
NPU批处理模式可以被配置为回收人工神经网络模型的权重数据以对多个不同的输入数据执行推理操作。
NPU批处理模式可以被配置为将多个输入数据转换成一个连续数据。
根据本公开的另一实施方案的神经网络处理单元(NPU)可以包括:至少一个处理元件;NPU存储器系统,其能够存储可以由至少一个处理元件推理的人工神经网络模型;和NPU调度器,其被配置为基于人工神经网络模型的结构数据或人工神经网络数据局部性信息来控制至少一个处理元件和NPU存储器系统。
NPU调度器可以被配置为进一步接收神经网络处理单元的结构数据。
神经网络处理单元的结构数据可以包括NPU存储器系统的存储器大小、NPU存储器系统的分层结构、关于至少一个处理元件的数量的数据和至少一个处理元件的运算符结构中的至少一者。
神经网络处理单元包括:经过训练以执行推理功能的人工神经网络模型;被配置为使用人工神经网络模型推理输入数据的处理元件阵列;被配置为与处理元件阵列通信的NPU存储器系统;以及被配置为控制处理元件阵列和NPU存储器系统的NPU调度器。NPU将人工神经网络模型的数据量与NPU存储器系统的存储器大小进行比较。人工神经网络模型可以被配置为考虑到NPU存储器系统的存储器大小,通过量化算法、剪枝算法、再学习算法、量化识别学习算法、模型压缩算法以及基于人工智能的优化算法中的至少一种来优化。
人工神经网络模型可以通过优化系统针对神经网络处理单元进行优化,该优化系统被配置为与神经网络处理单元通信。
人工神经网络模型可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息和处理单元的结构数据中的至少一者来优化。
在人工神经网络模型中,可以在应用剪枝算法之后应用量化算法。
在人工神经网络模型中,在应用剪枝算法后,可以应用量化算法,然后再应用再学习算法。
在人工神经网络模型中,在应用剪枝算法后,应用量化算法,之后再应用再学习算法,接着可以应用模型压缩算法。
人工神经网络模型包括多个层,多个层中的每一层包括权重数据,并且权重数据中的每一个都可以被剪枝。
在权重数据中,可以优先剪枝一个或多个具有较大数据量的权重数据。
在权重数据中,可以优先剪枝具有较大计算量的一个或多个权重数据。
人工神经网络模型包括多个层,多个层中的每一层包括节点数据和权重数据,并且权重数据可以被量化。
节点数据可以被量化。
可以分别量化至少一层的节点数据和权重数据。
在权重数据中,可以优先量化具有较大大小的一个或多个权重数据。
可以优先量化节点数据中具有相对大的大小的至少一个节点数据。
处理元件阵列包括至少一个处理元件,并且该至少一个处理元件可以被配置为计算节点数据和权重数据,每个都以位数量化。
处理元件阵列还包括位量化单元,并且处理元件阵列的输出数据的位数可以被配置为由位量化单元量化。
人工神经网络模型是量化的人工神经网络模型,NPU存储器系统可以被配置为存储与人工神经网络模型的多个量化的权重数据的位数和多个量化的节点数据的位数相对应的人工神经网络模型的数据。
人工神经网络模型是量化的人工神经网络模型,并且处理元件阵列可以被配置为响应于人工神经网络模型的多个量化的权重数据的位数和多个量化的节点数据的位数,从NPU存储器系统接收多个量化的权重数据和多个量化的节点数据。
神经网络处理单元包括人工神经网络模型、被配置为处理人工神经网络模型的多个处理元件、被配置为将人工神经网络模型的数据提供给处理元件阵列的NPU存储器系统、以及被配置为控制处理元件阵列和NPU存储器系统的NPU调度器。人工神经网络模型可以通过至少一种分组策略进行量化。
至少一个分组策略可以使用人工神经网络模型的操作序列、人工神经网络模型的计算量的大小和人工神经网络模型的存储器使用率的大小中的至少一者作为确定至少一个分组策略的标准。
至少一个分组策略是多个分组策略,并且多个分组策略中的每一个可以根据各自的权重值来确定分组策略的顺序。
神经网络处理单元,其中,所述人工神经网络模型根据具有预定分组数据顺序的至少一个分组策略按顺序量化。
在人工神经网络模型中,可以应用量化识别学习算法。
当人工神经网络模型根据分组策略进行量化时,可以参考包括被量化的数据组的人工神经网络模型的推理精度对其进行量化。
在人工神经网络模型中,当包含被量化的数据组的人工神经网络模型的被评估的推理精度高于预设目标推理精度时,包含被量化的数据组的人工神经网络模型的位数可能会减少。
在人工神经网络模型中,如果包含被量化的数据组的人工神经网络模型的被评估的推理精度小于预设的目标推理精度,则可以通过将被量化的数据组返回到目标推理精度高的时刻而终止。
神经网络处理单元还包括连接到神经网络处理单元的边缘设备,并且可以根据基于边缘设备的处理能力、神经网络处理单元的计算处理能力、边缘设备的可用存储器带宽、神经网络处理单元的可用存储器带宽、边缘设备的最大存储器带宽、神经网络处理单元的最大存储器带宽、边缘设备的最大存储器延迟、以及神经网络处理单元的最大存储器延迟中的至少一个数据确定的分组策略顺序来量化人工神经网络模型。
神经网络处理单元包括人工神经网络模型、被配置为处理人工神经网络模型的多个处理元件、被配置为将人工神经网络模型的数据提供给处理元件阵列的NPU存储器系统、以及被配置为控制处理元件阵列和NPU存储器系统的NPU调度器,其中人工神经网络模型可以基于NPU存储器系统的存储器大小量化人工神经网络模型的至少一层的节点数据或至少一层的权重数据。
NPU存储器系统可被配置为存储人工神经网络模型的至少一层的节点数据或至少一层的权重数据中的每一者的量化位数的数据。
输入到多个处理元件的每个输入单元的数据的位数可以被配置为与关于量化的输入数据的位数的信息对应地操作。
边缘设备包括主存储器系统和被配置为与主存储器系统通信的神经网络处理单元。神经网络处理单元包括处理元件阵列;NPU存储器系统;处理元件阵列;NPU调度器,其被配置成控制NPU存储器系统,以及存储在主存储器系统中的人工神经网络模型的量化节点数据、量化权重数据、量化权重核和/或量化特征图。NPU存储器系统可以参考主存储器系统的存储器大小和NPU存储器系统的存储器大小进行量化。
根据本公开的示例,存在提供独立的、低功耗的、低成本的神经网络处理单元的效果。
根据本公开的示例,通过提供神经网络处理单元,具有降低边缘设备的功耗、发热、存储器大小、运算处理速度和制造成本的效果。
根据本公开的示例,具有提供包括数字实现的处理元件的独立的低功耗、低成本的神经网络处理单元的效果。
根据本公开的效果不受以上例示的内容的限制,本说明书中包括更多的各种效果。
附图说明
图1是用于图示适用于本公开的实施方案的包括神经网络处理单元的各种修改的边缘设备的示意性概念图。
图2是根据本公开的实施方案图示的神经网络处理单元的示意性概念图。
图3是图示可以应用于本公开的实施方案的处理元件阵列中的一个处理元件的示意性概念图。
图4是示意性地图示神经网络处理单元的每单位操作的能量消耗的表格。
图5是图示适用于本公开的实施方案的示例性人工神经网络模型的示意性概念图。
图6是根据本公开的另一个实施方案图示的神经网络处理单元的示意性概念图。
图7是根据本公开的另一个实施方案图示的神经网络处理单元的示意性概念图。
图8是根据本公开的另一实施方案图示的根据包括SRAM的示例性NPU存储器系统的存储器大小和神经网络处理单元的示例性寄存器文件的存储器大小的最大发送速度的特性的示意性概念图。
图9是根据本公开的另一示例性实施方案图示的根据包括SRAM的示例性NPU存储器系统的存储器大小和神经网络处理单元的示例性寄存器文件的存储器大小的基于相同发送速度的功耗特性的示意性概念图。
图10是根据本公开的另一个实施方案图示的神经网络处理单元的示意性概念图。
图11是根据本公开的实施方案图示的能够优化可由神经网络处理单元处理的人工神经网络模型的优化系统的示意性概念图。
图12是根据本公开的另一实施方案图示的边缘设备的示意性概念图。
具体实施方式
本公开的优点和特征以及实现它们的方法将参考以下参考附图详细描述的各种实施方案变得显而易见。然而,本公开不限于以下描述的实施方案并且可以以彼此不同的各种形式来实现。提供本发明的实施方案只是为了向本发明所属领域的普通技术人员完整地告知本发明的范围,本发明仅以权利要求书的范围为准。
为了便于描述,可以参考附图来描述本公开的详细描述作为其中可以实践本公开的特定实施方案的示例。尽管本公开的各个实施方案的要素彼此不同,但是具体实施方案中描述的制造方法、操作方法、算法、形状、工艺、结构和特征可以结合或包括其他实施方案。此外,在不脱离本公开的精神和范围的情况下,可以改变每个公开实施方案内的各个部件的位置或布置。本公开的各个实施方案的每个特征可以部分或全部组合或者相互组合,本领域技术人员可以充分理解,技术上可以有各种联锁和驱动,各个实施方案可以彼此独立实现或可以以相关关系一起实现。
由于在用于描述本公开的实施方案的附图中公开的形状、尺寸、比率、角度、数量等是示例性的,因此本公开参考附图,但不受限于此。在整个说明书中,相同的附图标记指代相同的元件。此外,在描述本公开时,如果确定相关已知技术的详细描述可能不必要地使本公开的主题难以理解,则可以省略详细描述。在本说明书中提到的“包括”、“具有”和“由……组成”的情况下,除非使用“仅”,否则可以添加其他要素。在以单数表达构成要素的情况下,除非另有特别说明,否则其包括包括复数的情况。在以单数表示要素的情况下,除非另有特别说明,否则其包括包括复数的情况。在解释要素时,即使没有明确的描述,它也被解释为包括一个公差范围。在描述位置关系的情况下,例如,当两个元件的位置关系被描述为“在……上”、“在……上部上”、“在……下”、“靠近”或“邻近”时,“一个或多个其他元件可以位于两个元件之间,除非使用了“紧接”或“直接”。当元件或层被称为“在”另一元件或层“上”时,它包括其中另一层或另一元件直接插入在其上或另一层或另一元件插入其间的所有情况。
图1是示意性概念图,其图示了可以利用包括可以应用于本公开的实施方案的神经网络处理单元的各种修改方案来实现的边缘设备。
参考图1,边缘设备1000图示了可以进行各种修改的各种电子设备的示例。
边缘设备1000可以包括人工神经网络并且可以是例如手机、智能手机、人工智能扬声器、数字广播终端、导航设备、可穿戴设备、智能手表、智能冰箱、智能电视、数字标牌、VR设备、AR设备、AI CCTV、AI机器人真空吸尘器、平板电脑、笔记本电脑、自动驾驶汽车、自动无人机、自动双足步行机器人、自动四足机器人、使用自动驾驶移动服务的设备、人工智能机器人、个人数字助理(PDA)、个人多媒体播放器(PMP)等。
边缘设备1000包括神经网络处理单元100并且可以指通过使用由神经网络处理单元100推理的人工神经网络模型可以用于边缘计算的各种电子设备。这里,边缘计算意指计算出现边缘或外围的地方,可以指直接产生数据的终端或靠近终端的各种电子设备。神经网络处理单元100也可称为神经处理单元(NPU)。
然而,根据本公开的实施方案的边缘设备1000不限于上述电子设备。
图1仅仅是边缘设备1000的实施方案并且图示了边缘设备1000可以包括的各种元件。然而,根据本公开的实施方案不限于此,并且可以根据实施方案的目的和配置选择性地包括或排除每个元件。即,在某些情况下,图1所示的元件可能不是必不可少的元件,并且从优化的角度看,每个实施方案优选地包括或不包括图1所示的一些元件。
边缘设备1000至少包括神经网络处理单元100,并且可以被配置为选择性地进一步包括无线通信单元1010、输入单元1020、感测单元1030、输出单元1040、接口单元1050、系统总线1060、主存储器系统1070、中央处理单元1080和功率控制单元1090中的至少一部分。此外,边缘设备1000可以被配置为通过无线通信单元1010与云端人工智能服务1100通信。
系统总线1060被配置为控制边缘设备1000的各个元件的数据通信。也就是说,系统总线1060是边缘设备1000的数据输送系统。系统总线1060可以被称为计算机总线。边缘设备1000的所有元件可以具有唯一的地址,并且系统总线1060可以通过该地址连接每个元件。系统总线1060可以处理例如三种类型的数据。首先,当发送数据时,系统总线1060可以处理在主存储器系统1070中存储数据的地址。其次,系统总线1060可以处理有意义的数据,例如存储在相应地址中的运算结果。第三,系统总线1060可以处理地址数据和数据流,例如如何处理数据以及应该在何时何地传送数据。然而,根据本公开的实施方案不限于此。中央处理单元1080产生的各种控制信号可以通过系统总线1060发送到相应的元件。
无线通信单元1010可以包括一个或多个通信模块,其使边缘设备1000和无线通信系统之间、边缘设备1000和另一边缘设备之间、或边缘设备1000和云端人工智能服务器1100之间能够无线通信。
例如,无线通信单元1010可以包括移动通信模块1011、无线互联网模块1012、短距离通信模块1013和位置信息模块1014中的至少一个。
无线通信单元1010的移动通信模块1011是指用于利用根据技术标准或用于移动通信的通信方法建立的移动通信网络上的基站、外部终端和服务器中的至少一个发送和接收无线数据的模块。移动通信模块1011可以内置于边缘设备1000或在其外部。技术标准是例如GSM(全球移动通信系统)、CDMA(码分多址)、CDMA 2000(码分多址2000)、EVDO(增强型语音数据优化或仅增强型语音数据)、WCDMA(宽带CDMA)、HSDPA(高速下行链路分组接入)、HSUPA(高速上行链路分组接入)、LTE(长期演进)、LTE-A(高级长期演进)、5G(第五代)等。然而,根据本公开的实施方案不限于此。
无线通信单元1010的无线互联网模块1012是指用于无线互联网接入的模块。无线互联网模块1012可以内置于边缘设备1000或在其外部。无线互联网模块1012被配置为根据无线互联网技术在通信网络中发送和接收无线数据。无线互联网技术例如有WLAN(无线局域网)、Wi-Fi(无线保真)、Wi-Fi(无线保真)直连、DLNA(数字生活网络联盟)、WiBro(无线宽带)、WiMAX(全球微波接入互操作性)、HSDPA(高速下行分组接入)、HSUPA(高速上行分组接入)、LTE(长期演进)、LTE-A(高级长期演进)、5G(第五代)等。然而,根据本公开的实施方案不限于此。另外,用于通过移动通信网络进行无线互联网接入的无线互联网模块1012可以理解为移动通信模块1011的一种类型。
无线通信单元1010的短距离通信模块1013是指用于短距离通信的模块。短距离通信技术例如有蓝牙TM、射频识别(RFID)、红外数据协会(IrDA)、超宽带(UWB)、ZigBee、近场通信(NFC)、Wi-Fi(无线保真)、Wi-Fi Direct、无线USB(无线通用串行总线)等。然而,根据本公开的实施方案不限于此。这种短距离通信模块1013可以通过短距离无线局域网支持边缘设备1000和无线通信系统之间、与边缘设备1000互通的其他边缘设备之间、或者边缘设备1000和单独网络之间的无线通信。例如,另一边缘设备可以是能够根据本公开与边缘设备1000交换数据的可穿戴设备,诸如智能手表、智能眼镜或头戴式显示器(HMD)。然而,根据本公开的实施方案不限于此。
无线通信单元1010的位置信息模块1014是指用于获取边缘设备1000的位置的模块。位置信息技术包括例如全球定位系统(GPS)模块或无线保真(Wi-Fi)模块。例如,如果边缘设备1000使用GPS模块,则它可以使用从GPS卫星发送的数据来获取边缘设备1000的位置。又例如,当边缘设备1000使用Wi-Fi模块时,可以基于Wi-Fi模块和发送或接收无线数据的无线AP(无线接入点)的数据来获取边缘设备1000的位置。然而,根据本公开的实施方案不限于此。
通过无线通信单元1010,边缘设备1000可以连接到云端人工智能服务器1100,并且边缘设备1000可以以询问从云端人工智能服务器1100请求各种类型的人工智能服务。
例如,边缘设备1000可以通过无线通信单元1010将语音数据“今天天气如何?”发送到云端人工智能服务器1100,并且云端人工智能服务器1100可以通过无线通信单元1010将接收到的语音数据的推理结果发送到边缘设备1000。然而,根据本公开的实施方案不限于此。
输入单元1020可以包括输入边缘设备1000的各种数据或提供数据的各种元件。输入单元1020可以包括用于输入图像数据的相机1021、用于输入声音数据的麦克风1022、用于从用户接收数据的用户输入模块1023、用于检测距离的接近传感器1024、用于检测环境光量的照度传感器1025、通过发射特定频率的无线电波来检测物体的雷达1026和通过发射激光来检测物体的LiDar1027等。
输入单元1020可以被配置为执行提供图像数据、声音数据、用户输入数据和距离数据中的至少一者的功能。
输入单元1020的相机1021可以是用于由神经网络处理单元100推理的图像处理、手势识别、对象识别、事件识别等的相机。
输入单元1020的相机1021可以提供静止图像或视频数据。
输入单元1020的相机1021的图像数据可以被发送到中央处理单元1080。当图像数据被发送到中央处理单元1080时,中央处理单元1080可以被配置为将图像数据发送到神经网络处理单元100。在这种情况下,中央处理单元1080可以进行图像处理,并且可以将经过图像处理的图像数据发送到神经网络处理单元100。然而,不限于此,系统总线1060可以将图像数据发送到神经网络处理单元100。
输入单元1020的相机1021的图像数据可以被发送到神经网络处理单元100。当图像数据被发送到神经网络处理单元100时,神经网络处理单元100可以被配置为将推理的结果发送给中央处理单元1080。此时,可以根据由神经网络处理单元100操作的人工神经网络模型进行例如图像处理、手势识别、对象识别和事件识别之类的推理操作,并且可以将推理的结果发送至中央处理单元1080。然而,不限于此,神经网络处理单元100可以将推理的结果通过系统总线1060发送至中央处理单元1080以外的元件。
输入单元1020可以被配置为包括相机1021的一个或多个实例。例如,输入单元1020的相机1021可以是在前、后、左和右方向上提供图像数据以用于自动驾驶自动汽车的多个相机。此外,还可包括用于检测室内驾驶员状况的车载室内相机。例如,输入单元1020的相机1021可以是智能手机中具有不同视角的多个相机。
输入单元1020的相机1021可以被配置为可见光相机、近红外相机和热成像相机中的至少一种。然而,不限于此,相机1021可以被配置为被配置为同时检测可见光和近红外线的复合图像传感器,并且可以被配置为同时检测可见光和近红外线。
当输入单元1020的相机1021为多个相机时,为了提高神经网络处理单元100的推理性能,边缘设备1000可以以批处理模式形式将图像数据提供给神经网络处理单元100。
输入单元1020的麦克风1022将外部声音数据转换成电语音数据并将其输出。语音数据可以作为模拟数据或数字数据输出。可以在麦克风1022中实现用于去除在接收外部声音数据的过程中产生的噪声的各种噪声去除算法。
可以配置输入单元1020的至少一个麦克风1022。例如,多个麦克风1022可以是设置在位于双耳处的两个耳机中的每一个中的麦克风。
输入单元1020的麦克风1022的声音数据可以被发送到中央处理单元1080。当声音数据被发送到中央处理单元1080时,声音数据可以通过系统总线1060被发送到神经网络处理单元100。在这种情况下,中央处理单元1080可以通过傅立叶变换函数将声音数据转换到频域中,并且可以将转换后的声音数据发送到神经网络处理单元100。然而,其不限于此,还可以通过系统总线1060,通过中央处理单元1080以外的元件将图像数据发送到神经网络处理单元100。
输入单元1020的麦克风1022的声学数据可以被发送到神经网络处理单元100。当声学数据被发送到神经网络处理单元100时,神经网络处理单元100可以被配置为将推理的结果发送给中央处理单元1080。此时,可以根据在神经网络处理单元100中操作的人工神经网络模型进行例如声音处理、关键字识别、噪声去除、句子识别以及翻译成另一种语言之类的推理操作,并将推理的结果输出到中央处理单元1080。然而,不限于此,也可以将推理的结果传递到其他元件,例如功率控制单元1090、无线通信单元1010、接口单元1050、输出单元1040或主存储器系统1070以及除了中央处理单元1080之外的类似元件。
输入单元1020的用户输入模块1023可以包括例如触摸按钮、按钮、触摸面板、鼠标、键盘和触摸板中的至少一者。然而,根据本公开的实施方案不限于此。神经网络处理单元100可以被配置成根据所操作的人工神经网络模型从用户输入模块1023接收数据,并进行相应的推理操作。然而,根据本公开的实施方案不限于此。
输入单元1020的用户输入模块1023用于从用户接收数据,当通过用户输入模块1023输入数据时,中央处理单元1080可以控制边缘设备1000的操作以对应于输入数据。这种用户输入模块1023可以包括机械输入装置、按钮、开关和触摸输入装置。触摸输入装置可以包括通过软件处理显示在触摸屏上的可视键或设置在触摸屏以外的部分上的触摸键。触摸屏可以使用诸如电阻膜型、电容型、红外型、超声波型和磁场型之类的各种触摸类型中的至少一种来感测对显示模块1041的触摸输入。触摸屏可以被配置为检测触摸对象的位置、面积、压力等。例如,电容式触摸屏可以被配置为将施加到特定部分的压力或发生在特定部分的电容的变化转换为电输入信号。例如,触摸对象可以是手指、触摸笔或触控笔、指针等。
输入单元1020的接近传感器1024是指使用电磁场或红外线的力在没有机械接触的情况下检测接近边缘设备1000的对象的存在或不存在或存在于附近的对象的传感器。例如,接近传感器1024包括透射式光电传感器、直接反射式光电传感器、镜面反射式光电传感器、高频振荡式接近传感器、电容式接近传感器、磁式接近传感器、红外线接近传感器等。然而,根据本公开的实施方案不限于此。神经网络处理单元100可被配置为根据待操作的人工神经网络模型从接近传感器1024接收信号,并执行相应的推理操作。然而,根据本公开的实施方案不限于此。
输入单元1020的照度传感器1025是指能够通过使用光电二极管来检测边缘设备1000的环境光量的传感器。神经网络处理单元100可被配置为根据待操作的人工神经网络模型接收来自照度传感器1025的信号,并进行相应的推理操作。然而,根据本公开的实施方案不限于此。
输入单元1020的雷达1026可以通过发射电磁波来检测由对象反射的信号,并且可以提供诸如对象的距离和角速度的数据。边缘设备1000可以被配置为包括多个雷达1026。雷达1026可以被配置为包括短程雷达、中程雷达和远程雷达中的至少一者。神经网络处理单元100可以被配置为根据所操作的人工神经网络模型从雷达1026接收数据,并执行相应的推理操作。然而,根据本公开的实施方案不限于此。
输入单元1020的激光雷达1027可以通过以预定方式照射光信号并分析由对象反射的光能来提供周围的3D空间数据。边缘设备1000可以被配置为包括多个激光雷达1027。
神经网络处理单元100可以被配置为根据所操作的人工神经网络模型接收激光雷达1027的数据,并执行相应的推理操作。然而,根据本公开的实施方案不限于此。
然而,输入单元1020不限于上述示例,并且可以被配置为进一步包括加速度传感器、磁传感器、重力传感器(G-传感器)、陀螺仪传感器、运动传感器、指纹识别传感器、超声波传感器、电池电量计、气压计、湿度计、温度计、辐射检测传感器、热传感器、气体检测传感器和化学检测传感器中的至少一种。
根据本公开的实施方案的边缘设备1000的神经网络处理单元100可以被配置为根据运行的人工神经网络模型从输入单元1020接收数据并且执行相应的推理操作。
根据本公开的实施方案的边缘设备1000可以被配置为将从输入单元1020输入的各种输入数据提供给神经网络处理单元100以执行各种推理操作。输入数据也可以在中央处理单元1080中预处理后输入到神经网络处理单元100。
例如,神经网络处理单元100可以被配置为选择性地接收相机1021、雷达1026和激光雷达1027中的每一个的输入数据,并且推理用于自动驾驶的周围环境数据。
例如,神经网络处理单元100可以被配置为接收相机1021和雷达1026的输入数据并且推理自动驾驶所需的周围环境数据。
输出单元1040用于产生与视觉、听觉或触觉有关的输出,并且包括显示模块1041、声音输出模块1042、触觉模块1043和光学输出模块1044中的至少一者。显示模块1041可以是液晶面板或包括多个像素的阵列的有机发光显示面板。然而,根据本公开的实施方案不限于此。声音输出模块1042可以是手机的听筒、输出声音的扬声器、蜂鸣器等。然而,根据本公开的实施方案不限于此。光输出模块1044可以使用边缘设备1000的光源的光输出用于通知事件发生的光信号。所生成的事件的示例可以是消息接收、未接来电、警报、日程安排、电子邮件接收、通过应用程序接收数据等的实例通知。
接口单元1050用作所有外部设备连接到边缘设备1000的通道。接口单元1050从外部设备接收数据,接收功率并将其发送到边缘设备1050内部的每个元件,或允许内部边缘设备1050的数据被发送到外部设备。例如,有线/无线耳机端口、外置充电器端口、有线/无线数据端口、存储卡端口、用于连接配备识别模块的设备的端口、音频I/O(输入/输出)端口、视频I/O(输入/输出)端口、耳机端口等可以包括在接口单元1050中。
主存储器系统1070是用于在边缘设备1000的控制下存储数据的设备。主存储器系统1070可以选择性地包括易失性存储器和非易失性存储器。
易失性存储设备可以是仅在供电时存储数据并且在供电被切断时丢失存储的数据的存储设备。非易失性存储设备可以是即使在电源被切断时也存储数据的设备。
可以存储用于中央处理单元1080或神经网络处理单元100的操作的程序,并且可以临时存储输入/输出数据。主存储器系统1070可以包括闪存、硬盘、SSD(固态盘)、SDD(硅磁盘驱动器)、多媒体微卡、卡(例如SD或XD)存储器、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、高带宽存储器(HBM)、静态随机存取存储器(SRAM)、磁性随机存取存储器(MRAM)、自旋转移矩磁性随机存取存储器(STT-MRAM)、嵌入式磁性随机存取存储器(eMRAM)、OST-MRAM(正交自旋转移磁性随机存取存储器)、PRAM(相变RAM)、FeRAM(铁电RAM)、ROM(只读存储器)、电可擦可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁存储器、磁盘和光盘中的至少一种类型的存储介质。稍后要描述的各种人工神经网络模型可以存储在主存储器系统1070的易失性和/或非易失性存储设备中。然而,不限于此。人工神经网络模型中的至少一个可以根据边缘设备1000的命令存储在神经网络处理单元100的易失性存储器中以提供推理操作功能。
中央处理单元1080可以控制边缘设备1000的整体操作。例如,中央处理单元1080可以是中央处理单元(CPU)、应用处理器(AP)或数字信号处理单元(DSP)。中央处理单元1080可以控制边缘设备1000或执行各种命令。中央处理单元1080可以提供或接收神经网络处理单元100所需的数据。中央处理单元1080可以控制连接到系统总线1060的各种元件。
功率控制单元1090被配置为控制每个元件的功率。中央处理单元1080可以被配置为控制功率控制单元1090。功率控制单元1090接收外部功率和内部功率并且向包括在边缘设备1000中的每个元件供电。这样的功率控制单元190可以包括电池。当在特定时间内没有从中央处理单元1080提供控制数据时,功率控制单元1090可以选择性地切断对边缘设备1000的每个元件的供电。此外,神经网络处理单元100可以被配置为始终操作,推理特定情况,并向中央处理单元1080提供唤醒数据。中央处理单元1080可以控制功率控制单元1090,以根据神经网络处理单元100的推理结果向边缘设备1000的特定元件供电。
神经网络处理单元100被配置为执行各种人工神经网络推理操作。其特征在于,神经网络处理单元100被配置为有效地计算人工神经网络推理操作,人工神经网络推理操作对于中央处理单元1080计算是低效的。
神经网络处理单元100可以调用经过训练以从主存储器系统1070进行特定推理的人工神经网络模型。在下文中,参照图2,将更详细地描述神经网络处理单元100。
图2是图示根据本公开的实施方案的神经网络处理单元的示意性概念图。
根据本公开的实施方案的神经网络处理单元100被配置为包括处理元件阵列110、NPU存储器系统120、NPU调度器130和NPU接口140。
例如,神经网络处理单元100可被配置为包括:处理元件阵列110;NPU存储器系统120,其被配置为存储可以从处理元件阵列110推理出的人工神经网络模型或存储人工神经网络模型的至少一些数据;以及NPU调度器130,其被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列110和NPU存储器系统120。这里,人工神经网络模型可以包括人工神经网络模型结构数据或人工神经网络数据局部性信息。人工神经网络模型可以指经过训练以执行特定推理功能的AI识别模型。NPU接口140可以通过系统总线1060与边缘设备1000的各种元件通信,例如与边缘设备1000的中央处理单元1080、主存储器系统1070、输入单元1020、无线通信单元1010通信。
例如,中央处理单元1080可以通过NPU接口140指令神经网络处理单元100来操作特定的人工神经网络模型。
例如,神经网络处理单元100可以通过NPU接口140将存储在主存储器系统1070中的人工神经网络模型的数据调用到NPU存储器系统120。
例如,NPU接口140可以将从输入单元1020的相机1021和麦克风1022提供的数据发送到神经网络处理单元100。
例如,神经网络处理单元100可以通过NPU接口140将人工神经网络模型的推理结果提供给中央处理单元1080。
也就是说,NPU接口140可以被配置为与能够与神经网络处理单元100通信的各种元件执行数据通信。
当提供直接连接到主存储器系统1070的NPU接口140时,神经网络处理单元100可以被配置为直接与主存储器系统1070通信而不通过系统总线1060。因此,NPU接口具有直接接收人工神经网络模型的可以存储在主存储器系统1070中的各种数据的作用。
例如,边缘设备1000可以包括中央处理单元1080、被配置为存储人工神经网络模型的主存储器系统1070、控制中央处理单元1080和主存储器系统1070的通信的系统总线1060、以及神经网络处理单元,该神经网络处理单元包括处理元件阵列110、NPU存储器系统120、被配置为控制处理元件阵列110和NPU存储器系统120的NPU调度器130、以及NPU接口140。NPU接口140被配置为通过系统总线1060与中央处理单元1080通信,并且NPU接口140可以被配置为与主存储器系统1070直接传送与人工神经网络模型相关的数据。然而,本公开的实施方案不限于此。
在这种情况下,神经网络处理单元100可以改善由边缘设备1000的中央处理单元1080生成的具有高优先级的其他处理引起的处理序列可能被推回的问题,该处理序列与神经网络处理单元100不相关。因此,根据上述配置,具有神经网络处理单元100稳定运行并改善响应速度延迟问题的效果。
根据本公开的实施方案的神经网络处理单元100不限于包括NPU接口140。还可以通过排除NPU接口140来配置神经网络处理单元100,并且还可能的是,神经网络处理单元100被配置为通过边缘设备1000的系统总线1060直接通信。
NPU调度器130被配置为控制处理元件阵列100的操作,以进行神经网络处理单元100的推理操作和NPU存储器系统120的读写序列。
NPU调度器130可以被配置为通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列100和NPU存储器系统120。
NPU调度器130可以分析人工神经网络模型的结构以在处理元件阵列100中操作或者可以接收所分析的结构信息。人工神经网络模型的人工神经网络数据可以包括各层的节点数据、层的排列结构数据、连接各层节点的各连接网络的权重数据或人工神经网络数据的位置信息。人工神经网络的数据可以存储在被设置在NPU调度器130或NPU存储器系统120内部的存储器中。NPU调度器130可以通过访问存储人工神经网络的数据的存储器来利用必要的数据。然而,不限于此,可以基于例如人工神经网络模型的节点数据和权重数据之类的数据生成人工神经网络模型结构数据或人工神经网络数据局部性信息。权重数据也可能被称为权重内核。节点数据也可以称为特征图。例如,可以在设计人工神经网络模型或完成训练时生成其中定义人工神经网络模型结构的数据。然而,不限于此。
NPU调度器130可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息来调度人工神经网络模型的操作序列。
神经网络处理单元100可以根据人工神经网络模型的结构顺序地处理每一层的计算。即当确定人工神经网络模型的结构后,就可以确定每个内核或层的操作序列。这些信息可以定义为人工神经网络模型的结构数据。NPU调度器130可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息来获得存储器地址值,在该存储器地址值中存储人工神经网络模型的层的节点数据和连接网络的权重数据。例如,NPU调度器130可以获得存储人工神经网络模型的层的节点数据和连接网络的权重数据的存储器地址值,其存储在主存储器系统1070中。因此,NPU调度器130可以从主存储器系统1070中取出待被驱动的人工神经网络模型的层的节点数据和连接网络的权重数据,并将其存储在NPU存储器系统120中。每层的节点数据可以具有对应的各自的存储器地址值。每个连接网络的权重数据可以有对应的各自的存储器地址值。
NPU调度器130可基于人工神经网络模型结构数据或人工神经网络数据局部性信息(例如人工神经网络模型的人工神经网络层的排列结构数据或人工神经网络数据局部性信息)来调度处理元件阵列110的操作序列。
NPU调度器130可以与中央处理单元1080的调度概念不同地操作,因为其基于人工神经网络模型结构数据或人工神经网络数据局部性信息进行调度。考虑到公平性、效率、稳定性、响应时间等,中央处理单元1080的调度操作以实现最佳效率。也就是说,考虑到优先级和操作时间,将其进行调度以在同一时间内执行最多的处理。
考虑到诸如每个处理的优先级顺序和操作处理时间之类的数据,传统的CPU使用用于调度任务的算法。
替代地,NPU调度器130可基于人工神经网络模型结构数据或人工神经网络数据局部性信息来确定处理顺序。
此外,NPU调度器130可以基于要使用的神经网络模型的结构数据或神经网络数据局部性信息和/或神经网络处理单元100的结构数据来确定处理顺序。
然而,本公开不限于神经网络处理单元100的结构数据。例如,神经网络处理单元100的结构数据可以通过使用NPU存储器系统130的存储器大小的一个或多个数据、NPU存储器系统130的分层结构、处理元件PE1至PE12的数量数据、以及处理元件PE1至PE12的运算符结构来确定处理顺序。也就是说,神经网络处理单元100的结构数据可以包括NPU存储器系统130的存储器大小的一个或多个数据、NPU存储器系统130的分层结构、处理元件PE1至PE12的数量数据、以及处理元件PE1到PE12的运算符结构。然而,本公开不限于神经网络处理单元100的结构数据。NPU存储器系统130的存储器大小包括关于存储器容量的信息。NPU存储器系统130的分层结构包括关于每个分层结构的特定层之间的连接关系的信息。处理元件PE1至PE12的运算符结构包括关于处理元件的内部元件的信息。
根据本公开的实施方案的神经网络处理单元100可以被配置为包括:至少一个处理元件;NPU存储器系统120,其可以存储可以通过至少一个处理元件来推理的人工神经网络模型或可以存储人工神经网络模型的至少一些数据;以及NPU调度器130,其被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制至少一个处理单元和NPU存储器系统120。NPU调度器130可以被配置为进一步接收神经网络处理单元100的结构数据。另外,神经网络处理单元100的结构数据可以被配置为包括NPU存储器系统120的存储器大小的至少一个数据、NPU存储器系统120的分层结构、至少一个处理单元的数量数据、以及至少一个处理单元的运算符结构。
在下文中,将描述人工神经网络数据局部性信息。
当编译器编译人工神经网络模型使得人工神经网络模型在神经网络处理单元100中执行时,人工神经网络模型的人工神经网络数据局部性可配置在处理元件阵列-NPU存储器系统级别。编译器可以实现为单独的软件。然而,其不限于此。
也就是说,编译器可以根据应用于人工神经网络模型的算法和神经网络处理单元100的硬件运行特性,在处理单元阵列-NPU存储器系统级别适当配置人工神经网络模型的数据局部性。
例如,即使在人工神经网络模型相同的情况下,人工神经网络模型的人工神经网络数据局部性可以根据神经网络处理单元100计算相应的人工神经网络模型的方法而不同地配置。
例如,人工神经网络模型的神经网络数据局部性可以基于诸如特征图平铺、处理元件的固定技术和存储器重用之类的算法来配置。
例如,人工神经网络模型的人工神经网络数据局部性可以基于神经网络处理单元100的处理元件的数量,NPU存储器系统120存储特征图、权重等的存储容量,以及神经网络处理单元100中的存储器分层结构等来配置。
编译器以神经网络处理单元100的字单元在处理元件阵列-NPU存储器系统级别配置神经网络模型的神经网络数据局部性,以确定算术处理所需的数据序列。字单元可以根据相应内核的量化而变化,例如可以是4位、8位、16位或32位。然而,其不限于此。
也就是说,存在于处理元件阵列-NPU存储器系统级别的人工神经网络模型的人工神经网络数据局部性可以被定义为由处理元件阵列110处理的人工神经网络模型的操作序列信息。
当NPU调度器130被提供人工神经网络数据局部性信息时,由于NPU调度器130可以以字单元知道人工神经网络模型的操作序列,所以具有可以将来自主存储器系统1070的必要数据提前存储到NPU存储器系统120的效果。
因此,NPU调度器130可以被配置为存储神经网络数据局部性信息和/或人工神经网络的结构数据。
也就是说,上述结构数据是指人工神经网络模型的层和内核单元的概念的结构数据。可以在算法级别利用上述结构数据。
也就是说,前述人工神经网络数据局部性是指当相应的人工神经网络模型通过编译器被转换为在特定神经网络处理单元中运行时确定的神经网络处理单元100的处理序列信息。
更详细地,人工神经网络数据局部性可以是指当神经网络处理单元100处理特定的人工神经网络模型时,神经网络处理单元100根据对应的人工神经网络模型的结构和计算算法来操作和处理相应人工神经网络所需的数据的字单元形式的序列信息。字单元可以指元件单元,其是神经网络处理单元100可以处理的基本单元。人工神经网络数据局部性可以在硬件存储器级别使用。
NPU调度器130可以基于结构数据或人工神经网络数据局部性预先预测将由神经网络处理单元100请求的存储器读/写操作,并且可将来自主存储器系统1070的待由神经网络处理单元100预先处理的数据存储到NPU存储器系统120。因此,具有最小化或基本消除数据供应延迟的效果。
也就是说,即使仅利用人工神经网络模型的人工神经网络的结构数据或人工神经网络数据局部性信息,NPU调度器130也可以确定处理顺序。也就是说,NPU调度器130可以通过使用从人工神经网络的输入层到输出层的结构数据或人工神经网络数据局部性信息来确定操作序列。例如,可以先调度输入层操作,最后调度输出层操作。因此,当NPU调度器130接收到人工神经网络模型结构数据或人工神经网络数据局部性信息时,就可以知道人工神经网络模型的所有操作序列。因此,具有可以确定所有调度序列的效果。
此外,NPU调度器130可考虑人工神经网络模型结构数据或人工神经网络数据局部性信息和神经网络处理单元100的结构数据来确定处理顺序,并对每个确定的顺序的处理优化也是可能的。
因此,当NPU调度器130接收人工神经网络模型结构数据或人工神经网络数据局部性信息和神经网络处理单元100的结构数据两者时,具有进一步提高由人工神经网络模型结构数据或人工神经网络数据局部性信息确定的每个调度序列的计算效率的效果。例如,NPU调度器130可以获得人工神经网络层中的四层和具有连接每一层的三层的权重数据的网络数据。在这种情况下,下面将通过示例的方式描述由NPU调度器130基于神经网络模型的结构数据或人工神经网络数据局部性信息来调度处理序列的方法。
例如,NPU调度器130可以将用于推理操作的输入数据设置为作为人工神经网络模型的输入层的第一层的节点数据,并且可以调度以首先对第一层的节点数据和与第一层对应的第一连接网络的权重数据执行乘法和累加(MAC)操作。然而,本公开的实施方案不限于MAC操作,可以使用乘法器和加法器来执行人工神经网络操作,乘法器和加法器可以进行各种修改和实现以执行人工神经网络操作。在下文中,为了描述方便,可以将相应的操作称为第一操作,将第一操作的结果称为第一操作值,将相应的调度称为第一调度。
例如,NPU调度器130可以将第一操作值设置为对应于第一连接网络的第二层的节点数据,并且可以调度第二层的节点数据和与第二层对应的第二连接网络的权重数据的待在第一次调度后执行的MAC操作。在下文中,为了描述方便,相应的操作可以被称为第二操作,第二操作的结果可以被称为第二操作值,并且相应的调度可以被称为第二调度。
例如,NPU调度器130可以将第二操作值设置为与第二连接网络对应的第三层的节点数据,并且可以调度第三层的节点数据和与第三层对应的第三连接网络的权重数据待在第二次调度时执行的MAC操作。在下文中,为了描述方便,可以将相应的操作称为第三操作,可以将第三操作的结果称为第三操作值,将相应的调度称为第三调度。
例如,NPU调度器130可以将第三操作值设置为对应于第三连接网络的第四层的节点数据,并且可以调度将存储在第四层的节点数据中的推理结果存储在NPU存储器系统120。在下文中,为了方便描述,可以将相应的调度称为第四调度。推理结果值可以被发送到边缘设备1000的各种元件并在其中使用。
例如,如果推理结果值是检测特定关键字的结果,则神经网络处理单元100将推理结果发送到中央处理单元1080,使得边缘设备1000可以执行对应于特定关键字的操作。
总之,NPU调度器130可以控制NPU存储器系统120和处理元件阵列110,从而以第一调度、第二调度、第三调度和第四调度序列执行操作。即,NPU调度器130可以被配置为控制NPU存储器系统120和处理元件阵列110,从而以设定的调度序列执行操作。
总之,根据本公开的实施方案的神经网络处理单元100可以被配置为基于人工神经网络的层的结构和与该结构对应的操作序列数据来调度处理序列。调度的处理序列可以是一个或多个。例如,由于神经网络处理单元100可以预测所有的操作序列,所以也可以调度下一个操作,并且也可以按照特定的序列来调度操作。
例如,NPU调度器130可以被配置为基于从人工神经网络模型的人工神经网络的输入层到输出层的结构数据或人工神经网络数据局部性信息来调度处理序列。
NPU调度器130通过利用基于人工神经网络模型结构数据或人工神经网络数据局部性信息的调度序列来控制NPU存储器系统120,以提高神经网络处理单元的操作速率。因此,具有提高神经网络处理单元的操作速率和存储器重用率的效果。
由于根据本公开的实施方案的由神经网络处理单元100驱动的人工神经网络操作的性质,一层的操作值可能具有成为下一层的输入数据的特性。
因此,当神经网络处理单元100根据调度序列控制NPU存储器系统120时,具有可以提高NPU存储器系统120的存储器重用率的效果。存储器重用可以由存储在存储器中的数据被读取的次数决定。例如,如果特定数据存储在存储器中,然后该特定数据仅被读取一次,然后相应的数据被删除或覆盖,则存储器重用率可以是100%。例如,如果特定数据存储在存储器中,特定数据被读取四次,然后相应的数据被删除或覆盖,则存储器重用率可能为400%。存储器重用率可以定义为初始存储的数据的重用次数。也就是说,存储器重用可以意指重用存储在存储器中的数据或存储特定数据的特定存储器地址。
具体地,如果NPU调度器130被配置为接收人工神经网络模型的结构数据或人工神经网络数据局部性信息,并且当提供的人工神经网络模型的结构数据或人工神经网络数据局部性信息可以确定人工神经网络操作的序列数据时,则NPU调度器130识别出以下事实:人工神经网络模型的特定层的节点数据和特定连接网络的权重数据的操作结果成为下一个对应层的节点数据。即,边缘设备1000的神经网络处理单元100可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来提高NPU存储器系统120的存储器重用率。
因此,NPU调度器130可以在后续操作中重用存储特定操作结果的存储器地址的值。因此,可以提高存储器重用率。
例如,在卷积神经网络的情况下,神经网络处理单元100将计算出的输出特征图数据存储在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可以通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来提供高效调度的效果。此外,由于存储器可重用操作所需的数据不会被复制并存储在NPU存储器系统120中,因此具有可以减少存储器使用的效果。此外,NPU调度器130具有通过计算因存储器重用而减少的存储器使用来提高NPU存储器系统120的效率的效果。
此外,NPU调度器130可以被配置为基于人工神经网络数据局部性信息确定调度序列,并且预先将所需的数据存储在NPU存储器系统120中。因此,当处理元件阵列110按照预定序列进行操作时,具有利用NPU存储器系统120中预先准备好的数据而不需要从主存储器系统1070请求数据的效果。
此外,NPU调度器130可以被配置为基于神经网络处理单元100的结构数据来监控NPU存储器系统130的资源使用、处理元件PE1到PE12的资源使用。因此,具有提高神经网络处理单元100的硬件资源利用效率的效果。
根据本公开的实施方案的神经网络处理单元100的NPU调度器130具有通过利用人工神经网络模型结构数据或人工神经网络数据局部性信息来重用存储器的效果。
换句话说,当人工神经网络模型为深度神经网络时,层数和连接数可以显著增加,在这种情况下,可以进一步最大化存储器重用的效果。
也就是说,如果神经网络处理单元100没有识别结构数据或人工神经网络数据局部性信息和人工神经网络模型的操作序列,则NPU调度器130不能确定是否重用存储在NPU存储器系统120中的值的存储。因此,NPU调度器130不必要地生成每次处理所需的存储器地址,并且基本上相同的数据必须从一个存储器地址复制到另一个存储器地址。因此,会产生不必要的存储器读写操作,并且在NPU存储器系统120中存储了重复值,这可能导致存储器被不必要地浪费的问题。
处理元件阵列110是指其中布置多个处理元件PE1至PE12的配置,所述处理元件PE1至PE12被配置为计算人工神经网络的节点数据和连接网络的权重数据。每个处理元件可以被配置为包括乘法和累加(MAC)运算符和/或算术逻辑单元(ALU)运算符。然而,根据本公开的实施方案不限于此。
虽然在图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中操作的人工神经网络模型可以是被训练以检测30个特定关键字的人工神经网络,即AI关键字识别模型。在这种情况下,考虑到计算量特性,可以将神经网络处理单元100的处理元件阵列110的尺寸设计为4×3。换言之,神经网络处理单元100可以被配置为包括十二个处理元件。然而,不限于此,多个处理元件PE1至PE12的数量可在例如8至16,384的范围内选择。即,本公开的实施方案在处理元件的数量方面不受限制。
处理元件阵列110被配置为执行人工神经网络操作所需的诸如加法、乘法和累加之类的功能。换言之,处理元件阵列110可以被配置为执行乘法和累加(MAC)操作。
在下文中,以处理元件阵列110的第一处理元件PE1为例进行说明。
图3是图示可以应用于本公开的实施方案的处理元件阵列中的一个处理元件的示意性概念图。
根据本公开的实施方案的神经网络处理单元100包括:处理元件阵列110;NPU存储器系统120,其被配置为存储可以从处理元件阵列110推理出的人工神经网络模型或存储人工神经网络模型的至少一些数据;以及NPU调度器130,其被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列110和NPU存储器系统120,以及处理元件阵列110可被配置为量化并输出MAC运算结果。然而,本公开的实施方案不限于此。
NPU存储器系统120可以根据人工神经网络模型的存储器大小和数据量存储人工神经网络模型的全部或部分。
第一处理元件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操作之后可以选择性地应用激活函数。应用激活函数的操作值可以被称为激活图。
图4是示意性地图示神经网络处理单元100的每单位操作的能量消耗的表格。
在下文中,将参照神经网络处理单元100的NPU存储器系统120的功耗降低技术来描述图4。
参考图4,该表示意性地解释了神经网络处理单元100的每单位操作所消耗的能量。能量消耗可以被分配到存储器访问、加法运算和乘法运算。
“8b Add”是指加法器112的8位整数加法运算。8位整数加法运算会消耗0.03pj的能量。
“16b Add”是指加法器112的16位整数加法运算。16位整数加法运算会消耗0.05pj的能量。
“32b Add”是指加法器112的32位整数加法运算。32位整数加法运算会消耗0.1pj的能量。
“16b FP Add”是指加法器112的16位浮点加法运算。16位浮点加法运算会消耗0.4pj的能量。
“32b FP Add”是指加法器112的32位浮点加法运算。32位浮点加法运算会消耗0.9pj的能量。
“8b Mult”是指乘法器111的8位整数乘法运算。8位整数乘法运算会消耗0.2pj的能量。
“32b Mult”是指乘法器111的32位整数乘法运算。32位整数乘法运算会消耗3.1pj的能量。
“16b FP Mult”是指乘法器111的16位浮点乘法运算。16位浮点乘法运算会消耗1.1pj的能量。
“32b FP Mult”是指乘法器111的32位浮点乘法运算。32位浮点乘法运算会消耗3.7pj的能量。
“32b SRAM Read”是指当NPU存储器系统120的内部存储器是静态随机存取存储器(SRAM)时的32位数据读取访问。从NPU存储器系统120读取32位数据会消耗5pj的能量。
“32b DRAM Read”是指当边缘设备1000的主存储器系统1070的存储器是DRAM时的32位数据读取访问。将32位数据从主存储器系统1070读取到NPU存储器系统120会消耗640pj的能量。能量单位是皮焦耳(pj)。
当神经网络处理单元100执行32位浮点乘法和8位整数乘法时,每单位运算的能量消耗相差约18.5倍。当从由DRAM构成的边缘设备1000的主存储器系统1070读取32位数据时,并且当从由SRAM构成的NPU存储器系统120读取32位数据时,每单位运算的能量消耗相差约128倍。
也就是说,就功耗而言,随着数据位数的增加,功耗增加。此外,与整数算法相比,使用浮点运算会增加功耗。此外,当从DRAM读取数据时,功耗会迅速增加。
因此,根据本公开的实施方案的神经网络处理单元100的NPU存储器系统120可以被配置为包括诸如SRAM之类的高速静态存储器并且不包括DRAM。然而,根据本公开实施方案的神经网络处理单元不限于SRAM。
例如,NPU存储器系统120可以被配置为不包括DRAM并且包括被配置为具有比主存储器系统1070更快的读取和写入速度以及更少的功耗的静态存储器。
因此,根据本公开的实施方案的神经网络处理单元100的NPU存储器系统120可以被配置为使得人工神经网络模型的推理操作的读/写速度比主存储器系统1070的读/写速度更快,并且消耗更少的功率。
能够高速驱动的静态存储器(例如SRAM)包括SRAM、MRAM、STT-MRAM、eMRAM、OST-MRAM等。此外,MRAM、STT-MRAM、eMRAM和OST-MRAM是具有非易失性特性的静态存储器。因此,当边缘设备1000在断电后重新启动时,具有不需要从主存储器系统1070再次提供人工神经网络模型的效果。然而,根据本公开的实施方案不限于此。
根据上述配置,神经网络处理单元100具有在人工神经网络模型的推理操作期间显著降低DRAM的功耗的效果。此外,NPU存储器系统120的SRAM的存储单元包含例如4至6个晶体管以存储一位数据。然而,根据本公开的实施方案不限于此。此外,NPU存储器系统120的MRAM的存储单元例如包含一个磁隧道结(MTJ)和一个晶体管,以存储一位数据。然而,根据本公开的实施方案不限于此。
此外,神经网络处理单元100可以被配置为检查边缘设备1000的主存储器系统1070的存储器数量、存储器类型、数据传送速率和存储器大小中的一个或多个数据。例如,神经网络处理单元100可以向边缘设备1000请求系统数据以接收诸如存储器系统1070的存储器大小和速度之类的数据。然而,根据本公开的实施方案不限于此。
如果边缘设备1000的主存储器系统1070包括DRAM,则神经网络处理单元100可以操作以最小化对主存储器系统1070的存储器访问。然而,根据本公开的实施方案不限于此。也就是说,考虑到人工神经网络模型的数据量和操作步骤,NPU存储器系统120可以是被配置为重用特定存储器地址的低功率存储器系统。
也就是说,边缘设备1000的神经网络处理单元100可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息控制存储在NPU存储器系统120中的数据的重用,并且在数据被重用时不向主存储器系统120发出存储器访问请求。
也就是说,根据本公开的实施方案的神经网络处理单元100可以基于待在神经网络处理单元100中运算的人工神经网络模型结构数据或人工神经网络数据局部性信息来最小化对主存储器系统1070的存储器访问请求,并且可以增加NPU存储器系统120内部存储的数据的重用频率。因此,可以增加NPU存储器系统120的静态存储器的使用频率,并且有降低神经网络处理单元100的功耗和提高运算速度的效果。
也就是说,神经网络处理单元100可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制存储在NPU存储器系统120中的数据的重用并且当数据重用时不向主存储器系统1070发出存储器访问请求。
神经网络处理单元100可以被配置为从主存储器系统1070接收待在启动边缘设备100时被驱动的人工神经网络模型并将其存储在NPU存储器系统120中,并且基于存储在NPU存储器系统120中的人工神经网络模型的结构数据或人工神经网络数据局部性信息执行推理操作。
当神经网络处理单元100操作以重用存储在NPU存储器系统120中的数据时,神经网络处理单元100可以最小化对主存储器系统1070的数据访问请求的数量以降低功耗。此外,神经网络处理单元100可以被配置为在边缘设备1000第一次启动时仅接收一次人工神经网络模型数据,并且在后续的推理操作重用被存储在NPU存储器系统120中的数据。
例如,当存储在神经网络处理单元100中的人工神经网络模型是AI关键字识别模型时,从麦克风1022接收用于关键字推理计算的语音数据并且将其提供给神经网络处理单元100,从麦克风1022接收用于关键字推理操作的语音数据并将其提供给神经网络处理单元100,人工神经网络模型的数据被存储在NPU存储器系统120中,并且在存储的数据中分析可重用的数据。因此,可以提高数据重用率。
例如,当存储在神经网络处理单元100中的人工神经网络模型是AI对象识别模型时,从相机1021接收用于对象推理操作的图像数据并将其提供给神经网络处理单元100,人工神经网络模型的数据存储在NPU存储器系统120中,并在存储的数据中分析可重用的数据。因此,可以提高数据重用率。
此时,神经网络处理单元100可以比较要从主存储器系统1070获取的人工神经网络模型的数据量和NPU存储器系统120的存储器大小,以仅使用在NPU存储器系统120中所存储的数据进行操作。如果NPU存储器系统120的存储器大小大于人工神经网络模型的数据量,则神经网络处理单元100可以被配置为仅使用存储在NPU存储器系统120中的数据进行操作。
也就是说,神经网络处理单元100可以被配置为比较将从主存储器系统1070获取的人工神经网络模型的数据量和NPU存储器系统120的存储器大小。
也就是说,神经网络处理单元100可以被配置为将存储在主存储器系统1070中的人工神经网络模型的数据量与NPU存储器系统120的存储器大小进行比较。当人工神经网络模型的数据量比NPU存储器系统120的存储器大小小时,具有在重用存储在NPU存储器系统120中的数据的同时可以重复推理操作的效果。
当存储在根据本公开的实施方案的神经网络处理单元100中的NPU存储器系统120中的数据被重用时,NPU存储器系统120可以减少额外的存储器访问。因此,具有NPU存储器系统120可以减少存储器访问所需的操作时间,并且可以降低存储器访问所需的功耗的效果。也就是说,具有同时降低功耗和提高推理速度的效果。
图5是图示适用于本公开的实施方案的示例性人工神经网络模型的示意性概念图。
在下文中,将参考图2到5描述可以在神经网络处理单元100中操作的示例性人工神经网络模型1300的操作。
图5的示例性人工神经网络模型1300可以是由边缘设备100或由单独的机器学习设备训练的人工神经网络。人工神经网络模型1300可以是被训练以执行各种推理功能(例如对象识别和语音识别)的人工神经网络。
人工神经网络模型1300可以是卷积神经网络(CNN),其是一种深度神经网络(DNN)。卷积神经网络可以由一个或几个卷积层、一个池化层和全连接层的组合构成。卷积神经网络具有适合二维数据学习和推理的结构,并且可以通过反向传播算法进行训练。
然而,根据本公开的实施方案的人工神经网络模型1300不限于深度神经网络。
例如,人工神经网络模型1300可以实现为模型,例如VGG、VGG16、DenseNet和具有编码器-解码器结构的全卷积网络(FCN),深度神经网络(DNN),例如SegNet、DeconvNet、DeepLAB V3+、U-net、SqueezeNet、Alexnet、ResNet18、MobileNet-v2、GoogLeNet、Resnet-v2、Resnet50、Resnet101、Inception-v3等。然而,本公开不限于上述模型。此外,人工神经网络模型1300可以是基于至少两个不同模型的集成模型。
人工神经网络模型1300可以存储在神经网络处理单元100的NPU存储器系统120中。其可以按以下方式实现:人工神经网络模型1300可以存储在非易失性存储器中和/或边缘设备1000的主存储器系统1070的易失性存储器中并且然后在人工神经网络模型1300操作时存储在神经网络处理单元100中。然而,不限于此,人工神经网络模型1300可以由边缘设备1000的无线通信单元1010提供给神经网络处理单元100。
在下文中,将参考图5描述由神经网络处理单元100推理示例性人工神经网络模型1300的过程。
人工神经网络模型1300是示例性深度神经网络模型,其被配置为包括输入层1310、第一连接网络1320、第一隐藏层1330、第二连接网络1340、第二隐藏层1350、第三连接网络1360和输出层1370。然而,根据本公开的示例的人工神经网络模型不限于此。第一隐藏层1330和第二隐藏层1350可以被称为多个隐藏层。然而,根据本公开的实施方案的人工神经网络模型不限于此。第一隐藏层1330和第二隐藏层1350可以被称为多个隐藏层。
输入层1310可以包括例如x1和x2输入节点。即,输入层1310可以包括具有两个节点值的节点数据。NPU调度器130可以设置在NPU存储器系统120中存储输入层1310的输入数据的存储器地址。
第一连接网络1320可以包括例如具有权重数据的连接,该权重数据包括连接输入层1310的每个节点和第一隐藏层1330的每个节点的六个权重值。每个连接网络包括各自的权重数据。NPU调度器130可以设置在NPU存储器系统120中存储第一连接网络1320的权重数据的存储器地址。每个连接网络的权重数据与相应的输入节点数据相乘,相乘后的值的累加值存储在第一隐藏层1330中。
第一隐藏层1330可以包括例如节点a1、a2和a3。即,第一隐藏层1330可以包括包含三个节点值的节点数据。NPU调度器130可以设置在NPU存储器系统120中存储第一隐藏层1330的节点数据的存储器地址。
第二连接网络1340可以包括例如具有权重数据的连接,该权重数据包括连接第一隐藏层1330的每个节点和第二隐藏层1350的每个节点的九个权重值。每个连接网络包括各自的权重数据。NPU调度器130可以设置在NPU存储器系统120中存储第二连接网络1340的权重数据的存储器地址。每个连接网络的权重数据与相应的输入节点数据相乘,相乘后的值的累加值存储在第二隐藏层1350中。
第二隐藏层1350可以包括例如节点b1、b2和b3。即,第二隐藏层1350可以包括包含三个节点值的节点数据。NPU调度器130可以设置在NPU存储器系统120中存储第二隐藏层1350的节点数据的存储器地址。
第三连接网络1360可以包括例如具有权重数据的连接,该权重数据包括连接第二隐藏层1350的每个节点和输出层1370的每个节点的六个权重值。每个连接网络包括各自的权重数据。NPU调度器130可以设置在NPU存储器系统120中存储第三连接网络1360的权重数据的存储器地址。每个连接网络的权重数据与相应的输入节点数据相乘,相乘后的值的累加值存储在输出层1370中。
输出层1370可以包括例如y1和y2节点。即,输出层1370可以包括包含两个节点值的节点数据。NPU调度器130可以设置在NPU存储器系统120中存储输出层1370的节点数据的存储器地址。
也就是说,NPU调度器130可以分析或接收人工神经网络模型的结构以在处理元件阵列100中操作。人工神经网络模型可以包括的人工神经网络数据可以包括每一层的节点数据、层的布局结构数据、连接每一层的节点的每个连接网络的权重数据、或人工神经网络数据局部性信息。
由于NPU调度器130被提供有示例性神经网络模型1300的结构数据或人工神经网络数据局部性信息,NPU调度器130还能够分析从人工神经网络模型1300的输入到输出的操作序列,所述操作序列用于人工神经网络的每一层或以神经网络处理单元处理的字为单位。
因此,考虑到调度序列,NPU调度器130可以设置在NPU存储器系统120中存储每层的MAC操作值的存储器地址。例如,具体的存储器地址可以是输入层1310和第一连接网络1320的MAC操作值,同时可以是第一隐藏层1330的输入数据。然而,本公开不限于MAC操作值,并且MAC操作值也可以称为人工神经网络操作值。
此时,由于NPU调度器130知道输入层1310和第一连接网络1320的MAC操作结果是第一隐藏层1330的输入数据,所以可以使用相同的存储器地址。即,NPU调度器130可基于人工神经网络模型结构数据或人工神经网络数据局部性信息重用MAC操作值。因此,具有NPU系统存储器120可以提供存储器重用功能的效果。即,NPU调度器130可基于人工神经网络模型结构数据或人工神经网络数据局部性信息重用MAC操作值。因此,具有NPU系统存储器120可以提供存储器重用功能的效果。
也就是说,NPU调度器130根据调度序列将人工神经网络模型1300的MAC操作值存储在NPU存储器系统120的特定存储器地址中,以及存储MAC操作值的特定存储器地址可以用作下一个调度顺序的MAC操作的输入数据。
将根据第一处理元件PE1详细描述MAC操作。第一处理元件PE1可以被指定执行第一隐藏层1330的a1节点的MAC操作。
首先,第一处理元件PE1将输入层1310的x1节点数据输入到乘法器111的第一输入单元,并将x1节点和a1节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第一处理元件PE1将输入层1310的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来执行第一隐藏层1330的a2节点的MAC操作。
首先,第二处理元件PE2将输入层1310的x1节点数据输入到乘法器111的第一输入单元,并将x1节点和a2节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第二处理元件PE2将输入层1310的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来执行第一隐藏层1330的a3节点的MAC操作。
首先,第三处理元件PE3将输入层1310的x1节点数据输入到乘法器111的第一输入单元,并将x1节点和a3节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第三处理元件PE3将输入层1310的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来执行第一隐藏层1330的MAC操作。
将根据第四处理元件PE4来详细描述MAC操作。可以指定第四处理元件PE4执行第二隐藏层1350的b1节点的MAC操作。
首先,第四处理单元PE4将第一隐藏层1330的a1节点数据输入到乘法器111的第一输入单元,将a1节点和b1节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第四处理单元PE4将第一隐藏层1330的a2节点数据输入至乘法器111的第一输入单元,将a2节点与b1节点之间的权重数据输入至乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的a1节点数据和在a1节点与b1节点之间的权重的乘积值。因此,加法器112生成与b1节点对应的a1节点和a2节点的MAC操作值。在这种情况下,L次循环的计数器值可以是2。
第三,第四处理元件PE4将输入层1310的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可以被指定为执行第二隐藏层1350的b2节点的MAC操作。
首先,第五处理单元PE5将第一隐藏层1330的a1节点数据输入到乘法器111的第一输入单元,将a1节点和b2节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第五处理单元PE5将第一隐藏层1330的a2节点数据输入至乘法器111的第一输入单元,将a2节点与b2节点之间的权重数据输入至乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的a1节点数据和在a1节点与b2节点之间的权重的乘积值。因此,加法器112生成与b2节点对应的a1节点和a2节点的MAC操作值。在这种情况下,L次循环的计数器值可以是2。
第三,第五处理单元PE5将第一隐藏层1330的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可以被指定为执行第二隐藏层1350的b3节点的MAC操作。
首先,第六处理元件PE6将第一隐藏层1330的a1节点数据输入到乘法器111的第一输入单元,将a1节点和b3节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第六处理元件PE6将第一隐藏层1330的a2节点数据输入至乘法器111的第一输入单元,将a2节点与b3节点之间的权重数据输入至乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的a1节点数据和在a1节点与b3节点之间的权重的乘积值。因此,加法器112生成与b3节点对应的a1节点和a2节点的MAC操作值。在这种情况下,L次循环的计数器值可以是2。
第三,第六处理元件PE6将第一隐藏层1330的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来执行第二隐藏层1350的MAC操作。
将根据第七处理元件PE7详细描述MAC操作。第七处理元件PE7可以被指定为执行输出层1370的y1节点的MAC操作。
首先,第七处理元件PE7将第二隐藏层1350的b1节点数据输入到乘法器111的第一输入单元,将b1节点和y1节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第七处理元件PE7将第二隐藏层1350的b2节点数据输入至乘法器111的第一输入单元,将b2节点与y1节点之间的权重数据输入至乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的b1节点数据和在b1节点与y1节点之间的权重的乘积值。因此,加法器112生成与y1节点对应的b1节点和b2节点的MAC操作值。在这种情况下,L次循环的计数器值可以是2。
第三,第七处理元件PE7将第二隐藏层1350的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可以被指定为执行输出层1370的y2节点的MAC操作。
首先,第八处理元件PE8将第二隐藏层1350的b1节点数据输入到乘法器111的第一输入单元,将b1节点和y2节点之间的权重数据输入到乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为零时,由于没有累加值,所以累加值为零。因此,加法器112的操作值会与乘法器111的操作值相同。在这种情况下,L次循环的计数器值可以是1。
其次,第八处理元件PE8将第二隐藏层1350的b2节点数据输入至乘法器111的第一输入单元,将b2节点与y2节点之间的权重数据输入至乘法器111的第二输入单元。加法器112将乘法器111的操作值和累加器113的操作值相加。此时,当L次循环的次数为1时,存储在上一步中计算出的b1节点数据和在b1节点与y2节点之间的权重的乘积值。因此,加法器112生成与y2节点对应的b1节点和b2节点的MAC操作值。在这种情况下,L次循环的计数器值可以是2。
第三,第八处理元件PE8将第二隐藏层1350的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来执行输出层1370的MAC操作。
当第八处理元件PE8的MAC操作完成时,可以完成人工神经网络模型1300的推理操作。即,可以确定人工神经网络模型1300已经完成了一帧的推理操作。如果神经网络处理单元100实时推理视频数据,则下一帧的图像数据可以输入到输入层1310的x1和x2输入节点。在这种情况下,NPU调度器130可以将下一帧的图像数据存储在存储输入层1310的输入数据的存储器地址中。如果对每一帧重复该过程,则神经网络处理单元100可以实时处理推理操作。此外,还具有可以重用预设存储器地址的效果。
总结图5的人工神经网络模型1300的情况,神经网络处理单元100的NPU调度器130可基于人工神经网络模型结构数据1300或人工神经网络数据局部性信息确定操作调度序列,以用于人工神经网络模型1300的推理操作。NPU调度器130可以基于操作调度序列来设置NPU存储器系统120所需的存储器地址。NPU调度器130可以基于神经网络模型1300的结构数据或人工神经网络数据局部性信息来设置用于重用存储器的存储器地址。NPU调度器130可以通过指定推理操作所需的处理元件PE1至PE8来执行推理操作。
此外,如果连接到一个节点的权重数据的数量增加L,则处理元件的累加器的L次循环的数量可以被设置为L-1。也就是说,即使人工神经网络的权重数据的数量增加,累加器也具有通过增加累加器的累加次数而容易地执行推理操作的效果。
也就是说,根据本公开的实施方案的神经网络处理单元100的NPU调度器130可以基于包括人工神经网络模型的输入层1310、第一连接网络1320、第一隐藏层1330、第二连接网络1340、第二隐藏层1350、第三连接网络1360和输出层1370的结构数据的结构数据或人工神经网络数据局部性信息来控制处理元件阵列100和NPU存储器系统120。
也就是说,NPU调度器130可以将与输入层1310的节点数据、第一连接网络1320的权重数据、第一隐藏层1330的节点数据、第二连接网络1340的权重数据、第二隐藏层1350的节点数据、第三连接网络1360的权重数据、以及输出层1370的节点数据对应的存储器地址值设置在NPU存储器系统110中。
在下文中,将详细描述NPU调度器130的调度。NPU调度器130可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息来调度人工神经网络模型的操作序列。
NPU调度器130可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息获得存储人工神经网络模型的层的节点数据和连接网络的权重数据的存储器地址值。
例如,NPU调度器130可以获得在主存储器系统1070中存储人工神经网络模型的层的节点数据和连接网络的权重数据的存储器地址值。因此,NPU调度器130可以将要驱动的人工神经网络模型的层的节点数据和连接网络的权重数据从主存储器系统1070中取出并将其存储在NPU存储器系统120中。每层的节点数据可以有对应的各自的存储器地址值。每个连接网络的权重数据可以有对应的各自的存储器地址值。
NPU调度器130可以基于人工神经网络模型的结构数据或人工神经网络数据局部性信息,例如在编译时构建的人工神经网络模型的人工神经网络的层的排列结构数据或人工神经网络数据局部性信息,调度处理元件阵列110的操作序列。
例如,NPU调度器130可以获得具有四个人工神经网络层和连接每一层的三层的权重值的权重数据,即网络连接数据。在这种情况下,下面将举例说明NPU调度器130基于神经网络模型的结构数据或人工神经网络数据局部性信息对处理序列进行调度的方法。
例如,NPU调度器130将用于推理操作的输入数据设置为第一层(第一层是人工神经网络模型1300的输入层1310)的节点数据,并且首先可以调度以执行第一层的节点数据和与第一层对应的第一连接网络的权重数据的MAC操作。在下文中,为了描述方便,相应的操作可以被称为第一操作,第一操作的结果可以被称为第一操作值,并且相应的调度可以被称为第一调度。
例如,NPU调度器130将第一操作值设置为对应于第一连接网络的第二层的节点数据,并且可以调度待在第一调度后执行的第二层的节点数据和与第二层对应的第二连接网络的权重数据的MAC操作。在下文中,为了描述方便,相应的操作可以被称为第二操作,第二操作的结果可以被称为第二操作值,并且相应的调度可以被称为第二调度。
例如,NPU调度器130将第二操作值设置为对应于第二连接网络的第三层的节点数据,并且可以调度待在第二调度中执行的第三层的节点数据和与第三层对应的第三连接网络的权重数据的MAC操作。在下文中,为了描述方便,相应的操作可以被称为第三操作,第三操作的结果可以被称为第三操作值,并且相应的调度可以被称为第三调度。
例如,NPU调度器130将第三操作值设置为对应于第三连接网络的第四层(即输出层1370)的节点数据,并且可以调度以将存储在第四层的节点数据中的推理结果存储在NPU存储器系统120中。以下为了方便描述,相应的调度可以被称为第四调度。推理结果值可以被发送和利用到边缘设备1000的各种元件。
例如,如果推理结果值是检测特定关键字的结果值,则神经网络处理单元100将推理结果发送到中央处理单元1080,以便边缘设备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可以被配置为基于人工神经网络的层的结构和与该结构对应的操作序列数据来调度处理序列。
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利用人工神经网络模型结构数据1300或人工神经网络数据局部性信息,并且可以设置输入层1310、第一隐藏层1330、第二隐藏层1350和输出层1370的节点数据作为变量,以及设置第一连接网络1320的权重数据、第二连接网络1340的权重数据和第三连接网络1360的权重数据作为常量。也就是说,NPU调度器130可以区分常量值和变量值。然而,本公开不限于常量和变量数据类型,本质上,可以通过区分频繁变化的值和不频繁变化的值来提高NPU存储器系统120的重用率。
也就是说,NPU系统存储器120可以被配置为在神经网络处理单元100的推理操作继续的同时保存存储在NPU系统存储器120中的连接的权重数据。因此,具有减少存储器读/写操作的效果。
也就是说,NPU系统存储器120可以被配置为在继续推理操作的同时重用存储在NPU系统存储器120中的MAC操作值。
也就是说,关于存储处理元件阵列110的每个处理元件,存储第一输入的N位输入数据的存储器地址的数据更新频率可以大于其中存储第二输入单元的M位输入数据的存储器地址的数据更新频率。也就是说,存在第二输入单元的数据更新的频率可以小于第一输入单元的数据更新的频率的效果。
图6是图示根据本公开的另一个实施方案的神经网络处理单元的示意性概念图。
根据本公开的另一实施方案的神经网络处理单元200被配置为包括处理元件阵列110、NPU存储器系统120、NPU调度器130和NPU接口140,并且进一步包括NPU批处理模式250。
由于根据本公开的另一实施方案的神经网络处理单元200与根据本公开的实施方案的神经网络处理单元100基本相同,不同之处在于NPU批处理模式250,在下文中,为便于解释可以省略多余的描述。
根据本公开的另一个实施方案的神经网络处理单元200可以被配置为以批处理模式操作。批处理模式是指可以使用一个人工神经网络模型同时执行多个不同的推理操作的模式。
例如,根据本公开的实施方案,可以有边缘设备1000的多个相机1021。在这种情况下,神经网络处理单元200可以被配置为激活NPU批处理模式250。如果NPU批处理模式250被激活,则神经网络处理单元200可以在批处理模式下操作。
例如,当边缘设备1000是包括六个相机的自动驾驶车辆时,神经网络处理单元200可以激活NPU批处理模式250。当NPU批处理模式250被激活时,神经网络处理单元200可以被配置为通过使用被训练以推理行人识别、车辆识别、障碍物识别等的一个人工神经网络模型来依次推理六个相机的输入图像。
也就是说,神经网络处理单元200可以被配置为包括:处理元件阵列PE1至PE12;NPU存储器系统120,其被配置为存储可从处理元件阵列PE1至PE12推理出的人工神经网络模型或存储人工神经网络模型的数据的至少一部分;NPU调度器130,其被配置为控制处理元件阵列PE1至PE12和NPU存储器系统120;以及NPU批处理模式250,其被配置为使用人工神经网络模型推理多个不同的输入数据。NPU存储器系统120可以根据人工神经网络模型的存储器大小和数据量来存储人工神经网络模型的全部或部分。
此外,当以传统方式以每秒三十帧的速度推理出6张512×512×3格式的图像时,神经网络处理单元应为每个图像推理分配每个人工神经网络模型,并且为每个人工神经网络模型设置用于推理操作的每个存储器。也就是说,在常规情况下,神经网络处理单元需要单独操作六个人工神经网络模型,而神经网络处理单元内的每个人工神经网络模型不能确定相互之间的相关性。也就是说,在传统的方法中,必须同时并行驱动六个人工神经网络模型,而传统的方法可能会导致NPU存储器系统的存储器需要比根据本公开的实施方案的批处理模式多六倍的问题。此外,当NPU系统存储器的容量非常小时,NPU存储器系统可能无法同时存储六个人工神经网络模型。在这种情况下,神经网络处理单元将六个人工神经网络模型存储在主存储器系统中,并且在一个人工神经网络模型的推理操作通过NPU接口完成后,另一个人工神经网络模型的数据必须是从主存储器系统读取到NPU存储器系统。如上面关于图4所描述的,由于NPU存储器系统的SRAM和主存储器系统的DRAM之间的功耗差异较大,因此将人工神经网络模型从主存储器系统读取到NPU存储器系统所需的时间较长。在这种情况下,必须增加神经网络处理单元的数量,因此存在功耗和成本相应增加的问题。
另一方面,根据本公开的另一实施方案的神经网络处理单元200的布置模式的特征在于其被配置为使用一个人工神经网络模型顺序地推理多个输入数据。
神经网络处理单元200的NPU批处理模式250可以被配置为将多个输入数据转换成一个连续数据。
例如,NPU批处理模式250可以将从六个相机输入的三十帧视频数据转换成一百八十帧的单个视频数据。也就是说,NPU批处理模式250可以通过组合多个图像数据来增加操作帧。
例如,NPU批处理模式250可以通过使用一个人工神经网络模型来顺序地推理从六个相机输入的输入图像的帧。也就是说,NPU批处理模式250可以通过重用人工神经网络模型的权重数据对多个不同的输入数据执行推理操作。
更详细地,神经网络处理单元200的NPU批处理模式250可以将人工神经网络模型的第一层的权重数据存储在NPU存储器系统120中。此外,第一操作值中的六个或第一特征图可以通过计算多个输入数据(例如六个相机输入图像)和第一层的权重数据获得。也就是说,可以使用第一层的权重数据依次计算六个操作值。计算出的多个第一操作值可以在下一层的操作中重用。
接下来,神经网络处理单元200的NPU批处理模式250可以将人工神经网络模型的第二层的权重数据存储在NPU存储器系统120中。另外,可以通过使用计算出的多个第一操作值和第二层的权重数据来获得第二操作值。也就是说,可以使用第二层权重数据依次计算六个操作值。因此,可以提高第二层的权重数据的重用率。
接下来,神经网络处理单元200的NPU批处理模式250可以将人工神经网络模型的第三层的权重数据存储在NPU存储器系统120中。另外,可以通过使用计算出的多个第二操作值及第三层的权重数据来获得第三操作值。也就是说,可以使用第三层权重数据依次计算六个操作值。因此,可以提高第三层的权重数据的重用率。
神经网络处理单元200的NPU批处理模式250可以以上述方式操作。
根据上述配置,可以重用与输入数据的数量一样多的每一层的权重数据。因此,具有可以进一步提高权重数据的存储器重用率的效果。特别是,随着输入数据数量的增加,存储器重用会成比例地提高。
根据上述配置,可以显著减少从主存储器系统1070读取权重数据的情况。特别地,人工神经网络模型的权重数据量通常大于输入图像的数据量。因此,重用权重数据在降低功耗、提高操作速度、减少存储器读取时间等方面更为有效。
详细地,由于主存储器系统1070通过系统总线1060传送数据,所以存储器传送速度可能明显低于NPU存储器系统120的速度,并且功耗可能会迅速增加。然而,由于NPU批处理模式250可以使用一个人工神经网络模型执行多个推理操作,因此具有可以改善上述问题的效果。
根据上述配置,NPU调度器130具有通过使用一个人工神经网络模型来推理六个相机的输入数据的效果。具体地,当一个人工神经网络模型的数据量为例如7MB,并且NPU存储器系统120的SRAM存储器大小为10MB时,可以通过NPU批处理模式250将人工神经网络模型的所有数据存储在NPU存储器系统120中。另外,当NPU存储器系统120是例如静态存储器(例如SRAM),并且主存储器系统1070是DRAM时,由于存储器类型的特性,NPU存储器系统120可以比主存储器系统1070操作快10倍以上。因此,当实际神经网络处理单元200在NPU批处理模式250下操作时,推理操作的量可增加六倍,因为仅可使用NPU存储器系统120,因此具有操作速度可以比传统方法快得多的效果。也就是说,由于神经网络处理单元200可以比较人工神经网络模型的数据量和NPU存储器系统120的存储器大小,所以具有可以消除或最小化与主存储器系统1070的通信的效果。
然而,上述配置不限于NPU批处理模式250,并且其也可以应用于没有NPU批处理模式250的本公开的其他实施方案。
然而,根据本公开的NPU批处理模式250不限于在神经网络处理单元200内部实现,并且还可以在边缘设备1000中包括NPU批处理模式250。
图7是图示根据本公开的另一个实施方案的神经网络处理单元的示意性概念图。
根据本公开的另一实施方案的神经网络处理单元300被配置为包括处理元件阵列310、NPU存储器系统120、NPU调度器130和NPU接口140。
由于根据本公开的另一实施方案的神经网络处理单元300与根据本公开的实施方案的神经网络处理单元100基本相同,不同之处在于处理元件阵列310,在下文中,为了描述方便,会省略多余的描述。
根据本公开的另一个实施方案的处理元件阵列310存储,处理元件阵列310被配置为进一步包括多个处理元件PE1至PE12以及与处理元件PE1到PE12中的每一个对应的各自的寄存器文件RF1至RF12。
如图7所示的多个处理元件PE1至PE12和多个寄存器文件RF1至RF12仅是为了描述方便的示例,多个处理元件PE1至PE12以及多个寄存器文件RF1至RF12的数量不限于此。
处理元件阵列310的大小或数量可由多个处理元件PE1至PE12和多个寄存器文件RF1至RF12的数量确定。处理元件阵列310和多个寄存器文件RF1至RF12的大小可以以N×M矩阵的形式实现,其中N和M是大于零的整数。
可以考虑到人工神经网络模型(神经网络处理单元300在其中操作)的特性来设计处理元件阵列310的阵列大小。换言之,可以考虑要操作的人工神经网络模型的数据量、所需的操作速度、所需的功耗等来确定寄存器文件的存储器大小。
神经网络处理单元300的寄存器文件RF1到RF12是直接连接到处理元件PE1到PE12的静态存储单元。寄存器文件RF1至RF12可以包括例如触发器和/或锁存器。寄存器文件RF1到RF12可以被配置为存储相应处理元件RF1到RF12的MAC操作值。寄存器文件RF1至RF12可以被配置为向NPU系统存储器120提供权重数据和/或节点数据或接收权重数据和/或节点数据。
图8是根据本公开的另一个实施方案图示根据神经网络处理单元的示例性寄存器文件的存储器大小和包含SRAM的示例性NPU存储器系统的存储器大小的最大传送速率的特性的示意性概念图。
图8的X轴是指存储器大小。Y轴是指最大发送速率(MHz)。图8的NPU存储器系统120示例性地由SRAM制成。寄存器文件可能具有最大发送速率(MHz)随着存储器大小的增加而迅速降低的特性。然而,在NPU存储器系统120中,随着存储器大小的增加,最大发送速率(MHz)劣化特性相比于寄存器文件较小。
因此,根据本公开的另一实施方案的神经网络处理单元300的寄存器文件RF1至RF12的存储器大小小于NPU存储器系统120的存储器大小,并且最大传送速率可以配置为更快。
也就是说,多个寄存器文件RF1至RF12中的每一个的存储器大小小于NPU存储器系统120的存储器大小,并且多个寄存器文件RF1到RF12中的每一个的最大传送速率可以被配置为比NPU存储器系统120的最大传送速率更快。
例如,为了提高最大传送速度,每个寄存器文件的存储器大小为30KB或更小,并且NPU存储器系统120的存储器大小可以大于寄存器文件的存储器大小。
例如,更优选地,每个寄存器文件的存储器大小为20KB或更小,并且NPU存储器系统120的存储器大小大于寄存器文件的存储器大小以提高最大传送速度。然而,本公开不限于此。
根据上述配置,与仅利用NPU存储器系统120的存储器的情况相比,处理元件阵列310还包括具有比NPU存储器系统120的最大传送速率快的最大传送速率的存储器大小的寄存器文件,其具有允许根据本公开的另一实施方案的神经网络处理单元300比根据本公开的实施方案的神经网络处理单元100更快地操作的效果。
也就是说,多个寄存器文件RF1至RF12中的每一个可以被配置为具有比NPU存储器系统120具有更快的最大发送速率的存储器大小。因此,存在提高神经网络处理单元300的操作速度的效果。
图9是根据本公开的另一实施方案图示根据神经网络处理单元的示例性寄存器文件的存储器大小和包含SRAM的示例性NPU存储器系统的存储器大小的基于相同传送速率的功耗特性的示意性概念图。
图9的X轴是指存储器大小。Y轴表示基于相同发送速率的功耗(mW/GHz)。也就是说,当发送速度与1GHz相同时,根据存储器的大小,功耗特性会发生变化。图9的NPU存储器系统120示例性地由SRAM制成。寄存器文件可以具有这样的特性,其中在相同发送速率下的功耗(mW/GHz)随着存储器大小的增加而迅速增加。然而,与寄存器文件相比,即使当存储器大小增加时,NPU存储器系统120在相同发送速率下也表现出较少的功耗(mW/GHz)增加。
因此,根据本公开的另一实施方案的神经网络处理单元300的寄存器文件RF1至RF12的存储器大小小于NPU存储器系统120的存储器大小,并且可以被配置为在相同的传送速率下具有相对较低的功耗。
也就是说,多个寄存器文件RF1至RF12中的每一个的存储器大小小于NPU存储器系统120的存储器大小,并且多个寄存器文件RF1至RF12中的每一个在相同发送速率下的功耗可以被配置为小于NPU存储器系统120的基于相同发送速率的功耗。
根据上述配置,与仅利用NPU存储器系统120的存储器的情况相比,处理元件阵列310还包括与NPU存储器系统120相比基于相同传送具有更少功耗的存储器大小的寄存器文件,因此具有根据本公开的另一实施方案的神经网络处理单元300可以比根据本公开的实施方案的神经网络处理单元100更多地降低功耗的效果。
也就是说,多个寄存器文件RF1至RF12中的每一个可以被配置为与NPU存储器系统120相比在相同的发送速率下具有更小的存储器大小。因此,存在降低神经网络处理单元300的功耗的效果。
也就是说,多个寄存器文件RF1至RF12中的每一个具有比NPU存储器系统120更快的最大发送速率,并且可以被配置为基于相同的传送速率具有相对低功耗的存储器。因此,可以降低神经网络处理单元300的功耗,同时具有提高神经网络处理单元300运行速度的效果。
图10是根据本公开的另一个实施方案图示神经网络处理单元的示意性概念图。
根据本公开的另一个实施方案的神经网络处理单元400被配置为包括处理元件阵列410、NPU存储器系统420、NPU调度器130和NPU接口140。
由于根据本公开的另一实施方案的神经网络处理单元400与根据本公开的实施方案的神经网络处理单元300基本相同,不同之处在于NPU存储器系统420,在下文中,为了便于解释,会省略多余的描述。
根据本公开的另一实施方案的NPU存储器系统420被配置为包括第一存储器421、第二存储器422和第三存储器423。第一存储器421、第二存储器422和第三存储器423可以是逻辑分离的存储器或物理分离的存储器。
也就是说,根据本公开的另一实施方案的NPU调度器130可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息控制第一存储器421、第二存储器422和第三存储器423。因此,NPU调度器130可以被配置为基于在神经网络处理单元400中驱动的人工神经网络模型结构数据或人工神经网络数据局部性信息,通过控制NPU存储器系统420的第一存储器421、第二存储器422和第三存储器423来提高NPU存储器系统420的存储器重用率。
第一存储器421被配置为与主存储器系统1070、第二存储器422和第三存储器423通信。此外,第二存储器422和第三存储器423被配置为与多个处理元件PE1到PE12和多个寄存器文件RF1到RF12通信。
根据本公开的另一实施方案的神经网络处理单元400可以被配置为具有针对存储器重用而优化的多个存储器分层结构。主存储器系统1070可以是第一层存储器。第一存储器421可以是第二层的存储器。第二存储器422和第三存储器423可以是第三层的存储器。多个寄存器文件RF1至RF12可以是第四层的存储器。NPU调度器130可以被配置为存储数据,其中存储了关于存储器分层结构和每个存储器的大小的信息。
具体地,边缘设备1000的主存储器系统1070可以被配置为存储人工神经网络模型的所有数据。在这种情况下,主存储器系统1070可以存储至少一个人工神经网络模型。NPU存储器系统420可以根据人工神经网络模型的存储器大小和数据量存储人工神经网络模型的全部或部分。
例如,第一人工神经网络模型可以是被配置为推理特定关键字的AI关键字识别模型。进一步地,第二人工神经网络模型可以是被配置为推理特定手势的AI手势识别模型。然而,根据本公开的实施方案不限于此。
主存储器系统1070的存储器大小可大于第一存储器421的存储器大小。第一存储器421的存储器大小可大于第二存储器422或第三存储器423的存储器大小。此外,第二存储器422和第三存储器423中的每一个的存储器大小可以大于多个寄存器文件RF1至RF12中的每一个。然而,根据本公开的实施方案不限于此。
主存储器系统1070可以是第一层存储器。第一层的存储器可能具有最大的存储器大小和最大的功耗。然而,根据本公开的实施方案不限于此。
第一存储器421可以是第二层的存储器。神经网络处理单元400的第一存储器421可被配置为存储人工神经网络模型的部分或全部数据。第二层的存储器可以具有比第一层的存储器更小的存储器大小,可以比第一层的存储器消耗更少的功率,并且可以具有比第一层的存储器更快的发送速度。
在下文中,将描述人工神经网络模型的数据量小于第一存储器421的情况。NPU调度器130利用人工神经网络模型的结构数据或人工神经网络数据局部性信息,将所有调度数据存储在第一存储器421中,数据例如层的节点数据和连接网络的权重数据。
如果第一存储器421的存储空间大于人工神经网络模型,则可以将人工神经网络模型的所有数据存储在NPU存储器系统420中。在这种情况下,可以去除不需要的在主存储器系统1070和神经网络处理单元400之间的与人工神经网络模型相关的数据发送,但边缘设备1000的初始启动除外。因此,边缘设备1000可以不断地重用存储在NPU存储器系统420中的数据以提供提高神经网络处理单元400的推理速度及降低功耗的效果。
在下文中,将描述人工神经网络模型的数据量大于第一存储器421的数据量的情况。NPU调度器130利用人工神经网络模型结构数据或人工神经网络数据局部性信息,以按确定调度序列将部分的数据(例如层的节点数据和连接网络的权重数据)存储在第一存储器421中。
如果第一存储器421的存储空间不足或剩余存储空间达到特定阈值,则NPU调度器130将数据存储至特定调度序列,并且随着预定调度按顺序完成,可以通过重用已经完成计算的调度数据的一部分,并删除或覆盖未重用的数据来保护第一存储器421的存储空间。NPU调度器130可以分析被保护的存储空间并存储后续调度序列所需的数据。根据上述配置,NPU调度器130可以基于人工神经网络模型的结构数据或人工神经网络数据局部性信息提供调度,而无需使用在传统CPU中使用的调度算法(例如,优先考虑公平性、效率、稳定性、反应时间等的算法)进行调度。因此,即使当第一存储器421的存储空间不足时,由于可以根据人工神经网络模型的结构来确定操作序列,并且可以提前调度所有操作序列,因此具有可以优化NPU存储器系统420的存储器重用的效果。
换句话说,当AI手势识别模型为VGG16卷积人工神经网络模型时,AI手势识别模型可以包括十六个连接的权重数据、对应层的节点数据和根据AI手势识别模型的层结构的操作序列。因此,NPU调度器130可以基于人工神经网络模型的结构数据或人工神经网络数据局部性信息将调度序列确定为例如第一调度到第十六调度。在这种情况下,每个调度可以被配置为执行执行卷积的MAC操作。
此时,NPU调度器130可以检查每一层的节点数据的大小和连接网络的权重数据。因此,NPU调度器130可以为每个调度计算每个推理操作所需的存储器大小。因此,NPU调度器130可以确定可以存储在第一存储器421中的数据。
对于一个具体的示例,当NPU调度器130处理第一调度到第十六调度时,可以计算出从第一调度到第六调度的操作所需的数据量大于第一存储器421的大小。因此,仅对应于第一至第五调度的数据可以从主存储器系统1070存储到第一存储器421。在第一调度完成后,NPU调度器130将第一调度的数据量与第六调度的数据量进行比较,然后可以通过删除或覆盖存储在第一存储器421中的第一调度的数据,将第六调度的数据存储在第一存储器421中。在第二调度完成后,NPU调度器130将第二调度的数据量与第七调度的数据量进行比较,然后可以通过删除或者覆盖存储在第一存储器421中的第二调度的数据将第七调度的数据存入第一存储器421。根据上述配置,具有可以在可用的NPU存储器系统420的存储器限制内根据调度序列将所需数据依次存储在第一存储器421中的效果。特别是,由于根据操作序列依次存储必要的数据,因此具有减少可能由诸如读取和写入存储器之类的操作引起的延迟的效果。
当完成的调度的数据量大于待新存储的调度的数据量时,NPU调度器130可以将新调度的数据存储在第一存储器421中。也就是说,如果第一调度的数据量为500KB,第六调度的数据量为450KB,那么即使第六调度的数据通过删除或覆盖第一调度的数据的方式存储,存储器使用也不会增加。
当完成的调度的数据量小于要新存储的调度的数据量时,NPU调度器130可以不将新调度的数据存储在第一存储器421中。也就是说,如果第一调度的数据量为450KB,第六调度的数据量为850KB,那么即使第一调度的数据被删除或覆盖,也需要额外的450KB的存储器空间。此时,当存储器可用限度为450KB或更小时,NPU调度器130不将第六调度的数据存储在第一存储器421中。另外,如果第二调度的数据量为400KB,由于第一调度和第二调度的数据量之和为850KB。因此,在第二调度完成后,可以通过删除或覆盖第二调度的数据来存储第六调度的数据。
也就是说,神经网络处理单元400的NPU调度器130确定每个调度序列的数据量,并在第一存储器421的可用限度内依次删除、覆盖和/或存储每个调度序列所需的数据。
根据上述配置,可以有效地控制第一存储器421的存储器限度并且防止神经网络处理单元400的存储器溢出。
第二存储器422和第三存储器423可以是第三层的存储器。第三层的存储器可以具有比第二层的存储器更小的存储器大小并且可以具有更高的最大发送速率。
考虑到存储器重用率,神经网络处理单元400的第二存储器422和第三存储器423可以被配置为选择性地存储被存储在第一存储器421中的数据的一部分。即,考虑到存储器重用率,NPU调度器130可以被配置为将存储在第一存储器421中的数据中的一些选择性地存储在第二存储器422和第三存储器423中的一者中。
存储在第二存储器422中的数据的存储器重用率可以高于存储在第三存储器423中的数据的存储器重用率。
例如,人工神经网络模型的网络的权重数据可以直到人工神经网络模型更新才改变。也就是说,当人工神经网络模型的连接网络的权重数据存储在第二存储器422中时,存储的数据可以具有常量特性。然而,根据本公开的实施方案不限于此。
更详细地,当人工神经网络模型以每秒三十帧的速率推理输入图像时,存储在第二存储器422中的连接网络的权重数据可以每秒重用三十次,并且可以每分钟重用一千八百次。
根据上述配置,第二存储器422被配置为存储具有常量特性的数据,从而可以提高存储器重用率,并且可以降低功耗。
此外,当具有常量特性的数据被存储在第二存储器422中时,第一存储器421可以删除重复数据。即,NPU调度器130可以被配置为当常量特性数据存储在第二存储器422中时删除第一存储器421的重复数据。
根据上述配置,由于第二存储器422的值可以固定直到人工神经网络模型被更新,所以可以删除第一存储器421中的重复数据。因此,具有可以提高NPU存储器系统400的存储效率的效果。
存储在第三存储器423中的数据可以具有可重用的变量特性。然而,根据本公开的实施方案不限于此。
例如,人工神经网络模型的特定层的MAC操作值可以被重用作下一调度层的节点数据。也就是说,当人工神经网络模型的层的节点数据存储在第三存储器423中时,存储的数据可能具有重用的变量特性。然而,根据本公开的实施方案不限于此。
根据上述配置,第三存储器423具有可以根据调度序列重用每层的MAC操作值的效果。因此,具有可以提高NPU存储器系统400的存储效率的效果。
第二存储器422和第三存储器423被配置为与寄存器文件RF1至RF12和/或处理元件PE1至PE12通信。如上所述,在根据本公开的另一实施方案的神经网络处理单元300中,寄存器文件RF1至RF12可以配置有具有比NPU存储器系统420更高的最大发送速率和在相同的传送速率下的更低的功耗的存储器。
第一存储器421可以被配置为非易失性存储器,并且第二存储器422和第三存储器423可以被配置为易失性存储器。因此,当在断电后重新启动边缘设备1000时,具有不需要从主存储器系统1070再次提供人工神经网络模型的效果。在这种情况下,寄存器文件RF1到RF12可以配置为易失性存储器。然而,根据本公开的实施方案不限于此。根据上述配置,神经网络处理单元100具有在人工神经网络模型的推理操作期间降低DRAM的功耗的效果。
第一存储器421、第二存储器422和第三存储器423可以被配置为非易失性存储器。因此,当在断电后重新启动边缘设备1000时,具有不需要从主存储器系统1070再次提供人工神经网络模型的效果。在这种情况下,寄存器文件RF1到RF12可以配置为易失性存储器。然而,根据本公开的实施方案不限于此。根据上述配置,神经网络处理单元100具有在人工神经网络模型的推理操作期间降低DRAM的功耗的效果。
根据上述配置,当存储器在功耗和操作速度方面更接近处理元件时,提高存储器重用率更有效。因此,NPU调度器130可以执行调度,使得存储在层的离处理元件最远的存储器中的数据的重用率通过利用人工神经网络结构数据或者人工神经网络数据局部性信息以及神经网络处理单元的结构数据和存储分层结构而朝向离处理元件最近的层的存储器增加。
根据本公开的实施方案的神经网络处理单元100的存储器的分层结构可以不限于NPU存储器系统420,并且可以扩展到边缘设备1000的主存储器系统1070。在这种情况下,主存储器系统1070可以是第一层的存储器。第一存储器421可以是第二层的存储器。第二存储器422和第三存储器423可以是第三层的存储器。寄存器文件RF1至RF12可以是第四层的存储器。
神经网络处理单元400可以操作以基于神经网络处理单元400的结构数据,按照具有高存储器重用率的数据的顺序在与处理元件相邻的层的存储器中存储。
也就是说,根据本公开的实施方案不限于主存储器系统1070,并且神经网络处理单元400可以被配置为包括主存储器系统1070。
图11是根据本公开的实施方案图示能够优化可由神经网络处理单元处理的人工神经网络模型的优化系统的示意性概念图。
优化系统1500可以被配置为相对于神经网络处理单元100优化在神经网络处理单元100中驱动的人工神经网络模型。
优化系统1500是根据本公开的实施方案的边缘设备1000的单独的外部系统并且是指被配置为优化在神经网络处理单元100中使用的人工神经网络模型的系统。因此,优化系统1500可以被称为神经网络处理单元100的专用人工神经网络模型仿真器或人工神经网络模型模拟器。
详细地说,传统人工神经网络模型是在不考虑神经网络处理单元100和边缘设备1000的硬件特性的情况下训练的人工神经网络模型。也就是说,传统人工神经网络模型是在不考虑神经网络处理单元100和边缘设备1000的硬件限制的情况下训练的。因此,在处理传统人工神经网络模型时,可能无法优化神经网络处理单元中的处理性能。例如,处理性能的下降可能是由于边缘设备的存储器管理效率低下和人工神经网络模型的大量计算处理导致的。因此,处理传统人工神经网络模型的传统边缘设备可能存在功耗高或处理速度低的问题。
根据本公开的实施方案的优化系统1500被配置为通过使用人工神经网络模型结构数据或人工神经网络数据局部性信息以及神经网络处理单元100和边缘设备1000的硬件特征数据来优化人工神经网络模型。
因此,当在包括神经网络处理单元100的边缘设备1000中处理优化的人工神经网络模型时,与未优化的人工神经网络模型相比,具有可以提供相对改进的性能和降低的功耗的效果。
优化系统1500可以被配置为包括人工神经网络模型读取模块1510、优化模块1520、人工神经网络模型评估模块1530和人工神经网络模型更新模块1540。
这里,模块可以是由硬件构成的模块、由固件构成的模块或由软件构成的模块,并且优化系统1500不限于硬件、固件或软件。
优化系统1500可以被配置为与边缘设备1000通信。然而,不限于此,优化系统1500可以被配置为分别接收边缘设备1000的数据和包括在边缘设备1000中的神经网络处理单元100的数据。
优化系统1500可以被配置为接收人工神经网络模型的结构数据或人工神经网络数据局部性信息,以进行优化。
人工神经网络模型的结构数据或人工神经网络数据局部性信息可以被配置为包括人工神经网络模型的层的节点数据、连接网络的权重数据、层的排列结构数据,或人工神经网络模型的人工神经网络数据局部性信息、激活图和权重内核中的至少一者。
这里,权重内核可以是用于卷积以在扫描输入数据的特定部分的同时提取其特征的权重内核。权重内核遍历输入数据的每个通道,计算卷积,然后为每个通道生成特征图。
优化系统1500可以被配置为进一步接收神经网络处理单元100的结构数据。然而,不限于此。
神经网络处理单元100的结构数据可以被配置为包括NPU存储器系统130的存储器大小、NPU存储器系统130的分层结构、NPU存储器系统130的分层结构的每个存储器的最大传送速率和访问延迟、处理元件PE1至PE12的数量、以及处理元件PE1至PE12的运算符结构中的至少一种数据。
优化系统1500可以被配置为进一步接收边缘设备1000的主存储器系统1070的结构数据。然而,不限于此。
存储器系统1070的结构数据可以被配置为包括存储器系统1070的存储器大小、存储器系统1070的分层结构、存储器系统1070的访问延迟和存储器系统1070的最大传送速率中的至少一者。
优化系统1500可以被配置为提供模拟功能,该模拟功能可以基于人工神经网络模型的结构数据、神经网络处理单元100的结构数据以及边缘设备1000的主存储器系统1070预测人工神经网络模型当其在边缘设备1000上操作时的性能。也就是说,优化系统1500可以是可以在边缘设备1000中操作的人工神经网络模型的仿真器或模拟器。
优化系统1500可以被配置为基于人工神经网络模型的结构数据或人工神经网络数据局部性信息、神经网络处理单元100的结构数据、以及边缘设备1000的主存储器系统1070的结构数据来调整人工神经网络模型的各种值。因此,优化系统1500可以被配置为轻量化人工神经网络模型,从而针对边缘设备1000优化人工神经网络模型。
例如,优化系统1500可以从边缘设备1000和神经网络处理单元100接收各种数据以模拟要被驱动的人工神经网络模型。优化系统1500可以通过模拟相应的人工神经网络模型来确定人工神经网络模型是否可以在边缘设备1000中毫不费力地操作。当特定人工神经网络模型通过使用例如边缘设备1000和神经网络处理单元100的算术处理能力、可用存储器带宽、最大带宽、存储器访问延迟等数据以及人工神经网络模型的各层的计算量和存储器使用量等数据而在包括特定神经网络处理单元的特定边缘设备上操作时,优化系统1500可以提供诸如计算时间、每秒推理次数、硬件资源使用、推理精度和功耗之类的模拟结果。
例如,当确定特定人工神经网络模型难以在边缘设备1000中平稳操作时,优化系统1500可以被配置为通过优化模块1520优化人工神经网络模型。
例如,优化系统1500可以被配置为通过提供各种成本函数将人工神经网络模型优化到特定条件。
例如,优化系统1500可以被配置为轻量化人工神经网络模型的每一层的权重数据和节点数据,以满足使推理精度的下降保持在特定值以上的条件。
例如,优化系统1500可以被配置为轻量化人工神经网络模型的每一层的权重数据和节点数据,使得人工神经网络模型的数据量变得小于或等于特定值并且满足推理精度下降最小的条件。
人工神经网络模型读取模块1510被配置成从外部接收待优化的人工神经网络模型。这里,待优化的人工神经网络模型可以是由想要使用神经网络处理单元100的用户训练的常规人工神经网络模型。
人工神经网络模型读取模块1510可被配置为分析待优化的人工神经网络模型以提取人工神经网络模型结构数据或人工神经网络数据局部性信息。然而,不限于此,并且人工神经网络模型读取模块1510可以被配置为从外部接收人工神经网络模型结构数据或人工神经网络数据局部性信息。
人工神经网络模型读取模块1510可以被配置为附加地接收神经网络处理单元100的结构数据。
人工神经网络模型读取模块1510可以被配置为附加地接收边缘设备1000的主存储器系统1070的结构数据。
优化模块1520可以基于从人工神经网络模型读取模块1510提供的人工神经网络模型结构数据或人工神经网络数据局部性信息来优化人工神经网络模型。
优化模块1520可以被配置为进一步从人工神经网络模型读取模块1510接收神经网络处理单元100的结构数据和存储器系统1070的结构数据中的至少一者。在这种情况下,优化模块1520可以基于人工神经网络模型的结构数据或人工神经网络数据局部性信息、神经网络处理单元100的结构数据、人工神经网络模型的结构数据或人工神经网络数据局部性信息以及从人工神经网络模型读取模块1510提供的在存储器系统1070的结构数据中的附加结构数据对人工神经网络模型进行优化。
优化模块1520可以被配置为选择性地利用量化算法、剪枝算法、再训练算法、量化感知再训练算法、模型压缩算法和基于AI的模型优化算法。
剪枝算法是一种可以减少人工神经网络模型的计算量的技术。剪枝算法可以被配置为将人工神经网络模型的所有层的权重数据和/或权重内核中的接近于零的小值替换为零。当特定权重数据通过剪枝算法替换为零时,剪枝算法可以提供与断开具有相应权重数据的神经网络模型基本相同的效果。
参考图3,根据本公开的实施方案的神经网络处理单元100的第一处理元件PE1的乘法器111可以处理卷积矩阵乘法。如果输入到乘法器111的第一输入单元或第二输入单元的值为零,则无论其他运算对象的值如何,乘法器111的结果值都为零。因此,第一处理元件PE1可以被配置为确定输入到乘法器111的至少一个输入单元的数据为零并且跳过相应的乘法运算的情况。
根据上述配置,累加器113的L次循环的计数器值可以减少零数据的数量。即,具有可以跳过乘法器111的不必要的乘法运算和随后的加法器112的不必要的加法运算以及累加器113的不必要的累加运算的效果。此外,随着剪枝算法进一步增加零数据,神经网络处理单元100的处理单元阵列110的计算效率也相应提高,因而具有可提高计算处理速度的效果。
剪枝算法可以被配置为通过逐渐增加或减少阈值水平来评估精度,用于在人工神经网络模型的所有层的权重数据和/或权重内核中将接近零的小值替换为零。例如,剪枝算法可以被配置为以0.01或更小的权重数据被零替换,然后0.02或更小的权重数据被零替换的方式来增加阈值的水平。当阈值的水平增加时,存在用零代替的权重数据转换率可能增加的效果。
人工神经网络模型评估模块1530可以评估应用了剪枝算法的人工神经网络模型。如果评估的推理精度高于目标推理精度,则人工神经网络模型评估模块1530被配置为指示优化模块1520逐步提高人工神经网络模型的剪枝算法的替代阈值水平。每当替代阈值发生变化时,人工神经网络模型评估模块1530被配置为评估推理精度。人工神经网络模型评估模块1530可以被配置为通过反复指示剪枝算法来逐步减少人工神经网络模型的计算量,直到评估的推理精度低于目标推理精度。在这种情况下,人工神经网络模型评估模块1530可以被配置为存储和评估选择性应用阈值的各种版本的人工神经网络模型。
根据上述配置,优化系统1500具有以下效果:在评估和比较剪枝后的人工神经网络模型的各种版本的同时,生成具有用零代替的权重数据的相对高的转换率的人工神经网络模型,同时最小化人工神经网络模型的精度的降低。
剪枝算法可以被配置为增加或减少阈值的水平,所述阈值用于替换人工神经网络模型的所有层中的至少一个连接网络的权重数据和/或权重内核中接近零的小值。例如,剪枝算法可以被配置为通过以下方式来提高特定层的权重数据的阈值的水平:将特定层的0.01或更小的权重数据替换为零并评估结果,并且然后将相应层的0.02或更小的权重数据替换为零以进行评估。当特定层的权重数据的阈值的水平提高时,具有在特定层中用零代替的权重数据的转换率会提高的效果。
剪枝算法可以被配置为优先剪枝多个层的权重数据中的特定层的权重数据。
例如,剪枝算法可以优先选择并剪枝具有多个层的权重数据中的最大数据量的层。
例如,剪枝算法可以在多个层的权重数据中按照最大数据量的顺序优先选择和剪枝一些层的权重数据。例如,可以优先剪枝具有最大数据量的上三层的权重数据。
换句话说,如果使人工神经网络模型的各层中具有最大数据量的层的权重数据的剪枝阈值水平高于具有最小数据量的层的权重数据的剪枝阈值水平,则具有最大数据量的层的权重数据转换率会高于具有最小数据量的层的权重数据转换率。
因此,在剪枝后的人工神经网络模型中,具有大数据量的层的权重数据转换率会高于具有小数据量的层的权重数据转换率。
根据上述配置,对数据量大的层的权重数据的剪枝程度会相对较大,从而可以进一步降低人工神经网络模型的总计算量,功耗可以减少,并且可以最小化推理精度的下降。
例如,剪枝算法可以优先剪枝多个层的权重数据中计算量最大的层。
例如,剪枝算法可以在多个层的权重数据中按照最大计算量的顺序优先选择和剪枝一些层的权重数据。
例如,剪枝算法可以优先剪枝计算量最大的前三层的权重数据。
换句话说,当人工神经网络模型的各层中的一层被剪枝到特定的阈值水平时,相应的层会影响所有其他层的操作。也就是说,后剪枝的层的优化程度可以根据首先剪枝的层而变化。
换句话说,如果先对计算量小或数据量小但对剪枝敏感的层的权重数据进行剪枝,则计算量最大或数据量最大的层的权重数据剪枝的效率会减小。
换句话说,如果首先对计算量大或数据量大且对剪枝不太敏感的层的权重数据进行剪枝,则即使计算量小或者数据量小的层的权重数据剪枝的效率下降,也可以提高人工神经网络模型的整体剪枝效率。
换句话说,如果人工神经网络模型的各层中计算量最大的层的权重数据的剪枝阈值水平设置为高于计算量最小的层的权重数据的剪枝阈值水平,则计算量最大的层的权重数据转换率可以高于计算量最小的层的权重数据转换率。
因此,人工神经网络模型的计算量大的层的权重数据转换率会高于计算量小的层的权重数据转换率。
如果评估的关于剪枝层的推理精度高于目标推理精度,则人工神经网络模型评估模块1530可以被配置为命令优化模块1520逐渐提高被剪枝的层的权重数据的阈值的水平。每当阈值发生变化时,人工神经网络模型评估模块1530配置为评估应用了剪枝层的神经网络模型的推理精度。人工神经网络模型评估模块1530可以被配置成通过反复应用剪枝算法来逐渐减少人工神经网络模型的计算量,直到评估的推理精度低于目标推理精度。在这种情况下,人工神经网络模型评估模块1530可以被配置为存储和评估选择性地应用替代阈值的各种版本的人工神经网络模型。
当特定层的权重数据的剪枝被优化时,优化系统1500终止相应层的剪枝并且最终确定优化层的权重数据。优化系统1500然后可以以开始剪枝另一层的权重数据的方式剪枝人工神经网络模型的每一层的权重数据。因此,具有可以针对每一层优化人工神经网络模型的每一层的权重数据的剪枝程度的效果。
换句话说,如果人工神经网络模型的所有层的权重数据的剪枝程度相同,则人工神经网络模型的推理精度的下降程度会显著提高。但是,在这种情况下,存在的缺点是无法通过剪枝算法确定哪一层降低了推理精度。
然而,根据上述配置,由于可以在对人工神经网络模型的每个特定层选择性地改变剪枝程度的同时评估人工神经网络模型的推理精度,所以具有如下效果:通过应用比对剪枝敏感的层的剪枝程度高的对剪枝不敏感的层的剪枝程度,可以针对每一层优化人工神经网络模型的剪枝程度。
换句话说,在例如VGG16之类的人工神经网络模型中,即使90%以上的权重数据被替换为零,也可以实现人工神经网络模型的推理精度几乎无损的情况。因此,由于剪枝算法,具有可以在没有实际处理元件的操作的情况下执行整个推理操作的大约90%的效果。因此,应用剪枝算法的人工神经网络模型具有以下效果:减少神经网络处理单元100的实际计算量,而不会大幅降低推理精度,从而降低功耗,提高计算速度。
换句话说,在例如VGG16之类的人工神经网络模型中,即使使用ReLU激活函数的激活图有60%以上被替换为零,也可以实现人工神经网络模型的推理精度几乎无损的情况。
量化算法是一种可以减少人工神经网络模型的数据量的技术。量化算法可以被配置为选择性地减少人工神经网络模型的每一层的节点数据和每个连接网络的权重数据的位数。当特定层的节点数据和特定权重数据的位数通过量化算法减少时,量化算法可以减少存储在NPU存储器系统120中的人工神经网络模型的数据量,并且可以提供以下效果:减小输入到处理元件的每个输入单元的输入数据的大小。
参考图3,对于根据本公开的实施方案的神经网络处理单元100的第一处理元件PE1,第一输入单元可以被配置为接收量化的N位数据,第二输入单元可以被配置为接收量化的M位数据。当第一处理元件PE1的乘法器111的各个输入单元接收到量化位数的数据时,相应的加法器112和累加器113也可以被配置成对量化位数的数据执行运算。
例如,第一输入单元可以被配置为接收被量化为N位的层的节点数据,并且第二输入单元可以被配置为接收被量化为M位的层的权重数据。因此,输入到第一输入单元的数据的位数可以不同于输入到第二输入单元的数据的位数。例如,可以将五位数据输入到第一输入单元并且可以将七位数据输入到第二输入单元。
参考图3和图5,位量化单元114的输出数据可以是下一层的输入数据。因此,如果下一层的节点数据已经被量化为特定的位数,则位量化单元114可以被配置为相应地转换输出数据的位数。
参考图4,可以看出,处理元件的乘法器111和加法器112的功耗可以根据量化程度来降低。
优化模块1520可以被配置为基于NPU存储器系统120的存储器大小量化人工神经网络模型的特定层的节点数据、特定层的权重数据、特定权重内核和/或特定特征图,以及人工神经网络模型评估模块1530可以被配置为评估每个量化节点数据、权重数据、权重内核和/或特征图的量化数据的大小。目标数据的大小可以基于NPU存储器系统120的存储大小来确定。因此,优化模块1520可以被配置为逐渐减少待进行量化的人工神经网络模型的特定层的节点数据和/或权重数据的位数,以达到目标数据量。人工神经网络模型的特定层的节点数据量、特定层的权重数据量、特定权重内核的数据量和/或特定特征图的数据量可以量化为小于NPU存储器系统120的存储器大小。此时,人工神经网络模型评估模块1520可以被配置为评估小于NPU存储器系统120的存储器大小的量化节点数据、权重数据、权重核和/或特征图的推理精度。另外,当人工神经网络模型的特定数据的大小小于NPU存储器系统120的存储器大小时,具有以下效果:可以仅使用NPU存储器系统120的内部存储器有效地执行推理操作。
优化模块1520可以被配置为基于NPU存储器系统120的存储器大小和主存储器系统1070的存储器大小来量化人工神经网络模型的特定层的节点数据、特定层的权重数据、特定权重内核和/或特定特征图,以及人工神经网络模型评估模块1530可以被配置为评估每个量化节点数据、权重数据、权重内核和/或特征图的量化数据的大小。目标数据的大小可以基于NPU存储器系统120和主存储器系统1070的存储大小来确定。因此,优化模块1520可以被配置为逐渐减少待进行量化的人工神经网络模型的特定层的节点数据和/或权重数据的位数以达到目标数据量。人工神经网络模型的特定层的节点数据量、特定层的权重数据量、特定权重内核的数据量和/或特定特征图的数据量可以量化为小于NPU存储器系统120的存储器大小和/或主存储器系统1070的存储器大小。此时,人工神经网络模型评估模块1520被配置为评估被量化为小于NPU存储器系统120的存储器大小和/或主存储器系统1070的存储器大小的节点数据、权重数据、权重内核和/或特征图的推理精度。换句话说,当人工神经网络模型的特定数据的大小小于NPU存储器系统120的存储器大小和/或主存储器系统1070的存储器大小时,具有以下效果:可以通过选择性地使用NPU存储器系统120的存储器以及主存储器系统1070的存储器有效地执行推理操作。
边缘设备1000的主存储器系统1070可以被配置为包括片上存储器和/或片外存储器。
神经网络处理单元100可以被配置为基于主存储器系统1070的每个存储器的最大传送速率和访问延迟信息而将人工神经网络模型的数据划分并且将其存储在NPU存储器系统120和主存储器系统1070中。
例如,当特定数据的大小小于NPU存储器系统120的存储器大小时,数据被存储在NPU存储器系统120中,并且大于NPU存储器系统120的存储器大小的数据可以存储在主存储器系统1070中。
例如,具有高使用频率和小数据量的权重内核可以存储在NPU存储器系统120中,并且特征图可以存储在主存储器系统1070中。
当人工神经网络模型的例如权重数据、节点数据、输入数据等信息存储在每个存储器中,并且神经网络处理单元100参考例如可用存储器带宽、最大存储器带宽以及每个存储器的存储器访问延迟等信息时,可以提高存储器管理效率,从而可以提高神经网络处理单元100的操作速度。
当应用了量化算法的人工神经网络模型被提供给边缘设备1000的神经网络处理单元100时,优化系统1500可以被配置为提供量化人工神经网络模型的每一层的节点数据和每一层的权重数据的量化位数数据。
当神经网络处理单元100将每个量化层的节点数据和每个量化层的权重数据存储在NPU存储器系统120中时,其可以被配置为存储在NPU存储器系统120中作为单独量化的位数。详细地,传统存储器可以被配置为以8位、16位、32位、64位或128位为单位存储数据。然而,NPU存储器系统120可以被配置为将人工神经网络模型的权重数据和节点数据存储为量化的位数。
例如,量化为三位的层的权重数据可以以三位为单位存储在NPU存储器系统120或主存储器系统1070中。量化为七位的层的节点数据可以以七位为单位存储在NPU存储器系统120中。
例如,NPU存储器系统120可以被配置为将被量化为四位的八个权重数据以32位为单位存储在存储器单元中。
因此,神经网络处理单元100具有以下效果:将量化数据有效地存储在NPU存储器系统120中,因为它具有针对每一层的量化位数数据。
根据上述配置,随着第一处理元件PE1的每个输入单元的数据的位数减少,可以减少存储器使用和计算量。此外,由于数据可以在NPU存储器系统120或主存储器系统1070中以量化的位数存储,因此具有可以提高存储器使用效率的效果。
量化算法可以被配置为评估推理精度,同时逐渐减少人工神经网络模型的所有层的节点数据和权重数据的位数。例如,量化算法可以被配置为将所有层的节点数据和权重数据的位数从32位减少到31位,再从31位减少到30位。在这种情况下,位数可以在其中每一层的推理精度基本上不降低的范围内被量化。当位数减少时,具有可以减少每一层的节点数据和权重数据的大小的效果。因此,具有可以减少人工神经网络模型的数据量的效果。
人工神经网络模型评估模块1530可以评估应用了量化算法的人工神经网络模型。如果评估的推理精度高于目标推理精度,则人工神经网络模型评估模块1530可以被配置成指示优化模块1520逐步减少人工神经网络模型的量化算法的位数。每当位数减少时,人工神经网络模型评估模块1530被配置为评估推理精度。人工神经网络模型评估模块1530可以被配置为通过重复指示量化算法来逐渐减小人工神经网络模型的数据量,直到评估的推理精度低于目标推理精度。在这种情况下,人工神经网络模型评估模块1530可以被配置为存储和评估选择性地应用了位数的人工神经网络模型的各种版本。
根据上述配置,具有以下效果:优化系统1500可以生成人工神经网络模型,其中,在最大限度地减少人工神经网络模型推理精度的下降的同时,所有层的节点数据和权重数据的位数被最小化,同时评估和比较各种版本的量化的人工神经网络模型。
量化算法可以被配置为减少人工神经网络模型的所有层中的至少一个连接网络的节点数据和/或权重数据的位数。例如,量化算法可以被配置为通过以下方式来减少特定层的节点数据的位数:将特定层的节点数据从32位减少到31位并评估,并且将对应层的节点数据从31位减少到30位并评估。当特定层的节点数据和/或权重数据的位数减少时,具有可以增加特定层的量化程度的效果。量化的位数可以在减少特定位单位的同时进行评估。这里,特定位单位可以是一位或更多位,并且不受限于位数。在这种情况下,可以在所评估的推理精度基本上不劣化的范围内单独减少每一层的位数。
量化算法可以被配置为优先量化多个层的节点数据和/或权重数据中的特定层的节点数据和/或权重数据。
例如,量化算法可以优先选择和量化多个层的节点数据和/或权重数据中具有最大数据量的层的节点数据和/或权重数据。
例如,量化算法可以在多个层的节点数据和/或权重数据中按照最大数据量的顺序优先选择和量化一些层的节点数据和/或权重数据。例如,可以优先量化具有最大数据量的上三层的权重数据。
换句话说,当人工神经网络模型的各层中数据量最大的层的节点数据和/或权重数据的量化程度高于数据量最小的层的节点数据和/或权重数据的量化程度,数据量最大的层的量化程度可以高于数据量最小的层的量化程度。
因此,在量化的人工神经网络模型中,具有大的数据量的层的量化程度可能高于具有小的数据量的层的量化程度。
根据上述配置,具有大的数据的层的节点数据和/或权重数据的量化程度可以相对较高。结果,人工神经网络模型的整体大小可以做得更轻,功耗可以降低,推理精度的下降可以最小化。
量化算法可以被配置为基于人工神经网络模型的结构数据或人工神经网络数据局部性信息来执行优化。量化算法的量化顺序可以基于人工神经网络模型的结构数据或人工神经网络数据局部性信息根据各种标准来确定。人工神经网络模型评估模块1530可以被配置为基于神经网络处理单元100的结构数据执行优化。
例如,量化算法可以优先量化多个层的节点数据和/或权重数据中计算量最大的层。
例如,量化算法可以在多个层的节点数据和/或权重数据中按照计算量最大的顺序优先选择和量化一些层的节点数据和/或权重数据。
例如,量化算法可以优先量化具有最大计算量的上层组的层的节点数据和/或权重数据。上层组的数量可以是例如三个、五个等。
例如,量化算法可以优先量化使用频率高的权重数据。例如,在VGG16的人工神经网络模型的情况下,可以使用特定层的权重数据作为另一层的权重数据。
换句话说,当人工神经网络模型的各层中的一层被量化为特定的位数时,量化的层会影响所有其他层的操作。即,后量化的层的优化程度可以根据首先量化的层而变化。
换句话说,如果对量化敏感的层的节点数据和/或权重数据尽管计算量小或数据量小而被先量化,则计算量最大或数据量最大的层的节点数据和/或权重数据的量化效率会降低。
换句话说,如果首先量化计算量大或数据量大且对剪枝不太敏感的层的节点数据和/或权重数据,则即使计算量小或数据量小的层的节点数据和/或权重数据的量化效率减少,也可以提高人工神经网络模型的整体量化效率。
换句话说,当人工神经网络模型的各层中计算量最大的层的节点数据和/或权重数据的量化程度被设置为高于计算量最小的层的节点数据和/或权重数据的量化程度时,计算量最大的层的数据的位数可以小于计算量最小的层的数据的位数。这里,特定层的数据的位数可以是对应层的节点数据的位数与权重数据的位数之和。
因此,人工神经网络模型的计算量大的层的量化程度会高于计算量小的层的量化程度。
如果量化的层的评估的推理精度高于目标推理精度,则人工神经网络模型评估模块1530可以被配置为逐渐减少由优化模块1520量化的层的节点数据和/或权重数据的位数。如果位数减少,则人工神经网络模型评估模块1530被配置为评估应用了量化的层的人工神经网络模型的推理精度。人工神经网络模型评估模块1530可以被配置为通过重复应用量化算法来逐渐减小人工神经网络模型的数据量,直到评估的推理精度低于目标推理精度。在这种情况下,人工神经网络模型评估模块1530可以被配置为存储和评估选择性地应用了位数的人工神经网络模型的各种版本。
如果被评估的层的数据量大于该层的目标数据量,则人工神经网络模型评估模块1530可以被配置为在重复减少位数的动作的同时评估该层的推理精度和数据量。特定量化层的最终位数可以被确定为使得该层的数据量变得小于该层的目标数据量的位数。如果评估的推理精度低于目标推理精度,则最终的位数可以确定为在评估的推理精度变得低于目标推理精度之前的位数。
当特定层的节点数据和/或权重数据的量化被优化时,优化系统1500终止相应层的量化并且固定优化层的节点数据和/或权重数据的位数。接下来,优化系统1500然后可以以开始量化其他层的节点数据和/或权重数据的方式来量化人工神经网络模型的每一层的节点数据和/或权重数据。因此,具有可以针对每一层优化人工神经网络模型的每一层的节点数据和/或权重数据的量化程度的效果。也就是说,人工神经网络模型的每一层的节点数据的量化程度都有可以针对每一层进行优化的效果。也就是说,人工神经网络模型的每一层的权重数据的量化程度都有可以针对每一层进行优化的效果。
换句话说,如果人工神经网络模型的所有层的节点数据和/或权重数据的量化是相同的,则人工神经网络模型的推理精度的退化程度可能会显著增加。但是,在这种情况下,存在的缺点是无法通过量化算法确定哪一层降低了推理精度。
然而,根据上述配置,由于可以在选择性地改变人工神经网络模型的特定层的每个节点数据和/或权重数据的量化程度的同时评估人工神经网络模型的推理精度,因而具有以下效果:通过应用比对量化敏感的层的量化程度高的对量化不敏感的层的量化程度,可以针对每一层的节点数据和/或权重数据优化人工神经网络模型的量化水平。
人工神经网络模型评估模块1530可以被配置为基于边缘设备1000的主存储器系统1070的结构数据执行优化。
优化模块1520基于存储器系统1070的存储器大小来量化人工神经网络模型的特定层的节点数据和/或特定层的权重数据,并且人工神经网络模型评估模块1530可以被配置为针对每个量化层来评估量化层的数据量。层的目标数据量可以基于NPU存储器系统120的存储器大小来确定。
如果被评估层的数据量大于该层的目标数据量,则人工神经网络模型评估模块1530可以被配置为在重复减少特定层的位数的动作的同时评估该层的推理精度和数据量两者。特定量化层的最终位数可以被确定为使得该层的数据量变得小于该层的目标数据量的位数。如果评估的推理低于目标推理精度,则最终的位数可以确定为在评估的推理精度低于目标推理精度之前的位数。
量化的人工神经网络模型的每一层的节点数据和每一层的权重数据可被配置为具有单独优化的位数。根据上述配置,由于量化的人工神经网络模型的每一层的节点数据和每一层的权重数据被单独量化,推理精度被单独评估,因此具有以下效果:每一层的节点数据和每一层的权重数据都可以具有单独优化的位数,而不会显著降低人工神经网络模型的推理精度。
另外,由于可以考虑到神经网络处理单元100和/或边缘设备1000的硬件特性来量化人工神经网络模型,因此存在以下效果:可以针对神经网络处理单元100和/或边缘设备1000进行优化。
在下文中,将描述用于使用量化算法来优化人工神经网络模型的方法的示例。
优化系统1500可以通过人工神经网络模型读取模块1510提供要被量化的人工神经网络模型。
优化系统1500可以被配置为分析要优化的人工神经网络模型的结构数据或人工神经网络数据局部性信息。此外,优化系统1500可以被配置为进一步分析待优化的人工神经网络模型结构数据或人工神经网络数据局部性信息和神经网络处理单元100的结构数据。进一步地,优化系统1500可以被配置为进一步分析待优化的人工神经网络模型结构数据或人工神经网络数据局部性信息、神经网络处理单元100的结构数据、以及边缘设备1000的结构数据。
上述结构数据或人工神经网络数据局部信息分析可以在人工神经网络模型读取模块1510、优化模块1520和优化系统1500的人工神经网络模型评估模块1530中的一者中实现。这里,将描述优化模块1520分析结构数据或人工神经网络数据局部性信息中的至少一个的示例,但本公开不限于此。
优化模块1520可以被配置为将量化算法应用于待优化的人工神经网络模型。
例如,优化模块1520可以被配置为执行量化算法的分组策略。分组策略可以是根据特定标准对人工神经网络模型的结构数据或人工神经网络数据局部性信息中的量化数据进行分组的策略。
也就是说,量化算法可以对具有特征或公分母的数据进行分组和量化。在这种情况下,可以提高量化算法的位数减少程度,并且可以最小化推理精度的下降。
分组策略可以细分为第一分组策略、第二分组策略、第三分组策略和第四分组策略。
第一分组策略是基于人工神经网络模型的操作序列或调度序列进行分组的策略。优化系统1500可以通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来分析人工神经网络模型的操作序列。因此,选择第一分组策略时,量化序列可以通过对人工神经网络模型的每一层或权重内核进行分组来确定。
例如,第一分组策略可以通过对至少一个层进行分组来确定量化序列。更详细地,例如,可以对至少一层的节点数据和/或权重数据进行分组。在这种情况下,至少一层的节点数据和/或权重数据可以按预定数量的位进行分组和量化。也就是说,可以根据每个被分析的组的操作序列对一层或多层进行量化。
例如,第一分组策略可以通过对至少一个权重内核进行分组来确定量化序列。更详细地,例如,可以对至少一个权重内核和/或特征图进行分组。在这种情况下,至少一个权重内核和/或特征图可以按预定位数进行分组和量化。即,可以根据每个被分析的组的操作序列对一个权重内核或多个权重内核进行量化。
第一分组策略的原因是,在特定人工神经网络模型的情况下,操作序列中的层越早,量化过程中推理精度的下降越大。在这种情况下,如果在优先量化可能对量化敏感的位于前面的层或卷积的同时,预先验证量化导致的推理精度下降,则可以提高放在后面的量化不敏感层或卷积的量化程度,同时最小化量化人工神经网络模型的推理精度的降低。然而,本公开不限于此,在具体的人工神经网络模型中,设置在后面的层可能对量化更敏感。
第二分组策略是基于人工神经网络模型的计算量大小的分组策略。优化系统1500可以通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来分析人工神经网络模型的计算量。因此,在选择第二分组策略时,可以通过对人工神经网络模型的分层或加权核进行分组来确定量化序列。
例如,第二分组策略可以通过对至少一层进行分组来确定量化序列。更详细地,例如,可以对至少一层的节点数据和/或权重数据进行分组。在这种情况下,至少一层的节点数据和/或权重数据可以按预定的位数进行分组和量化。也就是说,可以根据每个分析组的计算量的顺序对一层或多层进行量化。
例如,第二分组策略可以通过对至少一个权重内核进行分组来确定量化序列。更详细地,例如,可以对至少一个权重内核和/或特征图进行分组。在这种情况下,至少一个权重内核和/或特征图可以按预定的位数进行分组和量化。即,可以根据每个分析组的计算量的顺序对一个权重核或多个权重核进行量化。
第二分组策略的原因是,在特定人工神经网络模型的情况下,每层或每个加权内核的计算量差异可能非常大。在这种情况下,如果先对计算量大的层或卷积进行量化,并预先验证量化导致的推理精度下降,则可以在减少计算量的同时,将量化后的人工神经网络模型的推理精度的下降最小化。然而,本公开不限于此。
第三分组策略是基于人工神经网络模型的存储器使用大小的分组策略。优化系统1500可以通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来分析人工神经网络模型的存储器使用大小。因此,选择第三个分组策略时,量化序列可以通过人工神经网络模型的层或权重内核分组来确定。
例如,第三分组策略可以通过对至少一层进行分组来确定量化序列。更详细地,例如,可以对至少一层的节点数据和/或权重数据进行分组。在这种情况下,至少一层的节点数据和/或权重数据可以按预定位数进行分组和量化。即,可以根据每个分析组的存储器使用大小的序列对一层或多层进行量化。
例如,第三分组策略可以通过对至少一个权重内核进行分组来确定量化序列。更详细地,例如,可以对至少一个权重内核和/或特征图进行分组。在这种情况下,至少一个权重内核和/或特征图可以按预定位数进行分组和量化。也就是说,可以根据每个分析组的存储器使用大小的序列对一个权重内核或多个权重内核进行量化。
第三组策略的原因是,在特定人工神经网络模型的情况下,对于每一层或每个加权内核,存储器使用的大小差异可能非常大。在这种情况下,如果先对存储器使用的大小较大的层或卷积进行量化,并提前验证量化导致的推理精度下降,则可以在减少存储器使用的同时,最大限度地减少量化后的人工神经网络模型的推理精度的降低。然而,本公开不限于此。
第四分组策略是用于选择性地应用第一至第三分组策略的策略。由于上述策略中的每一个都可能具有优点和缺点,因此可以根据人工神经网络模型的特性选择性地使用第一至第三分组策略。例如,在特定的人工神经网络模型的情况下,作为第一优先级,可以按照存储器使用大小来确定量化序列。然而,作为第二优先级,可以按照计算量的顺序重新调整量化序列。另外,作为第三优先级,可以在操作序列中重新排列量化序列。当每个分组策略被组合和应用时,优化系统1500可以被配置为通过给每个分组策略权重值来提供各种组合的分组策略。
优化系统1500根据从上述分组策略中选择的策略完成用于人工神经网络模型量化的数据分组,并且可以顺序量化有序数据组。
优化系统1500被配置为根据分组策略顺序量化有序分组数据。量化算法可以根据量化程度进行量化。当量化程度为1时,分组的数据可以被量化一位。如果量化程度为二,则分组的数据可以被量化为两位。即,量化程度可以是一或更大的整数。
优化模块1520可以选择性地应用量化感知训练算法以提高应用量化的人工神经网络模型的推理精度。量化感知训练算法对数据组进行量化,然后执行重新训练,以补偿人工神经网络模型因量化而导致的推理精度下降。
人工神经网络模型评估模块1530被配置为评估由分组策略确定的包括被量化的数据组的人工神经网络模型的推理精度、存储器使用需求、功耗、计算性能,例如每秒的推理次数等。例如,人工神经网络模型评估模块1530可以被配置为通过各种成本函数提供评估结果。
如果包括被量化的数据组的人工神经网络模型的评估推理精度高于人工神经网络模型评估模块1530中设置的目标推理精度,则人工神经网络模型评估模块1530指示优化模块1520进一步减少包括被量化的数据组的人工神经网络模型的位数。然后,再次评估包括用进一步减少的位数量化的数据组的人工神经网络模型的推理精度。被量化的数据组的上述量化可以被重复,直到人工神经网络模型的评估的推理精度变得小于目标推理精度。
如果包括被量化的数据组的人工神经网络模型的评估推理精度小于神经网络模型评估模块1530中设置的目标推理精度,则人工神经网络模型评估模块1530可以被配置为恢复量化的数据组到目标推理精度高的时刻,并且终止量化数据组的量化,以确定量化位数。
当数据组的上述量化完成时,可以按顺序开始下一个数据组的量化,并且可以以相同的顺序重复每个数据组的量化。因此,可以根据预设的分组策略顺序对所有数据组进行量化。
人工神经网络模型评估模块1530可以被配置为模拟在神经网络处理单元100中操作时根据分组策略顺序量化的人工神经网络模型的性能。
优化系统1500的人工神经网络模型评估模块1530可以被配置为从边缘设备1000和神经网络处理单元100接收各种数据,并根据分组策略顺序提供量化的人工神经网络模型的模拟结果。
优化系统1500可以根据分组策略顺序模拟量化的人工神经网络模型,并且确定相应的人工神经网络模型是否可以在包括神经网络处理单元100的边缘设备1000中充分运行。
当根据分组策略顺序量化的人工神经网络模型通过利用例如计算处理能力、可用存储器带宽、最大存储器带宽、存储器访问延迟等数据,以及例如边缘设备1000和神经网络处理单元100的人工神经网络模型的每一层的计算量和存储器的使用等数据,在包括特定神经网络处理单元的特定边缘设备上进行操作时,优化系统1500可以提供模拟结果或模拟估计,例如计算时间、每秒推理次数、硬件资源使用、推理精度和功耗。
优化系统1500可以被配置为通过考虑边缘设备1000、神经网络处理单元100和/或人工神经网络模型的组合的应用要求,例如推理精度、存储器大小限度、功耗限度、每秒推理速度限度等来确定分组策略的优先级。
例如,当每秒的推理率在特定边缘设备的性能中应该优先考虑时,考虑到特定边缘设备的应用特性,优化系统1500可以通过改变优化模块1520的分组策略顺序来优化人工神经网络模型以减少计算量。
例如,当存储器使用应该在特定边缘设备的性能中被优先考虑时,考虑到特定边缘设备的应用特性,优化系统1500可以通过改变优化模块1520的分组策略顺序来优化人工神经网络模型以减少存储器使用。
模型压缩算法是一种用于压缩人工神经网络模型的权重数据、激活图或特征图的技术。压缩技术可以利用传统的已知压缩技术。因此,可以减少人工神经网络模型的数据量。
根据上述配置,优化模块1520具有以下效果:当压缩成相对较小尺寸的数据的人工神经网络模型被存储在NPU存储器系统120中时,可以减小数据大小。
再训练算法是一种能够补偿在应用优化模块1520的各种算法时劣化的推理精度的技术。例如,当应用例如量化算法、剪枝算法、模型压缩算法之类的技术时,可能会降低人工神经网络模型的推理精度。在这种情况下,优化系统1500可以重新训练剪枝的、量化的和/或压缩的人工神经网络模型。在这种情况下,具有可以再次提高再训练的人工神经网络模型的精度的效果。因此,具有能够以有限的硬件资源提高便携式人工神经网络装置100的性能的效果。
优化系统1500可以被配置为包括一个或多个训练数据集和相应的评估数据集以执行再训练算法。
迁移学习算法是一种再学习算法,可以包含在再训练算法中。迁移学习算法也可以配置为使用知识蒸馏技术。知识蒸馏技术是一种通过使用已经经过训练的具有相对大数据量的人工神经网络模型作为参考模型来学习旨在应用于边缘设备1000的轻量级人工神经网络模型的技术。例如,预先训练的数据量比较大的人工神经网络可以是包含大约一百层的输入层、隐藏层和输出层的人工神经网络模型,以及要被应用于边缘设备1000的人工神经网络模型可以是包含大约五十层的输入层、隐藏层和输出层的人工神经网络模型。也就是说,层数比较多并且权重数据量比较大的大型人工神经网络模型实现了比较高的人工智能水平,但是很难在硬件资源受限的环境(例如边缘设备1000)中充分处理大量的计算。在这种情况下,当训练一个相对较小的人工神经网络模型时,在使用已经完成训练并且具有优异性能但数据量比较大的人工神经网络模型的数据和信息来训练轻量级人工神经网络模型时,其具有缩短轻量级人工神经网络模型的训练时间,并且实现相似推理精度的效果。迁移学习算法可以被配置为存储待参考的人工神经网络模型。待参考的人工神经网络模型为参考模型,并且可以存储在优化系统中。
量化感知再训练算法是一种可以作为一种再训练算法包含在再训练算法中的算法。量化感知训练算法是一种使用训练数据集重新训练量化人工神经网络模型的技术。当用训练数据集再次对量化的人工神经网络模型进行再训练时,具有可以提高人工神经网络模型的推理精度的效果。
基于人工智能的优化算法不基于减重方法,例如通过优化系统1500使用优化模块1520的各种算法在人工智能强化训练方法中搜索人工神经网络模型的结构的过程生成最优轻量级人工神经网络模型的方法,或例如量化算法、剪枝算法、再训练算法、模型压缩算法和模型压缩算法的轻量级方法,而是一种优化系统1500的人工智能由其本身执行减重过程以获得最佳减重结果的方法。
优化系统1500可以被配置为选择性地将多个优化算法应用于待通过优化模块1520优化的人工神经网络模型。
例如,优化系统1500可以被配置为通过应用剪枝算法来提供轻量级人工神经网络模型。
例如,优化系统1500可以被配置为通过应用剪枝算法然后应用量化算法来提供轻量级人工神经网络模型。
例如,优化系统1500可以被配置为通过应用剪枝算法,然后应用量化算法,然后应用再训练算法来提供轻量级人工神经网络模型。
例如,优化系统1500可以被配置为通过应用剪枝算法,然后应用量化算法,然后应用再训练算法,然后应用模型压缩算法来提供轻量级人工神经网络模型。
根据上述配置,具有可以根据应用算法的顺序来提高人工神经网络模型的优化效率的效果。
根据上述配置,存在如下效果:优化系统1500顺序地应用包括在各种优化模块1520中的至少一种优化算法来优化可以在应用于边缘设备1000的神经网络处理单元100中操作的人工神经网络模型。
人工神经网络模型评估模块1530被配置成接收待验证的人工神经网络模型的评估数据集。例如,如果人工神经网络模型是汽车推理模型,则评估数据集可能是各种汽车的图像文件。人工神经网络模型评估模块1530被配置成将评估数据集输入人工神经网络模型,以确定推理精度。根据评估的推理精度和/或权重减少程度,优化系统1500可以重复或终止优化。
人工神经网络模型更新模块1540被配置为更新优化模型并将其提供给连接到优化系统1500的外部系统。因此,边缘设备1000可以从优化系统接收1500优化的人工神经网络模型。
图11是图示根据本公开的另一实施方案的边缘设备的示意性概念图。
根据本公开的另一实施方案的边缘设备2000是被配置为通过应用本公开的各种实施方案向用户提供各种值的示例。
边缘设备2000的特征在于,其被配置为通过一个神经网络处理单元2100提供关键字识别和手势识别。也就是说,其特征在于,一个神经网络处理单元2100被配置为提供多个推理功能。根据上述配置,边缘设备2000可以用一个神经网络处理单元执行多个推理操作,从而减少边缘设备2000的部件数量和制造成本。
根据本公开的另一实施方案的上述边缘设备1000和边缘设备2000包括多个基本相似的配置。因此,仅为了描述方便,会省略多余的描述。
边缘设备2000可以被不同地修改。例如,神经网络处理单元2100可以被配置成与上述神经网络处理单元100、神经网络处理单元200、神经网络处理单元300和神经网络处理单元400中的一者基本相同地配置。
边缘设备2000是手机、智能手机、人工智能音箱、数字广播终端、导航设备、智能冰箱、智能电视、人工智能CCTV、平板电脑、笔记本电脑、自动驾驶汽车、个人数字助理(PDA)或个人多媒体播放器(PMP)。然而,本公开的实施方案不限于此。
中央处理单元1080可以被配置为控制功率控制单元1090和神经网络处理单元2100。功率控制单元1090可以被配置为选择性地供应或切断边缘设备2000的每个元件的功率。然而,本公开的实施方案不限于此。
边缘设备2000可以被配置为包括输入单元1020,该输入单元1020至少包括神经网络处理单元2100、相机1021和麦克风1022。
相机1021和麦克风1022也可以被称为输入单元1020,其被配置为提供多个感测数据。
输入单元1020不限于相机1021和麦克风1022,并且可以由上述输入单元1020的元件的组合构成。
在下文中,为了便于描述,将详细描述应用了相机1021和麦克风1022的示例。
边缘设备2000可以被配置为至少包括被配置为感测声学数据的麦克风1022、被配置为感测图像数据的相机1021、以及被配置为执行至少两种不同的推理操作的神经网络处理单元2100。神经网络处理单元2100可以被配置为驱动经过训练的AI关键字识别模型以基于声学数据推理关键字。此外,神经网络处理单元2100可以响应于关键字推理结果驱动被训练的AI手势识别模型以基于图像数据推理手势。
具体地,例如,边缘设备2000可以处于第一模式以降低功耗。第一模式也可以被称为睡眠模式。
当在预定时间内没有对边缘设备2000的特定输入时,可以设置第一模式。当在预定时间内没有输入时,中央处理单元1080可以指示功率控制单元1090以将边缘设备2000置于第一模式。然而,本公开的实施方案不限于此。功率控制单元1090可以被配置为在第一模式中向麦克风1022供电并且切断对相机1021的供电。根据上述配置,边缘设备2000具有在第一模式下抑制相机1021的功耗的效果。此外,在第一模式下,还具有防止由于用户的无意操作而误判手势的效果。
更详细地,在第一模式中,功率控制单元1090可以被配置为选择性地切断各种元件的功率。
例如,当边缘设备2000包括输出单元时,功率控制单元1090可以被配置为切断到输出单元的功率。
例如,当边缘设备2000包括无线通信单元时,功率控制单元1090可以被配置为切断无线通信单元的功率。
也就是说,功率控制单元1090可以根据边缘设备2000的配置提供各种功率切断策略。
神经网络处理单元2100可以被配置为在第一模式中停止对AI手势识别模型的推理。因此,边缘设备2000具有同时降低相机1021和神经网络处理单元2100的功耗的效果。
在第一模式中,当用户对着边缘设备2000的麦克风1022说出特定关键字时,神经网络处理单元2100可以被配置为接收声学数据并驱动AI关键字识别模型以推理出能够驱动人工智能手势识别模型的关键字。也就是说,当特定关键字在第一模式中输入到麦克风1022时,可以响应于神经网络处理单元400的AI关键字识别模型的推理结果来驱动AI手势识别模型。
在这种情况下,AI关键字识别模型可能是被训练成识别特定的关键字的人工神经网络。例如,特定关键字可以是简单的关键字命令,例如“Alexa”、“嘿Siri”、“提高音量”、“降低音量”、“搜索”、“打开”、“关闭”、“互联网”、“音乐”和“电影”。例如,某些关键字可能是一到一百个常用关键字命令。
边缘设备2000可以根据推理结果从第一模式切换到第二模式。
中央处理单元1080可以接收神经网络处理单元2100的AI关键字识别模型的推理结果并且指示功率控制单元1090以将边缘设备2000设置为第二模式。功率控制单元1090可以被配置为在第二模式下向相机1021供电。
随后,神经网络处理单元2100可以被配置为在第二模式下执行AI手势识别模型的推理操作。
在这种情况下,AI手势识别模型可能是被训练成只识别特定的手势的人工神经网络。例如,特定手势可以是特定的手势、身体手势、面部表情等。
更详细地,边缘设备2000的神经网络处理单元2100可以被配置为独立的神经网络处理单元。也就是说,边缘设备2000可以被配置为由独立的神经网络处理单元独立地执行推理操作。如果边缘设备通过无线通信网络从基于云计算的服务器接收人工神经网络推理服务,则用于推理的相机1021和麦克风1022的数据必须存储在主存储器系统1070中,然后通过无线通信单元发送。
如上所述,在功耗方面,主存储器系统1070与NPU存储器系统相比是低效的。然而,具有通过可以独立操作的神经网络处理单元2100降低边缘设备2100的功耗的效果。
此外,语音数据和图像数据可以包括私人数据。如果边缘设备通过无线通信单元持续发送用户私人生活的对话或捕获图像,则可能出现隐私问题。
因此,边缘设备2000可以通过神经网络处理单元2100推理然后删除输入单元1020的可能包括隐私数据的数据。也就是说,其中可能包括隐私数据的图像数据和声音数据可以在神经网络处理单元2100进行推理操作后删除。
此外,边缘设备2000可以被配置为阻止通过无线通信单元发送输入单元1020的可能包括隐私数据的数据。
此外,边缘设备2000可以被配置为不在主存储器系统1070中存储输入单元1020的可能包括隐私数据的数据。
此外,边缘设备2000可以被配置为将输入单元1020的可能包括隐私数据的数据分类为包括隐私数据的数据。
根据上述配置,边缘设备2000同时为用户提供便利、降低功耗并防止泄露隐私的问题。
另一方面,可以优化神经网络处理单元2100以提供多任务功能。神经网络处理单元2100可以被配置为驱动至少两个人工神经网络模型以提供至少两个不同的推理操作。此外,其还可以被配置成根据一个人工神经网络模型的推理结果驱动另一个人工神经网络模型。也就是说,一个人工神经网络模型可以是始终操作的人工神经网络模型,而另一个人工神经网络模型可以是在特定条件下操作的人工神经网络模型。
也就是说,边缘设备2000可以被配置为包括被配置为提供多个感测数据的输入单元1020,以及被配置为驱动多个人工神经网络模型的神经网络处理单元2100,其中多个人工神经网络模型中的第一人工神经网络模型可以是一直操作的人工神经网络模型,多个人工神经网络模型中的第二人工神经网络模型可以配置为在特定条件下操作的人工神经网络模型。
根据上述配置,当仅在特定条件下操作的人工神经网络模型不操作时,可以降低边缘设备2000的功耗。
对于神经网络处理单元2100的多任务处理,神经网络处理单元2100的NPU调度器可以被配置为基于多个神经网络模型的结构数据或人工神经网络数据局部性信息来确定调度序列。
对于神经网络处理单元2100的多任务处理,可以选择性地分配神经网络处理单元2100的处理元件。例如,当处理元件的数量为一百时,可以为第一人工神经网络模型的推理操作分配三十个处理元件,为第二人工神经网络模型的推理操作分配五十个处理元件。在这种情况下,可以控制剩余的未分配的处理元件不操作。
NPU调度器可以根据多个人工神经网络模型的每层节点数据的大小和结构数据以及每个连接网络的权重数据确定调度序列,并且可以根据调度序列分配处理元件。
根据上述配置,由于可以通过NPU调度器为特定神经网络模型的推理分配特定的处理元件,因此具有一个神经网络处理单元2100可以同时并行推理多个人工神经网络模型的效果。
由于NPU调度器可以通过使用人工神经网络模型结构数据或人工神经网络数据局部性信息来检查多个人工神经网络模型的每一层的节点数据的大小和每个连接网络的权重数据,因而可以计算每次调度的推理操作所需的存储器量。因此,NPU调度器可以将每个调度序列所需的数据存储在能够执行多任务的神经网络处理单元2100的NPU存储器系统的存储器可用限度内。
NPU调度器可以被配置为设置存储在NPU存储器系统中的数据的优先级。
例如,AI关键字识别模型可以被配置为始终在神经网络处理单元2100中运行。因此,神经网络处理单元2100可以将AI关键字识别模型的数据的优先级设置为高的。
例如,AI手势识别模型可以被配置为仅在神经网络处理单元2100中的特定条件下操作。因此,神经网络处理单元2100可以将AI手势识别模型的数据的优先级设置为低的。
根据上述配置,由于在NPU存储器系统中保持高优先级数据,因此可以通过重用存储的数据来增加存储器重用率。因此,具有降低推理速度和功耗的效果。
根据本公开的实施方案的神经网络处理单元可以包括处理元件阵列、被配置为存储在处理元件阵列中处理的人工神经网络模型的至少一部分数据的NPU存储器系统,以及被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理单元阵列和NPU存储器系统的NPU调度器。
处理元件阵列可以包括被配置为执行MAC操作的多个处理元件。
NPU调度器还可以被配置为控制处理元件阵列和NPU存储器系统的读写顺序。
NPU调度器还可被配置为通过分析人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列和NPU存储器系统。
NPU调度器还可包括人工神经网络模型的每一层的节点数据、层的排列结构的数据、以及连接每一层的节点的网络的权重数据。
NPU调度器还可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息调度人工神经网络模型的操作序列。
NPU调度器可以被配置为基于人工神经网络模型结构数据中的人工神经网络模型的层的排列结构数据来调度包括在处理元件阵列中的多个处理元件的操作序列。
NPU调度器可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息访问其中存储人工神经网络模型的层的节点数据和连接网络的权重数据的存储器地址值。
NPU调度器可以被配置为控制NPU存储器系统和处理元件阵列,从而以设置的调度序列执行操作。
人工神经网络模型可以被配置为基于人工神经网络的层的结构和与该结构对应的操作序列数据来调度处理序列。
神经网络处理单元,其中,NPU调度器被配置为基于从人工神经网络的输入层到输出层的结构数据或人工神经网络模型的人工神经网络数据局部性信息来调度处理序列。
NPU调度器可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息,通过经由使用调度序列控制NPU存储器系统来提高存储器重用率。
NPU调度器可以被配置为重用其中存储第一调度的第一操作值的存储器地址值作为与第二调度的第二层的节点数据对应的存储器地址值,所述第二调度是第一调度的下一调度。
NPU调度器可以被配置为重用存储操作结果的存储器地址的值以用于后续操作。
NPU存储器系统可以包括静态存储器。
NPU存储器系统可以包括SRAM、MRAM、STT-MRAM、eMRAM、HBM和OST-MRAM中的至少一种。
根据本公开的实施方案的边缘设备可以被配置为包括:中央处理单元;被配置为存储人工神经网络模型的主存储器系统;控制中央处理单元和主存储器系统之间的通信的系统总线;以及神经网络处理单元,其包括处理元件阵列、NPU存储器系统、被配置为控制处理元件阵列和NPU存储器系统的NPU调度器、以及NPU接口,其中NPU接口被配置为通过系统总线与中央处理单元通信,其中NPU接口可以被配置为直接与主存储器系统进行与人工神经网络模型相关的数据通信。
边缘设备可以是手机、智能手机、人工智能扬声器、数字广播终端、导航设备、可穿戴设备、智能手表、智能冰箱、智能电视、数字标牌、VR设备、AR设备、人工智能CCTV、人工智能机器人、真空吸尘器、平板电脑、笔记本电脑、自动驾驶汽车、自动无人机、自动双足步行机器人、自动四足机器人、使用自动驾驶移动服务的设备、人工智能机器人、PDA和PMP中的一者。
神经网络处理单元的NPU存储器系统可以被配置为使得人工神经网络模型的推理操作的读/写速度比主存储器系统快并且比主存储器系统消耗更少的功率。
神经网络处理单元可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来提高NPU存储器系统的存储器重用率。
神经网络处理单元可以被配置为获取主存储器系统的存储器数量、存储器类型、数据发送速度和存储器大小中的至少一个的数据。
神经网络处理单元可以被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制存储在NPU存储器系统中的数据的重用,并且神经网络处理单元被配置为当数据被重用时,不向主存储器系统请求存储器访问。
NPU存储器系统可以不包括DRAM,并且NPU存储器系统可以包括静态存储器,该静态存储器被配置为具有比主存储器系统更快的读取和写入速度并且消耗更少的功率。
NPU存储器系统可以被配置为通过比较要从主存储器系统加载的人工神经网络模型的数据量和NPU存储器系统的存储器大小来控制调度。
根据本公开的另一实施方案的神经网络处理单元可以被配置为包括:处理元件阵列;被配置为存储在处理元件阵列中处理的人工神经网络模型的NPU存储器系统;以及被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制处理元件阵列和NPU存储器系统的NPU调度器,其中处理元件阵列可以被配置为执行MAC操作,并且处理元件阵列可被配置对MAC运算结果进行量化并输出。
处理元件阵列的每个处理元件的第一输入可以被配置为接收变量值,并且处理元件阵列的每个处理元件的第二输入可以被配置为接收常量值。
处理元件可以被配置为包括乘法器、加法器、累加器和位量化单元。
NPU调度器可被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息识别可重用变量值和可重用常量值,并控制NPU存储器系统以使用可重用变量值和可重用常量值来重用存储器。
考虑到处理元件阵列的MAC操作特性和功耗特性,其可以被配置为来减少处理元件阵列的操作值的位数。
考虑到人工神经网络模型的数据量和操作步骤,NPU存储器系统可以是低功率存储器系统,其被配置为重用其中存储权重数据的特定存储器地址。
NPU调度器根据调度序列将人工神经网络模型的MAC操作值存储在NPU存储器系统的特定存储器地址中,其中存储MAC操作值的特定存储器地址可以是下一调度序列的MAC操作的输入数据。
NPU系统存储器可以被配置为在推理操作继续时保存存储在NPU系统存储器中的网络的权重数据。
在存储处理元件阵列的每个处理元件的第一输入单元的输入数据的存储器地址处的更新次数可以大于在存储第二输入单元的输入数据的存储器地址处的更新次数。
NPU系统存储器可以被配置为在推理操作继续的同时重用存储在NPU系统存储器中的MAC操作值。
根据本公开的另一实施方案的神经网络处理单元可以包括:处理元件阵列,该处理元件阵列包括多个处理元件和多个寄存器文件;NPU存储器系统,其被配置为存储在该处理元件中处理的人工神经网络模型;以及NPU调度器,其被配置为基于人工神经网络模型的结构数据或人工神经网络数据局部性信息来控制处理元件阵列和NPU存储器系统。
多个寄存器文件中的每一个的存储器大小小于NPU存储器系统的存储器大小,并且多个寄存器文件中的每一个的最大发送速度可以高于NPU存储器系统的最大发送速度。
多个寄存器文件中的每一个的存储器大小可以被配置为具有比NPU存储器系统的存储器大小快的最大发送速度的存储器大小。
多个寄存器文件中的每一个的存储器大小小于NPU存储器系统的存储器大小,并且多个寄存器文件中的每一个的基于相同发送速度的功耗可以低于基于NPU存储器系统的相同发送速度的功耗。
多个寄存器文件中的每一个的存储器大小可以被配置为具有在基于相同发送速度的在功耗方面比NPU存储器系统的存储器大小更小的存储器大小。
多个寄存器文件中的每一个可以被配置为具有比NPU存储器系统更高的最大发送速度和基于相同发送速度的相对少量功耗的存储器。
NPU存储器系统还可以包括具有分层结构的第一存储器、第二存储器和第三存储器,并且NPU调度器可以被配置为基于神经网络处理单元中运行的人工神经网络模型结构数据或人工神经网络数据局部性信息,通过基于分层结构来控制NPU存储器系统的第一存储器、第二存储器和第三存储器来提高NPU存储器系统的存储器重用率。
第一存储器可以被配置为与第二存储器和第三存储器通信,并且第二存储器和第三存储器可以被配置为与多个处理元件和多个寄存器文件通信。
NPU存储器系统可以被配置为具有针对存储器重用而优化的多个存储器分层结构。
NPU调度器可以被配置为确定每个调度序列的数据量,并且在第一存储器的可用限度内顺序地存储每个调度序列的数据。
NPU调度器可以被配置为通过比较存储器重用率将存储在第一存储器中的数据的一部分选择性地存储在第二存储器和第三存储器中的一者中。
存储在第二存储器中的数据的存储器重用率可以高于存储在第三存储器中的数据的存储器重用率。
NPU调度器可以被配置为当特征数据存储在第二存储器中时删除第一存储器中的冗余数据。
存储在第三存储器中的数据可以被配置为具有可以重复使用的可变特性。
根据本公开的另一实施方案的边缘设备可以包括:被配置为检测声学数据的麦克风、被配置为检测图像数据的相机以及被配置为执行至少两种不同的推理操作的神经网络处理单元,其中所述神经网络处理单元可以被配置为驱动被训练以基于声学数据推理关键字的AI关键字识别模型,并且其中神经网络处理单元可以被配置为响应于关键字推理结果驱动被训练以基于图像数据推理手势的AI手势识别模型。
边缘设备还包括中央处理单元,其中中央处理单元可以在预定时间段内没有输入时生成进入第一模式的命令,并且功率控制单元可以被配置为向麦克风供电并在第一模式下切断相机的电源。
神经网络处理单元可以被配置为在第一模式中停止AI手势识别模型的推理操作。
中央处理单元可以被配置为接收神经网络处理单元的AI关键字识别模型的推理结果并生成进入第二模式的命令,并且功率控制单元可以被配置为向处于第二模式下的相机供电。
神经网络处理单元可以被配置为在第二模式中执行AI手势识别模型的推理操作。
神经网络处理单元可以是独立的神经网络处理单元。
包括隐私数据的图像数据和声音数据可以被配置为在神经网络处理单元的推理操作之后被删除。
在第一模式中,当特定关键字被输入到麦克风时,可以响应于神经网络处理单元的AI关键字识别模型的推理结果来驱动AI手势识别模型。
根据本公开的另一实施方案的边缘设备可以包括被配置为提供多个感测数据的输入单元,以及被配置为驱动多个人工神经网络模型的神经网络处理单元,其中在所述多个人工神经网络模型中,第一人工神经网络模型可以是一直操作的人工神经网络模型,其中多个人工神经网络模型中的第二人工神经网络模型可以是被配置为仅在预设条件下操作的人工神经网络模型。
第二人工神经网络模型可以被配置为根据第一人工神经网络模型的推理结果而被控制是否被驱动。
神经网络处理单元还包括NPU调度器,并且NPU调度器可以被配置为基于多个人工神经网络模型的结构数据或人工神经网络数据局部性信息确定调度序列。
神经网络处理单元还包括多个处理单元,其中NPU调度器可以被配置为基于多个人工神经网络模型的每一层的节点数据的数据量和每个网络的权重,以及多个人工神经网络模型的结构数据或人工神经网络数据局部性信息来确定调度序列,并根据确定的调度序列分配处理元件。
神经网络处理单元还包括NPU存储器系统,并且NPU调度器可以被配置为对存储在NPU存储器系统中的数据进行优先排序。
根据本公开的另一实施方案的神经网络处理单元可以包括处理元件阵列、被配置为存储在处理元件阵列中处理的人工神经网络模型的NPU存储器系统、被配置为控制处理元件阵列和NPU存储器系统的NPU调度器、以及配置为使用人工神经网络模型推理多个不同输入数据的NPU批处理模式。
多个不同的输入数据可以是多个图像数据。
NPU批处理模式可以被配置为通过组合多个图像数据来增加操作帧。
NPU批处理模式可以被配置为回收人工神经网络模型的权重数据以对多个不同的输入数据执行推理操作。
NPU批处理模式可以被配置为将多个输入数据转换成一个连续数据。
根据本公开的另一实施方案的神经网络处理单元可以包括:至少一个处理元件、能够存储可由至少一个处理元件推理的人工神经网络模型的NPU存储器系统、以及被配置为基于人工神经网络模型的结构数据或人工神经网络数据局部性信息来控制至少一个处理元件和NPU存储器系统的NPU调度器。
NPU调度器可以被配置为进一步接收神经网络处理单元的结构数据。
神经网络处理单元的结构数据可以包括NPU存储器系统的存储大小、NPU存储器系统的分层结构、关于至少一个处理单元的数量的数据和至少一个处理元件的运算符结构中的至少一项。
神经网络处理单元(NPU)包括被训练以执行推理功能的人工神经网络模型;被配置为使用人工神经网络模型来推理输入数据的处理元件阵列;NPU存储器系统,其被配置为与处理元件阵列通信;和NPU调度器,其被配置为控制处理元件阵列和NPU存储器系统。NPU将人工神经网络模型的数据量与NPU存储器系统的存储器大小进行比较。人工神经网络模型可以被配置为考虑到NPU存储器系统的存储器大小,通过量化算法、剪枝算法、再学习算法、量化识别学习算法、模型压缩算法和基于人工智能的优化算法中的至少一种来优化。
人工神经网络模型可以通过被配置为与神经网络处理单元通信的优化系统针对神经网络处理单元进行优化。
人工神经网络模型可以基于人工神经网络模型结构数据或人工神经网络数据局部性信息和处理单元的结构数据中的至少一者来优化。
在人工神经网络模型中,可以在应用剪枝算法之后应用量化算法。
在人工神经网络模型中,在应用剪枝算法之后,可以应用量化算法,然后可以应用再学习算法。
在人工神经网络模型中,在应用剪枝算法之后,应用量化算法,然后应用再学习算法,接着可以应用模型压缩算法。
人工神经网络模型包括多个层,多个层中的每一层包括权重数据,并且权重数据中的每一个都可以被剪枝。
在权重数据中,可以优先剪枝具有较大数据量的一个或多个权重数据。
在权重数据中,可以优先剪枝具有较大计算量的一个或多个权重数据。
人工神经网络模型包括多个层,多个层中的每一层包括节点数据和权重数据,并且权重数据可以被量化。
节点数据可以被量化。
可以分别量化至少一层的节点数据和权重数据。
在权重数据中,可以优先量化具有相对大的大小的一个或多个权重数据。
可以优先量化节点数据中具有相对大的大小的至少一个节点数据。
处理元件阵列包括至少一个处理元件,并且该至少一个处理元件可以被配置为计算节点数据和权重数据,每个都以位数进行量化。
处理元件阵列还包括位量化单元,处理元件阵列的输出数据的位数可以被配置为由位量化单元量化。
人工神经网络模型是量化的人工神经网络模型,并且NPU存储器系统可以被配置为存储与多个量化的权重数据的位数和人工神经网络模型的多个量化节点数据的位数相对应的人工神经网络模型的数据。
人工神经网络模型是量化人工神经网络模型,并且处理元件阵列可以被配置为响应于多个量化的权重数据的位数和人工神经网络模型的多个量化节点数据的位数,从NPU存储器系统接收多个量化权重数据和多个量化节点数据。
神经网络处理单元包括:人工神经网络模型;被配置为处理人工神经网络模型的多个处理元件;被配置为将人工神经网络模型的数据提供给处理元件阵列的NPU存储器系统;以及NPU调度器,其被配置成控制处理单元阵列和NPU存储器系统,并且人工神经网络模型可以通过至少一个分组策略进行量化。
至少一个分组策略可以使用人工神经网络模型的操作序列、人工神经网络模型的计算量的大小和人工神经网络模型的存储器使用的大小中的至少一者作为确定至少一个分组策略的标准。
至少一个分组策略是多个分组策略,并且多个分组策略中的每一个可以根据各自的权重值来确定分组策略的顺序。
神经网络处理单元,其中,根据具有预定分组数据顺序的至少一个分组策略,按照顺序对人工神经网络模型进行量化。
在人工神经网络模型中,可以应用量化识别学习算法。
当根据分组策略对人工神经网络模型进行量化时,其可以参考包括被量化的数据组在内的人工神经网络模型的推理精度进行量化。
在人工神经网络模型中,当包括被量化的数据组的人工神经网络模型的评估推理精度高于预设的目标推理精度时,包括被量化的数据组的人工神经网络模型的位数可能会减少。
在人工神经网络模型中,如果包含被量化的数据组的人工神经网络模型的评估推理精度小于预设的目标推理精度,则可以通过将被量化的数据组返回到目标推理准确率高的时刻来终止量化。
神经网络处理单元还包括连接到神经网络处理单元的边缘设备,并且可以根据基于边缘设备的处理能力、神经网络处理单元的计算处理能力、边缘设备的可用存储器带宽、神经网络处理单元的可用存储器带宽、边缘设备的最大存储器带宽、神经网络处理单元的最大存储器带宽、边缘设备的最大存储器延迟以及神经网络处理单元的最大存储器延迟中的至少一个数据确定的分组策略顺序来量化人工神经网络模型。
神经网络处理单元包括:人工神经网络模型;被配置为处理人工神经网络模型的多个处理元件;被配置为将人工神经网络模型的数据提供给处理元件阵列的NPU存储器系统;以及NPU调度器,其被配置为控制处理元件阵列和NPU存储器系统,其中人工神经网络模型可以基于NPU存储器系统的存储器大小来量化人工神经网络模型的至少一层的节点数据或至少一层的权重数据。
NPU存储器系统可以被配置为存储人工神经网络模型的至少一层的节点数据或至少一层的权重数据中的每一者的量化位数的数据。
输入到多个处理元件的每个输入单元的数据的位数可以被配置为与关于量化的输入数据的位数的信息对应地操作。
边缘设备包括主存储器系统和被配置为与主存储器系统通信的神经网络处理单元,并且神经网络处理单元包括处理元件阵列、NPU存储器系统、处理元件阵列和被配置为控制NPU存储器系统的NPU调度器,可以参考主存储器系统的存储器大小和NPU存储器系统的存储器大小对在主存储器系统和NPU存储器系统中存储的人工神经网络模型的量化节点数据、量化权重数据、量化权重内核和/或量化特征图进行量化。
在上述实施方案中描述的特征、结构、效果等包括在本公开的一个实施方案中,并且不一定仅限于一个实施方案。此外,每个实施方案中示出的特征、结构、效果等可以由实施方案所属领域的普通技术人员进行组合或修改以用于其他实施方案。因此,与这种组合和修改相关的内容应被解释为包括在本公开的范围内。
此外,虽然以上已经参照实施方案进行了描述,但这仅仅是示例,并不限制本发明,本公开所属领域的普通技术人员应理解,上面未示出的各种修改和应用在不脱离本实施方案的基本特征的情况下,是可能的。例如,可以修改和实现实施方案中具体示出的每个元件。因此,与这些修改和应用相关的差异应被解释为包括在所附权利要求所限定的本公开的范围内。
[支持本发明的国家研发项目]
[项目唯一编号]1711117015
[任务编号]2020-0-01297
[部名]科学与信息通信部
[任务管理(专业)机构名称]信息通信规划与评价研究所
[研究项目名称]下一代智能半导体技术开发项目
[研究项目名称]用于高级数据重用和超低功耗边缘的深度学习处理器技术开发
[贡献率]1/1
[执行任务的组织名称]DeepX Co.,Ltd.
[研究期间]2020.04.01~2024.12.31
[代码说明]
边缘设备:1000、2000
神经网络处理单元:100、200、300、400、2100
处理元件阵列:1100
NPU存储器系统:120
NPU调度程序:130
NPU接口:140

Claims (20)

1.一种神经网络处理单元(NPU),其包括:
处理元件阵列;
NPU存储器系统,其被配置为存储在所述处理元件阵列中处理的人工神经网络模型的数据的至少一部分;和
NPU调度器,其被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制所述处理元件阵列和所述NPU存储器系统。
2.根据权利要求1所述的神经网络处理单元,其中,所述处理元件阵列包括被配置为执行MAC操作的多个处理元件。
3.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器还被配置为控制所述处理元件阵列和所述NPU存储器系统的读写序列。
4.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器还被配置为通过分析所述人工神经网络模型结构数据或所述人工神经网络数据局部性信息来控制所述处理元件阵列和所述NPU存储器系统。
5.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器还被配置为基于所述人工神经网络模型结构数据或所述人工神经网络数据局部性信息调度所述人工神经网络模型的操作序列。
6.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器被配置为基于所述人工神经网络模型结构数据或人工神经网络数据局部性信息访问存储器地址值,在所述存储器地址值中存储所述人工神经网络模型的层的节点数据和连接网络的权重数据。
7.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器被配置为基于从人工神经网络的输入层到输出层的结构数据或所述人工神经网络模型的所述人工神经网络数据局部性信息来调度处理序列。
8.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器被配置为通过以下方式来提高存储器重用率:基于所述人工神经网络模型结构数据或所述人工神经网络数据局部性信息,通过使用调度序列来控制所述NPU存储器系统。
9.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器被配置为将存储第一调度的第一操作值的存储器地址值作为对应于第二调度的第二层的节点数据的存储器地址值重用,所述第二调度按顺序是所述第一调度的下一调度。
10.根据权利要求1所述的神经网络处理单元,其中,所述NPU调度器被配置成重用存储器地址的值,操作结果存储所述存储器地址中,以用于后续的操作。
11.根据权利要求1所述的神经网络处理单元,其中所述NPU存储器系统包括静态存储器。
12.根据权利要求1所述的神经网络处理单元,其中,所述NPU存储器系统包括SRAM、MRAM、STT-MRAM、eMRAM、HBM和OST-MRAM中的至少一种。
13.一种边缘设备,其包括:
中央处理单元;
主存储器系统,其被配置为存储人工神经网络模型;
系统总线,其控制所述中央处理单元和所述主存储器系统之间的通信;以及
神经网络处理单元(NPU),其包括处理元件阵列、NPU存储器系统、被配置为控制所述处理元件阵列和所述NPU存储器系统的NPU调度器、以及NPU接口,
其中,所述NPU接口被配置为通过所述系统总线与所述中央处理单元通信,以及
其中,所述NPU接口被配置为直接与所述主存储器系统进行与所述人工神经网络模型相关的数据通信。
14.根据权利要求13所述的边缘设备,其中,所述边缘设备是手机、智能手机、人工智能扬声器、数字广播终端、导航设备、可穿戴设备、智能手表、智能冰箱、智能电视、数字标牌、VR设备、AR设备、人工智能CCTV、人工智能机器人真空吸尘器、平板电脑、笔记本电脑、自动驾驶汽车、自动无人机、自动双足步行机器人、自动四足机器人、使用自动驾驶移动服务的设备、人工智能机器人、PDA和PMP中的一者。
15.根据权利要求13所述的边缘设备,其中,所述神经网络处理单元的所述NPU存储器系统被配置为使得所述人工神经网络模型的推理操作的读/写速度比所述主存储器系统更快并且消耗更少的功耗。
16.根据权利要求13所述的边缘设备,其中,所述神经网络处理单元被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息提高所述NPU存储器系统的存储器重用率。
17.根据权利要求13所述的边缘设备,其中,所述神经网络处理单元被配置为获取所述主存储器系统的存储器数量、存储器类型、数据发送速度和存储器大小中的至少一者的数据。
18.一种神经网络处理单元(NPU),其包括:
处理元件阵列;
NPU存储器系统,其被配置为存储在所述处理元件阵列中处理的人工神经网络模型;和
NPU调度器,其被配置为基于人工神经网络模型结构数据或人工神经网络数据局部性信息来控制所述处理元件阵列和所述NPU存储器系统,
其中,所述处理元件阵列被配置为执行MAC操作,并且
其中,所述处理单元阵列被配置为量化并输出MAC操作结果。
19.根据权利要求18所述的神经网络处理单元,其中所述处理元件被配置为包括乘法器、加法器、累加器和位量化单元。
20.根据权利要求18所述的神经网络处理单元,其中所述NPU调度器被配置为:
基于所述人工神经网络模型结构数据或所述人工神经网络数据局部性信息识别可重用变量值和可重用常量值,并且
使用所述可重用变量值和所述可重用常量值控制所述NPU存储器系统以重用存储器。
CN202080027203.3A 2020-08-21 2020-12-31 神经处理单元 Pending CN114402336A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
KR20200105509 2020-08-21
KR10-2020-0105509 2020-08-21
KR10-2020-0107324 2020-08-25
KR20200107324 2020-08-25
PCT/KR2020/019488 WO2022039334A1 (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛

Publications (1)

Publication Number Publication Date
CN114402336A true CN114402336A (zh) 2022-04-26

Family

ID=80322962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080027203.3A Pending CN114402336A (zh) 2020-08-21 2020-12-31 神经处理单元

Country Status (4)

Country Link
US (1) US11977916B2 (zh)
KR (8) KR20240038165A (zh)
CN (1) CN114402336A (zh)
WO (1) WO2022039334A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220121927A1 (en) * 2020-10-21 2022-04-21 Arm Limited Providing neural networks
US11886973B2 (en) 2022-05-30 2024-01-30 Deepx Co., Ltd. Neural processing unit including variable internal memory
US20240037150A1 (en) * 2022-08-01 2024-02-01 Qualcomm Incorporated Scheduling optimization in sequence space
KR20240032707A (ko) * 2022-08-29 2024-03-12 주식회사 딥엑스 인공신경망의 분산 연산 시스템 및 방법
WO2024076163A1 (ko) * 2022-10-06 2024-04-11 오픈엣지테크놀로지 주식회사 신경망 연산방법과 이를 위한 npu 및 컴퓨팅 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110037184A (ko) 2009-10-06 2011-04-13 한국과학기술원 뉴로-퍼지 시스템과 병렬처리 프로세서가 결합된, 파이프라이닝 컴퓨터 시스템, 이를 이용하여 영상에서 물체를 인식하는 방법 및 장치
US9525636B2 (en) * 2014-10-20 2016-12-20 Telefonaktiebolaget L M Ericsson (Publ) QoS on a virtual interface over multi-path transport
US10761849B2 (en) * 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US11531877B2 (en) * 2017-11-10 2022-12-20 University of Pittsburgh—of the Commonwealth System of Higher Education System and method of deploying an artificial neural network on a target device
CN111542808B (zh) * 2017-12-26 2024-03-22 三星电子株式会社 预测电子设备上运行应用的线程的最优数量的方法和系统
US11568269B2 (en) * 2017-12-28 2023-01-31 Cambricon Technologies Corporation Limited Scheduling method and related apparatus
US10942767B2 (en) * 2018-02-27 2021-03-09 Microsoft Technology Licensing, Llc Deep neural network workload scheduling
US20190332924A1 (en) 2018-04-27 2019-10-31 International Business Machines Corporation Central scheduler and instruction dispatcher for a neural inference processor
KR102135632B1 (ko) 2018-09-28 2020-07-21 포항공과대학교 산학협력단 뉴럴 프로세싱 장치 및 그것의 동작 방법
KR20200057814A (ko) 2018-11-13 2020-05-27 삼성전자주식회사 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치
US11275558B2 (en) * 2018-11-30 2022-03-15 Advanced Micro Devices, Inc. Sorting instances of input data for processing through a neural network
KR20200075185A (ko) 2018-12-17 2020-06-26 삼성전자주식회사 뉴럴 프로세싱 시스템 및 그것의 동작 방법
KR20200095300A (ko) 2019-01-31 2020-08-10 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US11281496B2 (en) * 2019-03-15 2022-03-22 Intel Corporation Thread group scheduling for graphics processing
US11782755B2 (en) * 2019-12-02 2023-10-10 Intel Corporation Methods, systems, articles of manufacture, and apparatus to optimize thread scheduling

Also Published As

Publication number Publication date
US20230168921A1 (en) 2023-06-01
KR102649071B1 (ko) 2024-03-19
KR102647686B1 (ko) 2024-03-14
KR20230106731A (ko) 2023-07-13
KR20240038165A (ko) 2024-03-22
WO2022039334A1 (ko) 2022-02-24
KR20230106734A (ko) 2023-07-13
KR102530548B1 (ko) 2023-05-12
KR20230070515A (ko) 2023-05-23
KR20230106732A (ko) 2023-07-13
KR20230106733A (ko) 2023-07-13
KR102647690B1 (ko) 2024-03-14
KR20220025143A (ko) 2022-03-03
KR20240042266A (ko) 2024-04-01
US11977916B2 (en) 2024-05-07

Similar Documents

Publication Publication Date Title
KR102434728B1 (ko) 처리방법 및 장치
US11977916B2 (en) Neural processing unit
US20220093085A1 (en) Always-On Keyword Detector
TWI818944B (zh) 神經網路處理單元及系統晶片
US20180082212A1 (en) Optimizing machine learning running time
WO2020147369A1 (zh) 自然语言处理方法、训练方法及数据处理设备
US20220318606A1 (en) Npu, edge device and operation method thereof
CN114065900A (zh) 数据处理方法和数据处理装置
US11803741B2 (en) Offline detector
WO2024046473A1 (zh) 一种数据处理方法及其装置
WO2023143080A1 (zh) 一种数据处理方法以及相关设备
WO2019076095A1 (zh) 处理方法及装置
US20220114479A1 (en) Systems and methods for automatic mixed-precision quantization search
CN111800537B (zh) 终端使用状态的评估方法、装置、存储介质及电子设备
WO2024055952A1 (zh) 一种数据处理方法及其装置
US20230168644A1 (en) Optimized processing engine of an internet of things (iot) device and a method of generating the same
US20230289291A1 (en) Cache prefetch for neural processor circuit
KR20240058070A (ko) Npu를 포함하는 엣지 디바이스 그리고 동작 방법
CN115905850A (zh) 一种数据处理方法及相关设备
CN115907041A (zh) 一种模型训练方法及装置
CN116627634A (zh) 一种数据处理方法及相关设备
CN115983362A (zh) 一种量化方法、推荐方法以及装置
CN115131593A (zh) 一种数据的处理方法、神经网络的训练方法以及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination