CN115204375A - Npu、边缘设备及其运行方法 - Google Patents

Npu、边缘设备及其运行方法 Download PDF

Info

Publication number
CN115204375A
CN115204375A CN202111311760.0A CN202111311760A CN115204375A CN 115204375 A CN115204375 A CN 115204375A CN 202111311760 A CN202111311760 A CN 202111311760A CN 115204375 A CN115204375 A CN 115204375A
Authority
CN
China
Prior art keywords
npu
ann
information
pes
data
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
CN202111311760.0A
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 CN115204375A publication Critical patent/CN115204375A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

一种神经处理单元(NPU)包括:内部存储器,其用于存储关于多个人工神经网络(ANN)模型的组合的信息,所述多个ANN模型包括第一ANN模型和第二ANN模型;多个处理元件(PE),其用于依次或并行处理所述多个ANN模型的第一操作和第二操作,所述多个PE包括第一组PE和第二组PE;以及调度器,其用于基于与关于所述多个ANN模型的操作次序相关的信息的指令或者进一步基于ANN数据局部性信息,将所述第一ANN模型的所述第一操作的一部分分配给所述第一组PE,并且将所述第二ANN模型的所述第二操作的一部分分配给所述第二组PE。所述第一操作和所述第二操作可以是并行或分时执行的。

Description

