CN117015785A - 用于神经网络量化的动态缩放的人工智能处理器架构 - Google Patents
用于神经网络量化的动态缩放的人工智能处理器架构 Download PDFInfo
- Publication number
- CN117015785A CN117015785A CN202280022374.6A CN202280022374A CN117015785A CN 117015785 A CN117015785 A CN 117015785A CN 202280022374 A CN202280022374 A CN 202280022374A CN 117015785 A CN117015785 A CN 117015785A
- Authority
- CN
- China
- Prior art keywords
- quantization
- processor
- neural network
- dynamic
- value
- 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
Links
- 238000013139 quantization Methods 0.000 title claims abstract description 594
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 590
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 367
- 238000012545 processing Methods 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims abstract description 72
- 230000004044 response Effects 0.000 claims abstract description 37
- 230000004913 activation Effects 0.000 claims description 174
- 230000002829 reductive effect Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 16
- 230000011218 segmentation Effects 0.000 claims description 11
- 230000015654 memory Effects 0.000 description 117
- 230000000873 masking effect Effects 0.000 description 38
- 238000013138 pruning Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 19
- 230000002093 peripheral effect Effects 0.000 description 17
- 239000000872 buffer Substances 0.000 description 14
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000009467 reduction Effects 0.000 description 12
- 238000009825 accumulation Methods 0.000 description 9
- 238000005259 measurement Methods 0.000 description 9
- 230000007423 decrease Effects 0.000 description 8
- 230000003247 decreasing effect Effects 0.000 description 8
- 230000002411 adverse Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 7
- 230000001413 cellular effect Effects 0.000 description 7
- 230000004043 responsiveness Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000001747 exhibiting effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 235000017060 Arachis glabrata Nutrition 0.000 description 1
- 241001553178 Arachis glabrata Species 0.000 description 1
- 235000010777 Arachis hypogaea Nutrition 0.000 description 1
- 235000018262 Arachis monticola Nutrition 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 235000020232 peanut Nutrition 0.000 description 1
- 230000031070 response to heat Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
Abstract
各个实施例包括用于由人工智能(AI)处理器对神经网络进行处理的方法和设备。各实施例可包括:接收AI处理器操作条件信息,响应于该操作条件信息而动态地调整神经网络的分段的AI量化水平,以及使用经调整的AI量化水平来对该神经网络的该分段进行处理。
Description
相关申请
本申请要求于2021年3月24日提交的美国专利申请No.17/210,644的优先权权益;其全部内容通过援引纳入于此。
背景技术
现代计算系统在片上系统(SoC)上运行多个神经网络,从而导致SoC的处理器的繁重的神经网络负载。尽管对运行神经网络的处理器架构进行了优化,但在繁重的工作负载下,热量仍然是神经网络处理的限制因素,因为热量管理是通过缩减影响处理性能的处理器操作频率来实现的。缩减关键任务系统中的操作频率可能会造成严重问题,这可能会导致不良的用户体验、产品质量、操作安全性等。
概述
所公开的各个方面可包括用于由人工智能(AI)处理器对神经网络进行处理的装置和方法。各个方面可包括:接收AI处理器操作条件信息,响应于该操作条件信息而动态地调整该神经网络的分段的AI量化水平,以及使用经调整的AI量化水平对该神经网络的该分段进行处理。
在一些方面,动态地调整神经网络的分段的AI量化水平可包括:响应于该操作条件信息指示增加了对该AI处理器的处理能力的约束的操作条件的水平而提高该AI量化水平,以及响应于操作条件信息指示减少了对该AI处理器的处理能力的约束的该操作条件的水平而降低该AI量化水平。
在一些方面,该操作条件信息可以是包括以下各项的群中的至少一者:温度、功耗、操作频率、或处理单元利用率。
在一些方面,动态地调整该神经网络的该分段的该AI量化水平可包括:调整用于对要由该神经网络的该分段处理的权重值进行量化的该AI量化水平。
在一些方面,动态地调整该神经网络的该分段的该AI量化水平可包括:调整用于对要由该神经网络的该分段处理的激活值进行量化的该AI量化水平。
在一些方面,动态地调整该神经网络的该分段的该AI量化水平可包括:调整用于对要由该神经网络的该分段处理的权重值和激活值进行量化的该AI量化水平。
在一些方面,该AI量化水平可被配置为指示要由该神经网络处理以量化的值的动态比特,并且使用经调整的AI量化水平对该神经网络的该分段进行处理可包括:旁路掉与该值的动态比特相关联的乘加器(MAC)的各部分。
一些方面可进一步包括:使用AI服务质量(QoS)因子来确定AIQoS值,以及确定用于达成该AIQoS值的该AI量化水平。在一些方面,AIQoS值可以表示针对由该AI处理器生成的结果的准确度和该AI处理器的吞吐量(例如,每秒推断数)的目标。
进一步的方面可包括一种AI处理器,该AI处理器包括被配置成执行以上概述的各方法中的任何方法的操作的动态量化控制器和MAC阵列。进一步的方面可包括一种具有AI处理器的计算设备,该AI处理器包括被配置成执行以上概述的各方法中的任何方法的操作的动态量化控制器和MAC阵列。进一步的方面可包括一种AI处理器,该AI处理器包括用于执行以上概述的各方法中的任何方法的功能的装置。
附图简述
纳入于本文且构成本说明书一部分的附图解说了各个实施例中的示例实施例,并与以上给出的一般描述和下面给出的详细描述一起用来解释权利要求的特征。
图1是解说适于实现各个实施例的示例计算设备的组件框图。
图2A和2B是解说适于实现各个实施例的具有动态神经网络量化架构的示例人工智能(AI)处理器的组件框图。
图3是解说适于实现各个实施例的具有动态神经网络量化架构的示例片上系统(SoC)的组件框图。
图4A和4B是解说适于实现各个实施例的示例AI服务质量(QoS)关系的图表。
图5是解说在各个实施例中实现动态神经网络量化架构在AI处理器操作频率方面的示例益处的图示。
图6是解说根据各个实施例的实现动态神经网络量化架构在AI处理器操作频率方面的示例益处的曲线对比图。
图7是适于实现各个实施例的动态神经网络量化架构中的乘加器(MAC)中的旁路的示例的组件示意图。
图8是解说根据实施例的用于AIQoS确定的方法的过程流程图。
图9是解说根据实施例的用于动态神经网络量化架构配置控制的方法的过程流程图。
图10是解说根据实施例的用于动态神经网络量化架构重配置的方法的过程流程图。
图11是解说根据各个实施例的适于实现AI处理器的示例移动计算设备的组件框图。
图12是解说根据各个实施例的适于实现AI处理器的示例移动计算设备的组件框图。
图13是解说根据各个实施例的适于实现AI处理器的示例服务器的组件框图。
详细描述
将参照附图来详细地描述各个实施例。在可能之处,相同附图标记将贯穿附图用于指代相同或类似部分。对特定示例和实现作出的引述用于解说性目的,而无意限定权利要求的范围。
各个实施例可包括用于动态地配置神经网络量化架构的方法以及实现此类方法的计算设备。一些实施例可包括动态神经网络量化逻辑硬件,其被配置成基于人工智能(AI)处理器、具有AI处理器的片上系统(SoC)、由AI处理器访问的存储器、和/或AI处理器的其他外围设备的操作条件来改变量化、掩蔽和/或神经网络修剪。一些实施例可包括将动态神经网络量化逻辑配置成用于基于用于动态量化的动态比特数来量化激活值和权重值。一些实施例可包括将动态神经网络量化逻辑配置成用于基于用于旁路的动态比特数来掩蔽激活值和权重值以及旁路掉乘加器(MAC)阵列MAC的各部分。一些实施例可包括将动态神经网络量化逻辑配置成用于基于用于神经网络修剪的阈值权重值来掩蔽权重值以及旁路掉整个MAC。一些实施例可包括确定是否要配置动态神经网络量化逻辑,以及使用纳入AI处理器结果准确度和AI处理器响应度的AI服务质量(QoS)来实现对动态神经网络量化逻辑的配置。
术语“(诸)动态比特”在本文中用于指代激活值和/或权重值的用于将动态神经网络量化逻辑配置成用于量化激活值和权重值、和/或用于将动态神经网络量化逻辑配置成用于掩蔽激活值和权重值以及旁路掉MAC的各部分的比特。在一些实施例中,(诸)动态比特可以是激活值和/或权重值的任何数目个最低有效比特。
术语“AI量化水平”在本文中使用相对术语来描述,其中多个AI量化水平是相对于彼此来描述的。例如,相比于较低AI量化水平,较高AI量化水平可涉及更多动态比特针对激活值和/或权重值被掩蔽(归零)的增加的量化。相比于较高AI量化水平,较低AI量化水平可涉及更少动态比特针对激活值和/或权重值被掩蔽(归零)的减少的量化。
术语“计算设备”和“移动计算设备”在本文可互换地使用以指代以下各项中的任一个或全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、可转换膝上型/平板计算机(2合1计算机)、智能本、超级本、上网本、掌上计算机、无线电子邮件接收器、启用因特网的多媒体蜂窝电话、移动游戏控制台、无线游戏控制器、以及包括存储器和可编程处理器的类似的个人电子设备。术语“计算设备”可进一步指代驻定的计算设备,包括个人计算机、台式计算机、一体化计算机、工作站、超级计算机、大型计算机、嵌入式计算机(诸如嵌入在交通工具和其他较大系统中)、计算机化交通工具(例如,部分或完全自主的地面、空中和/或水栖交通工具,诸如乘用交通工具、商用交通工具、消遣性交通工具、军用交通工具、无人机等)、服务器、多媒体计算机和游戏控制台。
神经网络被实现在计算设备阵列中,该计算设备阵列可以并发地执行多个神经网络。AI处理器是用专门为执行神经网络而设计的架构来实现的(诸如在神经处理单元中),和/或AI处理器对于执行神经网络是有利的(诸如在数字信号处理单元中)。当与其他处理器架构(诸如中央处理单元和图形处理单元)相比时,AI处理器架构可导致(诸如在等待时间、准确度、功耗等方面)更高的处理性能。然而,AI处理器通常具有高功率密度并且在繁重的工作负载下(这常常起因于并发地执行多个神经网络),AI处理器可能遭受由热累积带来的性能降级。执行多个神经网络的此类AI处理器的示例在具有主动驾驶员辅助系统的汽车中,其中该AI处理器并发地运行用于交通工具导航/操作的一个神经网络集合和用于监视驾驶员的另一神经网络集合。用于AI处理器中的热管理的当前策略包括基于感测到的温度来缩减AI处理器的操作频率。
缩减关键任务系统中的AI处理器的操作频率可能会造成严重问题,这可能会导致不良的用户体验、产品质量、操作安全性等。AI处理器吞吐量是AI处理器性能的一个重要因素,它会受到缩减操作频率的不利影响。AI处理器性能中的另一重要因素是AI处理器结果准确度。该准确度可以不受到缩减操作频率的影响,因为操作频率可能影响AI处理器操作执行的速度,而不是AI处理器操作是否完全执行(诸如使用所有提供的数据并完成数据的处理)。由此,通过响应于热累积而缩减操作频率,牺牲了AI处理器吞吐量,而可以不牺牲AI处理器结果准确度。对于一些系统(诸如自动驾驶汽车、无人机和其他自行式机器),吞吐量是至关重要的,并且因此,为了更快的吞吐量而折衷一定的准确度是可以接受的,甚至是合乎期望的。
当响应于其他不利操作条件(诸如用于AI处理器的功率源的功率约束和/或具有AI处理器的计算设备的性能约束)而缩减操作频率时,会出现类似的问题。为了清楚且易于解释,本文中的示例是以热累积的形式描述的,但此类引述并不旨在限制本文中的权利要求和描述的范围。
此外,在常规系统中,应用于神经网络输入(包括激活值和权重值)的量化是静态的。神经网络开发方在编译器或开发工具中预配置神经网络的量化特征,并将用于该神经网络的量化设置为固定有效比特。
在本文中所描述的一些实施例中,动态配置的神经网络量化架构可被配置成在不利操作条件(诸如热累积)下管理AI处理器吞吐量和AI处理器结果准确度。虽然是AI处理器性能中的重要因素,但在许多情境中,AI处理器结果准确度的一些损失可以是可接受的。AI处理器结果准确度可能通过修改在AI处理器上执行的神经网络的输入(激活值和权重值)而受到影响。牺牲一定的AI处理器准确度可以允许AI处理器吞吐量在响应热积累时比单独通过缩减AI处理器吞吐量来响应热积累受到的影响更小。在一些实施例中,牺牲一定的AI处理器准确度和AI处理器吞吐量可以比单独缩减AI处理器吞吐量时提供更大的功率和/或主存储器话务减少。
在一些实施例中,动态神经网络量化逻辑可在运行时被配置成基于AI处理器、具有AI处理器的SoC、由AI处理器访问的存储器、和/或AI处理器的其他外围设备的操作条件(诸如温度、功耗、处理单元利用率等)来改变量化、掩蔽和/或神经网络修剪。一些实施例可包括将动态神经网络量化逻辑配置成用于基于用于动态量化的动态比特数来量化激活值和权重值。一些实施例可包括将动态神经网络量化逻辑配置成用于基于用于旁路的动态比特数来掩蔽激活值和权重值以及旁路掉MAC的各部分。一些实施例可包括将动态神经网络量化逻辑配置成用于基于用于神经网络修剪的阈值权重值来掩蔽权重值以及旁路掉整个MAC。在一些实施例中,动态神经网络量化逻辑可被配置成按需基于操作条件来改变神经网络的预配置量化。
一些实施例可包括动态量化控制器,其被配置成生成动态量化信号并将所生成的动态量化信号发送给任何数目和组合的AI处理器、动态神经网络量化逻辑和MAC。动态量化控制器可确定用于实现由AI处理器、动态神经网络量化逻辑和MAC进行的量化、掩蔽和/或神经网络修剪的参数。动态量化控制器可基于纳入AI处理器结果准确度和AI处理器响应度的AL量化水平来确定这些参数。
一些实施例可包括AIQoS管理器,其被配置成确定是否要实现AI处理器、动态神经网络量化逻辑和/或MAC的动态神经网络量化重配置。AIQoS管理器可接收表示AIQoS因子的数据信号。AIQoS因子可以是动态神经网络量化逻辑重配置为了改变量化、掩蔽和/或神经网络修剪而可基于的操作条件。这些操作条件可包括AI处理器、具有AI处理器的SoC、由AI处理器访问的存储器和/或AI处理器的其他外围设备的温度、功耗、处理单元利用率等。AIQoS管理器可以确定AIQoS值,该AIQoS值计及AI处理器在某些操作条件下要达成的AI处理器吞吐量、AI处理器结果准确度和/或AI处理器操作频率。该AIQoS值可被用于确定AI量化水平和/或针对操作条件的AI处理器操作频率,该AI量化水平计及作为配置动态神经网络量化逻辑的结果的AI处理器吞吐量和AI处理器结果准确度。
图1解说了包括适于与各个实施例联用的计算设备100的系统。计算设备100可包括SoC 102,该SoC 102具有处理器104、存储器106、通信接口108、存储器接口110以及外围设备接口120。计算设备100可进一步包括通信组件112(诸如有线或无线调制解调器)、存储器114、用于建立无线通信链路的天线116、和/或外围设备122。处理器104可包括各种处理设备(例如,数个处理器核)中的任何一者。
术语“片上系统”或即“SoC”在本文中用于指代一组互连的电子电路,通常但非排他性地包括处理设备、存储器和通信接口。处理设备可包括各种各样的不同类型的处理器104和/或处理器核,诸如通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、安全处理单元(SPU)、计算设备的特定组件的子系统处理器(诸如相机子系统的图像处理器或显示器的显示处理器)、辅助处理器、单核处理器、多核处理器、控制器和/或微控制器。处理设备可进一步实施其他硬件和硬件组合,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、其他可编程逻辑器件、分立的门逻辑、晶体管逻辑、性能监视硬件、看门狗硬件、和/或时间参考。集成电路可被配置成使得该集成电路的组件驻留在单片半导体材料(诸如硅)上。
SoC 102的存储器106可以是被配置成用于存储供处理器104或SoC 102的其他组件(包括AI处理器124)访问的数据和处理器可执行代码的易失性或非易失性存储器。计算设备100和/或SoC 102可包括被配置用于各种目的的一个或多个存储器106。一个或多个存储器106可包括易失性存储器,诸如随机访问存储器(RAM)或主存储器、或者高速缓存存储器。这些存储器106可以被配置成临时地持有从数据传感器或子系统接收的有限量的数据、从非易失性存储器请求的、从非易失性存储器加载到存储器106的数据和/或处理器可执行代码指令、和/或由处理器104和/或AI处理器124产生的以及临时地存储用于将来快速访问而不被存储在非易失性存储器中的中间处理数据和/或处理器可执行代码指令。存储器106可被配置成至少暂时存储从另一存储器设备(诸如另一存储器106或存储器114)加载至存储器106的数据和处理器可执行代码以供由一个或多个处理器104或由SoC 102的其他组件(包括AI处理器124)访问。在一些实施例中,任何数目和组合的存储器106可包括一次性可编程或只读存储器。
存储器接口110和存储器114可一同工作以允许计算设备100在易失性和/或非易失性存储介质上存储数据和处理器可执行代码并且从该易失性和/或非易失性存储介质检索数据和处理器可执行代码。存储器114可与存储器106的实施例非常相似地配置,其中存储器114可存储数据或处理器可执行代码以供由一个或多个处理器104或由SoC 102的其他组件(包括AI处理器124)访问。存储器接口110可控制对存储器114的访问并且允许处理器104或SoC 12的其他组件(包括AI处理器124)从存储器114读取数据和向存储器114写入数据。
SoC 102还可包括AI处理器124。AI处理器124可以是处理器104、处理器104的一部分、和/或SoC 102的自立组件。AI处理器124可被配置成执行神经网络以在计算设备100上处理激活值和权重值。计算设备100还可包括不与SoC 102相关联的AI处理器124。此类AI处理器124可以是计算设备100的自立组件,和/或被集成到其他SoC 102中。
计算设备100和/或SoC 102的一些或全部组件可以被不同地布置和/或组合而仍然提供各个实施例的功能。计算设备100可以不限于每个组件中的一个,并且每个组件的多个实例可被包括在计算设备100的各种配置中。
图2A解说了适于实现各个实施例的具有动态神经网络量化架构的示例AI处理器。参照图1和2A,AI处理器124可包括任何数目和组合的MAC阵列200、权重缓冲器204、激活缓冲器206、动态量化控制器208、AIQoS管理器210以及动态神经网络量化逻辑212、214。MAC阵列200可包括任何数目和组合的MAC 202a-202i。
AI处理器124可被配置成执行神经网络。所执行的神经网络可以处理激活值和权重值。AI处理器124可在激活缓冲器206处接收和存储激活值,并在权重缓冲器204处接收和存储权重值。一般而言,MAC阵列200可从激活缓冲器206接收激活值并且从权重缓冲器204接收权重值,以及通过将激活值和权重值相乘和累加来处理激活值和权重值。例如,每个MAC 202a-202i可接收任何数目的激活值和权重值的组合,以及将每个接收到的激活值和权重值的组合的比特相乘并将相乘的结果累加。AI处理器124的转换(CVT)模块(未示出)可通过执行使用MAC结果的函数(诸如缩放、添加偏置和/或应用激活函数(例如,sigmoid、ReLU、Gaussian、SoftMax等))来修改MAC结果。MAC 202a-202i可通过串行地接收每个组合来接收激活值和权重值的多个组合。如本文中进一步描述的,在一些实施例中,激活值和权重值可在由MAC 202a-202i接收之前被修改。同样如本文中进一步描述的,在一些实施例中,可以修改MAC 202a-202i以用于处理激活值和权重值。
AIQoS管理器210可被配置为硬件、由AI处理器124执行的软件、和/或由AI处理器124执行的硬件与软件的组合。AIQoS管理器210可被配置成确定是否要实现AI处理器124、动态神经网络量化逻辑212、214和/或MAC 202a-202i的动态神经网络量化重配置。AIQoS管理器210可以通信地连接到任何数目和组合的传感器(未示出)(诸如温度传感器、电压传感器、电流传感器等)和处理器104。AIQoS管理器210可从这些通信地连接的传感器和/或处理器104接收表示AIQoS因子的数据信号。AIQoS因子可以是动态神经网络量化逻辑重配置决策为了改变量化、掩蔽和/或神经网络修剪而可基于的操作条件。这些操作条件可包括AI处理器124、具有AI处理器124的SoC 102、由AI处理器124访问的存储器106、114和/或AI处理器124的其他外围设备122的温度、功耗、处理单元利用率、性能等。例如,温度操作条件可以是表示AI处理器124上的一位置处的温度的温度传感器值。作为进一步的示例,功率操作条件可以是表示与电源和/或功率管理集成电路能力相比的电源轨的峰值和/或电池充电状态的值。作为进一步的示例,性能操作条件可以是表示AI处理器124的利用率、完全空闲时间、每秒帧数和/或端到端等待时间的值。
AIQoS管理器210可被配置成根据操作条件来确定是否要实现动态神经网络量化重配置。AIQoS管理器210可基于增加了对AI处理器124的处理能力的约束的操作条件的水平来确定要实现动态神经网络量化重配置。AIQoS管理器210可基于减少了对AI处理器124的处理能力的约束的操作条件的水平来确定要实现动态神经网络量化重配置。对AI处理器124的处理能力的约束可由影响AI处理器124维持处理能力水平的能力的操作条件水平(诸如热累积水平、功耗、处理单元利用率等)造成。
在一些实施例中,AIQoS管理器210可以配置有用于根据操作条件来确定是否要实现动态神经网络量化重配置的任何数目和组合的算法、阈值、查找表等。例如,AIQoS管理器210可将所接收到的操作条件与用于该操作条件的阈值进行比较。响应于操作条件与用于该操作条件的阈值进行不利比较(诸如超过该阈值),AIQoS管理器210可确定要实现动态神经网络量化重配置。这样的不利比较可以向AIQoS管理器210指示该操作条件增加了对AI处理器124的处理能力的约束。响应于操作条件与用于该操作条件的阈值进行有利比较(诸如没有达到该阈值),AIQoS管理器210可确定要实现动态神经网络量化重配置。这样的有利比较可以向AIQoS管理器210指示该操作条件减少了对AI处理器124的处理能力的约束。在一些实施例中,AIQoS管理器210可被配置成将多个接收到的操作条件与用于这些操作条件的多个阈值进行比较,以及基于不利和/或有利比较结果的组合来确定要实现动态神经网络量化重配置。在一些实施例中,AI处理器124可以配置有用于组合多个接收到的操作条件的算法,并且将该算法的结果与阈值进行比较。在一些实施例中,多个接收到的操作条件可以是相同类型和/或不同类型。在一些实施例中,多个接收到的操作条件可针对特定时间和/或在一时间段上。
对于动态神经网络量化重配置,AIQoS管理器210可确定AI处理器124要达成的AIQoS值。AIQoS值可被配置成计及由于AI处理器124在某些操作条件下的动态神经网络量化重配置和/或AI处理器操作频率而达成的AI处理器吞吐量和AI处理器结果准确度。AIQoS值可以表示AI处理器124的用户可感知水平和/或关键任务可接受水平的等待时间、质量、准确度等。在一些实施例中,AIQoS管理器210可以配置有用于根据操作条件来确定AIQoS值的任何数目和组合的算法、阈值、查找表等。例如,AIQoS管理器210可以将计及AI处理器吞吐量和AI处理器结果准确度的AIQoS值确定为对于表现出超过温度阈值的温度的AI处理器124要达成的目标。作为进一步的示例,AIQoS管理器210可以将计及AI处理器吞吐量和AI处理器结果准确度的AI QoS值确定为对于表现出超过电流阈值的电流(功耗)的AI处理器124要达成的目标。作为进一步的示例,AIQoS管理器210可以将计及AI处理器吞吐量和AI处理器结果准确度的AIQoS值确定为对于表现出超过吞吐量阈值和/或利用率阈值的吞吐量值和/或利用率值的AI处理器124要达成的目标。以操作条件超过阈值的形式描述的前述示例并不旨在限制权利要求和说明书的范围,而是类似地适用于操作条件没有达到阈值的各实施例。
如本文中进一步描述的,动态量化控制器208可确定如何动态地配置AI处理器124、动态神经网络量化逻辑212、214和/或MAC 202a-202i以达成AI QoS值。在一些实施例中,AIQoS管理器210可被配置成执行根据表示AI处理器准确度和AI处理器吞吐量的值来计算用于达成AIQoS值的AI量化水平的算法。例如,该算法可以是AI处理器准确度和AI处理器吞吐量的加总和/或最小函数。作为进一步的示例,表示AI处理器准确度的值可包括由AI处理器124执行的神经网络的输出的误差值,并且表示AI处理器吞吐量的值可包括由AI处理器124产生的每时间段推断的值。该算法可被加权以偏向于AI处理器准确度或AI处理器吞吐量。在一些实施例中,权重可以与AI处理器124、SoC 102、存储器106、114和/或其他外围设备122的任何数目和组合的操作条件相关联。在一些实施例中,可以结合AI处理器操作频率来计算AI量化水平,以达成AIQoS值。基于操作条件对AI处理器124的处理能力的影响,AI量化水平可相对于先前计算出的AI量化水平而改变。例如,向AIQoS管理器210指示对AI处理器124的处理能力的增加的约束的操作条件可导致提高AI量化水平。作为另一示例,向AIQoS管理器210指示对AI处理器124的处理能力的减少的约束的操作条件可导致降低AI量化水平。
在一些实施例中,AIQoS管理器210还可确定是要单独地还是要与动态神经网络量化重配置相结合地实现AI处理器操作频率的传统缩减。例如,用于操作条件的一些阈值可以与AI处理器操作频率和/或动态神经网络量化重配置的传统缩减相关联。任何数目或组合的所接收到的操作条件同与AI处理器操作频率和/或动态神经网络量化重配置的缩减相关联的阈值的不利比较可触发AIQoS管理器210确定要实现AI处理器操作频率和/或动态神经网络量化重配置的缩减。在一些实施例中,AIQoS管理器210可被适配以控制MAC阵列200的操作频率。
AIQoS管理器210可生成具有AI量化水平的AI量化水平信号并将所生成的AI量化水平信号发送给动态量化控制器208。AI量化水平信号可触发动态量化控制器208确定用于实现动态神经网络量化重配置的参数,并提供AI量化水平作为用于参数确定的输入。在一些实施例中,AI量化水平信号还可包括使得AIQoS管理器210确定要实现动态神经网络量化重配置的操作条件。操作条件也可以是用于确定用于实现动态神经网络量化重配置的参数的输入。在一些实施例中,操作条件可以由以下各项来表示:操作条件的值和/或表示使用操作条件的算法的结果的值、操作条件与阈值的比较、来自用于操作条件的查找表的值等等。例如,表示比较结果的值可包括操作条件的值与阈值之间的差异。在一些实施例中,AIQoS管理器210可被适配以变更由MAC阵列200使用的AI量化水平,其中例如该变更可以通过设置特定AI量化水平或指令提高或降低当前水平。
在一些实施例中,AIQoS管理器210还可生成AI频率信号并将所形成的AI频率信号发送给MAC阵列200。AI频率信号可触发MAC阵列200实现AI处理器操作频率的缩减。在一些实施例中,MAC阵列200可以配置有用于实现AI处理器操作频率的缩减的装置。在一些实施例中,AIQoS管理器210可生成并发送AI量化水平信号和AI频率信号中的任一者或两者。
动态量化控制器208可被配置为硬件、由AI处理器124执行的软件、和/或由AI处理器124执行的硬件与软件的组合。动态量化控制器208可被配置成确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化控制器208可被预配置成确定用于任何数目和组合的特定类型的动态神经网络量化重配置的参数。在一些实施例中,动态量化控制器208可被配置成确定对于任何数目和组合的类型的动态神经网络量化重配置要确定哪些参数。
确定对于这些类型的动态神经网络量化重配置要确定哪些参数可以控制可实现哪些类型的动态神经网络量化重配置。这些类型的动态神经网络量化重配置可包括:将动态神经网络量化逻辑212、214配置成用于量化激活值和权重值,将动态神经网络量化逻辑212、214配置成用于掩蔽激活值和权重值并且将MAC阵列200和/或MAC 202a-202i配置成用于旁路掉MAC 202a-202i的各部分,以及将动态神经网络量化逻辑212配置成用于掩蔽权重值并且将MAC阵列200和/或MAC 202a-202i配置成用于旁路掉整个MAC 202a-202i。在一些实施例中,动态量化控制器208可被配置成确定用于将动态神经网络量化逻辑212、214配置成用于量化激活值和权重值的动态比特数的参数。在一些实施例中,动态量化控制器208可被配置成确定用于将动态神经网络量化逻辑212、214配置成用于掩蔽激活值和权重值以及旁路掉MAC 202a-202i的各部分的动态比特数的附加参数。在一些实施例中,动态量化控制器208可被配置成确定用于将动态神经网络量化逻辑212配置成用于掩蔽权重值以及旁路掉整个MAC 202a-202i的阈值权重值的附加参数。
AI量化水平可以不同于先前计算出的AI量化水平,并且导致所确定的用于实现动态神经网络量化重配置的参数的差异。例如,提高AI量化水平可使得动态量化控制器208确定用于配置动态神经网络量化逻辑212、214的增加的动态比特数和/或减小的阈值权重值。增加动态比特数和/或减小阈值权重值可使得使用较少比特和/或较少MAC 202a-202i来实现神经网络的计算,这可降低神经网络的推断结果的准确度。作为另一示例,降低AI量化水平可使得动态量化控制器208确定用于配置动态神经网络量化逻辑212、214的减少的动态比特数和/或增大的阈值权重值。减少动态比特数和/或增大阈值权重值可使得使用较多比特和/或较多MAC 202a-202i来实现神经网络的计算,这可提高神经网络的推断结果的准确度。
在一些实施例中,动态神经网络量化逻辑212、214可以使用由动态量化控制器208确定的参数来动态地实现AI量化水平,其中该实现可以通过掩蔽、量化、旁路或任何其他合适的方式。动态量化控制器208可从AIQoS管理器210接收AI量化水平信号。动态量化控制器208可使用通过AI量化水平信号接收到的AI量化水平来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化控制器208还可以使用通过AI量化水平信号接收到的操作条件来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化控制器208可以配置有用于基于AI量化水平和/或操作条件来确定要使用动态神经网络量化重配置的哪些参数和/或参数值的算法、阈值、查找表等。例如,动态量化控制器208可使用AI量化水平和/或操作条件作为对算法的输入,该算法可输出要用于量化激活值和权重值的动态比特数。在一些实施例中,附加算法可被使用,并且可输出用于掩蔽激活值和权重值以及旁路掉MAC 202a-202i的各部分的动态比特数。在一些实施例中,附加算法可被使用,并且可输出用于掩蔽权重值以及旁路掉整个MAC 202a-202i的阈值权重值。
动态量化控制器208可生成具有用于动态神经网络量化重配置的参数的动态量化信号并将其发送给动态神经网络量化逻辑212、214。动态量化信号可触发动态神经网络量化逻辑212、214实现动态神经网络量化重配置,并提供用于实现该动态神经网络量化重配置的参数。在一些实施例中,动态量化控制器208可将动态量化信号发送给MAC阵列200。动态量化信号可触发MAC阵列200实现动态神经网络量化重配置,并提供用于实现该动态神经网络量化重配置的参数。在一些实施例中,动态量化信号可包括要实现的动态神经网络量化重配置类型的指示符。在一些实施例中,动态神经网络量化重配置类型的指示符可以是用于动态神经网络量化重配置的参数。
动态神经网络量化逻辑212、214可以实现在硬件中。动态神经网络量化逻辑212、214可被配置成诸如通过对激活值和权重值进行舍入来量化从激活缓冲器206和权重缓冲器204接收的激活值和权重值。激活值和权重值的量化可以使用任何类型的舍入来实现,诸如向上或向下舍入到动态比特、向上或向下舍入到有效比特、向上或向下舍入到最近值、向上或向下舍入到特定值等。为了清楚且易于解释,量化的示例是以舍入到动态比特的形式描述的,但并不限制本文中的权利要求和描述的范围。动态神经网络量化逻辑212、214可将经量化的激活值和权重值提供给MAC阵列200。动态神经网络量化逻辑212、214可被配置成接收动态量化信号,以及实现动态神经网络量化重配置。
动态神经网络量化逻辑212、214可从动态量化控制器208接收动态量化信号,并确定用于动态神经网络量化重配置的参数。动态神经网络量化逻辑212、214还可根据动态量化信号来确定要实现的动态神经网络量化重配置类型,这可包括将动态神经网络量化逻辑212、214配置成用于特定类型的量化。在一些实施例中,要实现的动态神经网络量化重配置类型还可包括将动态神经网络量化逻辑212、214配置成用于掩蔽激活值和/或权重值。在一些实施例中,激活值和权重值的掩蔽可包括将特定数目个动态比特替换成零值。在一些实施例中,权重值的掩蔽可包括将所有比特替换成零值。
动态量化信号可包括用于将动态神经网络量化逻辑212、214配置成用于量化激活值和权重值的动态比特数的参数。动态神经网络量化逻辑212、214可被配置成通过将激活值和权重值的比特舍入到由动态量化信号所指示的动态比特数来量化激活值和权重值。
动态神经网络量化逻辑212、214可包括可被配置成将激活值和权重值的比特舍入到动态比特数的可配置逻辑门。在一些实施例中,逻辑门可被配置成针对激活值和权重值的至多达和/或包括动态比特数的最低有效比特输出零值。在一些实施例中,逻辑门可被配置成输出激活值和权重值的包括动态比特数和/或在该数个动态比特之后的最高有效比特的值。例如,激活值或权重值的每个比特可被顺序地(诸如最低有效比特到最高有效比特)输入到逻辑门。逻辑门可针对激活值和权重值的至多达和/或包括由该参数指示的动态比特数的最低有效比特输出零值。逻辑门可输出激活值和权重值的包括由该参数指示的动态比特数和/或在该数个动态比特之后的最高有效比特的值。作为进一步的示例,权重值和激活值可以是8比特整数,并且动态比特数可以向动态神经网络量化逻辑212、214指示要对该8比特整数的最低有效一半进行舍入。动态比特数可以不同于对于动态神经网络量化逻辑212、214的默认或先前配置要舍入到的默认动态比特数或先前动态比特数。因此,逻辑门的配置也可以不同于逻辑门的默认或先前配置。
动态量化信号可包括用于将动态神经网络量化逻辑212、214配置成用于掩蔽激活值和权重值以及旁路掉MAC 202a-202i的各部分的动态比特数的参数。动态神经网络量化逻辑212、214可被配置成通过掩蔽由动态量化信号所指示的激活值和权重值的动态比特数来量化激活值和权重值。
动态神经网络量化逻辑212、214可包括可被配置成掩蔽激活值和权重值的动态比特数的可配置逻辑门。在一些实施例中,逻辑门可被配置成针对激活值和权重值的至多达和/或包括动态比特数的最低有效比特输出零值。在一些实施例中,逻辑门可被配置成输出激活值和权重值的包括动态比特数和/或在该数个动态比特之后的最高有效比特的值。例如,激活值和权重值的每个比特可被顺序地(诸如最低有效比特到最高有效比特)输入到逻辑门。逻辑门可针对激活值和权重值的至多达和/或包括由该参数指示的动态比特数的最低有效比特输出零值。逻辑门可输出激活值和权重值的包括由该参数指示的动态比特数和/或在该数个动态比特之后的最高有效比特的值。动态比特数可以不同于对于动态神经网络量化逻辑212、214的默认或先前配置要掩蔽的默认动态比特数或先前动态比特数。因此,逻辑门的配置也可以不同于逻辑门的默认或先前配置。
在一些实施例中,逻辑门可被时钟门控以使得逻辑门不接收和/或不输出激活值和权重值的至多达和/或包括动态比特数的最低有效比特。对逻辑门进行时钟门控可以有效地将激活值和权重值的最低有效比特替换成零值,因为MAC阵列200可以不接收激活值和权重值的最低有效比特的值。
在一些实施例中,动态神经网络量化逻辑212、214可以向MAC阵列200发信号通知用于旁路掉MAC 202a-202i的各部分的动态比特数的参数。在一些实施例中,动态神经网络量化逻辑212、214可以向MAC阵列200发信号通知激活值和权重值的哪些比特被掩蔽。在一些实施例中,缺乏用于激活值和权重值的比特的信号可以是从动态神经网络量化逻辑212、214到MAC阵列200的信号。
在一些实施例中,MAC阵列200可接收动态量化信号,该动态量化信号包括用于将动态神经网络量化逻辑212、214配置成用于掩蔽激活值和权重值以及旁路掉MAC 202a-202i的各部分的动态比特数的参数。在一些实施例中,MAC阵列200可从动态神经网络量化逻辑212、214接收动态比特数和/或哪些动态比特用于旁路掉MAC 202a-202i的各部分的参数的信号。MAC阵列200可被配置成针对由动态量化信号和/或来自动态神经网络量化逻辑212、214的信号所指示的激活值和权重值的动态比特来旁路掉MAC 202a-202i的各部分。这些动态比特可对应于激活值和权重值的由动态神经网络量化逻辑212、214掩蔽的比特。
MAC 202a-202i可包括被配置成实现乘法和累加函数的逻辑门。在一些实施例中,MAC阵列200可对MAC 202a-202i的逻辑门进行时钟门控,这些逻辑门被配置成将激活值和权重值的与由动态量化信号的参数所指示的动态比特数相对应的比特相乘和累加。在一些实施例中,MAC阵列200可对MAC 202a-202i的逻辑门进行时钟门控,这些逻辑门被配置成将激活值和权重值的与由来自动态神经网络量化逻辑212、214的信号所指示的动态比特数和/或特定动态比特数相对应的比特相乘和累加。
在一些实施例中,MAC阵列200可以使MAC 202a-202i的被配置成将激活值和权重值的与由动态量化信号的参数所指示的动态比特数相对应的比特相乘和累加的逻辑门停电。在一些实施例中,MAC阵列200可以使MAC 202a-202i的被配置成将激活值和权重值的与由来自动态神经网络量化逻辑212、214的信号所指示的动态比特数和/或特定动态比特数相对应的比特相乘和累加的逻辑门停电。
通过对MAC 202a-202i的逻辑门进行时钟门控和/或降电,MAC 202a-202i可以不接收激活值和权重值的与动态比特数或特定动态比特数相对应的比特,从而有效地掩蔽这些比特。本文中参照图7描述了对MAC 202a-202i的逻辑门进行时钟门控和/或降电的进一步的示例。
动态量化信号可包括用于将动态神经网络量化逻辑212、214配置成用于掩蔽权重值以及旁路掉整个MAC 202a-202i的阈值权重值的参数。动态神经网络量化逻辑212可被配置成:基于权重值与由动态量化信号所指示的阈值权重值的比较,通过掩蔽权重值的所有比特来量化权重值。
动态神经网络量化逻辑212可包括可被配置成进行以下操作的可配置逻辑门:将从权重缓冲器204接收的权重值与阈值权重值进行比较,以及掩蔽与阈值权重值相比不利(诸如小于或小于等于阈值权重值)的权重值。在一些实施例中,该比较可以是权重值的绝对值与阈值权重值的比较。在一些实施例中,逻辑门可被配置成针对与阈值权重值相比不利的权重值的所有比特输出零值。所有比特可以是与对于动态神经网络量化逻辑212、214的默认或先前配置要掩蔽的默认比特数或先前比特数不同数目的比特。因此,逻辑门的配置也可以不同于逻辑门的默认或先前配置。
在一些实施例中,逻辑门可被时钟门控以使得逻辑门不接收和/或不输出与阈值权重值相比不利的权重值的比特。对逻辑门进行时钟门控可以有效地将权重值的比特替换成零值,因为MAC阵列200可以不接收权重值的比特的值。在一些实施例中,动态神经网络量化逻辑212可以向MAC阵列200发信号通知权重值的哪些比特被掩蔽。在一些实施例中,缺乏用于权重值的比特的信号可以是从动态神经网络量化逻辑212到MAC阵列200的信号。
在一些实施例中,MAC阵列200可从动态神经网络量化逻辑212接收关于权重值的哪些比特被掩蔽的信号。MAC阵列200可将被掩蔽的整个权重值解读为要旁路掉整个MAC202a-202i的信号。MAC阵列200可被配置成针对由来自动态神经网络量化逻辑212的信号所指示的权重值来旁路掉MAC 202a-202i。这些权重值可对应于由动态神经网络量化逻辑212掩蔽的权重值。
MAC 202a-202i可包括被配置成实现乘法和累加函数的逻辑门。在一些实施例中,MAC阵列200可对MAC 202a-202i的逻辑门进行时钟门控,这些逻辑门被配置成将权重值的与被掩蔽的权重值相对应的比特相乘和累加。在一些实施例中,MAC阵列200可以使MAC202a-202i的被配置成将权重值的与被掩蔽的权重值相对应的比特相乘和累加的逻辑门停电。通过对MAC 202a-202i的逻辑门进行时钟门控和/或降电,MAC 202a-202i可以不接收激活值和权重值的与被掩蔽的权重值相对应的比特。
由动态神经网络量化逻辑212对权重值进行掩蔽、和/或对MAC 202a-202i进行时钟门控和/或降电可以修剪由MAC阵列200执行的神经网络。从神经网络中移除权重值和MAC操作可以有效地从神经网络中移除突触和节点。权重阈值可以在以下基础上确定:与该权重阈值相比不利的权重值在从神经网络的执行中被移除时可造成AI处理器结果中在准确度方面可接受的损失。
图2B解说了图2A中所解说的AI处理器124的实施例。参照图1-2B,AI处理器124可包括动态神经网络量化逻辑212、214,其被实现为硬件电路逻辑,而不是实现为软件工具或实现在编译器中。激活缓冲器206以及权重缓冲器204、动态量化控制器208、硬件动态神经网络量化逻辑212、214和MAC阵列200可以如参照图2A所描述地运转和交互。
图3解说了适于实现各个实施例的具有动态神经网络量化架构的示例SoC。参照图1-3,SoC 102可包括任何数目和组合的AI处理子系统300和存储器106。AI处理子系统300可包括任何数目和组合的AI处理器124a-124f、输入/输出(I/O)接口302以及存储器控制器/物理层组件304a-304f。
如本文中参照AI处理器(例如,124)所讨论的,在一些实施例中,动态神经网络量化重配置可以用AI处理器来实现。在一些实施例中,可在AI处理器124a-124f接收激活值和权重值之前至少部分地实现动态神经网络量化重配置。
I/O接口302可被配置成控制在AI处理子系统300与计算设备(例如,100)的其他组件(包括处理器(例如,104)、通信接口(例如,通信接口(例如,108)、通信组件(例如,112)、外围设备接口(例如,120)、外围设备(例如,120)等)之间的通信。一些此类通信可包括接收激活值。在一些实施例中,I/O接口302可被配置成包括和/或实现AIQoS管理器(例如,210)、动态量化控制器(例如,208)和/或动态神经网络量化逻辑(例如,212)的各功能。在一些实施例中,I/O接口302可被配置成通过硬件、在I/O接口302上执行的软件和/或在I/O接口302上执行的硬件和软件来实现AIQoS管理器、动态量化控制器和/或动态神经网络量化逻辑的各功能。
存储器控制器/物理层组件304a-304f可被配置成控制AI处理器124a-124f、存储器106、和/或AI处理子系统300和/或AI处理器124a-124f本地的存储器之间的通信。一些此类通信可包括从存储器106读取权重值和激活值以及向存储器106写入权重值和激活值。
在一些实施例中,存储器控制器/物理层组件304a-304f可被配置成包括和/或实现AIQoS管理器、动态量化控制器和/或动态神经网络量化逻辑的各功能。例如,存储器控制器/物理层组件304a-304f可在初始存储器106写入或读取权重值和/或激活值期间量化和/或掩蔽激活值和/或权重值。作为进一步的示例,当从存储器106传输权重值时,存储器控制器/物理层组件304a-304f可在向本地存储器写入权重值期间量化和/或掩蔽权重值。作为进一步的示例,存储器控制器/物理层组件304a-304f可在产生激活值时量化和/或掩蔽激活值。
在一些实施例中,存储器控制器/物理层组件304a-304f可被配置成通过硬件、在存储器控制器/物理层组件304a-304f上执行的软件和/或在存储器控制器/物理层组件304a-304f上执行的硬件和软件来实现AIQoS管理器、动态量化控制器和/或动态神经网络量化逻辑的各功能。
I/O接口302和/或存储器控制器/物理层组件304a-304f可被配置成向AI处理器124a-124f提供经量化和/或被掩蔽的权重值和/或激活值。在一些实施例中,I/O接口302和/或存储器控制器/物理层组件304a-304f可被配置成不向AI处理器124a-124f提供被完全掩蔽的权重值。
图4A和4B解说了适于实现各个实施例的示例AIQoS关系。参照图1-4B,对于动态神经网络量化重配置,AIQoS管理器(例如,210)可确定AIQoS值,该AIQoS值计及由于某些操作条件下的动态神经网络量化重配置而要达成的AI处理器吞吐量和AI处理器结果准确度。
图4A解说了图表400a,其表示以AIQoS值形式的AI处理器结果准确度(在纵轴上)相对于使用动态神经网络量化重配置进行量化的权重值和激活值的位宽(在横轴上)的测量。曲线402a解说了权重值和激活值的位宽越大,AI处理器结果就可以越准确。然而,曲线402a还解说了权重值和激活值的位宽的回报递减,这是因为当曲线402a的斜率趋于零时,权重值和激活值的位宽变得越大。由此,对于权重值和激活值的小于最大位宽的一些位宽,AI处理器结果的准确度可能表现出可忽略的改变。
曲线402a进一步解说了在权重值和激活值的一些位宽比最大位宽甚至更小的点处,曲线402a的斜率以更大的速率增加。由此,对于权重值和激活值的比最大位宽甚至更小的一些位宽,AI处理器结果的准确度可能表现出不可忽略的改变。对于权重值和激活值的表现出可忽略的改变的位宽,AI处理器结果的准确度和动态神经网络量化重配置可被实现以量化权重值和激活值并且仍达成可接受水平的AI处理器结果准确度。
图4B解说了图表400b,其表示以AIQoS值的形式的AI处理器响应度(其也可被称为等待时间)(在纵轴上)相对于针对动态神经网络量化重配置的实现的AI处理器吞吐量(在横轴上)的测量。在一些实施例中,吞吐量可包括由AI处理器产生的每时间段推断值,诸如每秒推断。响应于激活值和/或权重值的较小位宽,针对动态神经网络量化重配置的实现的吞吐量可以增加。
曲线402b解说了AI处理器吞吐量越高,AI处理器可以更具有响应性。然而,曲线402b还解说了AI处理器吞吐量的回报递减,这是因为当曲线402b的斜率趋于零时,AI处理器吞吐量变得越高。由此,对于低于最高AI处理器吞吐量的一些AI处理器吞吐量,AI处理器的响应度可能表现出可忽略的改变。
曲线402b进一步解说了在一些AI处理器吞吐量比最高AI处理器吞吐量甚至更低的点处,曲线402b的斜率以更大的速率增加。由此,对于比最高AI处理器吞吐量甚至更低的一些AI处理器吞吐量,AI处理器的响应度可能表现出不可忽略的改变。对于表现出可忽略的改变的AI处理器吞吐量,AI处理器的响应度和动态神经网络量化重配置可被实现以量化激活值和/或权重值并且仍达成可接受水平的AI处理器响应度。
图5解说了在各个实施例中实现动态神经网络量化架构在AI处理器操作频率方面的示例益处。参照图1-5,对于动态神经网络量化重配置,动态神经网络量化逻辑(例如,212、214)、I/O接口(例如,302)和/或存储器控制器/物理层组件(例如,304a-304f)可实现动态神经网络量化重配置以达成各水平的AI处理器吞吐量和/或AI处理器结果准确度。
图5解说了图表500,其表示AI处理器操作频率(其可影响AI处理器吞吐量)(在纵轴上)相对于权重值和激活值的位宽(在横轴上)的测量。图表500还被着色以表示AI处理器可以在其下操作的操作条件。例如,操作条件可以是AI处理器的温度,并且较深着色可以表示较高温度,以使得最低温度可在该图表的原点处并且最热温度可在原点对面。对于点502,未实现动态神经网络量化重配置,并且权重值和激活值可保持在最大位宽,且仅有的降低温度的方式是降低AI处理器的操作频率。AI处理器的操作频率的过度降低将导致不良的AIQoS和等待时间,这将造成关键任务系统(诸如汽车系统)中的严重问题。对于点504,实现了动态神经网络量化重配置,并且为了达成点502所解说的类似的温度降低,不仅可以降低AI处理器的操作频率,而且可以将权重值和激活值的位宽量化到小于最大位宽。点504解说了通过使用动态神经网络量化重配置来降低权重值和激活值的位宽,当点502、504两者处的温度操作条件相似时,AI处理器操作频率相较于点502的AI处理器操作频率可以更高。由此,当与未使用动态神经网络量化重配置相比时,动态神经网络量化重配置可以在相似的操作条件(诸如AI处理器温度)下允许更高的AI处理器性能(诸如AI处理器吞吐量)。
图6解说了在各个实施例中实现动态神经网络量化架构在AI处理器操作频率方面的示例益处。参照图1-6,对于动态神经网络量化重配置,动态神经网络量化逻辑(例如,212、214)、I/O接口(例如,302)和/或存储器控制器/物理层组件(例如,304a-304f)可实现动态神经网络量化重配置以达成各水平的AI处理器吞吐量和/或AI处理器结果准确度。图6解说了图表600a、600b、604a、604b、608,其表示相对于时间标绘的AI处理器操作条件(其可影响AI处理器吞吐量)的测量。图表600a表示在不实现动态神经网络量化重配置的情况下的AI处理器温度(在纵轴上)相对于时间(在横轴上)的测量。图表600b表示在实现动态神经网络量化重配置的情况下的AI处理器温度(在纵轴上)相对于时间(在横轴上)的测量。图表604a表示在不实现动态神经网络量化重配置的情况下的AI处理器频率(在纵轴上)相对于时间(在横轴上)的测量。图表604b表示在实现动态神经网络量化重配置的情况下的AI处理器频率(在纵轴上)相对于时间(在横轴上)的测量。图表608表示在实现动态神经网络量化重配置的情况下的激活值和/或权重值的AI处理器位宽(在纵轴上)相对于时间(在横轴上)的测量。
在时间612之前,图表600a中的AI处理器温度602a可增加,而图表604a中的AI处理器频率606a可保持稳定。类似地,在时间612之前,图表600b中的AI处理器温度602b可增加,而图表604b中的AI处理器频率606b和图表608中的AI处理器位宽610可保持稳定。在不改变AI处理器频率606a、606b和/或AI处理器位宽610的情况下AI处理器温度602a、602b增加的原因可包括AI处理器(例如,124、124a-124f)的工作负载增加。
在时间612,AI处理器温度602a可达到峰值,并且AI处理器频率606a可减小。较低AI处理器频率606a可使得AI处理器温度602a停止上升,因为相比于时间612之前,AI处理器可产生更少的热量,同时在较低AI处理器频率606a处消耗更少的功率。类似地,在时间612,AI处理器温度602b可达到峰值,并且AI处理器频率606b可减小。然而,在时间612,AI处理器位宽610也可减小。较低AI处理器频率606b和较低AI处理器位宽610可使得AI处理器温度602b停止上升,因为相比于时间612之前,AI处理器可产生更少的热量,同时在较低AI处理器频率606b处消耗更少的功率并且处理更小的位宽数据。
相互比较而言,AI处理器频率614a从时间612之前到时间612的差异可大于AI处理器频率614b从时间612之前到时间612的差异。相比于在单独地减小AI处理器操作频率606a时AI处理器操作频率606a的减小,与减小AI处理器操作频率606b相结合地减小AI处理器位宽610可以允许AI处理器操作频率606b减小得更少。减小AI处理器位宽610和AI处理器操作频率606b可以在AI处理器温度602a方面产生与单独地减小AI处理器操作频率606a相似的益处,但还可以提供较大AI处理器操作频率606b的益处,这可影响AI处理器吞吐量。
图7解说了用于实现各个实施例的动态神经网络量化架构中的MAC中的旁路的示例。参照图1-7,MAC 202可包括包含各种逻辑组件700、702(诸如任何数目和组合的AND门、全加法器(在图7中标记为“F”)和/或半加法器(在图7中标记为“H”))的逻辑电路。图7中解说的示例示出了MAC 202具有通常被配置成用于8比特乘法和累加函数的逻辑电路。然而,MAC 202通常可被配置成用于任何位宽数据的乘法和累加函数,并且图7中解说的示例并不限制本文中的权利要求和描述的范围。
在一些实施例中,线X0-X7和Y0-Y7向MAC 202提供激活值和权重值的输入。X0和Y0可以表示最低有效比特,并且X7和Y7可以表示激活值和权重值的最高有效比特。如本文中所描述的,动态神经网络量化重配置可包括对激活值和/或权重值的任何数目的动态比特进行量化和/或掩蔽。激活值和/或权重值的比特的量化和/或掩蔽可以将权重值的比特舍入到和/或替换成零值。如此,激活值和/或权重值的经量化和/或被掩蔽比特与激活值和/或权重值的另一比特的相乘可导致零值。给定经量化和/或被掩蔽激活值和/或权重值的乘法的已知结果,可能不需要实际上实现这些结果的乘法和加法。因此,包括MAC阵列(例如,200)的AI处理器(例如,124、124a-123f)可进行时钟门控以关闭用于经量化和/或被掩蔽激活值和/或权重值的乘法以及结果的加法的逻辑组件702。对用于被掩蔽权重值的乘法以及结果的加法的逻辑组件702进行时钟门控可以减少电路切换功率损耗(亦称为动态功率降低)。
在图7中解说的示例中,激活值和权重值在线X0、X1、Y0或Y1上的这两个最低有效比特被掩蔽。着色的对应逻辑组件702—接收到X0、X1、Y0或Y1和/或X0、X1、Y0和/或Y1的操作结果作为输入的逻辑组件702—被着色以指示它们被时钟门控为关闭。其余未着色的逻辑组件700未被着色以表示它们未被时钟门控为关闭。
图8解说了根据实施例的用于AIQoS确定的方法800。参照图1-8,方法800可以在以下各项中实现:计算设备(例如,100)、通用硬件、专用硬件(例如,210)、在处理器(例如,处理器104、AI处理器124、AIQoS管理器210、AI处理子系统300、AI处理器124a-124f、I/O接口302、存储器控制器/物理层组件304a-304f)中执行的软件、或软件配置的处理器与专用硬件的组合(诸如动态神经网络量化系统内的执行软件的处理器(例如,AI处理器124、AIQoS管理器210、AI处理子系统300、AI处理器124a-124f、I/O接口302、存储器控制器/物理层组件304a-304f),其包括其他个体组件以及各种存储器/高速缓存控制器)。为了涵盖在各个实施例中实现的替换配置,实现方法800的硬件在本文中被称为“AIQoS设备”。
在框802中,AIQoS设备可接收AIQoS因子。AIQoS设备可以通信地连接到任何数目和组合的传感器(诸如温度传感器、电压传感器、电流传感器等)和处理器。AIQoS设备可从这些通信地连接的传感器和/或处理器接收表示AIQoS因子的数据信号。AIQoS因子可以是动态神经网络量化逻辑重配置为了改变量化、掩蔽和/或神经网络修剪而可基于的操作条件。这些操作条件可包括AI处理器、具有AI处理器的SoC(例如,102)、由AI处理器访问的存储器(例如,106、114)、和/或AI处理器的其他外围设备(例如,122)的温度、功耗、处理单元利用率、性能等。例如,温度可以是表示AI处理器上的一位置处的温度的温度传感器值。作为进一步的示例,功率可以是表示与电源和/或功率管理集成电路能力相比的电源轨的峰值和/或电池充电状态的值。作为进一步的示例,性能可以是表示AI处理器的利用率、完全空闲时间、每秒帧数和/或端到端等待时间的值。在一些实施例中,AIQoS管理器可被配置成在框802中接收AIQoS因子。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框802中接收AIQoS因子。
在判定框804中,AIQoS设备可确定是否要动态地配置神经网络量化。在一些实施例中,AIQoS管理器可被配置成在判定框804中确定是否要动态地配置神经网络量化。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在判定框804中确定是否要动态地配置神经网络量化。AIQoS设备可根据操作条件来确定是否要实现动态神经网络量化重配置。AIQoS设备可基于增加了对AI处理器的处理能力的约束的操作条件的水平来确定要动态地配置神经网络量化。AIQoS设备可基于减少了对AI处理器的处理能力的约束的操作条件的水平来确定要实现动态地配置神经网络量化。对AI处理器的处理能力的约束可由影响AI处理器维持处理能力水平的能力的操作条件水平(诸如热累积水平、功耗、处理单元利用率等)造成。
在一些实施例中,AIQoS设备可以配置有用于根据操作条件来确定是否要实现动态神经网络量化重配置的任何数目和组合的算法、阈值、查找表等。例如,AIQoS设备可将所接收到的操作条件与用于该操作条件的阈值进行比较。响应于操作条件与用于该操作条件的阈值进行不利比较(诸如超过该阈值),AIQoS设备可在判定框804中确定要实现动态神经网络量化重配置。这样的不利比较可以向AIQoS设备指示该操作条件增加了对AI处理器的处理能力的约束。响应于操作条件与用于该操作条件的阈值进行有利比较(诸如没有达到该阈值),AIQoS设备可在判定框804中确定要实现动态神经网络量化重配置。这样的有利比较可以向AIQoS设备指示该操作条件减少了对AI处理器的处理能力的约束。
在一些实施例中,AIQoS设备可将多个接收到的操作条件与用于这些操作条件的多个阈值进行比较,以及基于不利和/或有利比较结果的组合来确定要实现动态神经网络量化重配置。在一些实施例中,AI设备可以配置有用于组合多个接收到的操作条件的算法,并且将该算法的结果与阈值进行比较。在一些实施例中,多个接收到的操作条件可以是相同类型和/或不同类型。在一些实施例中,多个接收到的操作条件可针对特定时间和/或在一时间段上。
响应于确定要动态地配置神经网络量化(即,判定框804=“是”),AIQoS设备可在框805中确定AIQoS值。对于动态神经网络量化重配置,AIQoS设备可确定对于AI处理器要达成的AIQoS值,该AIQoS值计及由于AI处理器在某些操作条件下的动态神经网络量化重配置和/或AI处理器操作频率而要达成的AI处理器吞吐量和AI处理器结果准确度。AIQoS值可以表示AI处理器的用户可感知水平和/或关键任务可接受水平的等待时间、质量、准确度等。
在一些实施例中,AIQoS设备可以配置有用于根据操作条件来确定AI QoS值的任何数目和组合的算法、阈值、查找表等。例如,AIQoS设备可以将计及AI处理器吞吐量和AI处理器结果准确度的AIQoS值确定为对于表现出超过温度阈值的温度的AI处理器要实现的目标。作为进一步的示例,AIQoS设备可以将计及AI处理器吞吐量和AI处理器结果准确度的AIQoS值确定为对于表现出超过电流阈值的电流(功耗)的AI处理器要实现的目标。作为进一步的示例,AIQoS设备可以将计及AI处理器吞吐量和AI处理器结果准确度的AIQoS值确定为对于表现出超过吞吐量阈值和/或利用率阈值的吞吐量值和/或利用率值的AI处理器要实现的目标。以操作条件超过阈值的形式描述的前述示例并不旨在限制权利要求和说明书的范围,而是类似地适用于操作条件没有达到阈值的各实施例。在一些实施例中,AIQoS管理器可被配置成在框805中确定AIQoS值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框805中确定AIQoS值。
在可任选框806中,AIQoS设备可确定是否要缩减AI处理器操作频率。AIQoS设备还可确定是要单独地还是要与动态神经网络量化重配置相结合地实现AI处理器操作频率的传统缩减。例如,用于操作条件的一些阈值可以与AI处理器操作频率和/或动态神经网络量化重配置的传统缩减相关联。任何数目或组合的所接收到的操作条件同与AI处理器操作频率和/或动态神经网络量化重配置的缩减相关联的阈值的不利比较可触发AIQoS设备确定要实现AI处理器操作频率和/或动态神经网络量化重配置的缩减。在一些实施例中,AI QoS管理器可被配置成在可任选判定框806中确定是否要缩减AI处理器操作频率。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选判定框806中确定是否要缩减AI处理器操作频率。
在框805中确定AIQoS值之后,或者响应于确定不要缩减AI处理器操作频率(即,可任选判定框806=“否”),AIQoS设备可在框808中确定用于达成该AIQoS值的AI量化水平。AIQoS设备可确定AI量化水平,该AI量化水平计及由于某些操作条件下的动态神经网络量化重配置而要达成的AI处理器吞吐量和AI处理器结果准确度。例如,AIQoS设备可以将计及AI处理器吞吐量和AI处理器结果准确度的AIQoS量化水平确定为对于表现出超过温度阈值的温度的AI处理器要实现的目标。在一些实施例中,AIQoS设备可被配置成执行根据表示AI处理器准确度和AI处理器吞吐量的任何数目或组合的值(诸如AIQoS值)来计算AI量化水平的算法。例如,该算法可以是AI处理器准确度和AI处理器吞吐量的加总和/或最小函数。作为进一步的示例,表示AI处理器准确度的值可包括由AI处理器执行的神经网络的输出的误差值,并且表示AI处理器吞吐量的值可包括由AI处理器产生的每时间段推断的值。该算法可被加权以偏向于AI处理器准确度或AI处理器吞吐量。在一些实施例中,权重可以与AI处理器、具有AI处理器的SoC、由AI处理器访问的存储器和/或AI处理器的其他外围设备的任何数目和组合的操作条件相关联。基于操作条件对AI处理器的处理能力的影响,AI量化水平可相对于先前计算出的AI量化水平而改变。例如,向AIQoS设备指示对AI处理器的处理能力的增加的约束的操作条件可导致提高AI量化水平。作为另一示例,向AIQoS设备指示对AI处理器的处理能力的减少的约束的操作条件可导致降低AI量化水平。在一些实施例中,AIQoS管理器可被配置成在框808中确定AI量化水平。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框808中确定AI量化水平。
在框810中,AIQoS设备可生成并发送AI量化水平信号。AIQoS设备可生成并发送具有AI量化水平的AI量化水平信号。在一些实施例中,AIQoS设备可将AI量化水平信号发送给动态量化控制器(例如,208)。在一些实施例中,AIQoS设备可将AI量化水平信号发送给I/O接口和/或存储器控制器/物理层组件。AI量化水平信号可触发接收方确定用于实现动态神经网络量化重配置的参数,并提供AI量化水平作为用于参数确定的输入。在一些实施例中,AI量化水平信号还可包括使得AIQoS设备确定要实现动态神经网络量化重配置的操作条件。这些操作条件也可以是用于确定用于实现动态神经网络量化重配置的参数的输入。在一些实施例中,操作条件可以由以下各项来表示:操作条件的值和/或表示使用操作条件的算法的结果的值、操作条件与阈值的比较、来自用于操作条件的查找表的值等等。例如,表示比较结果的值可包括操作条件的值与阈值之间的差异。在一些实施例中,AIQoS管理器可被配置成在框810中生成并发送AI量化水平信号。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框810中生成并发送AI量化水平信号。AIQoS设备可在框802中重复地、周期性地和/或持续地接收AIQoS因子。
响应于确定要缩减AI处理器操作频率(即,可任选判定框806=“是”),AIQoS设备可在可任选框812中确定AI量化水平和AI处理器操作频率值。AIQoS设备可如在框808中那样确定AI量化水平。AIQoS设备可以类似地通过使用任何数目和组合的算法、阈值、查找表等来确定AI处理器操作频率值。AI处理器操作频率值可以指示要将AI处理器操作频率缩减到的操作频率值。AI处理器操作频率可以基于在框805中确定的AIQoS值。在一些实施例中,可以结合AI处理器操作频率来计算AI量化水平,以实现AIQoS值。在一些实施例中,AIQoS管理器可被配置成在可任选框812中确定AI量化水平和AI处理器操作频率值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框812中确定AI量化水平和AI处理器操作频率值。
在可任选框814中,AIQoS设备可生成并发送AI量化水平信号和AI频率信号。AIQoS设备可如在框810中那样生成并发送AI量化水平信号。AIQoS设备还可生成AI频率信号并将所生成的AI频率信号发送给MAC阵列(例如,200)。AI频率信号可包括AI处理器操作频率值。AI频率信号可触发MAC阵列例如使用AI处理器操作频率值来实现AI处理器操作频率的缩减。在一些实施例中,AIQoS管理器可被配置成在可任选框814中生成并发送AI量化水平信号和AI频率信号。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框814中生成并发送AI量化水平信号和AI频率信号。AIQoS设备可在框802中重复地、周期性地和/或持续地接收AIQoS因子。
响应于确定不要动态地配置神经网络量化(即,判定框804=“否”),AIQoS设备可在可任选判定框816中确定是否要缩减AI处理器操作频率。AIQoS设备可如在可任选判定框806中那样确定是否要缩减AI处理器操作频率。在一些实施例中,AIQoS管理器可被配置成在可任选判定框806中确定是否要缩减AI处理器操作频率。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选判定框806中确定是否要缩减AI处理器操作频率。
响应于确定要缩减AI处理器操作频率(即,可任选判定框816=“是”),AIQoS设备可在可任选框818中确定AI处理器操作频率值。AIQoS设备可如在可任选框812中那样确定AI处理器操作频率。在一些实施例中,AIQoS管理器可被配置成在可任选框818中确定AI处理器操作频率值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框818中确定AI处理器操作频率值。
在可任选框820中,AIQoS设备可生成并发送AI频率信号。AIQoS设备可如在可任选框814中那样生成并发送AI频率信号。在一些实施例中,AI QoS管理器可被配置成在可任选框820中生成并发送AI频率信号。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框820中生成并发送AI频率信号。AIQoS设备可在框802中重复地、周期性地和/或持续地接收AIQoS因子。
响应于确定不要缩减AI处理器操作频率(即,可任选判定框816=“否”),AIQoS设备可在框802中接收AIQoS因子。
图9是解说根据实施例的用于动态神经网络量化架构配置控制的方法900。参照图1-9,方法900可以在以下各项中实现:计算设备(例如,100)、通用硬件、专用硬件(例如,动态量化控制器208)、在处理器(例如,处理器104、AI处理器124、动态量化控制器208、AI处理子系统300、AI处理器124a-124f、I/O接口302、存储器控制器/物理层组件304a-304f)中执行的软件、或软件配置的处理器与专用硬件的组合(诸如动态神经网络量化系统内的执行软件的处理器(例如,AI处理器124、动态量化控制器208、AI处理子系统300、AI处理器124a-124f、I/O接口302、存储器控制器/物理层组件304a-304f),其包括其他个体组件以及各种存储器/高速缓存控制器)。为了涵盖在各个实施例中实现的替换配置,实现方法900的硬件在本文中被称为“动态量化设备”。在一些实施例中,方法900可以在方法800(图8)的框810和/或可任选框814之后实现。
在框902中,动态量化设备可接收AI量化水平信号。动态量化设备可从AIQoS设备(例如,AIQoS管理器210、I/O接口302、存储器控制器/物理层组件304a-304f)接收AI量化水平信号。在一些实施例中,动态量化控制器可被配置成在框902中接收AI量化水平信号。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框902中接收AI量化水平信号。
在框904中,动态量化设备可确定用于动态量化的动态比特数。动态量化设备可使用通过AI量化水平信号接收到的AI量化水平来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化设备还可以使用通过AI量化水平信号接收到的操作条件来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化设备可以配置有用于基于AI量化水平和/或操作条件来确定要使用动态神经网络量化重配置的哪些参数和/或参数值的算法、阈值、查找表等。例如,动态量化设备可使用AI量化水平和/或操作条件作为对算法的输入,该算法可输出要用于量化激活值和权重值的动态比特数。在一些实施例中,动态量化控制器可被配置成在框904中确定用于动态量化的动态比特数。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框904中确定用于动态量化的动态比特数。
在可任选框906中,动态量化设备可确定用于掩蔽激活值和权重值以及旁路掉MAC(例如,202a-202i)的各部分的动态比特数。动态量化设备可使用通过AI量化水平信号接收到的AI量化水平来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化设备还可以使用通过AI量化水平信号接收到的操作条件来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化设备可以配置有用于基于AI量化水平和/或操作条件来确定要使用动态神经网络量化重配置的哪些参数和/或参数值的算法、阈值、查找表等。例如,动态量化设备可使用AI量化水平和/或操作条件作为对算法的输入,该算法可输出用于掩蔽激活值和权重值以及旁路掉MAC的各部分的动态比特数。在一些实施例中,动态量化控制器可被配置成在可任选框906中确定用于掩蔽激活值和权重值以及旁路掉MAC的各部分的动态比特数。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框906中确定用于掩蔽激活值和权重值以及旁路掉MAC的各部分的动态比特数。
在可任选框908中,动态量化设备可确定用于动态网络修剪的阈值权重值。动态量化设备可使用通过AI量化水平信号接收到的AI量化水平来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化设备还可以使用通过AI量化水平信号接收到的操作条件来确定用于动态神经网络量化重配置的参数。在一些实施例中,动态量化设备可以配置有用于基于AI量化水平和/或操作条件来确定要使用动态神经网络量化重配置的哪些参数和/或参数值的算法、阈值、查找表等。例如,动态量化设备可使用AI量化水平和/或操作条件作为对算法的输入,该算法可输出用于掩蔽权重值以及旁路掉整个MAC(例如,202a-202i)的阈值权重值。在一些实施例中,动态量化控制器可被配置成在可任选框908中确定用于动态网络修剪的阈值权重值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框908中确定用于动态网络修剪的阈值权重值。
在框904、可任选框906和/或可任选框906中使用的AI量化水平可以不同于先前计算出的AI量化水平,并且导致所确定的用于实现动态神经网络量化重配置的参数的差异。例如,提高AI量化水平可使得动态量化设备确定用于实现动态神经网络量化重配置的增加的动态比特数和/或减小的阈值权重值。增加动态比特数和/或减小阈值权重值可使得使用较少比特和/或较少MAC来实现神经网络的计算,这可能会降低神经网络的推断结果的准确度。作为另一示例,降低AI量化水平可使得动态量化设备确定用于实现动态神经网络量化重配置的减少的动态比特数和/或增大的阈值权重值。减少动态比特数和/或增大阈值权重值可使得使用较多比特和/或较多MAC来实现神经网络的计算,这可提高神经网络的推断结果的准确度。
在框910中,动态量化设备可生成并发送动态量化信号。动态量化信号可包括用于动态神经网络量化重配置的参数。动态量化设备可将动态量化信号发送给动态神经网络量化逻辑(例如,212、214)。在一些实施例中,动态量化设备可将动态量化信号发送给I/O接口和/或存储器控制器/物理层组件。动态量化信号可触发接收方实现动态神经网络量化重配置,并提供用于实现该动态神经网络量化重配置的参数。在一些实施例中,动态量化设备还可将动态量化信号发送给MAC阵列。动态量化信号可触发MAC阵列实现动态神经网络量化重配置,并提供用于实现该动态神经网络量化重配置的参数。在一些实施例中,动态量化信号可包括要实现的动态神经网络量化重配置类型的指示符。在一些实施例中,动态神经网络量化重配置类型的指示符可以是用于动态神经网络量化重配置的参数。在一些实施例中,这些类型的动态神经网络量化重配置可包括:将接收方配置成用于量化激活值和权重值,将接收方配置成用于掩蔽激活值和权重值并且将MAC阵列和/或MAC配置成用于旁路掉MAC的各部分,以及将接收方配置成用于掩蔽权重值并且将MAC阵列和/或MAC配置成用于旁路掉整个MAC。在一些实施例中,动态量化控制器可被配置成在框910中生成并发送动态量化信号。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框910中生成并发送动态量化信号。
图10是解说根据实施例的用于动态神经网络量化架构重配置的方法1000。参照图1-10,方法1000可以在以下各项中实现:计算设备(例如,100)、通用硬件、专用硬件(例如,动态神经网络量化逻辑212、214;MAC阵列200;MAC 202a-202i)、在处理器(例如,处理器104、AI处理器124、AI处理子系统300、AI处理器124a-124f、I/O接口302、存储器控制器/物理层组件304a-304f)中执行的软件、或软件配置的处理器与专用硬件的组合(诸如动态神经网络量化系统内的执行软件的处理器(例如,AI处理器124、AI处理子系统300、AI处理器124a-124f、I/O接口302、存储器控制器/物理层组件304a-304f),其包括其他个体组件以及各种存储器/高速缓存控制器)。为了涵盖在各个实施例中实现的替换配置,实现方法1000的硬件在本文中被称为“动态量化配置设备”。在一些实施例中,方法1000可以在方法900(图9)的框910之后实现。
在框1002中,动态量化配置设备可接收动态量化信号。动态量化配置设备可从动态量化控制器(例如,动态量化控制器208、I/O接口302、存储器控制器/物理层组件304a-304f)接收动态量化信号。在一些实施例中,动态神经网络量化逻辑可被配置成在框1002中接收动态量化信号。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框1002中接收动态量化信号。在一些实施例中,MAC阵列可被配置成在框1002中接收动态量化信号。
在框1004中,动态量化配置设备可确定用于动态量化的动态比特数。动态量化配置设备可确定用于动态神经网络量化重配置的参数。动态量化信号可包括用于将动态神经网络量化逻辑(例如,动态神经网络量化逻辑212、214;I/O接口302;存储器控制器/物理层组件304a-304f)配置成用于量化激活值和权重值的动态比特数的参数。在一些实施例中,动态神经网络量化逻辑可被配置成在框1004中确定用于动态量化的动态比特数。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框1004中确定用于动态量化的动态比特数。
在框1006中,动态量化配置设备可以配置动态神经网络量化逻辑以将激活值和权重值量化到该动态比特数。动态神经网络量化逻辑可被配置成通过将激活值和权重值的比特舍入到由动态量化信号所指示的动态比特数来量化激活值和权重值。动态神经网络量化逻辑可包括可被配置成将激活值和权重值的比特舍入到动态比特数的可配置逻辑门。在一些实施例中,逻辑门和/或软件可被配置成针对激活值和权重值的至多达和/或包括动态比特数的最低有效比特输出零值。在一些实施例中,逻辑门和/或软件可被配置成输出激活值和权重值的包括动态比特数和/或在该数个动态比特之后的最高有效比特的值。例如,激活值或权重值的每个比特可被顺序地(诸如最低有效比特到最高有效比特)输入到逻辑门和/或软件。逻辑门和/或软件可针对激活值和权重值的至多达和/或包括由该参数指示的动态比特数的最低有效比特输出零值。逻辑门和/或软件可针对激活值和权重值的包括由该参数指示的动态比特数和/或在该数个动态比特之后的最高有效比特输出零值。动态比特数可以不同于对于动态神经网络量化逻辑的默认或先前配置要舍入到的默认动态比特数或先前动态比特数。因此,逻辑门的配置也可以不同于逻辑门和/或软件的默认或先前配置。在一些实施例中,动态神经网络量化逻辑可被配置成在框1006中配置动态神经网络量化逻辑以将激活值和权重值量化到动态比特数。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框1006中配置动态神经网络量化逻辑以将激活值和权重值量化到动态比特数。
在可任选判定框1008中,动态量化配置设备可确定是否要配置量化逻辑以进行掩蔽和旁路。动态量化信号可包括用于将动态神经网络量化逻辑配置成用于掩蔽激活值和权重值以及旁路掉MAC的各部分的动态比特数的参数。动态量化配置设备可根据该参数的值的存在来确定要配置量化逻辑以进行掩蔽和旁路。在一些实施例中,动态神经网络量化逻辑可被配置成在可任选判定框1008中确定是否要配置量化逻辑以进行掩蔽和旁路。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选判定框1008中确定是否要配置量化逻辑以进行掩蔽和旁路。在一些实施例中,MAC阵列可被配置成在可任选判定框1008中确定是否要配置量化逻辑以进行掩蔽和旁路。
响应于确定要配置量化逻辑以进行掩蔽和旁路(即,可任选判定框1008=“是”),动态量化配置设备可在可任选框1010中确定用于掩蔽和旁路的动态比特数。如上文所描述的,动态量化信号可包括用于将动态神经网络量化逻辑(例如,动态神经网络量化逻辑212、214;MAC阵列200;I/O接口302;存储器控制器/物理层组件304a-304f)配置成用于掩蔽激活值和权重值以及旁路掉MAC的各部分的动态比特数的参数。动态量化配置设备可从动态量化信号中检索用于掩蔽和旁路的动态比特数。在一些实施例中,动态神经网络量化逻辑可被配置成在可任选框1010中确定用于掩蔽和旁路的动态比特数。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框1010中确定用于掩蔽和旁路的动态比特数。在一些实施例中,MAC阵列可被配置成在可任选框1010中确定用于掩蔽和旁路的动态比特数。
在可任选框1012中,动态量化配置设备可以配置动态量化逻辑以掩蔽激活值和权重值的数个动态比特。动态神经网络量化逻辑可被配置成通过掩蔽由动态量化信号所指示的激活值和权重值的该数个动态比特来量化激活值和权重值。
动态神经网络量化逻辑可包括可被配置成掩蔽激活值和权重值的数个动态比特的可配置逻辑门和/或软件。在一些实施例中,逻辑门和/或软件可被配置成针对激活值和权重值的至多达和/或包括动态比特数的最低有效比特输出零值。在一些实施例中,逻辑门和/或软件可被配置成输出激活值和权重值的包括动态比特数和/或在该数个动态比特之后的最高有效比特的值。例如,激活值和权重值的每个比特可被顺序地(诸如最低有效比特到最高有效比特)输入到逻辑门和/或软件。逻辑门和/或软件可针对激活值和权重值的至多达和/或包括由该参数指示的动态比特数的最低有效比特输出零值。逻辑门和/或软件可针对激活值和权重值的包括由该参数指示的动态比特数和/或在该数个动态比特之后的最高有效比特输出零值。动态比特数可以不同于对于动态神经网络量化逻辑的默认或先前配置要掩蔽的默认动态比特数或先前动态比特数。因此,逻辑门和/或软件的配置也可以不同于逻辑门的默认或先前配置。
在一些实施例中,逻辑门可被时钟门控以使得逻辑门不接收和/或不输出激活值和权重值的至多达和/或包括动态比特数的最低有效比特。对逻辑门进行时钟门控可以有效地将激活值和权重值的最低有效比特替换成零值,因为MAC阵列200可以不接收激活值和权重值的最低有效比特的值。在一些实施例中,动态神经网络量化逻辑可被配置成在可任选框1012中配置动态量化逻辑以掩蔽激活值和权重值的数个动态比特。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框1012中配置动态量化逻辑以掩蔽激活值和权重值的数个动态比特。
在可任选框1014中,动态量化配置设备可以配置AI处理器以对MAC进行时钟门控和/或降电以进行旁路。在一些实施例中,动态神经网络量化逻辑可以向AI处理器的MAC阵列发信号通知用于旁路掉MAC的各部分的动态比特数的参数。在一些实施例中,动态神经网络量化逻辑可以向MAC阵列发信号通知激活值和权重值的哪些比特被掩蔽。在一些实施例中,缺乏用于激活值和权重值的比特的信号可以是从动态神经网络量化逻辑到MAC阵列的信号。MAC阵列可接收动态量化信号,该动态量化信号包括用于将动态神经网络量化逻辑配置成用于掩蔽激活值和权重值以及旁路掉MAC的各部分的动态比特数的参数。在一些实施例中,MAC阵列200可从动态神经网络量化逻辑接收动态比特数和/或哪些动态比特用于旁路掉MAC的各部分的参数的信号。MAC阵列可被配置成针对由动态量化信号和/或来自动态神经网络量化逻辑的信号所指示的激活值和权重值的动态比特来旁路掉MAC的各部分。这些动态比特可对应于激活值和权重值的由动态神经网络量化逻辑掩蔽的比特。MAC可包括被配置成实现乘法和累加函数的逻辑门。
在一些实施例中,MAC阵列可对MAC的逻辑门进行时钟门控,这些逻辑门被配置成将激活值和权重值的与由动态量化信号的参数所指示的动态比特数相对应的比特相乘和累加。在一些实施例中,MAC阵列可对MAC的逻辑门进行时钟门控,这些逻辑门被配置成将激活值和权重值的与由来自动态神经网络量化逻辑的信号所指示的动态比特数和/或动态有效比特相对应的比特相乘和累加。
在一些实施例中,MAC阵列可以使MAC的逻辑门停电,这些逻辑门被配置成将激活值和权重值的与由动态量化信号的参数所指示的动态比特数相对应的比特相乘和累加。在一些实施例中,MAC阵列可以使MAC的逻辑门停电,这些逻辑门被配置成将激活值和权重值的与由来自动态神经网络量化逻辑的信号所指示的动态比特数和/或特定动态比特数相对应的比特相乘和累加。
通过在可任选框1014对MAC的逻辑门进行时钟门控和/或降电,MAC可以不接收激活值和权重值的与动态比特数或特定动态比特数相对应的比特,从而有效地掩蔽这些比特。在一些实施例中,MAC阵列可被配置成在可任选框1014中配置AI处理器以对MAC进行时钟门控和/或降电以进行旁路。
在一些实施例中,在框1006中配置动态神经网络量化逻辑以将激活值和权重值量化到动态比特数之后,动态量化配置设备可在可任选判定框1016中确定是否要配置量化逻辑以进行动态网络修剪。在一些实施例中,响应于确定不要配置量化逻辑以进行掩蔽和旁路(即,可任选判定框1018=“否”),或者在可任选框1014中配置AI处理器以对MAC进行时钟门控和/或降电以进行旁路之后,动态量化配置设备可在可任选判定框1016中确定是否要配置量化逻辑以进行动态网络修剪。动态量化信号可包括用于将动态神经网络量化逻辑配置成用于掩蔽权重值以及旁路掉整个MAC的阈值权重值的参数。动态量化配置设备可根据该参数的值的存在来确定要配置量化逻辑以进行动态网络修剪。在一些实施例中,动态神经网络量化逻辑可被配置成在可任选判定框1016中确定是否要配置量化逻辑以进行动态网络修剪。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选判定框1016中确定是否要配置量化逻辑以进行动态网络修剪。在一些实施例中,MAC阵列可被配置成在可任选判定框1016中确定是否要配置量化逻辑以进行动态网络修剪。
响应于确定要配置量化逻辑以进行动态网络修剪(即,可任选判定框1016=“是”),动态量化配置设备可在可任选框1018中确定用于动态网络修剪的阈值权重值。如上文所描述的,动态量化信号可包括用于将动态神经网络量化逻辑(例如,动态神经网络量化逻辑212、214;MAC阵列200;I/O接口302;存储器控制器/物理层组件304a-304f)配置成用于掩蔽整个权重值以及旁路掉整个MAC的阈值权重值的参数。动态量化配置设备可从动态量化信号中检索用于掩蔽和旁路的阈值权重值。在一些实施例中,动态神经网络量化逻辑可被配置成在可任选框1018中确定用于动态网络修剪的阈值权重值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框1018中确定用于动态网络修剪的阈值权重值。在一些实施例中,MAC阵列可被配置成在可任选框1018中确定用于动态网络修剪的阈值权重值。
在可任选框1020中,动态量化配置设备可以配置动态量化逻辑以掩蔽整个权重值。动态神经网络量化逻辑可被配置成:基于权重值与由动态量化信号所指示的阈值权重值的比较,通过掩蔽权重值的所有比特来量化权重值。动态神经网络量化逻辑可包括可被配置成进行以下操作的可配置逻辑门和/或软件:将从数据源(例如,权重缓冲器204)接收的权重值与阈值权重值进行比较,以及掩蔽与阈值权重值相比不利(诸如小于或小于等于阈值权重值)的权重值。在一些实施例中,该比较可以是权重值的绝对值与阈值权重值的比较。在一些实施例中,逻辑门和/或软件可被配置成针对与阈值权重值相比不利的权重值的所有比特输出零值。所有比特可以是与对于动态神经网络量化逻辑的默认或先前配置要掩蔽的默认比特数或先前比特数不同数目的比特。因此,逻辑门和/或软件的配置也可以不同于逻辑门的默认或先前配置。在一些实施例中,逻辑门可被时钟门控以使得逻辑门不接收和/或不输出与阈值权重值相比不利的权重值的比特。对逻辑门进行时钟门控可以有效地将权重值的比特替换成零值,因为MAC阵列可以不接收权重值的比特的值。在一些实施例中,动态神经网络量化逻辑可被配置成在可任选框1020中配置动态量化逻辑以掩蔽整个权重值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在可任选框1020中配置动态量化逻辑以掩蔽整个权重值。
在可任选框1022中,动态量化配置设备可以配置AI处理器以对整个MAC进行时钟门控和/或降电以进行动态网络修剪。在一些实施例中,动态神经网络量化逻辑可以向AI处理器的MAC阵列发信号通知权重值的哪些比特被掩蔽。在一些实施例中,缺乏用于权重值的比特的信号可以是从动态神经网络量化逻辑到MAC阵列的信号。在一些实施例中,MAC阵列可从动态神经网络量化逻辑接收关于权重值的哪些比特被掩蔽的信号。MAC阵列可将被掩蔽的整个权重值解读为要旁路掉整个MAC的信号。MAC阵列可被配置成针对由来自动态神经网络量化逻辑的信号所指示的权重值来旁路掉MAC。这些权重值可对应于由动态神经网络量化逻辑掩蔽的权重值。MAC可包括被配置成实现乘法和累加函数的逻辑门。在一些实施例中,MAC阵列可对MAC的逻辑门进行时钟门控,这些逻辑门被配置成将权重值的与被掩蔽的权重值相对应的比特相乘和累加。在一些实施例中,MAC阵列可以使MAC的逻辑门停电,这些逻辑门被配置成将权重值的与被掩蔽的权重值相对应的比特相乘和累加。通过对MAC的逻辑门进行时钟门控和/或降电,MAC不接收激活值和权重值的与被掩蔽的权重值相对应的比特。在一些实施例中,MAC阵列可被配置成在可任选框1022中配置AI处理器以对MAC进行时钟门控和/或降电以进行动态网络修剪。
在可任选框1020中由动态神经网络量化逻辑对权重值进行掩蔽和/或在可任选框1022中对MAC进行时钟门控和/或降电可以修剪由MAC阵列执行的神经网络。从神经网络中移除权重值和MAC操作可以有效地从神经网络中移除突触和节点。权重阈值可以在以下基础上确定:与该权重阈值相比不利的权重值在从神经网络的执行中被移除时可造成AI处理器结果中在准确度方面可接受的损失。
在一些实施例中,在框1006中配置动态神经网络量化逻辑以将激活值和权重值量化到动态比特数之后,动态量化配置设备可在框1024中接收并处理激活值和权重值。在一些实施例中,响应于确定不要配置量化逻辑以进行掩蔽和旁路(即,可任选判定框1018=“否”),或者在可任选框1014中配置AI处理器以对MAC进行时钟门控和/或降电以进行旁路之后,动态量化配置设备可在框1024中接收并处理激活值和权重值。在一些实施例中,响应于确定不要配置量化逻辑以进行动态网络修剪(即,可任选判定框1016=“否”),或者在可任选框1022中配置AI处理器以对MAC进行时钟门控和/或降电以进行动态网络修剪之后,动态量化配置设备可在框1024中接收并处理激活值和权重值。动态量化配置设备可从数据源(例如,处理器1044;通信组件112;存储器106、114;外围设备122;权重缓冲器204;激活缓冲器206;存储器106)接收激活值和权重值。量化配置设备可以量化和/或掩蔽激活值和/或权重值。量化设备可对MAC的各部分和/或整个MAC进行旁路、时钟门控和/或降电。在一些实施例中,动态神经网络量化逻辑可被配置成在框1024中接收并处理激活值和权重值。在一些实施例中,I/O接口和/或存储器控制器/物理层组件可被配置成在框1024中接收并处理激活值和权重值。在一些实施例中,MAC阵列可被配置成在框1024中接收并处理激活值和权重值。
根据各个实施例(包括但不限于上文参照图1-10描述的实施例)的AI处理器可以被实现在各种各样的计算系统中,包括移动计算设备,在图11中解说适于与各个实施例联用的移动计算设备的示例。移动计算设备1100可包括处理器1102,该处理器1102耦合到触摸屏控制器1104和内部存储器1106。处理器1102可以是被指定用于一般或特定处理任务的一个或多个多核集成电路。内部存储器1106可以是易失性或非易失性存储器,并且还可以是安全和/或加密的存储器、或者不安全和/或未加密存储器,或其任何组合。可被利用的存储器类型的示例包括但不限于DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM以及嵌入式DRAM。触摸屏控制器1104和处理器1102还可被耦合到触摸屏面板1112,诸如电阻式传感触摸屏、电容式传感触摸屏、红外传感触摸屏等。附加地,移动计算设备1100的显示器无需具有触摸屏能力。
移动计算设备1100可具有彼此耦合和/或耦合至处理器1102的一个或多个无线电信号收发机1108(例如,Peanut、蓝牙、Zigbee、Wi-Fi、RF无线电)以及天线1110以用于发送和接收通信。收发机1108和天线1110可与以上提及的电路系统一起使用以实现各种无线传输协议栈和接口。移动计算设备1100可包括蜂窝网络无线调制解调器芯片1116,其实现经由蜂窝网络的通信并且耦合到处理器。
移动计算设备1100可包括耦合到处理器1102的外围设备连接接口1118。外围设备连接接口1118可被单独地配置成接纳一种类型的连接,或者可被配置成接纳共用的或专有的各种类型的物理和通信连接,诸如通用串行总线(USB)、火线(FireWire)、雷电(Thunderbolt)或PCIe。外围设备连接接口1118还可耦合到类似地配置的外围设备连接端口(未示出)。
移动计算设备1100还可包括用于提供音频输出的扬声器1114。移动计算设备1100还可包括用于容纳本文所描述的组件中的全部或一些组件的外壳1120,该外壳1120由塑料、金属或各材料的组合来构造。移动计算设备1100可包括耦合到处理器1102的电源1122,诸如一次性或可再充电电池。可再充电电池还可耦合到外围设备连接端口以从移动计算设备1100外部的源接收充电电流。移动计算设备1100还可包括用于接收用户输入的物理按钮1124。移动计算设备1100还可包括用于开启和关闭移动计算设备1100的电源按钮1126。
根据各个实施例(包括但不限于以上参照图1-10描述的实施例)的AI处理器可以被实现在各种各样的计算系统中,包括膝上型计算机1200,其示例在图12中解说。许多膝上型计算机包括触摸板触摸表面1217,其用作计算机的定点设备,并且因此可以接收与在配备有触摸屏显示器并且如上所描述的计算设备上实现的那些手势类似的拖动、滚动和轻击手势。膝上型计算机1200将通常包括耦合到易失性存储器1212和大容量非易失性存储器(诸如闪存的硬盘驱动器1213)的处理器1202。另外,计算机1200可具有用于发送和接收电磁辐射、可连接到无线数据链路的一个或多个天线1215和/或耦合到处理器1202的蜂窝电话收发机1216。计算机1200还可包括耦合到处理器1202的软盘驱动器1214和压缩碟(CD)驱动器1215。在笔记本配置中,计算机外壳包括均耦合到处理器1202的触摸板1217、键盘1218、和显示器1219。计算设备的其他配置可包括如众所周知地耦合到处理器(例如,经由USB输入)的计算机鼠标或轨迹球,这也可结合各个实施例来使用。
根据各个实施例(包括但不限于上文参照图1-10描述的各实施例)的AI处理器也可以被实现在固定计算系统(诸如各种市售的服务器中的任何一种服务器)中。图13中解说了示例服务器1300。此类服务器1300通常包括耦合到易失性存储器1302和大容量非易失性存储器(诸如磁盘驱动器1304)的一个或多个多核处理器组装件1301。如图13中所解说的,多核处理器组装件1301可通过将它们插入到组装件的机架中而添加到服务器1300。服务器1300还可包括耦合到处理器1301的软盘驱动器、压缩碟(CD)或数字多用碟(DVD)碟驱动器1306。服务器1300还可以包括耦合到多核处理器组装件1301的网络接入端口1303以用于建立与网络1305的网络接口连接,诸如耦合到其他广播系统计算机和服务器的局域网络、因特网、公共交换电话网和/或蜂窝数据网络(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或任何其他类型的蜂窝数据网络)。
在以下段落中描述了各实现示例。虽然以下实现示例中的一些是以示例方法的形式来描述的,但是进一步示例实现可以包括:在以下段落中所讨论的由AI处理器实现的示例方法,该AI处理器包括被配置成执行这些示例方法的操作的动态量化控制器和MAC阵列;一种计算设备,其包括AI处理器,该AI处理器包括被配置成执行这些示例方法的操作的动态量化控制器和MAC阵列;以及在以下段落中所讨论的由AI处理器实现的示例方法,该AI处理器包括用于执行这些示例方法的功能的装置。
示例1.一种用于由人工智能(AI)处理器对神经网络进行处理的方法,该方法包括:接收AI处理器操作条件信息;响应于该操作条件信息而动态地调整该神经网络的分段的AI量化水平;以及使用经调整的AI量化水平对该神经网络的该分段进行处理。
示例2.如示例1所述的方法,其中动态地调整该神经网络的该分段的该AI量化水平包括:响应于该操作条件信息指示增加了对该AI处理器的处理能力的约束的操作条件的水平而提高该AI量化水平,以及响应于操作条件信息指示减少了对该AI处理器的处理能力的约束的该操作条件的水平而降低该AI量化水平。
示例3.如示例1或2中任一者所述的方法,其中该操作条件信息是包括以下各项的群中的至少一者:温度、功耗、操作频率、或处理单元利用率。
示例4.如示例1-3中任一者所述的方法,其中动态地调整该神经网络的该分段的该AI量化水平包括:调整用于对要由该神经网络的该分段处理的权重值进行量化的该AI量化水平。
示例5.如示例1-3中任一者所述的方法,其中动态地调整该神经网络的该分段的该AI量化水平包括:调整用于对要由该神经网络的该分段处理的激活值进行量化的该AI量化水平。
示例6.如示例1-3中任一者所述的方法,其中动态地调整该神经网络的该分段的该AI量化水平包括:调整用于对要由该神经网络的该分段处理的权重值和激活值进行量化的该AI量化水平。
示例7.如示例1-6中任一者所述的方法,其中:该AI量化水平被配置为指示要由该神经网络处理以量化的值的动态比特;并且使用该经调整的AI量化水平对该神经网络的该分段进行处理包括:旁路掉与该值的动态比特相关联的乘加器(MAC)的各部分。
示例8.如示例1-7中任一者所述的方法,进一步包括:使用AI服务质量(QoS)因子来确定AIQoS值;以及确定用于达成该AIQoS值的该AI量化水平。
示例9.如示例8所述的方法,其中该AIQoS值表示针对由该AI处理器生成的结果的准确度和该AI处理器的吞吐量的目标。
用于在可编程处理器上执行以执行各个实施例的操作的计算机程序代码或“程序代码”可用高级编程语言(诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic)、结构化查询语言(例如Transact-SQL)、Perl、或以各种其他编程语言来编写。如本申请中所使用的存储在计算机可读存储介质上的程序代码或程序可指其格式能被处理器理解的机器语言码(诸如,对象码)。
前述方法描述和过程流程图仅作为解说性示例而提供,且并非旨在要求或暗示各个实施例的操作必须按所给出的次序来执行。如本领域技术人员将领会的,前述各实施例中的操作次序可按任何次序来执行。诸如“其后”、“然后”、“接着”等的措辞并非旨在限定操作的次序;这些措辞仅是简单地用以指引读者遍历方法的描述。此外,对单数形式的权利要求元素的任何引述(例如使用冠词“一”、“某”或“该”的引述)不应解释为将该元素限定为单数。
结合各个实施例来描述的各种解说性逻辑框、模块、电路、和算法操作可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路和操作在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离权利要求的范围。
用于实现结合本文所公开的实施例描述的各种解说性逻辑、逻辑框、模块、以及电路的硬件可用设计成执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器、或任何其他此类配置。替换地,一些操作或方法可由专用于给定功能的电路系统来执行。
在一个或多个实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现,则各功能可作为一条或多条指令或代码存储在非瞬态计算机可读介质或非瞬态处理器可读介质上。本文所公开的方法或算法的操作可在处理器可执行软件模块中实施,该处理器可执行软件模块可驻留在非瞬态计算机可读或处理器可读存储介质上。非瞬态计算机可读或处理器可读存储介质可以是能被计算机或处理器访问的任何存储介质。作为示例而非限定,此类非瞬态计算机可读或处理器可读介质可包括RAM、ROM、EEPROM、闪存、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或能被用来存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据而碟(disc)用激光以光学方式再现数据。以上的组合也被包括在非瞬态计算机可读和处理器可读介质的范围内。附加地,方法或算法的操作可作为一条代码和/或指令或者任何代码和/或指令组合或集合而驻留在可被纳入计算机程序产品中的非瞬态处理器可读介质和/或计算机可读介质上。
提供所公开的实施例的先前描述是为了使本领域任何技术人员皆能制作或使用本权利要求。对这些实施例的各种修改对于本领域技术人员而言将是显而易见的,并且本文所定义的普适原理可被应用于其他实施例和实现而不会脱离各权利要求的范围。由此,本公开并非旨在被限定于本文中所描述的实施例和实现,而是应被授予与所附权利要求以及本文所公开的原理和新颖特征一致的最广义的范围。
Claims (30)
1.一种用于由人工智能(AI)处理器对神经网络进行处理的方法,所述方法包括:
接收AI处理器操作条件信息;
响应于所述操作条件信息而动态地调整所述神经网络的分段的AI量化水平;以及
使用经调整的AI量化水平对所述神经网络的所述分段进行处理。
2.如权利要求1所述的方法,其中动态地调整所述神经网络的所述分段的所述AI量化水平包括:
响应于所述操作条件信息指示增加了对所述AI处理器的处理能力的约束的操作条件的水平而提高所述AI量化水平,以及
响应于操作条件信息指示减少了对所述AI处理器的所述处理能力的约束的所述操作条件的水平而降低所述AI量化水平。
3.如权利要求1所述的方法,其中所述操作条件信息是包括以下各项的群中的至少一者:温度、功耗、操作频率、或处理单元利用率。
4.如权利要求1所述的方法,其中动态地调整所述神经网络的所述分段的所述AI量化水平包括:调整用于对要由所述神经网络的所述分段处理的权重值进行量化的所述AI量化水平。
5.如权利要求1所述的方法,其中动态地调整所述神经网络的所述分段的所述AI量化水平包括:调整用于对要由所述神经网络的所述分段处理的激活值进行量化的所述AI量化水平。
6.如权利要求1所述的方法,其中动态地调整所述神经网络的所述分段的所述AI量化水平包括:调整用于对要由所述神经网络的所述分段处理的权重值和激活值进行量化的所述AI量化水平。
7.如权利要求1所述的方法,其中:
所述AI量化水平被配置为指示要由所述神经网络处理以量化的值的动态比特;以及
使用所述经调整的AI量化水平对所述神经网络的所述分段进行处理包括:旁路掉与所述值的所述动态比特相关联的乘加器(MAC)的各部分。
8.如权利要求1所述的方法,进一步包括:
使用AI服务质量(QoS)因子来确定AIQoS值;以及
确定用于达成所述AIQoS值的所述AI量化水平。
9.如权利要求8所述的方法,其中所述AIQoS值表示针对由所述AI处理器生成的结果的准确度和所述AI处理器的吞吐量的目标。
10.一种人工智能(AI)处理器,包括:
动态量化控制器,所述动态量化控制器被配置成:
接收AI处理器操作条件信息;以及
响应于所述操作条件信息而动态地调整神经网络的分段的AI量化水平;以及
乘加器(MAC)阵列,所述MAC阵列被配置成使用经调整的AI量化水平对所述神经网络的所述分段进行处理。
11.如权利要求10所述的AI处理器,其中所述动态量化控制器被配置成使得动态地调整所述神经网络的所述分段的所述AI量化水平包括:
响应于所述操作条件信息指示增加了对所述AI处理器的处理能力的约束的操作条件的水平而提高所述AI量化水平,以及
响应于操作条件信息指示减少了对所述AI处理器的所述处理能力的约束的所述操作条件的水平而降低所述AI量化水平。
12.如权利要求10所述的AI处理器,其中所述动态量化控制器被配置成使得所述操作条件信息是包括以下各项的群中的至少一者:温度、功耗、操作频率、或处理单元利用率。
13.如权利要求10所述的AI处理器,其中所述动态量化控制器被配置成使得动态地调整所述神经网络的所述分段的所述AI量化水平包括:调整用于对要由所述神经网络的所述分段处理的权重值进行量化的所述AI量化水平。
14.如权利要求10所述的AI处理器,其中所述动态量化控制器被配置成使得动态地调整所述神经网络的所述分段的所述AI量化水平包括:调整用于对要由所述神经网络的所述分段处理的激活值进行量化的所述AI量化水平。
15.如权利要求10所述的AI处理器,其中所述动态量化控制器被配置成使得动态地调整所述神经网络的所述分段的所述AI量化水平包括:调整用于对要由所述神经网络的所述分段处理的权重值和激活值进行量化的所述AI量化水平。
16.如权利要求10所述的AI处理器,其中:
所述AI量化水平被配置为指示要由所述神经网络处理以量化的值的动态比特;以及
所述MAC阵列被配置成使得使用所述经调整的AI量化水平对所述神经网络的所述分段进行处理包括:旁路掉与所述值的所述动态比特相关联的MAC的各部分。
17.如权利要求10所述的AI处理器,进一步包括AI服务质量(QoS)设备,所述QoS设备被配置成:
响应于确定要动态地配置神经网络量化而使用AIQoS因子来确定AIQoS值;以及
确定用于达成所述AIQoS值的所述AI量化水平。
18.如权利要求17所述的AI处理器,其中所述AIQoS设备被配置成使得所述AIQoS值表示针对由所述AI处理器生成的结果的准确度和所述AI处理器的吞吐量的目标。
19.一种计算设备,包括:
人工智能(AI)处理器,所述AI处理器包括动态量化控制器,所述动态量化控制器被配置成:
接收AI处理器操作条件信息;以及
响应于所述操作条件信息而动态地调整神经网络的分段的AI量化水平;并且
所述AI处理器进一步包括乘加器(MAC)阵列,所述MAC阵列被配置成使用经调整的AI量化水平对所述神经网络的所述分段进行处理。
20.如权利要求19所述的计算设备,其中所述动态量化控制器被配置成通过以下操作来动态地调整所述神经网络的所述分段的所述AI量化水平:
响应于所述操作条件信息指示增加了对所述AI处理器的处理能力的约束的操作条件的水平而提高所述AI量化水平,以及
响应于操作条件信息指示减少了对所述AI处理器的所述处理能力的约束的所述操作条件的水平而降低所述AI量化水平。
21.如权利要求19所述的计算设备,其中所述动态量化控制器被配置成使得所述操作条件信息是包括以下各项的群中的至少一者:温度、功耗、操作频率、或处理单元利用率。
22.如权利要求19所述的计算设备,其中所述动态量化控制器被配置成通过以下操作来动态地调整所述神经网络的所述分段的所述AI量化水平:调整用于对要由所述神经网络的所述分段处理的权重值进行量化的所述AI量化水平。
23.如权利要求19所述的计算设备,其中所述动态量化控制器被配置成通过以下操作来动态地调整所述神经网络的所述分段的所述AI量化水平:调整用于对要由所述神经网络的所述分段处理的激活值进行量化的所述AI量化水平。
24.如权利要求19所述的计算设备,其中所述动态量化控制器被配置成通过以下操作来动态地调整所述神经网络的所述分段的所述AI量化水平:调整用于对要由所述神经网络的所述分段处理的权重值和激活值进行量化的所述AI量化水平。
25.如权利要求19所述的计算设备,其中:
所述AI量化水平被配置为指示要由所述神经网络处理以量化的值的动态比特;以及
所述MAC阵列被配置成通过以下操作来使用所述经调整的AI量化水平对所述神经网络的所述分段进行处理:旁路掉与所述值的所述动态比特相关联的MAC的各部分。
26.如权利要求19所述的计算设备,进一步包括AI服务质量(QoS)设备,所述QoS设备被配置成:
使用AIQoS因子来确定AIQoS值;以及
确定用于达成所述AIQoS值的所述AI量化水平。
27.如权利要求26所述的计算设备,其中所述AIQoS设备被配置成使得所述AIQoS值表示针对由所述AI处理器生成的结果的准确度和所述AI处理器的吞吐量的目标。
28.一种人工智能(AI)处理器,包括:
用于接收AI处理器的操作条件信息的装置;
用于响应于所述操作条件信息而动态地调整神经网络的分段的AI量化水平的装置;以及
用于使用经调整的AI量化水平对所述神经网络的所述分段进行处理的装置。
29.如权利要求28所述的AI处理器,其中用于动态地调整所述神经网络的所述分段的所述AI量化水平的装置包括:
用于响应于所述操作条件信息指示增加了对所述AI处理器的处理能力的约束的操作条件的水平而提高所述AI量化水平的装置,以及
用于响应于操作条件信息指示减少了对所述AI处理器的所述处理能力的约束的所述操作条件的水平而降低所述AI量化水平的装置。
30.如权利要求28所述的AI处理器,其中所述操作条件信息是包括以下各项的群中的至少一者:温度、功耗、操作频率、或处理单元利用率。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/210,644 US20220309314A1 (en) | 2021-03-24 | 2021-03-24 | Artificial Intelligence Processor Architecture For Dynamic Scaling Of Neural Network Quantization |
US17/210,644 | 2021-03-24 | ||
PCT/US2022/017855 WO2022203809A1 (en) | 2021-03-24 | 2022-02-25 | Artificial intelligence processor architecture for dynamic scaling of neural network quantization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117015785A true CN117015785A (zh) | 2023-11-07 |
Family
ID=80819888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280022374.6A Pending CN117015785A (zh) | 2021-03-24 | 2022-02-25 | 用于神经网络量化的动态缩放的人工智能处理器架构 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220309314A1 (zh) |
EP (1) | EP4315174A1 (zh) |
JP (1) | JP2024513736A (zh) |
KR (1) | KR20230157968A (zh) |
CN (1) | CN117015785A (zh) |
BR (1) | BR112023018631A2 (zh) |
WO (1) | WO2022203809A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230161632A1 (en) * | 2021-09-27 | 2023-05-25 | Advanced Micro Devices, Inc. | Platform resource selction for upscaler operations |
-
2021
- 2021-03-24 US US17/210,644 patent/US20220309314A1/en active Pending
-
2022
- 2022-02-25 KR KR1020237031126A patent/KR20230157968A/ko unknown
- 2022-02-25 CN CN202280022374.6A patent/CN117015785A/zh active Pending
- 2022-02-25 EP EP22711725.6A patent/EP4315174A1/en active Pending
- 2022-02-25 BR BR112023018631A patent/BR112023018631A2/pt unknown
- 2022-02-25 WO PCT/US2022/017855 patent/WO2022203809A1/en active Application Filing
- 2022-02-25 JP JP2023557775A patent/JP2024513736A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022203809A1 (en) | 2022-09-29 |
EP4315174A1 (en) | 2024-02-07 |
BR112023018631A2 (pt) | 2023-10-10 |
KR20230157968A (ko) | 2023-11-17 |
JP2024513736A (ja) | 2024-03-27 |
US20220309314A1 (en) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102189115B1 (ko) | 대칭형 다중 프로세서를 구비한 시스템 온-칩 및 이를 위한 최대 동작 클럭 주파수 결정 방법 | |
US9158351B2 (en) | Dynamic power limit sharing in a platform | |
CN107924225B (zh) | 用于动态地调整存储器状态转变定时器的系统和方法 | |
US7870400B2 (en) | System having a memory voltage controller which varies an operating voltage of a memory and method therefor | |
JP7110278B2 (ja) | 負荷を均衡化するための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム | |
CN103309431A (zh) | 动态频率调整 | |
CN117015785A (zh) | 用于神经网络量化的动态缩放的人工智能处理器架构 | |
KR20170053630A (ko) | 압축 알고리즘들을 위한 캐시 뱅크 스프레딩 | |
US20190026629A1 (en) | Systems and Methods for Overshoot Compensation | |
CN117223009A (zh) | 数据流深度神经网络硬件加速器的性能缩放 | |
WO2019118251A1 (en) | Performance level adjustments in memory devices | |
US10296074B2 (en) | Fine-grained power optimization for heterogeneous parallel constructs | |
CN111831592A (zh) | 数据处理系统及其操作方法 | |
US12021523B2 (en) | Integrated circuit and computing system performing dynamic voltage and frequency scaling and method of operating integrated circuit | |
US11399344B2 (en) | System and method for SoC idle power state control based on I/O operation characterization | |
US20220335280A1 (en) | Artificial intelligence semiconductor processor and operating method of artificial intelligence semiconductor processor | |
US12019500B2 (en) | Integrated circuit performing dynamic voltage and frequency scaling operation and operating method for same | |
US20240053809A1 (en) | Integrated circuit capable of performing dynamic voltage and frequency scaling operation based on workload and operating method thereof | |
CN117590925A (zh) | 集成电路及其操作方法 | |
KR102666973B1 (ko) | 적응형 동적 클록 및 전압 스케일링 | |
US20220179686A1 (en) | Operating methods of computing devices and computer-readable storage media storing instructions | |
CN111656360B (zh) | 稀疏性利用的系统和方法 | |
WO2020166084A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
Kang et al. | A variation-tolerant dima via on-chip training | |
KR20230162778A (ko) | 심층 신경망 가중치들을 위한 압축 기법 |
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 |