NPU、边缘设备及其运行方法
相关申请的交叉引用
本申请要求于2021年4月1日向韩国知识产权局提交的韩国专利申请 No.10-2021-0042950的优先权,其公开内容通过引用并入本文。
技术领域
本公开内容涉及人工神经网络。
背景技术
人类具有执行识别、分类、推理、预测、控制/决策等的智能。 人工智能(AI)是指人为地模仿人类智能。
人脑由称为神经元的大量神经细胞组成。每个神经元通过称为 突触的连接与数百到数千个其他神经元相连。对生物神经元的工作原理和神 经元之间的连接关系进行建模以模拟人类智能,并且被称为人工神经网络 (ANN)模型。换句话说,人工神经网络是一个系统,其中模拟神经元的节点 以层结构连接。
ANN模型根据层数分为单层神经网络和多层神经网络,一般的 多层神经网络由输入层、隐藏层和输出层组成。这里,输入层是接收外部数 据的层,其中输入层的神经元的数量与输入变量的数量相同;隐藏层位于输 入层和输出层之间,接收来自输入层的信号以提取特征并且将特征传输到输 出层;而输出层接收来自隐藏层的信号,并将接收到的信号输出到外部。神 经元之间的输入信号乘以值为零(0)到一(1)的每个连接强度,然后相加,如果 总和大于神经元的阈值,则神经元被激活并且通过激活函数被实现为输出 值。
为了实现更高的人工智能,增加ANN的隐藏层的数量被称为 深度神经网络(DNN)。
另一方面,ANN模型可以用于各种边缘设备,并且边缘设备可 以使用多个ANN模型,具体取决于其类型。
发明内容
然而,在使用多个人工神经网络(ANN)模型的情况下,本公开 内容的发明人已经认识到不存在优化方法的问题。
当为每个ANN模型单独提供神经处理单元(NPU)时,本公开内 容的发明人已经认识到问题在于,NPU处于空闲状态的时间增加,这降低了 效率。
此外,在用一个NPU执行多个ANN模型的操作的情况下,本 公开内容的发明人已经认识到问题在于,在多个ANN模型之间缺乏有效的操 作次序的设置,计算处理时间增加。
为了解决上述问题,提供了一种神经处理单元(NPU)。该NPU 可以包括:至少一个内部存储器,其用于存储关于多个人工神经网络(ANN) 模型的组合的信息,所述多个ANN模型包括第一ANN模型和第二ANN模 型;多个处理元件(PE),其能操作地配置为依次或并行处理所述多个ANN模 型的第一操作和第二操作,所述多个PE包括第一组PE和第二组PE;以及调度器,其能操作地配置为基于与关于所述多个ANN模型的操作次序相关的 信息的指令,将所述第一ANN模型的所述第一操作的一部分分配给所述第一 组PE,并且将所述第二ANN模型的所述第二操作的一部分分配给所述第二 组PE。
由所述调度器进行的所述分配中的每一者可以进一步基于ANN 数据局部性信息。
所述第一ANN模型的所述第一操作和所述第二ANN模型的所 述第二操作可以是并行或分时执行的。
所述第一组PE和第二组PE可以部分相同,也可以完全不同。 换言之,所述第一组PE可以包括至少一个与所述第二组PE不同的PE并且 可以包括至少一个与所述第二组PE相同的PE。
关于所述操作次序的所述信息包括以下至少一者:关于层的信 息,关于内核的信息,关于处理时间的信息,关于剩余时间的信息,以及关 于时钟的信息。关于所述层的所述信息可以表示所述第一ANN模型的所有层 中的第i层,以及所述第二ANN模型可以是在所述第一ANN模型的所述第i 层启动之后启动的。关于所述内核的所述信息可以表示所述第一ANN模型的 所有内核中的第k个内核,以及可以在使用所述第一ANN模型的所述第k个 内核之后启动所述第二ANN模型。关于所述处理时间的所述信息可以表示在 执行所述第一ANN模型的操作之后经过的时间,以及可以在所述经过的时间 之后启动所述第二ANN模型。关于所述剩余时间的所述信息可以表示在完成 所述第一ANN模型的操作之前的剩余时间,并且可以在到达所述剩余时间之 前启动所述第二ANN模型。
关于所述多个人工神经网络模型的所述操作次序的信息可以存 储在所述至少一个内部存储器中。
所述调度器可以基于关于所述多个ANN模型的所述操作次序 的信息生成所述指令。
所述NPU可以安装在边缘设备中,以及所述边缘设备可以包括 存储器和被配置为执行应用程序的命令的中央处理单元(CPU)。
所述边缘设备的所述存储器可以被配置为存储关于所述多个 ANN模型的所述操作次序的信息。
当所述CPU执行所述应用程序的命令时,所述边缘设备的所述 CPU可以生成所述指令。
根据本公开内容的另一方面,提供了一种边缘设备。所述边缘 设备可以包括:系统总线;存储器,其电连接至所述系统总线;多个神经处 理单元(NPU),其电连接至所述系统总线,所述多个NPU包括第一NPU和第 二NPU,每个NPU包括:内部存储器,其用于存储关于多个人工神经网络 (ANN)模型的组合的信息,所述多个ANN模型包括至少一个第一ANN模型和至少一个第二ANN模型,和多个处理元件(PE),其能操作地配置为依次或 并行处理所述多个ANN模型的第一操作和第二操作,所述多个PE包括第一 组PE和第二组PE;以及中央处理器(CPU),其电连接至所述系统总线,所 述CPU被配置为通过所述系统总线访问所述存储器,并且执行应用程序的命 令,将所述第一ANN模型的所述第一操作的一部分分配给所述第一NPU或 所述第一NPU中的所述第一组PE,以及将所述第二ANN模型的所述第二操 作的一部分分配给所述第二NPU或所述第一NPU中的所述第二组PE,其中 所述CPU通过考虑关于所述多个ANN模型的操作次序的信息来执行所述分 配。
根据本公开内容的另一方面,提供了一种用于操作神经处理单 元(NPU)的方法。该方法可以包括:将多个人工神经网络(ANN)模型中的第一 ANN模型的第一操作的一部分分配给第一NPU或分配给所述第一NPU中的 多个处理元件(PE)中的第一组PE;执行所述第一ANN模型的所述第一操作 的一部分;以及将所述多个ANN模型的第二ANN模型的第二操作的一部分 分配给第二NPU或分配给所述第一NPU中的所述多个PE中的第二组PE, 其中,所述分配是基于与关于所述多个ANN模型的操作次序的信息相关的指 令来执行的。
根据本公开内容,可以通过一个NPU同时并行处理多个人工神 经网络模型。
根据本公开内容,由于高优先级数据首先保存在NPU内部存储 器中,因此可以通过重用存储的数据来提高存储器重用率。
根据本公开内容,可以通过仅在特定条件下驱动任何人工神经 网络模型来降低边缘设备的功耗。
根据本公开内容,由于边缘设备包括能够独立操作的NPU,所 以可以缩短时间延迟并降低功耗。
根据本公开内容,边缘设备具有以下效果:为用户提供便利并 且同时阻止隐私数据泄露问题,同时降低功耗。
附图说明
根据以下结合附图的详细描述,将更清楚地理解本公开内容的 上述和其他方面、特征和其他优点,其中:
图1是根据本公开内容示出神经网络处理单元的示意性概念 图;
图2是示出可以应用于本公开内容的处理元件阵列中的一个处 理元件的示意性概念图;
图3是示出图1的NPU 100的修改的示例图;
图4A是根据本公开内容示出包括NPU 100的边缘设备1000的 配置的框图;
图4B是示出图4A的边缘设备1000的修改的框图;
图5是示出示例性人工神经网络模型的示意性概念图;
图6A是用于说明卷积神经网络的基本结构的图。
图6B为便于理解卷积神经网络的操作的综合图。
图7A是示出根据本公开内容的使用图4A或4B的边缘设备的 部件的配置的示例图;
图7B是示出图7A的边缘设备的修改的示例图;
图8A是示出图7A或7B的边缘设备的操作的流程图;
图8B是示出图8A的修改的流程图;
图9A和图9B是分别示出了根据本公开内容的边缘设备作为扩 展的现实(XR)设备的示例图;
图10A是示例性地示出图9A或9B的XR设备的配置的框图;
图10B是示出图10A的修改的框图;
图11是示出图10A或10B的XR设备的操作的流程图;
图12是示出图10A或10B的戴在用户头上的XR设备的示例 图;
图13是根据本公开内容的实施方案的由XR设备1000提供的 现实内容的立体空间显示的示例图;
图14是示出可以基于用户观看的视角来定义的感兴趣区域(ROI) 的范围的示例图;
图15A-15D是分别示出对基于用户注视确定的感兴趣区域(ROI) 执行的视频改进处理的示例图;
图16A和16B是分别示出对基于检测到的用户注视确定的感兴 趣区域(ROI)执行的视频改进处理的示例图;
图17A-17C是示出通过在基于检测到的用户注视确定的感兴趣 区域中合成增强现实视频而提供的示例的示例图;
图18是说明视频改进的过程的流程图;
图19A和19B分别是将边缘设备图示为相机设备和无人机的示 例图;
图20A是示例性地示出图19A的相机设备或图19B的无人机 的配置的框图;
图20B是示出图20A的修改的框图;
图21A和21B是分别示出根据光量变化的视频结果和根据光量 变化的识别率的示例图;
图22A和22B是分别示出根据清晰度变化的视频结果和根据清 晰度变化的识别率的示例图;
图23是说明识别图像中包含的对象并提供反馈数据的过程的框 图。
图24是说明视频预处理过程的详细过程的流程图。
图25是示出识别图像中包含的对象的示例的示例图。
图26A-26C是分别示出识别图像中包括的对象的结果的示例 图;
图27A和27B是分别示出作为边缘设备的机器人和作为边缘设 备的自动驾驶车辆的示例图;
图28A是示出图27A或27B的边缘设备的配置的示例性框图;
图28B是示出图28A的修改的框图;
图29A-29F分别示出了体现为智能手机、可穿戴设备、智能扬 声器、电视和家用电器(例如,冰箱和洗衣机)的边缘设备的示例图;
图30A是示出了图29A至29F的边缘设备的配置的示例性框 图;
图30B是示出图30A的修改的框图;
图31A是示出对多个人工神经网络模型执行的计算的示例图; 和
图31B是示出分配了多个人工神经网络模型的计算的PE的示 例图。
具体实施方式
根据在本公开内容或申请中公开的本公开内容的概念的实施方 案的具体结构或分阶段的描述只是为了解释根据本公开内容的概念的实施方 案的目的而被举例说明。根据本公开内容的概念的实施方案可以以各种形式 实施并且不应被解释为限于本说明书或申请中描述的实施方案。
根据本公开内容的概念的实施方案可以具有各种修改,并且具 体实施方案将在附图中示出并且在本说明书或申请中详细描述。然而,这并 不将根据本公开内容的概念的示例性实施方案限制为特定的示例性实施方 案,应当理解,本公开内容涵盖了包含在本公开内容的构思和技术范围内的 所有修改、等同和替换方案。
诸如第一和/或第二之类的术语用于描述各种组成元件,但是组 成元件不受这些术语的限制。根据本公开内容的概念,在不脱离本公开内容 的范围的情况下,这些术语可能仅用于将一个部件与其他部件区分开的目 的,例如,第一部件可称为第二部件,类似地,在一定范围内,第二部件甚 至可称为第一部件。
应当理解,当描述一个部件“耦合”或“连接”到另一个部件 时,该部件可以直接耦合或连接到另一个部件,但是它们之间可以存在另一 个部件。相比之下,应当理解的是,当描述一个部件“直接耦合”或“直接 连接”到另一个部件时,应当理解为它们之间不存在部件。同时,其他描述 部件的关系的表述,即例如“介于…之间”和“直接介于…之间”或“相邻于”和“直接相邻于”等表述也应类似地解释。
本说明书中使用的术语仅用于描述具体的示例性实施方案,并 且不用于限制本公开内容。除非在上下文中另有明确指示,否则单数形式可 以包括复数形式。在本说明书中,应当理解,术语“包括”或“具有”表示 存在说明书中描述的特征、数量、步骤、操作、部件、部分或者它们的组 合,但是不排除预先存在或添加一个或多个其他特征、数量、步骤、操作、 部件、部分或其组合的可能性。
如果没有相反定义,本文中使用的包括技术或科学术语在内的 所有术语具有与本领域普通技术人员通常理解的那些相同的含义。除非在本 说明书中明确定义,否则在通用词典中定义的术语应被解释为与相关技术领 域的背景中的含义具有相同的含义,并且不应被解释为理想的含义或过于正 式的含义。
在对实施方案的说明中,将省略对本技术领域已知的并且与本 公开内容没有直接关系的技术的描述。这将通过省略不必要的描述而在不模 糊本公开内容的主旨的情况下而被更清楚地传达。
将简要概括本文中使用的术语以帮助理解本公开内容。例如, NPU(其作为神经处理单元的缩写)可以指专门用于计算人工神经网络模型的 与中央处理器(CPU)分开的处理器。ANN(其作为人工神经网络的缩写)可以指 通过模仿人脑中的通过突触连接的神经元以模仿人类智能,从而以层状结构 连接节点的网络。关于人工神经网络的结构的信息包括关于层数的信息、关 于层内的节点数的信息、关于各节点的值的信息、关于计算处理方法的信 息、关于应用于各节点的权重矩阵的信息等。关于人工神经网络的数据局部 性的信息是基于NPU对单独的存储器所需的数据访问请求顺序来预测由 NPU处理的人工神经网络模型的计算顺序的信息。为了实现更高的人工智 能,DNN(其作为深度神经网络的缩写)可以意指增加人工神经网络的隐藏层 数。CNN(其作为卷积神经网络的缩写)是指执行与在人脑的视觉皮层中处理 视频类似的功能的神经网络。众所周知,CNN适合于视频处理,并且可以容 易提取输入数据的特征并识别特征的模式。内核可以指应用于CNN的权重矩 阵。
在下文中,将参照附图详细描述本公开内容的优选的示例性实 施方案。
图1根据本公开内容示出了神经网络处理单元。
参考图1,神经网络处理单元(NPU)100是专门用于执行人工神 经网络(ANN)的操作的处理器。
ANN指的是聚集有人工神经元的网络,其在输入若干输入或刺 激时乘以权重并相加,并且其另外通过激活函数修改和传递添加有偏差的 值。该学习到的人工神经网络可用于根据输入数据输出推理结果。
NPU 100可以是由半导体实现的电气/电子电路。电气/电子电路 可以指包括大量电子设备(例如,晶体管、电容器)。NPU 100可以包括处理元 件(PE)阵列110、NPU内部存储器120、NPU调度器130和NPU接口140。 处理元件阵列110、NPU内部存储器120、NPU调度器130和NPU接口140 中的每一者可以是连接多个晶体管的半导体电路。因此,这些部件中的一些可能无法通过肉眼识别和区分,而只能通过操作来识别。例如,任何电路都 可以作为处理元件阵列110操作,并且也可以作为NPU调度器130操作。
NPU 100可以包括处理元件阵列110、被配置为存储可以在处 理元件阵列110中推理的ANN模型的NPU内部存储器120、以及被配置为 基于ANN模型的数据局部性信息或关于其结构的信息控制处理元件阵列110 和NPU内部存储器120的NPU调度器130。这里,ANN模型可以包括ANN 模型的数据局部性信息或关于其结构的信息。ANN模型可以指已学习执行特定推理功能的AI识别模型。
处理元件阵列110可以执行ANN的操作。例如,当输入数据 被输入时,处理元件阵列110可以允许ANN执行学习。当学习完成后将输入 数据输入时,处理元件阵列110可以通过经学习的ANN来执行推导出推理结 果的操作。
NPU接口140可以通过系统总线与边缘设备中的各种部件(例 如,存储器)通信。例如,NPU 100可以通过NPU接口140将存储在图4A或 4B的存储器200中的ANN模型的数据导入到NPU内部存储器120。
NPU调度器130被配置为控制用于NPU 100的推理计算和 NPU内部存储器120的读写顺序的处理元件阵列110的计算。
NPU调度器130可以被配置为分析ANN模型的数据局部性信 息或关于其结构的信息以控制处理元件阵列110和NPU内部存储器120。
NPU调度器130可分析或接收ANN模型的结构以在处理元件 阵列110中操作。可包含在ANN模型中的ANN的数据可存储每一层的节点 数据、层的排列数据局部性信息或层的结构信息、以及连接每一层的节点的 每个连接网络的权重数据。ANN的数据可以存储在NPU调度器130中提供 的存储器或NPU内部存储器120中。NPU调度器130可以访问图4A或4B 的存储器200,以利用所需的数据。然而,本公开内容不限于此;即,NPU 调度器130可以基于诸如ANN模型的节点数据和权重数据之类的数据来生成 ANN模型的数据局部性信息或关于其结构的信息。权重数据也可以称为权重 内核。节点数据也可以称为特征图。例如,定义在ANN模型的结构中的数据 可以设计ANN模型,或者可以在学习完成时生成。然而,本公开内容不限于 此。
NPU调度器130可以基于ANN模型的数据局部性信息或关于 其结构的信息来调度ANN模型的计算顺序。
NPU调度器130可以基于ANN模型的数据局部性信息或关于 其结构的信息,获取存储ANN模型的层的节点数据和连接网络的权重数据的 存储器地址值。例如,NPU调度器130可以获取存储在存储器中存储的ANN 模型的层的节点数据和连接网络的权重数据的存储器地址值。因此,NPU调 度器130可以将要驱动的ANN模型的层的节点数据和连接网络的权重数据从 存储器200取出并且存储在NPU内部存储器120中。每层的节点数据可以具 有各自对应的存储器地址值。每个连接网络的权重数据可以具有各自对应的 存储器地址值。
NPU调度器130可以基于ANN模型的数据局部性信息或关于 其结构的信息,例如ANN模型的ANN的层的排列数据局部性信息或其结构 的信息,调度处理单元阵列110的计算顺序。
由于NPU调度器130基于ANN模型的数据局部性信息或关于 其结构的信息来调度计算顺序,所以NPU调度器130可以与一般CPU的调 度概念不同地操作。一般CPU的调度操作以在考虑公平性、效率、稳定性、 反应时间等时表现出最佳的效率。也就是说,通过考虑优先级、计算时间 等,进行调度以同时执行最多处理。
传统的CPU考虑到每一处理的例如优先级、计算处理时间等数 据来使用用于调度操作的算法。相反,NPU调度器130可以基于ANN模型 的数据局部性信息或关于其结构的信息来确定处理顺序。
此外,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息和/或要使用的NPU 100的数据局部性信息或关于其结构 的信息来确定处理顺序。
然而,本公开内容不限于NPU 100的数据局部性信息或关于其 结构的信息。例如,NPU 100的数据局部性信息或关于其结构的信息可以通 过使用NPU内部存储器120的存储器大小、NPU内部存储器120的层级结 构、处理元件PE1至PE12的数量数据、以及处理元件PE1至PE12的计算机 结构中的一个或多个数据来确定处理顺序。也就是说,NPU 100的数据局部 性信息或关于其结构的信息可以包括NPU内部存储器120的存储器大小、 NPU内部存储器120的层级结构、处理元件PE1至PE12的数量数据以及处 理元件PE1至PE12的计算机结构中的至少一个或多个数据。然而,本公开 内容不限于NPU 100的数据局部性信息或关于其结构的信息。NPU内部存储 器120的存储器大小包括关于存储器容量的信息。NPU内部存储器120的层 级结构包括关于每个层级结构的特定层之间的连接关系的信息。处理元件PE1至PE12的计算机结构包括关于处理元件中的部件的信息。
根据本公开内容的实施方案,NPU 100可以包括至少一个处理 元件、被配置为存储可以由至少一个处理元件推理的ANN模型的NPU内部 存储器120、以及NPU调度器130,NPU调度器130被配置为基于ANN模 型的数据局部性信息或关于其结构的信息来控制至少一个处理元件和NPU内 部存储器120。此外,NPU调度器130可以被配置成进一步接收NPU 100的数据局部性信息或关于其结构的信息。此外,NPU 100的数据局部性信息或 关于其结构的信息可以包括NPU内部存储器120的存储器大小、NPU内部存 储器120的层级结构、至少一个处理单元的数量数据和至少一个处理单元的 计算机结构中的一个或多个数据。
根据ANN模型的结构,对每一层的计算是依次进行的。也就 是说,当ANN模型的结构确定后,可以确定每一层的计算顺序。根据ANN 模型的结构的计算顺序或数据流的顺序可以定义为ANN模型在算法级别的数 据局部性。
当编译器编译要在NPU 100上执行的ANN模型时,可以重新 配置NPU存储器级别的ANN模型的ANN数据局部性。
也就是说,可以根据编译器、应用于ANN模型的算法以及 NPU 100的操作特性来配置NPU存储器级别的ANN模型的数据局部性。
例如,即使在相同的ANN模型的情况下,待处理的ANN模型 的ANN数据局部性可以通过NPU 100根据计算相应ANN模型的方法不同地 配置,例如特征图平铺,处理元件的平稳方法等,NPU 100的处理元件的数 量,NPU 100中的特征图的缓冲存储器容量,权重等,NPU100中的存储器 层级结构,确定NPU 100计算相应的ANN模型的计算操作的顺序的编译器的算法特性等。原因是即使通过上述因素计算相同的ANN模型,NPU 100也 可能以不同的方式确定时钟单元中每一时刻所需数据的顺序。
编译器可以通过在NPU 100的字单元中在NPU存储器级别配 置ANN模型的ANN数据局部性来确定物理计算处理所需的数据的顺序。
换句话说,在NPU存储器级别的ANN模型的ANN数据局部 性可以被定义为基于NPU100向存储器200请求的数据访问请求顺序来预测 由NPU 100处理的ANN模型的计算顺序的信息。
NPU调度器130可以被配置为存储ANN的数据局部性信息或 关于其结构的信息。
也就是说,即使仅使用ANN模型的ANN的数据局部性信息和/ 或关于其结构的信息,NPU调度器130也可以确定处理顺序。也就是说, NPU调度器130可以通过使用从ANN的输入层到输出层的数据局部性信息 或关于结构的信息来确定计算顺序。例如,输入层计算可以在第一等级中被 调度并且输出层计算可以最后被调度。因此,当NPU调度器130接收到ANN模型的数据局部性信息或关于其结构的信息时,可以确定ANN模型的 所有计算的顺序。因此,可以确定所有调度顺序。
此外,NPU调度器130可以通过考虑ANN模型的数据局部性 信息或关于其结构的信息和NPU 100的数据局部性信息或关于其结构的信息 来确定处理顺序,并能够对于每个确定的顺序实现处理优化。
因此,当NPU调度器130接收ANN模型的数据局部性信息或 关于其结构的信息和NPU 100的数据局部性信息或关于其结构的信息时,可 以进一步改进通过ANN模型的数据局部性信息或关于其结构的信息确定的每 个调度顺序的计算效率。例如,NPU调度器130可以获取具有连接四层的 ANN层的三层以及每一层的权重数据的连接网络数据。在这种情况下,下面 将作为示例描述由NPU调度器130基于ANN模型的数据局部性信息或关于 其结构的信息来调度处理顺序的方法。
例如,NPU调度器130可以将用于推理计算的输入数据配置为 作为ANN模型的输入层的第一层的节点数据,并且调度将首先执行的第一层 的节点数据和与第一层对应的第一连接网络的权重数据的乘法和累加(MAC) 计算。然而,本公开内容的示例不限于MAC计算,并且可以通过使用可以 进行各种修改的乘法器和加法器来执行ANN计算。下文中,仅仅为了便于说 明,将相应的计算称为第一计算,将第一计算的结果称为第一计算值,将相 应的调度称为第一调度。
例如,NPU调度器130将第一计算值配置为与第一连接网络对 应的第二层节点数据,并且可以调度将在第一次调度后要进行的第二层的节 点数据和与第二层对应的第二连接网络的权重数据的MAC计算。在下文 中,仅仅为了便于说明,将相应的计算称为第二计算,将第二计算的结果称 为第二计算值,将相应的调度称为第二调度。
例如,NPU调度器130将第二计算值配置为与第二连接网络对 应的第三层的节点数据,并且可以调度将针对第二调度执行的第三层的节点 数据和与第三层对应的第三连接网络的权重数据的MAC计算。在下文中, 仅仅为了便于说明,将相应的计算称为第三计算,将第三计算的结果称为第 三计算值,将相应的调度称为第三调度。
例如,NPU调度器130将第三计算值配置为第四层的节点数 据,第四层是对应于第三连接网络的输出层,并且可以将存储在第四层的节 点数据中的推理结果调度为存储在NPU内部存储器120中。在下文中,仅仅 为了便于说明,可以将相应的调度称为第四调度。
总之,NPU调度器130可以控制NPU内部存储器120和处理 元件阵列110以按照第一调度、第二调度、第三调度和第四调度的顺序执行 计算。也就是说,NPU调度器130可以被配置为控制NPU内部存储器120和 处理元件阵列110以按照配置的调度顺序执行计算。
总之,根据本公开内容的实施方案的NPU 100可以被配置为基 于ANN的层的结构和与该结构对应的计算顺序数据来调度处理顺序。例如, NPU调度器130可以被配置为基于从ANN模型的ANN的输入层到输出层的 数据局部性信息或关于结构的信息来调度处理顺序。
NPU调度器130通过使用基于ANN模型的数据局部性信息或 关于其结构的信息的调度顺序来控制NPU内部存储器120,以提高NPU的 计算速度和提高存储器重用率。
由于由根据本公开内容的实施方案的NPU 100驱动的ANN计 算的特性,一层的计算值会具有作为下一层的输入数据的特征。
因此,NPU 100根据调度顺序控制NPU内部存储器120以提高 NPU内部存储器120的存储器重用率。存储器重用可以由存储在存储器中的 数据被读取多少次来确定。例如,当特定数据存储在存储器中时,特定数据 只被读取一次,然后相应的数据被删除或覆盖,存储器重用率可以为100%。 例如,当特定数据存储在存储器中时,特定数据被读取四次,然后相应的数 据被删除或覆盖,存储器重用率可以为400%。也就是说,存储器重用率可以定义为一次存储的数据的重用次数。换言之,存储器重用可以指重用存储在 存储器中的数据或存储特定数据的特定存储器地址。
详细地,当NPU调度器130被配置为接收ANN模型的数据局 部性信息或关于其结构的信息,从而可以确定通过接收到的ANN模型的数据 局部性信息或关于其结构的信息执行ANN计算的顺序数据时,NPU调度器 130识别出ANN模型特定层的节点数据和特定连接网络的权重数据的计算结 果成为下一层的对应节点数据。
因此,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具有分析 ANN模型的数据局部性信息或关于其结构的信息并且提供有效的调度。此 外,由于能够重用存储器的计算所需的数据不会冗余地存储在NPU内部存储 器120中,因此具有减少存储器使用量的效果。此外,NPU调度器130具有计算因存储器重用而减少的存储器使用量以提高NPU内部存储器120的效率 的效果。
此外,NPU调度器130可以被配置为基于NPU 100的数据局部 性信息或关于其结构的信息来监控NPU内部存储器120的资源使用和处理元 件PE1至PE12的资源使用。因此,可以提高NPU 100的硬件资源使用的效 率。
根据本公开内容的实施方案的NPU 100的NPU调度器130具 有通过使用ANN模型的数据局部性信息或关于其结构的信息来重用存储器的 效果。
具体而言,当ANN模型为深度神经网络时,层的数量和连接 网络的数量可能会显著增加,在这种情况下,可以进一步最大化存储器重用 的效果。
也就是说,当NPU 100没有确定ANN模型的数据局部性信息 或关于其结构的信息和计算顺序时,NPU调度器130可能无法确定存储在 NPU内部存储器120中的值是否是在存储器中重用。因此,NPU调度器130 可能不必要地生成每次处理所需的存储器地址并且需要将基本上相同的数据 从一个存储器地址复制到另一存储器地址。因此,会发生不必要的存储器读 写操作,并且可以存储在NPU内部存储器120中重复的值,这可能导致存储 器被不必要地浪费的问题。
处理元件阵列110指的是其中布置了多个处理元件PE1至PE12 的配置,所述处理元件PE1至PE12被配置为计算ANN的节点数据和连接网 络的权重数据。每个处理元件可以包括乘法和累加(MAC)计算机和/或算术逻 辑单元(ALU)计算机。然而,根据本公开内容的实施方案不限于此。
在图1中,已经示出了多个处理元件,但是通过在一个处理元 件中替换MAC来并行地布置和配置由多个乘法器和加法器树实现的计算 机。在这种情况下,处理元件阵列110可以被称为包括多个计算机的至少一 个处理元件。
处理元件阵列110被配置为包括多个处理元件PE1至PE12。举 例说明图1的多个处理元件PE1至PE12只是为了描述方便,多个处理元件 PE1至PE12的数量不受限制。处理元件阵列110的大小或数量可以由多个处 理元件PE1至PE12的数量决定。处理元件阵列110的大小可以以N×M矩阵 的形式实现。这里,N和M是大于零的整数。处理元件阵列110可以包括 N×M个处理元件。也就是说,处理元件的数量可以为至少一个。
可以通过考虑NPU 100操作的ANN模型的特性来设计处理元 件阵列110的大小。具体而言,可以通过考虑将被操作的ANN模型的数据大 小、所需的操作速度、所需的功耗等来确定处理元件的数量。ANN模型的数 据大小可以根据ANN模型的层数和每层的权重数据大小来确定。
因此,根据本公开内容的实施方案的NPU 100的处理元件阵列 110的大小不受限制。随着处理元件阵列110的处理元件数量增加,操作 ANN模型的并行计算能力增加,但NPU100的制造成本和物理尺寸会增大。
例如,在NPU 100中操作的ANN模型可以是学习以检测三十 个特定关键词的人工神经网络,即AI关键词识别模型。在这种情况下,考虑 到计算量的特性,NPU 100的处理元件阵列110的大小可以设计为4×3。替 代地,NPU 100可以包括12个处理元件。然而,本公开不限于此,多个处理 元件PE1至PE12的数量可以在例如8至16,384的范围内选择。也就是说, 本公开内容的实施方案不限于处理元件的数量。
处理元件阵列110被配置为执行ANN计算所需的诸如加法、 乘法和累加之类的功能。换言之,处理元件阵列110可以被配置为执行乘法 和累加(MAC)计算。
在下文中,以处理元件阵列110的第一处理元件PE1为例进行 说明。
图2示出了可以应用于本公开内容的处理元件阵列中的一个处 理元件。
根据本公开内容的实施方案的NPU 100可以包括处理元件阵列 110、被配置为存储可以在处理元件阵列110中推理的ANN模型的NPU内部 存储器120、以及NPU调度器130,该NPU调度器130被配置基于ANN模 型的数据局部性信息或关于其结构的信息来控制处理元件阵列110和NPU内 部存储器120。处理元件阵列110被配置成执行MAC计算,处理元件阵列110可以被配置为对MAC计算结果进行量化并且将其输出。然而,本公开内 容的实施方案不限于此。
NPU内部存储器120可以根据ANN模型的存储器大小和数据 大小存储ANN模型的全部或部分。
参考图2,第一处理元件PE1可以包括乘法器111、加法器 112、累加器113和位量化单元114。然而,根据本公开内容的实施方案不限 于此,并且考虑到人工神经网络的计算特性,可以修改处理元件阵列110。
乘法器111将(N)位数据和(M)位数据输入相乘。乘法器111的 计算值被输出到(N+M)位数据。这里,N和M是大于零的整数。用于接收(N) 位数据的第一输入单元可以被配置为接收具有诸如变量之类的特性的值,并 且用于接收(M)位数据的第二输入单元可以被配置为接收具有诸如常数之类的 特性的值。当NPU调度器130区分变量值和常数值特性时,NPU调度器130 具有提高NPU内部存储器120的存储器重用率的作用。然而,乘法器111的 输入数据不限于常数值和变量值。也就是说,根据本公开内容的实施方案, 处理元件的输入数据可以通过理解常数值和变量值的特性来操作,从而提高 NPU 100的计算效率。然而,NPU100是不限于输入数据的常量值和变量值 的特性。
这里,具有诸如变量或变量含义之类的特性的值意指当对应的 值是被存储的存储器地址值时,每当导入的输入数据被更新时更新。例如, 每一层的节点数据可以是用ANN模型的权重数据反映的MAC计算值,当视 频数据的对象识别等被推理为对应的ANN模型时,输入视频针对每一帧变 化,使得每一层的节点数据发生变化。
这里,具有诸如常数或常数的含义之类的特性的值意指当对应 的值是存储的存储器地址值时,不管导入的输入数据的更新如何,都保持该 值。例如,即使连接网络的权重数据基于ANN模型的唯一推理确定由相应的 ANN模型推理视频数据的对象识别等,连接网络的权重数据也可以不改变。
也就是说,乘法器111可以被配置为接收一个变量和一个常 数。具体地,输入到第一输入单元的变量值可以是ANN的层的节点数据,节 点数据可以是ANN的输入层的输入数据、隐藏层的累加值和输出层的累加 值。输入到第二输入单元的常数值可以是ANN的连接网络的权重数据。
NPU调度器130可以被配置为考虑到常数值的特性来提高存储 器重用率。
变量值是每一层的计算值,NPU调度器130基于ANN模型的 数据局部性信息或关于其结构的信息识别可重用的变量值,并且可以控制 NPU内部存储器120以重用该存储器。
常数值是每个连接网络的权重数据,并且NPU调度器130基于 ANN模型的数据局部性信息或关于其结构的信息识别重复使用的连接网络的 常数值,并且可以控制NPU内部存储器120以重用该存储器。
也就是说,NPU调度器130可以被配置为基于ANN模型的数 据局部性信息或关于其结构的信息识别可重用变量值和可重用常数值,并且 NPU调度器130可以被配置为控制NPU内部存储器120以重复使用该存储 器。
处理元件可以限制运算使得乘法器111不计算,因为当零值被 输入到乘法器111的第一输入单元和第二输入单元中的一者的输入单元时即 使不执行计算,计算结果为零也是已知的。例如,当零值被输入到乘法器 111的第一输入单元和第二输入单元中的一者时,乘法器111可以被配置为 以跳零的方式运算。
输入到第一输入单元和第二输入单元的数据的位宽可以根据 ANN模型的每一层的节点数据和权重数据的量化来确定。例如,可以将第一 层的节点数据量化为5位,将第一层的权重数据量化为7位。在这种情况 下,第一输入单元被配置为接收5位数据,第二输入单元可以被配置为接收 7位数据。
当存储在NPU内部存储器120中的量化数据被输入到处理元件 的输入单元时,NPU100可以控制要实时转换的量化位宽。也就是说,量化 位宽可以针对每一层而变化。处理元件可以被配置为通过在输入数据的位宽 被转换时实时地从NPU 100接收位宽信息来实时地转换位宽,并且生成输入 数据。
累加器113通过使用加法器112将乘法器111的计算值和累加 器113的计算值累加(L)循环的数量。因此,累加器113的输出单元和输入单 元的数据的位宽可以输出到(N+M+log2(L))位。这里,L是大于零的整数。
累加器113可以通过在累加终止时接收初始化重置来将存储在 累加器113中的数据初始化为零。然而,根据本公开内容的实施方案不限于 此。
位量化单元114可以减小从累加器113输出的数据的位宽。位 量化单元114可以由NPU调度器130控制。量化数据的位宽可以输出为(X) 位。这里,X是大于零的整数。根据上述配置,处理元件阵列110被配置为 执行MAC计算,并且处理元件阵列110具有将MAC计算结果量化并输出的 效果。特别是,随着(L)循环的增加,量化具有进一步降低功耗的效果。此外,当功耗降低时,可以减少发热。特别地,当发热减少时,可以减少由于 NPU 100的高温而导致故障的可能性。
位量化单元114的输出数据(X)位可以是下一层的节点数据或卷 积的输入数据。如果ANN模型被量化,则位量化单元114可以被配置为从 ANN模型接收量化信息。然而,本公开内容不限于此,NPU调度器130可以 被配置为通过分析ANN模型来提取量化信息。因此,可以将输出数据(X)位 转换并输出到量化位宽以对应于量化数据大小。位量化单元114的输出数据 (X)位可以以量化的位宽存储在NPU内部存储器120中。
根据本公开内容的实施方案的NPU 100的处理元件阵列110包 括乘法器111、加法器112、累加器113和位量化单元114。处理元件阵列 110可以通过位量化单元114将从累加器113输出的位宽为(N+M+log2(L))位 的数据减少到位宽为(X)位的。NPU调度器130控制位量化单元114以将输出 数据的位宽减少从最低有效位(LSB)到最高有效位(MSB)的预定位。当输出数 据的位宽减小时,可以降低功耗、计算量和存储器使用量。然而,当位宽减 小到预定长度或更小时,存在一个问题,即ANN模型的推理精度可能会迅速 降低。因此,输出数据位宽的减少,即量化水平,可以通过比较降低功耗、 计算量和存储器使用量的程度与ANN模型的推理精度的降低水平来确定。量 化级别可以通过确定ANN模型的目标推理精度并在逐渐减小位宽的同时测试 位宽来确定。可以为每层的每个计算值确定量化级别。
根据上述第一处理元件PE1,控制乘法器111的(N)位数据和(M) 位数据的位宽,通过位量化单元114减小计算值(X)位的位宽。结果,处理元 件阵列110具有在提高MAC计算速度的同时降低功耗的效果,并且还具有 进一步高效地执行ANN的卷积计算的效果。
NPU 100的NPU内部存储器120可以是考虑到处理元件阵列 110的MAC计算特性和功耗特性而配置的存储器系统。
例如,考虑到处理元件阵列110的MAC计算特性和功耗特 性,NPU 100可以被配置为减小处理元件阵列110的计算值的位宽。
NPU 100的NPU内部存储器120可以被配置为最小化NPU 100 的功耗。
考虑到操作ANN模型的数据大小和计算步骤,NPU 100的 NPU内部存储器120可以是被配置为以低功率控制存储器的存储器系统。
NPU 100的NPU内部存储器120可以是低功率存储器系统,考 虑到操作ANN模型的数据大小和计算步骤,该系统被配置为重用存储权重数 据的特定存储器地址。
NPU 100可以提供用于赋予非线性的各种激活函数。例如,可 以提供sigmoid函数、双曲正切函数或ReLU函数。在MAC计算之后可以选 择性地应用激活函数。应用激活函数的计算值可以被称为激活图。
图3示出了图1的NPU 100的修改方案。除了处理元件阵列 110之外,图3的NPU 100与图1的NPU 100基本相同。因此,在下文中, 仅为了描述方便,可以省略重复的描述。
除了多个处理元件PE1至PE12之外,图3的处理元件阵列110 还可以包括分别对应于多个处理元件PE1至PE12的寄存器文件RF1至 RF12。在图3中,为了描述方便,以处理元件PE1至PE12和寄存器文件 RF1至RF12为例,使得多个处理元件PE1至PE12的数量(大小)和多个寄存 器文件RF1至RF12的数量(大小)没有限制。
处理元件阵列110的大小或数量可以由多个处理元件PE1至 PE12和多个寄存器堆RF1至RF12的数量确定。处理元件阵列110和多个寄 存器堆RF1至RF12的大小可以以N×M矩阵的形式实现。这里,N和M是 大于零的整数。
可以通过考虑NPU 100操作的ANN模型的特性来设计处理元 件阵列110的阵列大小。具体地,可以通过考虑待操作的ANN模型的数据大 小、所需的操作速度、所需的功耗等来确定寄存器文件的存储器大小。
NPU 100的寄存器文件RF1至RF12是直接连接到处理元件 PE1至PE12的静态存储器单元。寄存器文件RF1至RF12可以被配置用于例 如触发器和/或锁存器。寄存器文件RF1至RF12可以被配置为存储对应处理 元件PE1至PE12的MAC计算值。寄存器文件RF1至RF12可以被配置为向NPU系统存储器120提供或从NPU系统存储器120接收权重数据和/或节点 数据。
图4A示出了根据本公开内容的包括NPU 100的边缘设备1000 的配置。
参考图4A,边缘设备1000是可以进行各种修改的各种电子设 备的一个示例。
边缘设备1000包括图1或3的NPU 100,并且可以指能够通过 使用由NPU 100推理的ANN模型用于边缘计算的各种电子设备。这里,边 缘计算可以指发生计算的边缘或外围部分并且可以指直接产生数据的终端或 终端附近的各种电子设备。NPU 100可以被称为神经处理单元(NPU)。
边缘设备1000可以包括例如手机、智能手机、AI扬声器、数 字广播终端、导航、可穿戴设备、智能手表、智能冰箱、智能电视、数字标 牌、VR设备、AR设备、AI CCTV、AI扫地机器人、平板电脑、笔记本电 脑、自动驾驶汽车、自动驾驶无人机、自动驾驶两足步行机器人、自动驾驶 四足步行机器人、自动驾驶移动、人工智能机器人等,其包括人工神经网络(ANN)。
然而,根据本公开内容的实施方案的边缘设备1000不限于上述 电子设备。
边缘设备1000可以被配置为至少包括NPU 100,并且选择性地 还包括无线通信单元1010、输入单元1020、输出单元1040、接口1050、系 统总线1060、存储器200、中央处理单元1080和功率控制单元1090中的至 少一些。此外,边缘设备1000还可以通过无线通信单元1010连接到互联网 以接收云AI服务。
系统总线1060被配置为控制边缘设备1000的每个部件的数据 通信。系统总线1060可以通过形成在基板上的导电图案来实现。为此,上述 部件可以固定在基板上以电连接到基板上的导电图案。
系统总线1060是边缘设备1000的传输系统。系统总线1060可 以被称为计算机总线。边缘设备1000的所有部件可以具有唯一的地址,并且 系统总线1060可以通过地址将部件彼此连接。系统总线1060可以处理例如 三种类型的数据。首先,当进行数据传输时,系统总线1060可以处理存储器 200中存储数据的地址。其次,系统总线1060可以处理有意义的数据,例如 存储在相应地址中的计算结果。第三,系统总线1060可以处理数据流,例如 如何处理地址数据和数据,以及需要在何时何地移动数据。然而,根据本公 开内容的实施方案不限于此。中央处理单元1080中产生的各种控制信号可以 通过系统总线1060传输到相应的部件。
无线通信单元1010可以包括一个或多个通信模块,其实现边缘 设备1000和无线通信系统之间、边缘设备1000和另一边缘设备之间、或者 边缘设备1000和互联网之间的无线通信。
例如,无线通信单元1010可以包括移动通信收发器1011、短 距离通信收发器1012和位置信息接收器1013中的至少一者。
无线通信单元1010的移动通信收发器1011是指用于在根据移 动通信的技术标准或通信方法构建的移动通信网络上与基站、外部终端和服 务器中的至少一个收发无线信号的模块。移动通信收发器1011可以嵌入或外 部内置在边缘设备1000中。技术标准包括例如长期演进(LTE)、LTE Advanced、LTE-Pro、5G(第五代)、6G等。然而,根据本公开内容的实施方 案不限于此。
无线通信单元1010的短距离通信收发器1012是用于短距离通 信的收发器,例如包括无线LAN(WLAN)、无线保真(Wi-Fi)、Wi-Fi Direct、 使用蓝牙的射频识别(RFID)、红外数据协会(IrDA)、超宽带(UWB)、 ZigBee、近场通信(NFC)、无线通用串行总线(无线USB)等,然而,根据本公 开内容的实施方案不限于此。
这样的短距离通信收发器1012可以通过无线局域网(无线局域 网)支持边缘设备1000和无线通信系统之间、边缘设备1000和与边缘设备 1000互锁的另一边缘设备之间、或者边缘设备1000和分离网络之间的无线 通信。例如,另一边缘设备可以是根据本公开内容能够与边缘设备1000交换 数据的可穿戴设备,诸如智能手表、智能眼镜、头戴式显示器(HMD)等。然 而,根据本公开内容的实施方案不限于此。
无线通信单元1010的位置信息接收器1013是指用于获取边缘 设备1000的位置的模块。位置信息技术包括例如使用全球导航卫星系统 (GNSS)(其使用卫星)的方法,使用蓝牙的方法,使用信标的方法,使用无线 保真(Wi-Fi)的方法。GNSS包括美国的全球定位系统(GPS)、俄罗斯的全球导 航卫星系统(GLONASS)、欧洲的欧洲卫星导航系统(GALILEO)等。
例如,边缘设备1000可以使用从卫星传输的信号来获取边缘设 备1000的位置。作为另一示例,边缘设备1000可以基于向Wi-Fi模块传输 无线信号或从Wi-Fi模块接收无线信号的无线接入点(AP)的数据,通过使用 Wi-Fi模块来获取边缘设备1000的位置。然而,根据本公开内容的实施方案 不限于此。
通过无线通信单元1010,边缘设备1000可以与互联网连接, 并且边缘设备1000可以接收各种类型的AI服务。
例如,边缘设备1000通过无线通信单元1010将语音信号“今 天天气怎么样?”传输到互联网上的云AI服务,并且云AI服务可以通过无 线通信单元1010将接收到的语音信号的推理结果传输到边缘设备1000。然 而,根据本公开内容的实施方案不限于此。
输入单元1020可以包括向边缘设备1000提供各种数据或信号 输入的各种部件。输入单元1020可以包括用于输入视频信号的相机1021、 用于输入声学信号的麦克风1022、用于从用户接收数据的用户输入接收器 1023、用于检测距离的接近传感器1024、用于检测环境光量的照度传感器 1025、用于通过发射特定频率的无线电波来检测对象的雷达1026、用于通过 辐射激光来检测对象的LiDAR 1027、陀螺仪传感器1028、加速度传感器 1029等。
输入单元1020可以被配置为执行提供视频数据、声学数据、用 户输入数据和距离数据中的至少一种数据的功能。
输入单元1020的相机1021可以是用于通过NPU 100推理的图 像处理、手势识别、对象识别、事件识别等的相机。
输入单元1020的相机1021可以提供静止图像或视频数据。
输入单元1020的相机1021的视频信号可以被传输到中央处理 单元1080。当视频信号被传输到中央处理单元1080时,中央处理单元1080 可以被配置为传输视频信号到NPU100。此时,中央处理单元1080可以进行 图像处理,处理后的视频信号可以被NPU 100。然而,本公开内容不限于 此,系统总线1060可以将视频信号传输到NPU 100。
输入单元1020的相机1021的视频信号可以被传输到NPU 100。当视频信号被传输到NPU 100时,NPU 100可以被配置为将推理结果 传输到中央处理单元1080。此时,可以根据由NPU 100操作的ANN模型进 行例如图像处理、手势识别、对象识别和事件识别之类的推理计算,并将推 理结果传输到中央处理单元1080。然而,本公开内容不限于此,并且NPU100可以通过系统总线1060将推理结果传输到除中央处理单元1080之外的其 他部件。
输入单元1020的相机1021可以由至少一个相机配置。例如, 输入单元1020的相机1021可以是多个相机,其用于为自主驾驶车辆的自主 驾驶提供前、后、左、右方向的视频信号。此外,还可包括车内相机,以确 定车内驾驶员的状况。例如,输入单元1020的相机1021可以是智能手机上 具有不同视角的多个相机。
输入单元1020的相机1021可以由可见光相机、近红外相机和 热视频相机中的至少一个配置。然而,本公开内容不限于此,相机1021包括 被配置为同时检测可见光和近红外线的复合图像传感器,并且可以被配置为 同时检测可见光和近红外线。
当输入单元1020的相机1021是多个相机时,边缘设备1000可 以以批量模式的形式向NPU 100提供视频信号,以提高NPU 100的推理性 能。
输入单元1020的麦克风1022将外部声学信号转换并输出为电 语音数据。语音数据可以输出为模拟信号或数字信号。可以在麦克风1022中 实施各种噪声去除算法以去除在接收外部声学信号的过程中产生的噪声。
输入单元1020的麦克风1022可以由至少一个麦克风配置。例 如,多个麦克风1022可以是设置在位于每只耳朵中的一对耳机中的麦克风。
输入单元1020的麦克风1022的声学信号可以被传输到中央处 理单元1080。当声学信号被传输到中央处理单元1080时,声学信号可以通 过NPU 100被传输到NPU 100系统总线1060。此时,中央处理单元1080可 以通过傅立叶变换将声信号转换成频域,并且可以将转换后的声信号传输到 NPU 100。然而,本公开内容不限于此,并且视频信号可以通过系统总线 1060通过中央处理单元1080以外的另一部件传输到NPU 100。
输入单元1020的麦克风1022的声学信号可以被传输到NPU 100。当声学信号被传输到NPU 100时,NPU 100可以被配置为将推理结果 传输到中央处理单元1080。此时,可以根据由NPU 100操作的ANN模型进 行诸如声学处理、关键字识别、噪声去除、句子识别和翻译成其他语言之类 的推理计算,并且可以将推理结果传输到中央处理单元1080。然而,本公开 内容不限于此,NPU 100可以将推理结果传输到其他部件,例如功率控制单 元1090、无线通信单元1010、接口1050、输出单元1040、存储器200等, 而不是中央处理单元1080。
输入单元1020的用户输入接收器1023可以包括例如触摸按 键、按钮、触摸面板、鼠标、键盘、触摸板、遥控器以及用户的手势识别器 中的至少一种。然而,根据本公开内容的实施方案不限于此。NPU 100可以 被配置为根据操作的ANN模型接收用户输入接收器1023的信号并且执行相 应的推理计算。然而,根据本公开内容的实施方案不限于此。
输入单元1020的用户输入接收器1023用于接收来自用户的数 据,当通过用户输入接收器1023输入数据时,中央处理单元1080可以响应 输入数据来控制边缘设备1000的操作。用户输入接收器1023可以包括机械 输入装置、按钮、开关和触摸式输入装置。触摸式输入装置可以包括通过软 件处理显示在触摸屏上的可视键或设置在触摸屏以外的部分的触摸键。触摸 屏可以通过使用例如电阻方法、电容方法、红外方法、超声波方法和磁场方法之类的各种触摸方法中的至少一种来检测对显示器1041的触摸输入。触摸 屏可以被配置为检测触摸对象的位置、面积、压力等。例如,电容式触摸屏 可以被配置为将施加到特定部位的压力变化或特定部位的电容变化转换为电 输入信号。例如,触摸对象可以是手指、触摸笔或触控笔、指针等。
输入单元1020的接近传感器1024是指通过使用电磁力、红外 线等来检测靠近边缘设备1000的对象或存在于边缘设备1000周围的对象的 存在或不存在而没有机械接触的传感器。接近传感器1024的示例包括透射型 光电传感器、直接反射型光电传感器、镜面反射型光电传感器、高频振荡型 接近传感器、电容式接近传感器、磁接近传感器、红外接近传感器等。然 而,根据本公开内容的实施方案不限于此。NPU 100可以被配置为根据操作 ANN模型接收接近传感器1024的信号并且执行相应的推理计算。然而,根 据本公开内容的实施方案不限于此。
输入单元1020的照度传感器1025指的是能够通过使用光电二 极管来检测边缘设备1000的环境光量的传感器。NPU 100可以被配置为根据 操作ANN模型接收照度传感器1025的信号并执行相应的推理计算。然而, 根据本公开内容的实施方案不限于此。
输入单元1020的雷达1026可以通过发射电磁波来检测反射到 对象的信号以提供诸如对象的距离、角度和速度之类的数据。边缘设备1000 可以被配置为包括多个雷达1026。雷达1026可以被配置为包括短程雷达、 中程雷达和远程雷达中的至少一者。NPU 100可以被配置为根据操作ANN模 型接收雷达1026的信号并执行相应的推理计算。然而,根据本公开内容的实 施方案不限于此。
输入单元1020的LiDAR 1027可以以恒定的方式照射光信号以 分析反射到对象的光能并提供周围的三维空间数据。边缘设备1000可以被配 置为包括多个LiDAR 1027。
陀螺仪传感器1028可以检测边缘设备1000的旋转操作。具体 地,陀螺仪传感器1028可以测量旋转角速度。角速度可以通过将旋转运动中 产生的科里奥利(Coriolis)力转换成电信号来计算。科里奥利力是指与运动对 象的速度成正比的垂直于运动方向的力。陀螺仪传感器1028可以测量并输出 旋转角、斜率等。
当边缘设备1000移动时,加速度传感器1029可以测量移动加 速度。
边缘设备1000的各种运动可以通过陀螺仪传感器1028和加速 度传感器1029的组合来测量。
NPU 100可以被配置为根据操作的ANN模型接收LiDAR 1027 的信号并执行相应的推理计算。然而,根据本公开内容的实施方案不限于 此。
然而,输入单元1020不限于前述实施方案并且可以被配置为进 一步包括磁传感器、G传感器、运动传感器、手指扫描传感器、超声波传感 器、电池电量计、气压计、湿度计、温度计、放射性传感器、热检测传感 器、气体检测传感器和化学检测传感器。
根据本公开实施方案的边缘设备1000的NPU 100可以被配置 为根据操作的ANN模型接收输入单元1020的信号,并执行相应的推理计 算。
根据本公开内容的实施方案的边缘设备1000可以被配置为将从 输入单元1020输入的各种输入数据提供给NPU 100以执行各种推理计算。 输入数据可以在中央处理单元1080中预处理之后输入到NPU 100。
例如,NPU 100可以被配置为选择性地输入相机1021、雷达 1026和LiDAR 1027中的每一者的输入数据,并且推理用于自主驾驶的周围 环境数据。
例如,NPU 100可以被配置为接收相机1021和雷达1026的输 入数据并且推理自动驾驶所需的周围环境数据。
输出单元1040产生与视觉、听觉或触觉有关的输出,并且可以 包括显示器1041、扬声器1042、触觉输出设备1043和光学输出设备1044中 的至少一者。显示器1041可以是包括多个像素阵列的液晶面板、有机发光显 示面板等。然而,根据本公开内容的实施方案不限于此。光输出设备1044可 以通过使用边缘设备1000的光源的光来输出用于通知事件发生的光信号。发 生事件的示例可以包括消息接收、未接来电、警报、日程通知、电子邮件接收、通过应用程序接收数据等。
接口1050用作连接到边缘设备1000的所有外部设备的通道。 接口1050从外部设备接收数据,接收功率以将功率传输到边缘设备1000内 部的每个部件,或将边缘设备1000内部的数据传输到外部设备。例如,接口 1050可以包括无线/有线耳机端口、外部充电器端口、有线/无线数据端口、 存储器卡端口、连接设备与识别模块的端口、音频输入/输出(I/O)端口、视频 输入/输出(I/O)端口、耳机端口等。
存储器200是用于根据边缘设备1000的控制来存储数据的设 备。存储器200可以选择性地包括易失性存储器和非易失性存储器。易失性 存储设备可以是这样的存储设备,其中仅在供电时存储数据,并且当供电中 断时所存储的数据被破坏(转储)。非易失性存储设备可以是即使在电源中断 时也存储数据的设备。
存储器200可以存储用于中央处理单元1080或NPU 100的操 作的程序并且临时存储输入/输出数据。存储器200可以包括闪存类型、硬盘 类型、固态盘(SSD)类型、硅磁盘驱动器(SDD)类型、多媒体卡微型类型、卡 类型存储器(例如,SD或XD存储器等)、随机存取存储器(RAM)、动态随机 存取存储器(DRAM)、静态随机存取存储器(SRAM)、磁性随机存取存储器 (MRAM)、自旋-转移转矩磁性随机存取存储器(STT-MRAM)、嵌入式磁性随 机存取存储器(eMRAM)、正交自旋转移磁性随机存取存储器(OST-MRAM)、 相变RAM(PRAM)、铁电RAM(FeRAM))、只读存储器(ROM)、电可擦可编 程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁存储器、磁盘和光 盘中的至少一种类型的存储介质。
下面将要描述的各种ANN模型可以存储在存储器200的非易 失性存储设备中。至少一个ANN模型可以通过边缘设备1000的指令存储在 NPU 100的易失性存储器中以提供推理计算功能。
中央处理单元1080可以控制边缘设备1000的整体操作。例 如,中央处理单元1080可以是中央处理单元(CPU)、应用处理器(AP)或数字 信号处理器(DSP)。中央处理单元1080可以控制边缘设备1000或执行各种指 令。中央处理单元1080可以提供或接收NPU 100所需的数据。中央处理单 元1080可以控制连接到系统总线1060的各种部件。
功率控制单元1090被配置为控制每个部件的功率。中央处理单 元1080可以被配置为控制功率控制单元1090。功率控制单元1090接收外部 功率和内部功率以向边缘设备1000中包括的每个部件提供功率。功率控制单 元1090可以包括电池。当在一定时间内未从中央处理单元1080接收到控制 信号时,电源控制单元1090可以选择性地阻止边缘设备1000的每个部件的 功率供应。NPU 100也可以一直运行并且可以被配置为推理特定情况以向中 央处理单元1080提供天气信号。中央处理单元1080可以通过NPU 100的推 理结果来控制功率控制单元1090以向边缘设备1000的特定部件提供功率。
NPU 100被配置为执行各种ANN推理计算。NPU 100的特征在 于中央处理单元1080被配置为有效地计算低效的ANN推理计算。
NPU 100只是图4A的边缘设备1000的一个示例,并且示出了 可以包括在边缘设备1000中的各种部件。然而,根据本公开内容的实施方案 不限于此,并且可以根据示例的目的和配置选择性地包括或排除每个部件。 也就是说,在一些情况下,图4A的部件中的一些可能不是必需的部件,并 且优选地,就优化方面而言,每个示例包括或排除图4A的部件中的一些。
图4B图示了图4A的边缘设备1000的修改方案。
与图4A的边缘设备不同,图4B的边缘设备1000仅包括一些 部件。因此,边缘设备1000可以根据应用通过仅包括一些部件来实现。
如果图4B的边缘设备1000例如是增强现实(AR)设备或虚拟现 实(VR)设备,则边缘设备1000可以通过使用一个NPU 100来执行图像识 别、关键字识别和手势识别。也就是说,一个NPU 100可以提供多种推理功 能。
这样,通过由一个NPU 100执行多个推理计算,可以减少边缘 设备1000的部件数量和制造成本。
图5示出了示例性ANN模型。
在下文中,将描述能够在NPU 100中操作的示例性ANN模型 110-10。
图5的ANN模型110-10可以是在图1或3的NPU 100中学习 或在单独的机器学习设备中学习的ANN。ANN模型可以是被学习以执行各 种推理功能例如对象识别和语音识别的ANN。
ANN模型110-10可以是深度神经网络(DNN)。然而,根据本公 开内容的实施方案的ANN模型110-10不限于DNN。
例如,ANN模型110-10可以实现为VGG、VGG16、DenseNet 和深度神经网络(DNN)的模型,例如具有编码器-解码器结构的全卷积网络(FCN)、SegNet、DeconvNet、DeepLAB V3+、以及U-net、SqueezeNet、 Alexnet、ResNet18、MobileNet-v2、GoogLeNet、Resnet-v2、Resnet50、 Resnet101、Inception-v3等。然而,本公开内容不限于上述模型。此外, ANN模型110-10可以是基于至少两个不同模型的集成模型。
ANN模型110-10可以存储在NPU 100的NPU内部存储器120 中。替代地,ANN模型110-10可以被实现为存储在图4A或4B的边缘设备 1000的存储器200中,然后在驱动ANN模型110-10时加载到NPU 100的 NPU内部存储器120中。
在下文中,将参考图5描述由NPU 100执行的示例性ANN模 型110-10的推理过程。
ANN模型110-10是示例性DNN模型,其包括输入层110-11、 第一连接网络110-12、第一隐藏层110-13、第二连接网络110-14、第二隐藏 层110-15、第三连接网络110-16和输出层110-17。然而,本公开内容不仅限 于图4的ANN模型。第一隐藏层110-13和第二隐藏层110-15可以被称为多 个隐藏层。
作为示例,输入层110-11可以包括x1和x2输入节点。也就是 说,输入层110-11可以包括关于两个输入值的信息。图1或图3的NPU调 度器130可以配置在图1或3的NPU内部存储器120中的存储器地址,在该 存储器地址中存储关于来自输入层110-11的输入值的信息。
例如,第一连接网络110-12可以包括关于用于将输入层110-11 的每个节点连接到第一隐藏层110-13的每个节点的六个权重值的信息。图1 或图3的NPU调度器130可以配置在NPU内部存储器120中的存储器地 址,在该存储器地址中存储关于第一连接网络110-12的权重值的信息。每个 权重值乘以输入节点值,并且将乘积的累加值存储在第一隐藏层110-13中。
第一隐藏层110-13可以示例性地包括a1、a2和a3节点。也就 是说,第一隐藏层110-13可以包括关于三个节点值的信息。图1或图3的 NPU调度器130可以配置在NPU内部存储器120中的用于存储关于第一隐藏 层110-13的节点值的信息的存储器地址。
例如,第二连接网络110-14可以包括关于用于将第一隐藏层110-13的每个节点连接到第二隐藏层110-15的每个节点的九个权重值的信 息。图1或3的NPU调度器130可以配置在NPU内部存储器120中的用于 存储关于第二连接网络110-14的权重值的信息的存储器地址。第二连接网络 110-14的权重值乘以分别从第一隐藏层110-13输入的节点值,并且将乘积的 累加值存储在第二隐藏层110-15中。
第二隐藏层110-15可以示例性地包括b1、b2和b3节点。也就 是说,第二隐藏层110-15可以包括关于三个节点值的信息。NPU调度器130 可以配置在NPU内部存储器120中的用于存储关于第二隐藏层110-15的节 点值的信息的存储器地址。
第三连接网络110-16可以包括例如关于用于将第二隐藏层110- 15的每个节点连接到输出层110-17的每个节点的六个权重值的信息。NPU 调度器130可以配置在NPU内部存储器120中的用于存储关于第三连接网络 110-16的权重值的信息的存储器地址。第三连接网络110-16的权重值分别乘 以从第二隐藏层110-15输入的节点值,并且将乘积的累加值存储在输出层 110-17中。
作为示例,输出层110-17可以包括y1和y2节点。也就是说, 输出层110-17可以包括关于两个节点值的信息。NPU调度器130可以配置在 NPU内部存储器120中的用于存储关于输出层110-17的节点值的信息的存储 器地址。
也就是说,NPU调度器130可以分析或接收ANN模型的结构 以在处理元件阵列110中操作。可以包括在ANN模型中的ANN的信息可以 包括关于每一层的节点值的信息、层的排列数据局部性信息或关于层的结构 的信息、以及关于连接每一层的节点的每个连接网络的权重值的信息。
由于NPU调度器130已经接收到示例性ANN模型110-10的数 据局部性信息或关于其结构的信息,NPU调度器130可以确定从ANN模型 110-10的输入到输出的计算顺序。
因此,NPU调度器130可以考虑到调度顺序来配置在NPU内 部存储器120中的存储器地址,在该存储器地址中存储每一层的MAC计算 值。例如,具体的存储器地址可以是输入层110-11和第一连接网络110-12的MAC计算值,同时可以是第一隐藏层110-13的输入数据。然而,本公开不 限于MAC计算值,并且MAC计算值也可以称为ANN计算值。
此时,由于NPU调度器130知道输入层110-11和第一连接网 络110-12的MAC计算结果将是第一隐藏层110-13的输入,因此NPU调度 器130可以控制要使用的相同存储器地址。也就是说,NPU调度器130可以 基于ANN模型的数据局部性信息或关于其结构的信息重用MAC计算值。因 此,NPU系统存储器120可以提供存储器重用功能。
也就是说,NPU调度器130根据调度顺序将ANN模型110-10 的MAC计算值存储在NPU内部存储器120的任何存储器地址中指定的特定 区域中,并且可以用作存储MAC计算值的特定区域中的下一个调度顺序的 MAC计算的输入数据。
关于第一处理元件PE1的MAC计算
将根据第一处理元件PE1详细描述MAC计算。可以指定第一 处理元件PE1来执行第一隐藏层110-13的a1节点的MAC计算。
首先,第一处理元件PE1将输入层110-11的x1节点数据输入 到乘法器111的第一输入单元,并将x1节点和a1节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值和累加器113的计算值 相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此,加法 器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数器值 可以是1。
其次,第一处理元件PE1将输入层110-11的x2节点数据输入 到乘法器111的第一输入单元,并将x2节点和a1节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为1时,存储上一步计算出的x1节点数据以及x1节 点和a1节点之间的权重相乘值。因此,加法器112生成与a1节点对应的x1 节点和x2节点的MAC计算值。
第三,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。
位量化单元114可根据累加值适当调整。详细地说,随着(L)循 环的增加,输出值的位宽增加。此时,NPU调度器130可移除预定子位,使 得第一处理元件PE1的计算值的位宽为(X)位。
关于第二处理元件PE2而言的MAC计算
将根据第二处理元件PE2详细描述MAC计算。可以指定第二 处理元件PE2来执行第一隐藏层110-13的a2节点的MAC计算。
首先,第二处理元件PE2将输入层110-11的x1节点数据输入 到乘法器111的第一输入单元,并将x1节点和a2节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值和累加器113的计算值 相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此,加法 器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数器值 可以是1。
其次,第二处理元件PE2将输入层110-11的x2节点数据输入 到乘法器111的第一输入单元,并将x2节点和a2节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为1时,存储上一步计算出的x1节点数据以及x1节 点和a2节点之间的权重相乘值。因此,加法器112生成与a2节点对应的x1 节点和x2节点的MAC计算值。
第三,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
关于第三处理元件PE3的MAC计算
将根据第三处理元件PE3详细描述MAC计算。第三处理元件 PE3可以被指定为执行第一隐藏层110-13的a3节点的MAC计算。
首先,第三处理元件PE3将输入层110-11的x1节点数据输入 到乘法器111的第一输入单元,并将x1节点和a3节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值和累加器113的计算值 相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此,加法 器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数器值 可以是1。
其次,第三处理元件PE3将输入层110-11的x2节点数据输入 到乘法器111的第一输入单元,并将x2节点和a3节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为1时,存储上一步计算出的x1节点数据以及x1节 点和a3节点之间的权重相乘值。因此,加法器112生成与a3节点对应的x1 节点和x2节点的MAC计算值。
第三,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
因此,NPU 100的NPU调度器130可以通过同时使用三个处理 元件PE1至PE3来执行第一隐藏层110-13的MAC计算。
关于第四处理元件PE4的MAC计算
将根据第四处理元件PE4来详细描述MAC计算。可以指定第 四处理元件PE4来执行第二隐藏层110-15的b1节点的MAC计算。
首先,第四处理元件PE4将第一隐藏层110-13的a1节点数据 输入至乘法器111的第一输入单元,并将a1节点与b1节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值和累加器113的计 算值相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此, 加法器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数 器值可以是1。
其次,第四处理元件PE4将第一隐藏层110-13的a2节点数据 输入至乘法器111的第一输入单元,并将a2节点与b1节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值与累加器113的计 算值相加。此时,当(L)循环为1时,存储上一步计算出的a1节点数据以及 a1节点和b1节点之间的权重相乘值。因此,加法器112生成对应于b1节点 的a1节点和a2节点的MAC计算值。此时,(L)循环的计数器值可以是2。
第三,第四处理元件PE4将输入层110-11的a3节点数据输入 到乘法器111的第一输入单元,并将a3节点和b1节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为2时,存储上一步计算出的与b1节点对应的a1节 点和a2节点的MAC计算值。因此,加法器112生成与b1节点对应的a1节点、a2节点和a3节点的MAC计算值。
第四,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
关于第五处理元件PE5的MAC计算
将根据第五处理元件PE5来详细描述MAC计算。可以指定第 五处理元件PE5来执行第二隐藏层110-15的b2节点的MAC计算。
首先,第五处理元件PE5将第一隐藏层110-13的a1节点数据 输入至乘法器111的第一输入单元,并将a1节点与b2节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值和累加器113的计 算值相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此, 加法器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数 器值可以是1。
其次,第五处理元件PE5将第一隐藏层110-13的a2节点数据 输入至乘法器111的第一输入单元,并将a2节点与b2节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值与累加器113的计 算值相加。此时,当(L)循环为1时,存储上一步计算出的a1节点数据以及 a1节点和b2节点之间的权重相乘值。因此,加法器112生成对应于b2节点 的a1节点和a2节点的MAC计算值。此时,(L)循环的计数器值可以是2。
第三,第五处理元件PE5将输入层110-11的a3节点数据输入 到乘法器111的第一输入单元,并将a3节点和b2节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为2时,存储上一步计算出的与b2节点对应的a1节 点和a2节点的MAC计算值。因此,加法器112生成与b2节点对应的a1节点、a2节点和a3节点的MAC计算值。
第四,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
关于第六处理元件PE6的MAC计算
将根据第六处理元件PE6来详细描述MAC计算。可以指定第 六处理元件PE6来执行第二隐藏层110-15的b3节点的MAC计算。
首先,第六处理元件PE6将第一隐藏层110-13的a1节点数据 输入至乘法器111的第一输入单元,并将a1节点与b3节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值和累加器113的计 算值相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此, 加法器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数 器值可以是1。
其次,第六处理元件PE6将第一隐藏层110-13的a2节点数据 输入至乘法器111的第一输入单元,并将a2节点与3节点之间的权重数据输 入至第二输入单元。加法器112将乘法器111的计算值与累加器113的计算 值相加。此时,当(L)循环为1时,存储上一步计算出的a1节点数据以及a1 节点和b3节点之间的权重相乘值。因此,加法器112生成对应于b3节点的 a1节点和a2节点的MAC计算值。此时,(L)循环的计数器值可以是2。
第三,第六处理元件PE6将输入层110-11的a3节点数据输入 到乘法器111的第一输入单元,并将a3节点和b3节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为2时,存储上一步计算出的与b3节点对应的a1节 点和a2节点的MAC计算值。因此,加法器112生成与b3节点对应的a1节点、a2节点和a3节点的MAC计算值。
第四,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
因此,NPU 100的NPU调度器130可以通过同时使用三个处理 元件PE4至PE6来执行第二隐藏层110-15的MAC计算。
关于第七处理元件PE7的MAC计算
将根据第七处理元件PE7详细描述MAC计算。可以指定第七 处理元件PE7来执行输出层110-17的y1节点的MAC计算。
首先,第七处理元件PE7将第二隐藏层110-15的b1节点数据 输入至乘法器111的第一输入单元,并将b1节点与y1节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值和累加器113的计 算值相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此, 加法器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数 器值可以是1。
其次,第七处理元件PE7将第二隐藏层110-15的b2节点数据 输入至乘法器111的第一输入单元,并将b2节点与y1节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值与累加器113的计 算值相加。此时,当(L)循环为1时,存储上一步计算出的b1节点数据与在 b1节点和y1节点之间的权重相乘值。因此,加法器112生成对应于y1节点 的b1节点和b2节点的MAC计算值。此时,(L)循环的计数器值可以是2。
第三,第七处理元件PE7将输入层110-11的b3节点数据输入 到乘法器111的第一输入单元,并将b3节点和y1节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为2时,存储上一步计算出的与y1节点对应的b1节 点和b2节点的MAC计算值。因此,加法器112生成与y1节点对应的b1节点、b2节点和b3节点的MAC计算值。
第四,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
关于第八处理元件PE8的MAC计算
将根据第八处理元件PE8详细描述MAC计算。可以指定第八 处理元件PE8来执行输出层110-17的y2节点的MAC计算。
首先,第八处理元件PE8将第二隐藏层110-15的b1节点数据 输入至乘法器111的第一输入单元,并将b1节点与y2节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值和累加器113的计 算值相加。此时,当(L)循环为零时,由于没有累加值,累加值为零。因此, 加法器112的计算值可以与乘法器111的计算值相同。此时,(L)循环的计数 器值可以是1。
其次,第八处理元件PE8将第二隐藏层110-15的b2节点数据 输入至乘法器111的第一输入单元,并将b2节点与y2节点之间的权重数据 输入至第二输入单元。加法器112将乘法器111的计算值与累加器113的计 算值相加。此时,当(L)循环为1时,存储上一步计算出的b1节点数据与在 b1节点和y2节点之间的权重相乘值。因此,加法器112生成对应于y2节点 的b1节点和b2节点的MAC计算值。此时,(L)循环的计数器值可以是2。
第三,第八处理元件PE8将输入层110-11的b3节点数据输入 到乘法器111的第一输入单元,并将b3节点和y2节点之间的权重数据输入 到第二输入单元。加法器112将乘法器111的计算值与累加器113的计算值 相加。此时,当(L)循环为2时,存储上一步计算出的与y2节点对应的b1节 点和b2节点的MAC计算值。因此,加法器112生成与y2节点对应的b1节点、b2节点和b3节点的MAC计算值。
第四,NPU调度器130可以基于ANN模型的数据局部性信息 或关于其结构的信息终止第一处理元件PE1的MAC计算。此时,可以通过 输入初始化复位来初始化累加器113。也就是说,(L)循环的计数器值可以被 初始化为零。位量化单元114可根据累加值适当调整。
因此,NPU 100的NPU调度器130可以通过同时使用两个处理 元件PE7至PE8来执行输出层110-17的MAC计算。
当第八处理元件PE8的MAC计算完成时,可以完成ANN模型110-10的推理计算。也就是说,可以确定ANN模型110-10已经完成了一帧 的推理计算。如果NPU 100实时推理视频数据,则下一帧的图像数据可以被 输入到输入层110-11的x1和x2输入节点。此时,NPU调度器130可以将下 一帧的图像数据存储到存储输入层110-11的输入数据的存储器地址。如果对每一帧重复该过程,则NPU 100可以实时处理推理计算。此外,还存在重用 一次配置的存储器地址的效果。
在图5的ANN模型110-10的情况下,NPU调度器130可以基 于ANN模型110-10的数据局部性信息或关于其结构的信息来确定计算调度 顺序,以用于NPU 100对ANN模型110-10的推理计算。NPU调度器130可 以基于计算调度顺序配置NPU内部存储器120所需的存储器地址。NPU调度 器130可以基于ANN模型110-10的数据局部性信息或关于其结构的信息来配置重用存储器的存储器地址。NPU调度器130可以通过指定推理计算所需 的处理元件PE1至PE8来执行推理操作。
详细地,当连接到一个节点的权重数据增加L时,处理元件的 累加器的(L)循环数可以被配置为L-1。也就是说,即使ANN的权重数据增 加,累加器也可以通过增加累加器的累加次数容易地执行推理计算。
也就是说,根据本公开内容的实施方案的NPU 100的NPU调 度器130可以基于ANN模型的数据局部性信息或关于其结构的信息(包括输 入层110-11、第一连接网络110-12、第一隐藏层110-13、第二连接网络110- 14、第二隐藏层110-15、第三连接网络110-16和输出层110-17的数据局部 性信息或关于其结构的信息)来控制处理元件阵列110和NPU内部存储器 120。
也就是说,NPU调度器130可以配置NPU存储系统110中的 与输入层110-11的节点数据、第一连接网络110-12的节点数据、第一隐藏层 110-13的节点数据、第二连接网络110-14的节点数据、第二隐藏层110-15的 节点数据、第三连接网络110-16的节点数据和输出层110-17的节点数据对应 的存储器地址值。
在下文中,将详细描述NPU调度器130的调度。NPU调度器 130可以基于ANN模型的数据局部性信息或关于其结构的信息来调度ANN 模型的计算顺序。
NPU调度器130可以基于ANN模型的数据局部性信息或关于 其结构的信息获取存储ANN模型的层的节点数据和连接网络的权重数据的存 储器地址值。
例如,NPU调度器130可以获取存储在主存储器中存储的 ANN模型的层的节点数据和连接网络的权重数据的存储器地址值。相应地, NPU调度器130可以将要驱动的ANN模型的层的节点数据和连接网络的权 重数据从主存储器中取出并存储在NPU内部存储器120中。每一层的节点数 据可以有每个对应的存储器地址值。每个连接网络的权重数据可以有各自对 应的存储器地址值。
NPU调度器130可以基于ANN模型的数据局部性信息或关于 其结构的信息,例如ANN模型的ANN的层的排列数据局部性信息或关于其 结构的信息,调度处理单元阵列110的计算顺序。
例如,NPU调度器130可以获取权重数据,即具有连接四个 ANN层和每一层的三层的权重值的连接网络数据。在这种情况下,下面将描 述由NPU调度器130基于ANN模型的数据局部性信息或关于其结构的信息 来调度处理顺序的方法作为示例。
例如,NPU调度器130可以将用于推理计算的输入数据配置为 作为ANN模型110-10的输入层110-11的第一层的节点数据,并且调度待首 先进行的第一层的节点数据和与第一层对应的第一连接网络的权重数据的 MAC计算。在下文中,仅仅为了便于说明,将相应的计算称为第一计算,将 第一计算的结果称为第一计算值,将相应的调度称为第一调度。
例如,NPU调度器130将第一计算值配置为与第一连接网络对 应的第二层的节点数据,并且可以调度待在第一调度后进行的第二层的节点 数据和与第二层对应的第二连接网络的权重数据的MAC计算。在下文中, 仅仅为了便于说明,将相应的计算称为第二计算,将第二计算的结果称为第 二计算值,将相应的调度称为第二调度。
例如,NPU调度器130将第二计算值配置为与第二连接网络对 应的第三层的节点数据,并且可以调度待在第二调度后进行的第三层的节点 数据和与第三层对应的第三连接网络的权重数据的MAC计算。在下文中, 仅仅为了便于说明,将相应的计算称为第三计算,将第三计算的结果称为第 三计算值,将相应的调度称为第三调度。
例如,NPU调度器130将第三计算值配置为作为与第三连接网 络的输出层110-17对应的第四层的节点数据,并且调度存储在第四层的节点 数据中的推理结果以将其存储在NPU内部存储器120中。在下文中,仅为了 方便描述,可以将相应的调度称为第四调度。推理结果值可以被传输到并且 用于边缘设备1000的各种部件。
例如,如果推理结果值是检测特定关键字的结果值,则NPU 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以按照所配置的调度顺序执行计算。
总之,根据本公开内容的实施方案的NPU 100可以被配置为基 于ANN的层的结构和与该结构对应的计算顺序数据来调度处理顺序。要调度 的处理顺序可以是包括至少一个过程的次序。例如,由于NPU 100可以预测 所有计算顺序,因此也可以调度下一个计算并且以特定顺序调度计算。
NPU调度器130可以通过使用基于ANN模型的数据局部性信 息或关于其结构的信息的调度顺序来控制NPU内部存储器120,从而提高存 储器重用率。
由于根据本公开内容的实施方案由NPU 100驱动的ANN计算 的特性,一层的计算值可能具有作为下一层的输入数据的特征。
这样,NPU 100根据调度顺序控制NPU内部存储器120,从而 提高NPU内部存储器120的存储器重用率。
详细地,当NPU调度器130被配置为接收ANN模型的数据局 部性信息或关于其结构的信息并且可以通过接收到的ANN模型的数据局部性 信息或关于其结构的信息来确定执行ANN的计算的顺序,NPU调度器130 可以确定ANN模型的特定层的节点数据和特定连接网络的权重数据的计算结 果成为对应层的节点数据。因此,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具有分析 ANN模型的数据局部性信息或关于其结构的信息以提供优化的调度。此外, 由于能够重用存储器的计算所需的数据不会冗余地存储在NPU内部存储器 120中,因此具有减少存储器使用量的效果。此外,NPU调度器130具有计算因存储器重用而减少的存储器使用量以优化NPU内部存储器120的效果。
根据本公开内容的实施方案的NPU 100可以被配置为接收作为 变量值的(N)位输入(该(N)位输入是第一处理元件PE1的第一输入)并接收作 为常数值的(M)位输入(该(M)位输入是第二输入)。这样的配置可以同样地配 置到处理元件阵列110的其他处理元件。也就是说,处理元件的一个输入可 以被配置为接收变量值而另一个输入可以被配置为接收常数值。因此,可以 减少常数值的数据更新次数。
此时,NPU调度器130可以将输入层110-11、第一隐藏层110- 13、第二隐藏层110-15和输出层110-17的节点数据配置为变量,并且通过利 用ANN模型110-10的数据局部性信息或关于其结构的信息将第一连接网络 110-12的权重数据、第二连接网络110-14的权重数据和第三连接网络110-16 的权重数据配置为常数。也就是说,NPU调度器130可以区分常数值和变量 值。然而,本公开内容不限于常量和变量数据类型,本质上,频繁地划分变 量值和非变量值,从而提高NPU内部存储器120的重用率。
也就是说,NPU系统存储器120可以被配置为在NPU 100的推 理计算继续的同时保存存储在NPU系统存储器120中的连接网络的权重数 据。因此,可以减少存储器读写操作。
也就是说,NPU系统存储器120可以被配置为在NPU 100的推 理计算继续的同时重用存储在NPU系统存储器120中的MAC计算值。
也就是说,存储处理元件阵列110的每个处理元件的第一输入 单元的输入数据(N)位的存储器地址的数据更新次数可以大于存储第二输入单 元的输入数据(M)位的存储器地址的数据更新次数。也就是说,具有第二输入 单元的数据更新次数可以小于第一输入单元的数据更新次数的效果。
另一方面,为了实现更高的人工智能,增加ANN的隐藏层的 数量被称为深度神经网络(DNN)。
DNN包括各种类型,但已知卷积神经网络(CNN)可以提取输入 数据的特征并且容易地识别特征的模式。
图6A示出了卷积神经网络的基本结构。
卷积神经网络(CNN)是一种神经网络,其执行类似于人脑视觉 皮层中处理图像的功能。众所周知,CNN适合于图像处理。
参考图6A,输入图像可以通过由特定行数和特定列数组成的二 维矩阵表示。输入图像可以被划分为若干通道,其中通道可以表示输入图像 的颜色分量的数量。
CNN是重复卷积操作和池化操作的形式。
卷积运算是在将内核矩阵卷积到输入图像之后输出表示图像的 特征的特征图的过程。内核矩阵可以包括权重值。在内核矩阵中,行可以具 有预定数量,并且列可以具有预定数量。例如,内核矩阵可以具有N×M大 小。当列数和行数彼此相同时,N=M。对于每个通道,内核都可能存在。
通常,由于核矩阵的大小小于表示输入图像的矩阵的大小,所 以在输入图像上滑动的同时执行核矩阵的卷积。
池化操作是用于减小矩阵的大小或强调矩阵中的特定值的操 作。
实际对模式进行分类的神经网络位于特征提取神经网络的后 端,被称为全连接层。
图6B示出了CNN的操作。
参考图6B,例如,其示出了输入图像是大小为5×5的二维矩 阵。图6B图示了三个节点(即通道1、通道2和通道3)被用作示例。
首先,将描述层1的卷积操作。
输入图像在层1的第一个节点中用通道1的内核1进行卷积, 结果,输出特征图1。此外,输入图像在第1层的第二个节点中用通道2的 内核2进行卷积,结果,输出特征图2。此外,输入图像在第三个节点中用 通道3的内核3进行卷积,结果,输出特征图3。
接下来,将描述层2的池化操作。
从层1输出的特征图1、特征图2和特征图3被输入到层2的 三个节点。层2可以接收从层1输出的特征图并执行轮询。池化可以减小矩 阵中的大小或强调矩阵中的特定值。池化方法包括最大值池化、平均池化和 最小值池化。最大值池化用于收集矩阵的特定区域内的值中的最大值,平均 池化可用于获取特定区域内的平均值。
在图6B的一示例中,示出了通过池化将5×5矩阵的特征图的 大小减小到4×4矩阵的大小。
具体而言,层2的第一节点接收到通道1的特征图1,进行池 化,然后输出,例如4×4的矩阵。层2的第二节点接收到通道2的特征图 2,进行池化,然后输出,例如4×4的矩阵。层2的第三节点接收到通道3的 特征图3,进行池化,然后输出,例如4×4的矩阵。
接下来,将描述层3的卷积操作。
层3的第一节点接收来自层2的第一节点的输出,用内核4进 行卷积,并输出结果。层3的第二节点接收来自层2的第二节点的输出,用 通道2的内核5进行卷积,并输出结果。类似地,层3的第三节点接收来自 层2的第三节点的输出,用通道3的内核6进行卷积,并输出结果。
如上所述,可以重复卷积和池化,并最终将其输出到如图6A 所示的全连接。相应的输出可以输入到适合于再次识别图像的ANN。
图7A示出了根据本公开内容的使用图4A或4B的边缘设备的 部件的配置。
为了描述边缘设备1000的操作,仅在图7中示出图4A或4B 的部件中的的一些。在图7A的示例中,示出了NPU 100、存储器200、输入 单元1020、输出单元1040、系统总线1060和中央处理单元(CPU)1080。
存储器200可以包括用于ANN模型的存储装置210和用于关于 ANN模型的组合的信息的存储装置220。
存储器200中的用于ANN模型的存储装置210可以存储关于多 个ANN模型的信息。关于ANN模型的信息可以包括ANN模型的数据局部 性信息或关于其结构的信息。数据局部性信息或关于结构的信息可以包括层 的数量的信息、层的排列数据局部性信息或关于层的结构的信息、关于每一 层中的通道的信息、关于每一层中的节点的信息或关于连接网络的信息中的 一者或多者。关于节点的信息可以包括关于值的信息,例如每个节点的权重值。关于连接网络的信息可以包括关于层之间的连接关系的信息,或者关于 节点之间的连接关系的信息。
如图7A所示,多个ANN可以包括以下一者或多者:a)适合于 提取图像中的感兴趣区域(ROI)的ANN,b)适合于提高视频质量的ANN, c)CNN,d)适合于识别图像中的对象的ANN,e)适合于识别手势的ANN,以 及f)适合于识别声音的ANN。
存储器200中的用于关于ANN模型的组合的信息的存储装置 220可以包括关于上述一个或多个ANN的组合的信息和关于ANN模型的计 算顺序的信息中的一者或多者。例如,关于组合的信息可以包括关于a)适合 于提取图像中的ROI的ANN和c)CNN的组合的信息。关于计算顺序的信息 可以包括关于组合中的相继顺序或并行顺序的信息。
对于边缘设备1000的每个功能或正在执行的应用程序,关于组 合的信息可以不同。
例如,当在边缘设备1000中正在执行包括语音识别的应用程序 时,可以识别通过输入单元1020的麦克风1022输入的用户的语音。在这种 情况下,e)可以单独使用适合于识别语音的ANN。
作为另一示例,当与虚拟现实(VR)游戏相关联的应用程序正在 边缘设备1000中执行时,用户的手势或用户的语音可以用作游戏的输入。在 这种情况下,可能需要a)适合提取图像中的ROI的ANN,c)CNN,d)适合于 识别图像中的对象的ANN,e)适合于识别手势的ANN,以及f)适合于识别语 音的ANN的组合。作为一详细的示例,当用户的行为半径被设置为感兴趣区 域时,a)适合于提取图像中的ROI的ANN可能只提取输入单元1020中的相 机拍摄的图像中感兴趣区域的图像。d)适合于识别对象的ANN可以识别对 象,即图像中的事物、动物和人。e)适合于识别手势的ANN可以识别运动, 即人的手势。此外,f)适合于识别语音的ANN可以识别通过输入单元1020 的麦克风1022输入的用户的语音。
NPU 100可以从存储器200中的用于关于组合的信息的存储装 置220和用于关于ANN模型的组合的信息的存储装置220读取信息,并且将 读取的信息存储在NPU内部存储器120中。这可以在NPU 100从CPU 1080 获取有关正在运行的应用程序的信息或从CPU 1080接收特定命令时执行。
替代地,CPU 1080可以基于正在运行的应用程序信息(例如, 应用程序的种类、类型或识别信息)从存储器200中的用于关于组合的信息的 存储装置220和用于关于ANN模型的组合的信息的存储装置220读取信息。 此外,CPU 1080可以确定关于与正在运行的应用程序相关联的ANN模型的 组合的信息,然后基于所确定的通信信息向NPU 100指示执行一个或多个 ANN模型的计算。
当边缘设备1000的功能是简单的或只有一个应用程序可执行 时,信息可以一直存储在NPU内部存储器120中以降低对存储器200的访问 频率。
NPU 100中的NPU调度器130基于存储在NPU内部存储器 120中的信息配置处理元件(PE)阵列110中的能够执行每个ANN的操作的处 理元件110。例如,NPU调度器130将处理单元(PE)阵列110划分为多个 组,然后可以配置第一组PE来执行a)适合于提取图像中的ROI的ANN的操 作,并且配置第二组PE来执行c)CNN的操作。
同时,根据边缘设备1000的类型或操作模式,NPU 100可能不 驱动一些神经网络,例如a)适合于提取图像中的感兴趣区域的ANN或b)适 合于提高视频质量的ANN。替代地,在图7A中,CPU 1080包括被配置为提 取图像中的感兴趣区域的电路(例如,晶体管的组合)和被配置为改善图像的 电路(例如,晶体管的组合)。
所示的NPU调度器130可以将多个ANN模型分配给PE。例 如,如果PE的数量为100个,则可以为第一ANN模型的推理计算分配30 个PE,为第二ANN模型的推理计算分配50个PE。在这种情况下,未分配 的剩余PE可能无法运行。
NPU调度器130可以基于多个ANN模型的每一层的节点值和 每个连接网络的权重值的大小和结构数据确定调度顺序,并且根据确定的调 度顺序将确定的调度顺序分配给PE。
据此,由于可以通过NPU调度器130为特定的ANN模型的推 理分配特定的PE,因此一个NPU 100具有同时并行处理多个ANN模型的效 果。
由于NPU调度器130可以通过使用ANN模型的结构数据来确 定多个ANN模型的每一层的节点值和多个ANN模型的每个连接网络的权重 值的大小,因此NPU调度器130可以计算每个调度的推理计算所需的存储器 大小。因此,NPU调度器130可以将每个调度顺序所需的数据存储在能够执 行多任务的NPU内部存储器的可用限度内。
NPU调度器130可以配置存储在NPU内部存储器中的数据的 优先级。
根据本公开内容,由于高优先级数据保持在NPU内部存储器 中,因此可以通过重用存储的数据来提高存储器重用率。因此,可以降低推 理速度和功耗。
NPU 100可以被优化以提供多任务处理功能。NPU 100可以被 配置为驱动至少两个ANN模型以提供至少两个不同的推理计算。此外,其他 ANN模型可能由一个ANN模型的推理结果驱动。也就是说,一个ANN模型 可以一直运行,而其他ANN模型可以在特定条件下运行。
因此,可以通过仅在特定条件下驱动任何ANN模型来降低边 缘设备1000的功耗。
图7B示出了图7A的边缘设备的修改。
根据修改,边缘设备1000可以包括多个NPU。例如,在图7B 中,示出了边缘设备1000包括两个NPU 100a和100b。
例如,在图7B中,示出了第一NPU 100a中的PE 110a包括执 行ANN模型的计算以提取图像中的感兴趣区域的第一组PE、执行卷积ANN 模型的计算的第二组PE,以及执行ANN模型的计算以改进视频的第三组 PE。另外,示出了第二NPU 100b中的PE 110b包括执行适合于识别对象的 ANN模型的计算的第一组PE、执行适合于识别手势模型的ANN的计算的第 二组PE,以及执行语音识别ANN模型的计算的第三组PE。
然而,这只是示例性的,可以自由修改由第一NPU 100a中的 PE 110a和第二NPU100b中的PE 110b执行的ANN的种类或数量。替代 地,第一NPU 100a中的PE 110a和第二NPU100b中的PE 110b也可以执行 相同ANN模型的计算,以通过分布处理提高计算速度。
根据图7B中所示的示例,CPU 1080可以包括ANN调度器。
基于正在运行的应用程序,CPU 1080中的ANN调度器可以将 第一ANN模型的计算分配给第一NPU 100a中的PE 110a,并且将第二ANN 模型的计算分配给第二NPU 100b中的PE 110b。
为此,CPU 1080可以确定待驱动以用于正在运行的应用程序的 一个ANN模型或多个ANN模型的组合。具体地,CPU 1080的ANN调度器 可以从存储器200中的用于关于组合的信息的存储装置220中读取待驱动以 用于正在运行的应用程序的一个ANN模型或多个ANN模型的组合,然后分 布和分配多个ANN模型的计算给第一NPU 100a中的PE 110a和第二NPU100b中的PE 110b。此外,CPU 1080的ANN调度器可以将关于在存储器 200中的用于ANN模型的存储装置210中存储的ANN模型的信息传输到第 一NPU 100a和第二NPU 100b。
关于组合的信息可以包括关于多个ANN模型的顺序的信息。
NPU调度器130可以基于关于顺序的信息生成与对PE的分配 相关联的指令。
边缘设备1000的存储器200可以存储关于操作次序的信息。
当CPU200执行用于应用程序的指令时,CPU200可以生成指 令。
图8A图示了图7A或7B的边缘设备的操作。
参考图8A,边缘设备1000的NPU 100可以获得关于ANN模 型的组合信息(S101)。具体地,当在边缘设备1000中运行的应用程序是某个 应用程序时,可以获取驱动该应用程序所需的关于ANN模型的组合的信息。 可以基于关于在边缘设备1000中运行的应用程序的信息(例如,应用程序的 种类、类型或识别信息)来获取关于ANN模型的组合信息。
边缘设备1000的NPU 100可以获取关于多个ANN模型的信息 (S103)。也就是说,当在边缘设备1000中运行的应用程序是某个应用程序 时,可以获取驱动某个应用程序所需的关于ANN模型的信息。该信息可以基 于上述组合信息来获取。该信息可以包括关于多个ANN模型的顺序的信息。
然后,NPU 100中的NPU调度器130可以向第一组中的PE分 配第一ANN模型(S105)。
此外,NPU 100中的NPU调度器130可以向第二组中的PE分 配第二ANN模型(S107)。
如图7A所示,当边缘设备1000仅包括一个NPU时,第一组 中的PE和第二组中的PE可以在物理上彼此不同。替代地,第一组中的PE 和第二组中的PE可以部分重叠,但也可以采用时分方式进行划分。
如图7B所示,当边缘设备1000包括多个NPU 100a和100b 时,第一组中的PE可以被包括在第一NPU 100a中并且第二组中的PE可以 被包括在第二NPU 100b中。
图8B示出了图8A的修改。
图8B所示的过程可以由CPU 1080执行,与图8A所示的过程 不同。在下文中,仅说明与图8A所示的过程不同的部分,并且相同的内容 将遵循参考图8A描述的内容。
边缘设备1000的CPU 1080可以获取ANN模型的组合信息 (S201)。
边缘设备1000的CPU 1080可以获取关于多个ANN模型的信 息(S203)。
然后,图7B的CPU 1080中的ANN调度器可以将第一ANN模 型分配给第一组中的PE(S205)。
此外,图7B的CPU 1080中的ANN调度器可以将第二ANN模 型分配给第二组中的PE(S207)。
图9A和9B分别示出了其中边缘设备是扩展现实(XR)设备的示 例。
扩展现实(XR)统称为虚拟现实(VR)、增强现实(AR)和混合现实(MR)。VR技术将现实世界的物体或背景仅作为CG图像提供,AR技术提供 对实际对象图像虚拟制作的CG图像,MR技术是通过混合和合并现实世界中 的虚拟对象提供的计算机图形技术。
MR技术与AR技术的相似之处在于真实对象和虚拟对象一起 显示。但不同的是,在AR技术中,虚拟对象是作为真实对象的补充形式, 而在MR技术中,虚拟对象和真实对象的使用性质相同。
XR技术可应用于头戴式显示器(HMD)、平视显示器(HUD)、手 机、平板PC、膝上型计算机、台式计算机、TV、数字标牌等,其中应用了 XR技术的设备可以称为XR设备。
图10A示出了图9A或9B的XR设备的配置。
参考图10A可以看出,作为边缘设备的示例的XR设备1000可 以包括图1或3的NPU100、存储器200、无线通信单元1010、输入单元 1020、显示器1041、系统总线1060和CPU1080。
无线通信单元1010可以包括短距离通信收发器1012。短距离 通信收发器1012可以支持例如无线LAN(WLAN)、无线保真(Wi-Fi)、Wi-Fi Direct、使用蓝牙的射频识别(RFID)、红外数据协会(IrDA)、超宽带(UWB)、 ZigBee、近场通信(NFC)、无线通用串行总线(无线USB)等。
此外,XR设备1000可以包括声音输出设备或音频信号输出端 子,例如扬声器。
NPU 100可以执行XR所需的多个ANN的计算。例如,XR所 需的多个ANN可以包括以下一者或多者:适合于识别手势的ANN、适合于 提取图像中感兴趣区域的ANN、适合于提高视频质量的ANN、以及适合于 识别语音的ANN。
NPU 100的NPU调度器130可以将多个ANN的计算分配给 PE。也就是说,将第一ANN的计算可以分配给第一组PE,并且将第二ANN 的计算可以分配给第二组PE。作为详细示例,NPU调度器130可以将适合于 识别手势模型的ANN的计算分配给第一组PE,将适合于提取图像中感兴趣 区域的ANN的计算分配给第二组PE,将适合于提高视频质量的ANN的计 算分配给第三组PE,并且将适合于识别语音的ANN的计算分配给第四组PE。
图10B示出了图10A的修改。
与图10A不同,图10B的XR设备1000可以包括多个NPU, 例如两个NPU 100a和100b。
CPU 1080可以从存储器200获取关于ANN模型的组合信息。 CPU 1080可以基于获取的组合信息从存储器200获取关于多个ANN模型的 信息。在下文中,CPU 1080可以将第一ANN模型分配给第一组PE并且将 第二ANN模型分配给第二组PE。
在作为示例的由CPU 1080执行的分配中,图10B示出了第一 NPU 100a,其包括用于执行适合于识别手势模型的ANN的计算的第一组 PE、用于执行适合于提取图像中的感兴趣区域的ANN的计算的第二组PE、 以及用于执行ANN模型的计算以用于视频改进的第三组PE。在图10B中, 第二NPU 100b包括用于适合于识别语音的ANN的第一组PE。然而,这仅 是示例,可以自由修改由第一NPU 100a和第二NPU 100b执行的神经网络的 类型或数量。
在下文中,将参考图10A和10B一起描述分配。
XR设备1000可以通过短距离通信收发器1012与诸如服务器或 其他用户终端之类的外部设备通信。
此外,短距离通信收发器1012可以经由通信网络接收用于XR 的视频。接收到的视频可以传输到CPU 1080。
相机1021可以包括多个相机。例如,在多个相机中,第一相机 可以在用户观看的方向上捕捉视频以将视频传输到CPU 1080。然后,第二相 机可以捕捉用户的左眼以将左眼传输到CPU 1080,并且第三相机可以捕获用 户的右眼以将右眼传输到CPU 1080。
通过短距离通信收发器1012接收的视频和通过相机1021捕获 的视频在被临时存储在存储器200中之后可以被传输到CPU 1080。也就是 说,存储器200可以临时存储视频,CPU 1080可以读取和处理存储在存储器 200中的视频。
此外,XR设备1000可以具有用于存储器卡的连接端子。存储 器卡可以包括例如紧凑型闪存卡、SD存储器卡、USB存储器等。CPU 1080 可以从存储器卡读取或检索至少一个视频,并且相应的视频可以存储在存储 器200中。
CPU 1080可以从短距离通信收发器1012、存储器200和相机 1021接收视频,并且接收到的视频被组合以生成为XR视频并且输出到显示 器1041。例如,CPU 1080可以将从短距离通信收发器1012和存储器200接 收的视频与从相机1021输出的视频合成以生成XR视频。
显示器1041可以根据CPU 1080的控制输出XR视频。显示器 1041可以包括透明玻璃,并且可以在透明玻璃上的感兴趣区域中输出通过视 频改进处理执行的XR视频。
CPU 1080可以通过输入单元1020接收用户的命令(例如,与 XR视频相关联的控制命令)。例如,CPU 1080可以通过麦克风1022接收语 音命令。作为另一示例,CPU 1080可以通过相机1021、陀螺仪传感器1028 和/或加速度传感器1029中的一个或多个接收用户的基于动作操作的命令。 具体地,CPU 1080可以通过相机1021、陀螺仪传感器1028和/或加速度传感 器1029中的一者或多者来检测用户的动作操作。
用户的运动操作可以包括用户的眼睛注视方向(例如,用户瞳孔 的位置)、用户的头部方向和头部倾斜度中的至少一者。为了检测用户的视线 方向,可以设置多个相机1021。也就是说,第一相机可以拍摄用户观看方向 的视频,第二相机可以拍摄用户的左眼,第三相机可以拍摄用户的右眼。
同时,为了识别用户的动作操作,CPU 1080可以指示NPU, 即图10A的NPU 100或图10B的NPU 100a和100b,以执行适合于识别手势 的ANN的计算。此外,CPU 1080可以指示NPU100或100a和100b以执行 适合于提取图像中的感兴趣区域的ANN的计算。
然后,NPU调度器可以将适合于识别手势的ANN的计算分配 给第一组PE,并将适合于提取图像中的感兴趣区域的ANN的计算分配给第 二组PE。
第一组PE可以基于通过相机1021、陀螺仪传感器1028和/或 加速度传感器1029中的一者或多者检测到的用户的运动操作来推理用户的运 动是否是预期的控制命令。
第二组PE可以基于由第一组PE推理的用户控制命令来执行用 于确定图像中的感兴趣区域(ROI)的推理。
例如,第一组PE可以基于由陀螺仪传感器1028和/或加速度传 感器1029中的一者或多者检测到的用户的头部方向和头部斜度中的至少一 者,通过适合于识别手势的ANN来推理用户的运动意图是什么。然后,第二 组PE可以基于推理的用户意图推理ROI。
作为另一示例,第一组PE还可以基于由相机1021检测到的用 户瞳孔的位置来推理用户意图。然后,第二组PE可以基于所推理的用户意图 来推理ROI。也就是说,瞳孔的位置可用于推理用户观看的注视的位置和/或 方向。
ROI可以根据用户的运动信息实时改变。该ROI可用于适合于 提高视频质量的ANN。
当第三组PE接收到关于ROI的信息时,可以通过适合于提高 视频质量的ANN来改进ROI中的视频。
视频改进可以包括,如下面参照图18所描述的,解压缩/解码 过程(S401)、视频预处理过程(S403)和超分辨率过程(S405)。
如上所述,图10A或10B的XR设备1000可以基于用户的运 动确定ROI并针对确定的ROI改进视频,以向用户提供身临其境的逼真内 容。此外,通过仅计算高分辨率的ROI,可以最小化所需的计算以减少数字 渲染的负载。
图11示出了图10A或10B的XR设备的操作。
参考图11,作为一种边缘设备的XR设备1000可以接收视频 (S301)。然后,XR设备1000可以检测用户的头部运动和注视中的至少一个 (S303)。此后,XR设备1000可以基于检测到的运动和注视中的至少一者来 确定ROI(S305)。然后,XR设备1000可以针对ROI执行视频改进处理 (S307)。最后,XR设备1000可以在显示器上输出经过视频改进处理的视频(S309)。
图12示出了其中图10A或10B的XR设备被佩戴在用户的头 上的示例。
如图12所示,XR设备1000可以佩戴在用户的头上并且显示器 被提供在前表面上以在用户的眼睛上显示视频。XR设备1000可以通过相 机、麦克风、陀螺仪传感器和角速度传感器从用户接收命令,并且可以根据 接收到的命令信号进行操作。XR设备1000作为逼真内容提供设备的示例不 限于此,并且可以被配置为可以佩戴在人体头部的各种形式,例如眼镜型、 头盔型、帽子型等等。
如图12所示,XR设备1000的显示器可以被布置为对应于用户 的右眼和左眼中的至少一个以直接输出用户眼前的视频。
如上所述,XR设备1000可以包括陀螺仪传感器和/或角速度传 感器以检测佩戴XR设备1000的用户的头部运动。
在一示例中,XR设备1000的陀螺仪传感器和/或角速度传感器 可以检测基于用户的头部中心在X轴、Y轴和Z轴上移动的用户头部运动。 这里,用户的头部运动可以包括头部方向和头部倾斜度中的至少一者。可以 基于测量的头部运动来确定用户的ROI。
图13示出了在立体空间中显示如根据本公开内容的实施方案的 XR设备1000提供的逼真内容的示例状态。
XR设备1000可以在显示器上输出从多个外部设备提供的视频 或存储在存储器中的视频。
XR设备1000输出的视频可以是VR视频或AR视频。
AR视频或VR视频可以是全景图像和/或视频,以向用户提供 最大化的生动性和沉浸感。
AR视频或VR视频可以是半球视频420,以支持以用户为中心 轴的所有方向(上、下、左、右方向)观看。例如,半球视频420可以是支持 360°观看者的360°视频。支持360°观看者的360°视频可以通过XR设备1000 的显示器输出给用户并且可以包括与ROI 430对应的目标视频440。
这里,ROI430可以对应于目标视频440,目标视频440是显示 器上输出的视频的部分视频。例如,如图13所示,360°视频可以包括目标视 频440,目标视频440是与由用户的运动确定的ROI 430相对应的360°视频 的部分视频。这样的目标视频440可以包括经历通过适合于提高视频质量的 ANN进行的视频改进处理的视频。
此外,可以基于佩戴XR设备1000的用户的头部运动和/或注 视信息实时改变和显示目标视频440。此时,适合于提高视频质量的ANN可 以对与ROI 430对应的部分视频实时执行视频改进处理。上述的AR视频或 VR视频可以被配置为允许用户根据场景制作给出置身于虚拟现实空间(诸如 半球形、球形和圆柱形)中的感觉。
图14示出了可以基于用户观看的视角来定义的感兴趣区域(ROI) 的范围。
ROI的范围510可以基于从用户观看的视野角度,即视角来定 义。这里,ROI的范围510可以由运动检测器检测到的头部位置(例如,头部 方向和/或头部倾斜度)和/或注视位置(例如,瞳孔的位置)来定义。如图14所 示,观看视频的用户可以具有预定的视角。通常,视角的范围520可以根据 双眼的位置而变化,从而视角因人而异。因此,视角的范围520可以被配置 为基于双眼的位置(例如,瞳孔的位置)来定义。
视角的范围520可以基于用户的头部位置(例如,头部方向和头 部倾斜度)和/或双眼的位置来定义。作为示例,组合人的双眼的视角的范围可 以具有水平方向上的180°和竖直方向上的120°,如图14所示,但不限于 此,并且可以被定义为各种角度。
ROI的范围510可以通过由陀螺仪传感器和/或角速度传感器检 测到的头部位置和/或双眼位置来确定,并且可以定义为等于或小于视角的范 围520。例如,可以将ROI的范围510定义为小于视角的范围520,例如水 平方向为180°,竖直方向为120°。陀螺仪传感器和/或加速度传感器可以 检测头部的位置,而相机可以检测瞳孔的位置。用户注视的位置、用户注视 的方向和ROI的范围510可以通过检测到的头部位置和/或瞳孔位置来确定。
根据一实施方案,如图14所示,检测用户头部(例如,头骨)的 位置以生成外接到面部形状的四边形530并且检测四边形顶点的位置a、b、c 和d。可以检测在显示器上与连接检测到的四个顶点a、b、c和d与用户后脑 勺中心点e的延长线相交的位置f、g、h和i。可以基于检测到的位置f、g、h和i来确定ROI的范围510。如图14所示,连接显示器上的四个点f、g、h和i的区域可以被确定为ROI的范围510。定义视角的范围520和ROI的范 围510的过程不限于上述实施方案,并且可以通过各种方法来定义。
图15A-15D分别示出了对基于用户注视确定的感兴趣区域(ROI) 执行的视频改进处理。在这里,假设XR设备佩戴在用户的头上。
适合于在由NPU计算的图像中提取ROI的ANN可以基于检测 到的瞳孔位置来确定用户注视在显示设备上的位置。
作为示例,适合于提取由NPU计算的图像中的ROI的ANN可 以检测显示器上的点j,该点与在左眼610的瞳孔的位置612处的左眼610的 注视方向630与在右眼620的瞳孔处的右眼620的位置622的注视方向640 相交,以确定点j作为用户注视的位置点j。这里,左眼610的注视方向630 代表左眼610的注视方向,而右眼620的注视方向640代表右眼620的注视 方向。
适合于提取ROI的ANN可以将预定ROI 652的范围650的中 心点的位置指定为注视的位置点j,以确定ROI 652。
如图15A所示,可以基于用户注视的位置点j来确定要投影到 显示器的ROI 652。适合于改进由NPU计算的视频质量的ANN可以对与所 确定的ROI 652对应的目标视频执行视频改进处理。适合于提高视频质量的 ANN可以提高例如ROI 652的分辨率。
如图15B所示,可以看出ROI 662的分辨率高于图15A的ROI 652的分辨率。
同时,如图15C所示,当确定用户的头部和/或瞳孔的运动已经 从左方向移动到右方向时(这里,用户注视的位置从点j移动到点k),ROI 682 可以基于用户的运动重新确定。即使在这种情况下,如参考图15A所描述的 那样,可以基于左眼610的注视方向660和右眼620的注视方向670将点k 确定为用户注视的位置点。另外,ROI 682可以通过指定预定的ROI 682的 范围680的中心点的位置k作为注视的位置点k来确定。替代地,ROI 682的 范围不是预先确定的,而是可以根据用户的注视而改变。
如上所述,适合于提高视频质量的ANN可以对与新确定的ROI 682对应的目标视频执行视频改进处理。例如,可以对与ROI 682对应的 目标视频的超分辨率计算进行处理。
参考图15D,可以看出ROI 692中视频的分辨率通过超分辨率 处理而变得高于图15C的ROI 682的分辨率以使视频清晰。
如上所述,仅提高所确定的ROI的视频质量以最小化图像处理 所需的计算量,从而提高提供给用户的图像(例如,真实内容)的响应率。因 此,可以为用户提供自然的、沉浸感强的逼真内容。
到目前为止,已经描述了适合于提高视频质量的ANN执行视 频改进处理以提高与ROI对应的目标视频的分辨率,但不限于此,以及可以 处理与视频改进相关的各种计算,诸如上述的压缩和解码计算、预处理计算 等。根据一实施方案,适合于提高视频质量的ANN可以在必要时对视频的部 分或全部进行视频改进,例如对整个视频进行视频改进处理,而不是仅对与 ROI对应的目标视频进行视频改进处理。
图16A和16B分别示出了基于检测到的用户注视改进确定的感 兴趣区域(ROI)的图像的过程。在这里,假设XR设备佩戴在用户的头上。
基于陀螺仪传感器和/或加速度传感器检测到的运动以及通过相 机检测到的用户注视信息确定ROI,并且可以对每个ROI进行视频改进处 理。
适合于提取由NPU计算的ROI的ANN可以基于检测到的运动 来确定ROI。例如,适合于提取由NPU计算的ROI的ANN可以通过基于头 部方向和头部倾斜度中的至少一者检测用户头部(例如,头骨)的位置来确定 显示器上的ROI 752的范围750。如图16A所示,可以基于ROI 752的范围 750来确定基于头部方向和头部倾斜度的ROI 752。
此外,适合于提取由NPU计算的ROI的ANN可以检测显示器 上的点(l,m),该点(l,m)在左眼710的瞳孔的位置712处的左眼710的注视 方向730与在右眼720的瞳孔的位置722处的右眼720的注视方向740相 交,以分别确定左眼710和右眼720的ROI 760和770。
适合于改进由NPU计算的视频质量的ANN确定每个ROI的排 名,并且可以基于确定的排名为每个ROI逐步执行视频改进处理(例如,超分 辨率计算、压缩解码计算、预处理计算等)。例如,适合于提高视频质量的 ANN可以基于头部方向和头部倾斜度按照左眼和右眼的ROI彼此重叠的区域 780、左眼和右眼的ROI 760和770以及ROI 752的顺序来确定用户的ROI的 排名。
如图16B所示,基于所确定的排名,适合于提高视频质量的 ANN可以以最高质量(例如,8K)呈现其中左眼和右眼的ROI彼此重叠的区域 780的分辨率。此外,左眼和右眼的ROI 760和770可以以低于这些ROI彼 此重叠的区域780的分辨率的高质量(例如,4K)呈现。此外,基于头部方向 和头部倾斜度的ROI 752的分辨率可以以远低于左眼和右眼的ROI760和770 的分辨率的高质量(例如,4K)呈现。
如上所述,根据每个ROI执行视频改进处理计算,从而向用户 提供具有最大化生动性和沉浸感的逼真内容。
图17A-17C示出了通过在基于检测到的用户注视确定的感兴趣 区域(ROI)中合成增强现实视频而提供的示例。
适合于提取由NPU计算的ROI的ANN可以基于由陀螺仪传感 器和/或加速度传感器检测到的用户头部运动和由相机检测到的用户注视中的 至少一者来确定感兴趣区域(ROI)752。
作为示例,可以通过检测用户瞳孔的位置812和822来检测显 示器上与左眼810和右眼820的注视方向相交的点I。
如图17A所示,在向左方向倾斜的显示器上的点可以被确定为 注视的位置点I,并且可以基于对应的位置点I来确定ROI 852。
如图17B所示,已经描述了基于用户的注视确定ROI,但不限 于此,并且可以基于用户的头部运动或者基于头部运动和注视来确定ROI。
另一方面,如上所述,XR设备1000可以具有多个相机。此 时,第一相机可以拍摄用户观看的视频,第二相机和第三相机可以分别拍摄 用户的左眼和右眼。
如图17C所示,第一相机可以拍摄与ROI 852对应的现实视频 860。然后,XR设备1000可以将现实视频860合成到ROI 852并输出合成的 视频。在将现实视频860合成到ROI852之前,现实视频860可以由适合于 提高视频质量的ANN处理以进行视频改进。
同时,XR设备1000的显示器可以包括透明玻璃,该透明玻璃 被配置为通过人的眼睛查看实际现实。这里,XR设备1000的显示器可以通 过透明玻璃来实现。换而言之,用户不仅可以使用自己的眼睛通过透明玻璃 看到实际现实,还可以看到透明玻璃上输出的现实视频。由适合于提取由 NPU计算的ROI的ANN推理的ROI 852可以包括要在透明玻璃上显示的区 域。XR设备1000可以生成现实视频860并且在ROI上显示现实视频860, 从而在一般视图中重叠现实视频860。作为示例,该现实视频860可以在被 显示在显示器上之前由适合于提高视频质量的ANN进行处理以用于视频改 进。
图18示出了用于视频改进的过程。
参考图18,视频改进可以包括解压缩/解码过程(S401)、视频预 处理过程(S403)和超分辨率过程(S405)。
在解压缩/解码过程(S401)中,当视频(例如,AR/VR视频)是压 缩视频时,视频被解压缩,然后被解码以输出到显示器1041上。
这里,压缩视频可以是例如具有商业化视频压缩技术(例如 HEVC、H.265和MPEG)的压缩视频。
整个视频可以被压缩。但是,也可以只对与图像中的ROI对应 的视频部分进行解压。
同时,当接收到的视频是未压缩或未编码的视频时,可以跳过 解压缩/解码过程(S401)。
接下来,可以针对与整个视频的ROI对应的部分的视频提高视 频质量。为了提高视频质量,可以执行视频预处理过程(S403)和/或超分辨率 过程(S405)。
例如,视频预处理过程(S403)可以包括视频信号处理过程和/或 调整视频参数的过程。这里,参数调整过程可以指使用去马赛克方法、宽动 态范围(WDR)或高动态范围(HDR)方法、去模糊方法、去噪方法、色调映射 方法、白平衡方法和解压方法中的至少一种。
在参数调整过程中,可以依次或并行调整视频的多个参数。
当描述顺序调整时,可以针对其中第一参数被调整的视频调整 第二参数。为此,可以以调整第一参数的第一层和调整第二参数的第二层的 形式实施ANN模型。例如,ANN模型的第一层可以用于对视频应用去马赛 克方法,而第二层可以用于应用去模糊方法。
在描述并行调整时,可以同时调整第一参数和第二参数。在这 种情况下,ANN模型的第一层可以包括用于调整第一参数的第一节点和用于 调整第二参数的第二节点。例如,在学习去马赛克方法和去模糊方法的ANN 模型的情况下,当视频输入到经学习的ANN模型的第一层时,从第一层输出 的视频可能是应用了去马赛克方法和去模糊方法的视频。
可以执行超分辨率处理(S405)以提高视频的分辨率。这里,已 经通过现有的插值方法执行了超分辨率,但是根据本公开内容,可以通过 ANN来执行超分辨率。
也可以对整个视频执行超分辨率处理。
替代地,可以仅对ROI中的视频执行超分辨率处理。具体而 言,用户注视所在的ROI的分辨率可以以高质量(例如,4K或8K)呈现,并 且在处于用户视线之外时可以以正常质量(例如,全HD)呈现。也就是说,如 果对与ROI对应的视频进行预处理(S403)以提高视频质量,则可以对与进行 了预处理的ROI对应的视频进行超分辨率处理(S405)。
当原始视频是高质量视频时,可以不应用预处理过程和/或超分 辨率过程。但是,如果原始视频是高质量视频,则存在产生大的负载以及执 行解压缩和/或解码过程的功耗增加的缺点。相应地,仅对用户的ROI内的视 频进行预处理和/或超分辨率处理,以减少整体计算量,从而降低负载。因 此,即使原始视频没有高的质量(例如,低分辨率视频),用户的ROI中的视 频也可以通过预处理过程和/或超分辨率过程进行改进,以输出到能够最大限 度地提高用户沉浸感的高质量视频。
到目前为止,已经描述了对ROI中的视频一起进行预处理过程 和超分辨率过程,但是当ROI中的视频被划分为多个区域时,仅对第一区域 进行预处理过程,可以对第二区域一起进行预处理过程和超分辨率过程。
图19A示出了作为边缘设备的相机设备的示例,图19B图示了 作为边缘设备的无人机的示例。
参考图19A可以看出,边缘设备1000可以是闭路电视 (CCTV),其可以是基于互联网协议(IP)或基于网络的相机。为了通过普通相 机拍摄远处的对象,需要高倍率的光学镜头。但是,其缺点是高倍率光学镜 头价格昂贵,并且需要驱动执行器(即马达)来放大/缩小镜头,但马达的频繁 驱动并不能保证在不良状况下的耐用性。此外,存在当通过缩小远程对象拍 摄远程对象时无法拍摄近场对象的缺点。
因此,本公开提供将通过单个镜头拍摄的视频输入到适合于提 高视频质量的ANN、CNN、适合于识别物体的ANN和适合于预测对象运动 路径的ANN中的至少一者。具体地,本公开内容提供通过适合于提高视频质 量的ANN对通过单镜头拍摄的视频执行预处理和超分辨率并且通过适合于识 别对象的ANN将特定主体(例如,某个人)识别为超分辨率视频中的对象。此 外,本公开内容提供了预测被识别为对象的主体将通过适合于预测对象移动路径的ANN移动所穿过的路径,然后在通过适合于确定移动路径的ANN推 理的竖直和水平方向上旋转相机。
同时,如可以参考图19B所能看到的,边缘设备1000可以是 具有相机的无人机。
为了在跟踪的同时拍摄移动的目标对象,人们需要使用控制器 远程调整无人机。然而,由于需要大量的技能,因此伴随着高昂的成本。
因此,本公开内容提供了通过适合于提高视频质量的ANN对 通过安装在无人机上的相机拍摄的视频执行预处理和超分辨率过程,并且通 过适合于识别对象的ANN将特定主体(例如,某个人)识别为超分辨率视频中 的对象。此外,本公开内容提供了预测被识别为对象的主体将通过适合于预 测对象移动路径的ANN移动所穿过的路径,然后在通过适合于确定移动路径 的ANN推理的方向上自动调整无人机。
图20A图示了图19A的相机设备或图19B的无人机的配置。
参考图20A,作为边缘设备1000的示例的相机设备或无人机可 以包括图1或3的NPU 100、存储器200、无线通信单元1010、输入单元 1020、系统总线1060和CPU 1080。
NPU 100可以执行边缘设备所需的多个ANN的计算。例如, 边缘设备所需的多个ANN可以包括适合于提高视频质量的ANN、CNN、适 合于识别对象的ANN、适合于预测对象运动路径的ANN和适合于确定移动 路径(方向)的ANN中的至少一者。
NPU 100的NPU调度器130可以将多个ANN的计算分配给 PE。也就是说,可以将第一ANN的计算分配给第一组PE,并且可以将第二 ANN的计算分配给第二组PE。具体地,NPU调度器130可以将适合于提高 视频质量的ANN的计算分配给第一组PE,将CNN的计算分配给第二组 PE,将适合于识别对象的ANN的计算分配给第三组PE,将适合于预测对象 移动路径的ANN的计算分配给第四组PE,并且将适合于确定移动路径(方向) 的ANN的计算分配给第五组PE。
图20B示出了图20A的修改。
与图20A不同,图20B的边缘设备1000可以包括多个NPU, 例如两个NPU 100a和100b。
CPU 1080可以从存储器200获取关于ANN模型的组合信息。 另外,CPU 1080可以基于获取的组合信息从存储器200获取关于多个ANN 模型的信息。
在下文中,CPU 1080可以将第一ANN模型分配给第一组PE 并且将第二ANN模型分配给第二组PE。
在作为示例的由CPU 1080进行的分配中,图20B示出了第一 NPU 100a,其包括用于执行适合于提高视频质量的ANN的计算的第一组 PE、用于执行CNN的计算的第二组PE、以及用于执行适合于识别对象的 ANN的计算的第三组PE。此外,图20示出了第二NPU 100b可以包括用于 执行适合于预测对象移动路径的ANN的计算的第四组PE和用于执行适合于 确定移动路径(方向)的ANN的计算的第五组PE。然而,这仅仅是示例,并 且可以自由地修改由第一NPU 100a和第二NPU 100b执行的ANN的类型或 数量。
在下文中,将详细描述适合于识别对象的ANN。
当适合于识别对象的ANN接收到视频时,适合于识别对象的ANN可以识别视频中包括的对象。识别包含在具有不同图像参数的多个图像 中的对象的准确度(即对象识别率)可能不同。这里,图像参数可以指任何指 示图像特征或其组合的参数。替代地,图像参数可以包括表示图像的每个详 细特征的任何子参数。例如,图像参数可以包括与去马赛克、宽动态范围 (WDR)或高动态范围(HDR)、去模糊、去噪、色调映射、白平衡和解压缩中 的至少一者相关联的子参数,然而,图像参数不限于此,并且可以包括任何 能够表示图像的特征的参数或子参数。
图21A根据光量变化示出了视频结果,图21B根据光量变化示 出了识别率。
图21B所示的曲线图示出了通过使用称为GoogleNet的深度学 习识别模型同时根据称为ImageNet的50,000张图像的数据调整每个图像中的 光量来测量识别率的实验结果。
接收到的图像的对象识别率可以根据表示图像的特征,即作为 图像参数或子参数中的一者的光量不同而变化。
如图21A所示,确认作为接收到的图像的光量的平均值的值Δμ 改变以改变视频的光量,并且随着Δμ值的增加,光量增加。
改变拍摄同一对象的图像的光量的多个图像中的优选图像会因 人而异。也就是说,由于每个人的每个视网膜视细胞(例如,视锥细胞)各不 相同,因此观看此类图像的每个人可能更偏好不同的图像。
另一方面,在使用适合于识别对象的ANN的情况下,这种偏 好根本没有贡献。例如,根据偏好,某个人可以选择具有Δμ值为50的图像 作为最适合对象识别的图像,但是如图22B所示,当Δμ值为0时,适合于识 别对象的ANN中的对象识别率最高。也就是说,其意指当光量具有合适的值 时,深度学习识别模型的识别率最高。在该示例中,GoogleNet模型已被用作 用于识别对象的ANN模型,但它可以不限于此。
图22A根据光量变化示出了视频结果,而图22B根据清晰度的 变化示出了识别率。
如上所述,对象识别率可以根据清晰度(其是图像参数或子参数 中的一者)以及光量不同而变化。可以改变与接收到的图像的清晰度相关联的 σ的值以改变图像的清晰度。
如图22A所示,可以确认,当σ的值为0时(即原图),示例最清 晰,随着σ的值的增加,视频逐渐模糊。
图22B中所示的曲线图示出了通过使用称为GoogleNet的深度 学习识别模型同时根据称为ImageNet的50,000张图像的数据调整每个图像的 清晰度来测量识别率的实验结果。
如图22B所示,当σ的值为0(即原图)时,对象识别设备的对象 识别模块中的对象识别率最高。即与清晰度相关联的σ的值最小时,深度学习 识别模型的识别率最高。如上所述,GoogleNet模型已被用作适合于识别对象 的ANN模型,但其可以不限于此。
参见图21A和21B以及图22A和22B,可以看出,当视频的光 量具有合适的值且清晰度高时,适合于识别对象的ANN的识别率是高的。
如上所述,人偏好的高清图像与能够基于ANN最大化对象识 别设备的识别率的图像之间会存在差异。例如,在ANN中,按类型对狗进行 分类的概率可能比人类更有效。也就是说,在将输入图像输入到适合于识别 对象的ANN的输入层之前,可以对视频进行改进处理以最大化对象识别率。 下面将描述这个视频改进过程。
传统的视频预处理技术被实现为输出人偏好的高清图像,而本 公开内容的视频处理技术旨在提高适合于识别对象的ANN的识别率。
图23示出了识别图像中包括的对象并提供反馈数据的过程。具 体地,图23示出了适合于提高视频质量的ANN,其可以对输入图像执行改 进过程,然后将处理后的图像输出并传输到适合于识别对象的ANN。
如参考图18可以看出的,适合于提高视频质量的ANN可以包 括解压缩/解码过程(S401)、视频预处理过程(S403)和超分辨率过程(S405)。视 频预处理过程(S403)可以使用用于图像的信号处理的任何函数和变量。视频 预处理过程(S403)可以通过视频预处理ANN模型对输入图像进行预处理,然 后输出。这里,视频预处理ANN模型可以包括用于在适合于识别对象的 ANN中最大化图像中的对象识别率的任何概率模型。作为另一示例,视频预 处理ANN模型可以包括CNN、去模糊网络和去噪网络。
可以学习视频预处理ANN模型以输出为识别对象而优化的图 像。具体地,视频预处理ANN模型反馈多个参考图像和多个参考图像中的每 一个的对象识别结果,并且可以被重复学习,从而输出为了识别对象而优化 的图像。这里,参考图像可以是由退化图像和原始图像构成的一对学习数 据。
为此,视频预处理过程(S403)还可以包括学习过程。学习过程 可以生成视频预处理ANN模型,以基于多个参考图像和多个参考图像中的每 一图像的对象识别结果来推理为了识别对象而优化的图像。视频预处理ANN 模型可以通过机器学习算法学习以输出为了识别对象而优化的图像。也就是 说,可以学习视频预处理ANN模型以输出为了识别对象而优化的图像。
视频预处理过程(S403)接收从外部设备接收的图像或从相机捕 获的图像,并且输出为了识别对象而优化的图像,以将优化的图像传输到适 合于识别对象的ANN。
适合于识别对象的ANN可以接收由适合于提高视频质量的 ANN输出的图像并识别图像中包括的对象。然后,适合于识别对象的ANN 可以将从适合于提高视频质量的ANN输出的图像中包括的对象的识别结果反 馈给适合于提高视频质量的ANN。
适合于识别对象的ANN可以是作为示例的预学习的深度神经 网络(DNN)。替代地,适合于识别对象的ANN可以通过使用读取器网络(例 如,VGG、ResNet、YOLO、SSD等)检测或识别输入的图像中的对象。
反馈的识别结果可以包括关于是否识别出图像中包括的对象的 信息。例如,可以基于对象识别率是否超过预定或更多阈值识别率来确定对 象是否被识别。作为另一示例,图像中对象的识别可以通过不仅计算对象识 别的概率而且还计算置信度来确定。反馈的识别结果可以包括对象的识别结 果以及是否识别出对象的任何处理信息。
反馈的识别结果不限于仅包括关于对象识别的信息,并且还可 以包括对象识别中出现的各种参数或对象识别中涉及的各种因素,例如对象 识别速度、对象识别准确率(或对象识别率),以及识别对象的图像的参数。
适合于提高视频质量的ANN中的视频预处理过程(S403)可以基 于反馈识别结果调整用于执行图像的视频改进过程的变量。这里,变量可以 是在执行视频改进处理技术(例如,信号处理计算)时要改变的值。例如,这 样的变量可以包括用于确定图像参数的因素。
适合于提高视频质量的ANN中的视频预处理过程(S403)可以通 过调整图像参数来执行图像的视频改进处理。例如,视频预处理过程(S403) 可以经由通过使用以下高斯滤波器方程调整接收到的图像的模糊参数或子参 数来执行视频改进过程。
[方程1]
Figure BDA0003342226480000681
这里,σ表示用于确定模糊程度的变量,并且随着该变量σ的值 增大,图像可能会进一步模糊。例如,视频预处理过程(S403)可以基于适合 于识别对象的ANN的反馈识别结果调整变量σ的值,并且通过调整后的变量 执行对所接收到的图像进行视频改进处理,从而输出针对对象识别率而优化 后的图像。
当视频预处理过程(S403)通过视频预处理ANN模型对输入的图 像执行视频改进处理时,视频预处理ANN模型可以通过使用适合于识别对象 的ANN的识别结果反馈来重新学习或更新。例如,视频预处理过程(S403)可 以分析反馈识别结果并基于分析结果校正视频预处理ANN模型中包括的权重 值。
具体地,视频预处理过程(S403)可以基于预处理图像中包括的 对象的识别结果及其反馈数据来训练视频预处理ANN模型的参数(例如,权 重),这些参数是通过适合于识别对象的预学习的ANN输出以便输出能够最 大化适合于识别对象的ANN的对象识别率的预处理后的图像的输出值。
适合于识别对象的ANN可以通过使用来自适合于执行视频预 处理的ANN的图像输出来识别对象。适合于提高视频质量的ANN(具体地, 适合于提高视频质量的ANN)的权重可以通过来自适合于识别对象的ANN的 识别结果反馈来更新。因此,可以提高适合于识别对象的ANN的识别率。
适合于执行视频预处理的ANN和适合于识别对象的ANN可以 是预学习网络,例如深度学习模型,但不限于此。如上所述,重复学习,从 而提高了适合于执行视频预处理的ANN和适合于识别对象的ANN的准确性 和/或可靠性。
图24示出了视频预处理过程的详细过程。
图24中所示的视频预处理过程可以对应于图18中所示的视频 预处理过程(S403)。
所示的视频预处理过程可以通过调整输入图像的参数来执行改 进处理。这里,图像参数可以包括表示接收到的图像的去模糊、去噪、宽动 态范围(WDR)或高动态范围(HDR)、色调映射和去马赛克中的至少一者的图 像子参数。
视频预处理过程可以分别依次调整多个图像子参数。例如,当 对多个图像子参数中的每一个进行调整时,可以在调整第二子参数时反映第 一子参数的调整结果。
如图24所示,视频预处理过程可以包括对图像去模糊的过程 (S501)、对图像去噪的过程(S503)、对图像执行HDR或WDR的过程(S505)、 执行图像的色调映射的过程(S507)和对图像去马赛克的过程(S509)。
可以通过使用如上所述的视频预处理ANN模型来执行视频预 处理过程。可以学习视频预处理ANN模型来依次执行去模糊过程(S501)、去 噪过程(S503)、执行HDR或WDR的过程(S505)、执行图像的色调映射的过 程(S507),然后进行去马赛克的过程(S509)。替代地,可以学习视频预处理 ANN模型以同时执行过程S501、S503、S505、S507和S509。
视频预处理过程可以通过使用已学习的视频预处理人工神经网 络模型来执行,以便通过调整接收到的图像的多个参数而不是依次调整各个 子参数来输出为了对象识别而优化的预处理图像。
在图24中,示出了视频预处理过程包括去模糊过程(S501)、去 噪过程(S503)、执行HDR或WDR的过程(S505)、执行图像的色调映射的过 程(S507),以及去马赛克过程(S509),但可以不限于此。此外,这些过程的顺 序可以不限于图24所示的顺序。
图25示出了识别图像中包括的对象的示例。
对象识别过程可以通过使用具有CNN的区域(R-CNN)来识别包 括在接收到的图像中的对象。如图25所示,R-CNN可以通过在输入图像中 使用选择性搜索算法来生成候选区域。生成的候选区域被转换为相同大小, 并且可以通过CNN提取图像中包含的对象的特征。候选区域中的对象可以利 用提取的特征通过支持向量机进行分类。如图25所示,图像中包括的对象可 以被分类为各种对象,例如人、树和车辆。对象识别过程可以基于分类的对 象来检测或识别图像中的对象。
在图25中,示例性地示出了识别过程使用R-CNN,但不限于 此,并且对象识别过程可以采用任何能够识别图像中的对象的ANN。也就是 说,可以使用预训练的网络(例如AlexNet或GoogleNet)来识别图像中包含的 对象。
可以通过学习来构建适合于识别对象的ANN。具体地,可以通 过分析数千到数万个学习数据(学习图像)来学习识别每个对象的特征,并且 学习识别每个对象的差异的方法,从而可以构建适合于识别对象的ANN。
图26A-26C分别示出了识别图像中包括的对象的结果。
如图26A所示的图像,可以确认,当通过DNN识别在其捕获 期间抖动的图像的对象时,对象识别率被显示为61%。如图26B所示,可以 确认,当通过DNN识别正常捕获的(地面实况)图像的对象时,对象识别率被 显示为74%。
因此,在如上所述识别对象之前,可以通过去模糊来执行视频 改进处理。
当通过使用适合于提高视频质量的ANN执行去模糊过程时, 图26A的图像可以与图26C的图像相同。也就是说,图26A的图像可以恢复 得像图26C的图像那样。因此,对象识别率可以提高到82%。
图27A示出了作为边缘设备的机器人的示例,图27B示出了作 为边缘设备的自主驾驶车辆的示例。
图27A示出了边缘设备是两足步行机器人。但是,与此不同的 是,边缘设备可能是四足步行机器人或带轮子的机器人。此外,图27B示出 了边缘设备是车辆。然而,与此不同的是,边缘设备可以是商用车辆,例如 卡车或公共汽车。
图28A图示了图27A或27B的边缘设备的配置。
参考图28A,作为边缘设备1000的示例的机器人或自动驾驶车 辆可以包括图1或3的NPU 100、存储器200、无线通信单元1010、输入单 元1020、系统总线1060和CPU 1080。
输入单元1020可以包括相机1021、雷达1026、LiDAR 1027、 陀螺仪传感器1028和加速度传感器1029中的至少一者。
存储器200可以包括ANN模型存储单元和ANN模型的组合信 息存储单元。
NPU 100可以执行边缘设备所需的多个ANN的计算。例如, 边缘设备所需的多个ANN可以包括CNN、适合于识别对象的ANN、适合于 预测对象的运动的ANN、适合于预测对象运动路径的ANN、以及适合于确 定移动路径(方向)的ANN。
NPU 100的NPU调度器130可以将多个ANN的计算分配给 PE。也就是说,可以将第一ANN的计算分配给第一组PE,并且可以将第二 ANN的计算分配给第二组PE。具体地,NPU调度器130可以将CNN的计算 分配给第一组PE,将适合于识别对象的ANN的计算分配给第二组PE,将适 合于预测对象的运动的ANN分配给第三组PE,将适合于预测对象移动路径 的ANN分配给第四组PE,并将适合于确定移动路径(方向)的ANN分配给第 五组PE。
图28B图示了图28A的修改。
与图28A不同,图28B的边缘设备1000可以包括多个NPU, 例如两个NPU 100a和100b。
输入单元1020可以包括相机1021、雷达1026、LiDAR 1027、 陀螺仪传感器1028和加速度传感器1029中的至少一者。
存储器200可以包括ANN模型存储单元和ANN模型的组合信 息存储单元。
CPU 1080可以从存储器200获取关于ANN模型的组合信息。CPU 1080可以基于获取的组合信息从存储器200获取关于多个ANN模型的 信息。
在下文中,CPU 1080可以将第一ANN模型分配给第一组PE 并且将第二ANN模型分配给第二组PE。
以CPU 1080进行的分配作为示例,图28B示出了第一NPU 100a,其包括用于执行CNN的计算的第一组PE、用于执行适合于识别对象 的ANN的计算的第二组PE、以及用于执行适合于预测对象运动的ANN的 计算的第三组PE。此外,图28B示出了第二NPU 100b可以包括用于执行适 合于预测对象运动路径的ANN的计算的第四组PE和用于执行适合于确定运 动路径(方向)的ANN的计算的第五组PE。然而,这仅是示例,可以自由修 改由第一NPU 100a和第二NPU 100b执行的神经网络的类型或数量。
在下文中,将参考28A和28B一起描述分配。
作为边缘设备1000的示例的机器人或自动驾驶车辆可以将通过 相机1021拍摄的视频传输到CPU 1080。所拍摄的视频可以在被临时存储在 存储器200中之后传输到CPU1080。
CNN可以对通过相机1021拍摄的图像执行卷积计算以提取特 征,然后将提取的特征传输到适合于识别对象的ANN。适合于识别对象的 ANN可以识别图像中的多个对象。
在图像中识别出的多个对象可以由雷达1026和/或LiDAR 1027 跟踪。
适合于预测对象运动的ANN和适合于预测对象运动路径的 ANN可以预测由雷达1026和/或LiDAR 1027跟踪的对象的运动和/或运动路 径。
适合于确定运动路径(方向)的ANN可以基于预测对象的运动和 /或运动路径推理机器人或自主驾驶车辆能够避开对象的运动路径(方向)。
CPU 1080可以将机器人或自主驾驶车辆移动到从适合于确定移 动路径(方向)的ANN输出的路径(或方向)。
图29A示出了作为边缘设备的智能电话的示例,图29B示出了 作为边缘设备的可穿戴设备的示例,图29C示出了作为边缘设备的智能扬声 器的示例,图29D示出了作为边缘设备的电视的示例,图29E示出了作为边 缘设备的属于家用电器的冰箱的示例,而图29F示出了作为边缘设备的属于 家用电器的洗衣机的示例。
如图所示,边缘设备可以是待由用户使用的各种电子产品。例 如,除了所示出的智能手机或可穿戴设备之外,边缘设备还可以是诸如平板 电脑、笔记本电脑或膝上型计算机之类的用户设备。作为另一示例,除了所 示出的家用电器之外,边缘设备还可以是微波炉、锅炉、空调等。
图30A示出了图29A至29F的边缘设备的配置。
如参考图30A可以看出的,图29A至29F的边缘设备1000可 以包括图1或3的NPU100、存储器200、无线通信单元1010、输入单元 1020、系统总线1060和CPU 1080。
输入单元1020可以包括相机1021和麦克风1022中的至少一 者。
存储器200可以包括ANN模型存储单元和ANN模型的组合信 息存储单元。
NPU 100可以执行边缘设备所需的多个ANN的计算。例如, 边缘设备所需的多个ANN可以包括适合于识别手势的ANN、适合于分析使 用模式的ANN和适合于识别语音的ANN中的至少一者。
NPU 100的NPU调度器130可以将多个ANN的计算分配给 PE。也就是说,可以将第一ANN的计算分配给第一组PE,并且可以将第二 ANN的计算分配给第二组PE。具体地,NPU调度器130可以将适合于识别 手势的ANN的计算分配给第一组PE,将适合于分析使用模式的ANN的计 算分配给第二组PE,并将适合于识别语音的ANN分配给第三组PE。
图30B示出了图30A的修改。
与图30A不同,图30B的边缘设备1000可以包括多个NPU, 例如两个NPU 100a和100b。
输入单元1020可以包括相机1021和麦克风1022中的至少一 者。
存储器200可以包括ANN模型存储单元和ANN模型的组合信 息存储单元。
CPU 1080可以从存储器200获取关于ANN模型的组合信息。 CPU 1080可以基于获取的组合信息从存储器200获取关于多个ANN模型的 信息。
在下文中,CPU 1080可以将第一ANN模型分配给第一组PE 并且将第二ANN模型分配给第二组PE。
在作为示例的由CPU 1080进行的分配中,图28B示出了第一 NPU 100a,其包括用于执行适合于识别手势的ANN的计算的第一组PE和用 于执行适合于分析使用模式的ANN的计算的第二组PE。图28还示出了第二 NPU 100b可以包括用于执行适合于识别语音的ANN的计算的第三组PE。然 而,这仅仅是示例,并且可以自由地修改由第一NPU 100a和第二NPU100b 执行的ANN的类型或数量。
在下文中,这将参考图30A和30B一起进行描述。
在下文中,为了描述方便,将描述基于通过相机1021和麦克风 1022输入的信号,通过ANN执行推理的示例。
可以学习适合于识别语音的ANN以基于从麦克风1022接收到 的声学信号来推理关键词。可以学习适合于识别手势的ANN以基于响应于关 键词推理结果的视频信号来推理用户的手势。
此时,适合于识别语音的ANN可以是被学习以仅识别特定关 键词的ANN。例如,具体的关键词可以包括简单的关键词命令,例如 “Alexa”、“Hey Siri”、“调高音量”、“调低音量”、“搜索”、“打 开”、“关闭”、“互联网”、“音乐”和“电影”。例如,特定关键字可 以是一百个常用关键字命令中的一个或多个。
适合于识别手势的ANN可以是被学习以仅识别特定手势的 ANN。例如,特定手势可以是特定的手势、身体姿势、面部表情等。
适合于分析使用模式的ANN可以基于用户的使用模式,即用 户的语音或手势,使用边缘设备1000分析用户的模式。根据分析的模式,边 缘设备1000可以向用户推荐多个提议。
边缘设备1000可以通过推理结果从第一模式切换到第二模式。 第一模式为低功耗模式,即待机模式,第二模式可以为手势模式。
CPU 1080可以通过接收适合于识别语音的ANN的推理结果来 控制边缘设备1000处于第二模式。CPU 1080可以被配置为在第二模式中向 相机1021供应功率。在第二种模式中,适合于识别手势的ANN可以执行推 理计算。
边缘设备1000的NPU 100可以在独立模式或独自模式下操 作。也就是说,边缘设备1000可以通过使用NPU 100独自地执行基于ANN 的推理计算,而无需通过互联网接收云AI服务。如果边缘设备1000通过无 线通信单元1010从基于云计算的服务器接收ANN推理服务,则边缘设备 1000将相机1021和麦克风1022的用于推理的数据存储在存储器200中,然后需要通过无线通信单元1010传输数据。缺点是这会导致时间延迟并且增加 功耗。
然而,根据本公开内容,由于边缘设备1000包括能够独立操作 的NPU 100,所以可以缩短时间延迟并降低功耗。
此外,语音信号和视频信号可以包括私人数据。如果边缘设备 通过无线通信单元1010连续传输通过用户的谈话或私人生活所捕获的视频, 则可能发生侵犯隐私的问题。
因此,边缘设备1000可以通过使用NPU 100独自地对可能包 括隐私数据的输入单元1020的信号执行基于ANN的推理计算,然后删除隐 私数据。也就是说,可能包括隐私数据的视频信号和声音信号可以在NPU 100的推理计算之后删除。
此外,边缘设备1000可以阻止通过无线通信单元1010传输可 能包括隐私数据的输入单元1020的信号。
此外,边缘设备1000可以不将可能包括隐私数据的输入单元 1020的信号存储在存储器200中。
此外,边缘设备1000可以将可能包括隐私数据的输入单元 1020的信号分类为包括隐私数据的数据。
根据上述配置,边缘设备1000具有在降低功耗的同时为用户提 供便利并阻止隐私数据泄露问题的效果。
图31A示出了其中执行多个ANN模型的计算的示例。
参考图31A可以看出的,当执行第一ANN模型的第一计算。 当执行第一ANN模型的第i层的计算时,可以开始第二ANN模型的第二计 算。如图31所示,第一ANN模型的第一计算和第二ANN模型的第二计算 可以以时分形式进行。
图31B示出了被分配多个ANN模型的计算的PE。
图31B示出了作为示例存在从PE1至PE24的总共24个PE。 分配给第一ANN模型的第一计算的PE可以是从PE1至PE16总共16个。分 配给第二ANN模型的第二计算的PE总共可以是十二个,如PE10、PE11、 PE14、PE15、PE16、PE18、PE19、PE20、PE22、PE23和PE24。
一起参考图31A和31B,对于第一ANN模型的计算,可以分 配从PE1至PE16的总共16个PE。然后,当执行第一ANN模型的第i层的 计算时,在PE1至PE16中,PE10、PE11、PE14、PE15和PE16可以重新分 配用于第二ANN模型的计算。也就是说,第一ANN模型的后续计算可以仅由剩余的PE执行,即由PE1、PE2、PE3、PE4、PE5、PE6、PE7、PE8、 PE9和PE13执行。
如图所示,第一ANN模型的第一计算和第二ANN模型的第二 计算可以并行或以时分方式执行。
另外,如图所示,分配用于第一ANN模型的计算的第一组PE 和分配用于第二ANN模型的计算的第二组PE可以彼此部分相同或彼此完全 不同。
在图31A中,示出了当执行第一ANN模型的第i层的计算时, 开始第二ANN模型的第二计算,但与此不同的是,其他修改是可能的。例 如,第二ANN模型的第二计算可以基于关于多个ANN的计算顺序的信息开 始。
关于计算顺序的信息可以包括关于层的信息、关于内核的信 息、关于处理时间的信息、关于剩余时间的信息和关于时钟的信息中的至少 一者。
关于层的信息可以指示第一ANN模型的所有层中的第i层。第 二ANN模型的计算可以在第一ANN模型的第i层的计算开始之后开始。
关于内核的信息可以指示第一ANN模型的所有内核中的第k 内核。第二ANN模型的计算可以在第一ANN模型的第k内核的计算开始之 后开始。
关于处理时间的信息可以指示在执行第一ANN模型的计算之 后经过的时间。第二ANN模型的计算可以在经过的时间之后开始。
关于剩余时间的信息可以指示在第一ANN模型的计算完成之 前剩余的时间。可以在到达剩余时间之前开始第二ANN模型的计算。
本说明书和附图所示的本发明的实施方案只是为了便于说明本 公开的技术内容和帮助理解本发明而提供具体的示例,并且不是意图限制本 公开的范围。除了上述实施方案之外,对于本领域技术人员来说,可以实施 其他修改是显而易见的。

Claims (20)

1.一种神经处理单元(NPU),其包括:
至少一个内部存储器,其用于存储关于多个人工神经网络(ANN)模型的组合的信息,所述多个ANN模型包括第一ANN模型和第二ANN模型;
多个处理元件(PE),其能操作地配置为依次或并行处理所述多个ANN模型的第一操作和第二操作,所述多个PE包括第一组PE和第二组PE;以及
调度器,其能操作地配置为基于与关于所述多个ANN模型的操作次序相关的信息的指令,将所述第一ANN模型的所述第一操作的一部分分配给所述第一组PE,并且将所述第二ANN模型的所述第二操作的一部分分配给所述第二组PE。
2.根据权利要求1所述的NPU,其中由所述调度器进行的所述分配中的每一者进一步基于ANN数据局部性信息。
3.根据权利要求1所述的NPU,其中,所述第一ANN模型的所述第一操作和所述第二ANN模型的所述第二操作是并行或分时执行的。
4.根据权利要求1所述的NPU,其中所述第一组PE包括至少一个与所述第二组PE不同的PE。
5.根据权利要求4所述的NPU,其中所述第一组PE包括至少一个与所述第二组PE相同的PE。
6.根据权利要求1所述的NPU,其中关于所述操作次序的所述信息包括以下至少一者:
关于层的信息,
关于内核的信息,
关于处理时间的信息,
关于剩余时间的信息,以及
关于时钟的信息。
7.根据权利要求6所述的NPU,
其中,关于所述层的所述信息表示所述第一ANN模型的所有层中的第i层,以及
其中,所述第二ANN模型是在所述第一ANN模型的所述第i层启动之后启动的。
8.根据权利要求6所述的NPU,
其中关于所述内核的所述信息表示所述第一ANN模型的所有内核中的第k个内核,以及
其中,在使用所述第一ANN模型的所述第k个内核之后启动所述第二ANN模型。
9.根据权利要求6所述的NPU,
其中关于所述处理时间的所述信息表示在执行所述第一ANN模型的操作之后经过的时间,以及
其中在所述经过的时间之后启动所述第二ANN模型。
10.根据权利要求6所述的NPU,
其中关于所述剩余时间的所述信息表示在完成所述第一ANN模型的操作之前的剩余时间,并且
其中在到达所述剩余时间之前启动所述第二ANN模型。
11.根据权利要求1所述的NPU,其中,关于所述多个ANN模型的所述操作次序的信息存储在所述至少一个内部存储器中。
12.根据权利要求1所述的NPU,其中,所述调度器基于关于所述多个ANN模型的所述操作次序的信息生成所述指令。
13.根据权利要求1所述的NPU,
其中所述NPU安装在边缘设备中,以及
其中,所述边缘设备包括存储器和被配置为执行应用程序的命令的中央处理单元(CPU)。
14.根据权利要求13所述的NPU,其中,所述边缘设备的所述存储器被配置为存储关于所述多个ANN模型的所述操作次序的信息。
15.根据权利要求13所述的NPU,其中,当所述CPU执行所述应用程序的命令时,所述边缘设备的所述CPU生成所述指令。
16.一种边缘设备,其包括:
系统总线;
存储器,其电连接至所述系统总线;
多个神经处理单元(NPU),其电连接至所述系统总线,所述多个NPU包括第一NPU和第二NPU,每个NPU包括:
内部存储器,其用于存储关于多个人工神经网络(ANN)模型的组合的信息,所述多个ANN模型包括至少一个第一ANN模型和至少一个第二ANN模型,和
多个处理元件(PE),其能操作地配置为依次或并行处理所述多个ANN模型的第一操作和第二操作,所述多个PE包括第一组PE和第二组PE;以及
中央处理器(CPU),其电连接至所述系统总线,所述CPU被配置为通过所述系统总线访问所述存储器,并且执行应用程序的命令,
将所述第一ANN模型的所述第一操作的一部分分配给所述第一NPU或所述第一NPU中的所述第一组PE,以及
将所述第二ANN模型的所述第二操作的一部分分配给所述第二NPU或所述第一NPU中的所述第二组PE,
其中所述CPU通过考虑关于所述多个ANN模型的操作次序的信息来执行所述分配。
17.根据权利要求16所述的边缘设备,其中,所述第一ANN模型的所述第一操作和所述第二ANN模型的所述第二操作是并行或分时执行的。
18.根据权利要求16所述的边缘设备,其中所述第一组PE包括至少一个与所述第二组PE不同的PE。
19.根据权利要求18所述的边缘设备,其中所述第一组PE包括至少一个与所述第二组PE相同的PE。
20.一种用于操作神经处理单元(NPU)的方法,该方法包括:
将多个人工神经网络(ANN)模型中的第一ANN模型的第一操作的一部分分配给第一NPU或分配给所述第一NPU中的多个处理元件(PE)中的第一组PE;
执行所述第一ANN模型的所述第一操作的一部分;以及
将所述多个ANN模型的第二ANN模型的第二操作的一部分分配给第二NPU或分配给所述第一NPU中的所述多个PE中的第二组PE,
其中,所述分配是基于与关于所述多个ANN模型的操作次序的信息相关的指令来执行的。
CN202111311760.0A 2021-04-01 2021-11-08 Npu、边缘设备及其运行方法 Pending CN115204375A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0042950 2021-04-01
KR1020210042950A KR20220136806A (ko) 2021-04-01 2021-04-01 Npu, 엣지 디바이스 그리고 동작 방법

Publications (1)

Publication Number Publication Date
CN115204375A true CN115204375A (zh) 2022-10-18

Family

ID=83449651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111311760.0A Pending CN115204375A (zh) 2021-04-01 2021-11-08 Npu、边缘设备及其运行方法

Country Status (3)

Country Link
US (1) US20220318606A1 (zh)
KR (1) KR20220136806A (zh)
CN (1) CN115204375A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555250A (zh) * 2024-01-02 2024-02-13 珠海格力电器股份有限公司 控制方法、装置、设备及存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230164337A1 (en) * 2021-11-25 2023-05-25 Electronics And Telecommunications Research Institute Method and apparatus for adaptive image preprocessing and reconstruction
US20230177000A1 (en) * 2021-12-07 2023-06-08 Centre For Intelligent Multidimensional Data Analysis Limited Tensor processor and a method for processing tensors
KR102548582B1 (ko) 2022-12-26 2023-06-29 리벨리온 주식회사 뉴럴 프로세서 및 이의 명령어 페치 방법
US11915001B1 (en) 2022-12-26 2024-02-27 Rebellions Inc. Neural processor and method for fetching instructions thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555250A (zh) * 2024-01-02 2024-02-13 珠海格力电器股份有限公司 控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
KR20220136806A (ko) 2022-10-11
US20220318606A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
US11798271B2 (en) Depth and motion estimations in machine learning environments
CN115204375A (zh) Npu、边缘设备及其运行方法
JP2021526253A (ja) 深層学習システム
CN107430677B (zh) 基于对二进制卷积神经网络特征进行提升的目标识别
KR20220031115A (ko) 에너지-효율적인 입력 피연산자 고정 가속기에서 소규모 채널 카운트 컨볼루션들을 수행하기 위한 시스템 및 방법
US11698529B2 (en) Systems and methods for distributing a neural network across multiple computing devices
KR102530548B1 (ko) 신경망 프로세싱 유닛
CN111243668B (zh) 分子结合位点检测方法、装置、电子设备及存储介质
US20210012186A1 (en) Systems and methods for pipelined parallelism to accelerate distributed processing
WO2024017282A1 (zh) 一种数据处理方法及其装置
CN114282035A (zh) 图像检索模型的训练和检索方法、装置、设备及介质
CN112115900A (zh) 图像处理方法、装置、设备及存储介质
KR20240058070A (ko) Npu를 포함하는 엣지 디바이스 그리고 동작 방법
CN114758334A (zh) 一种对象注册方法及装置
US20220358776A1 (en) Electronic device and operating method thereof
CN113761992A (zh) 一种视频动作识别方法及设备
CN117765341A (zh) 一种数据处理方法及相关装置
CN116206040A (zh) 一种获取ao贴图的方法及装置
CN116883961A (zh) 一种目标感知方法以及装置
CN116912314A (zh) 一种姿态估计方法及其相关设备
WO2023056149A1 (en) Image processing framework for performing object depth estimation
CN115905850A (zh) 一种数据处理方法及相关设备
CN116309074A (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