CN116227565A - 一种编译优化系统及精度可变的神经网络加速器 - Google Patents
一种编译优化系统及精度可变的神经网络加速器 Download PDFInfo
- Publication number
- CN116227565A CN116227565A CN202310140042.4A CN202310140042A CN116227565A CN 116227565 A CN116227565 A CN 116227565A CN 202310140042 A CN202310140042 A CN 202310140042A CN 116227565 A CN116227565 A CN 116227565A
- Authority
- CN
- China
- Prior art keywords
- neural network
- preset
- unit
- operator
- model
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 101
- 238000005457 optimization Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 56
- 238000003062 neural network model Methods 0.000 claims abstract description 54
- 238000004364 calculation method Methods 0.000 claims abstract description 32
- 238000013139 quantization Methods 0.000 claims description 44
- 230000004913 activation Effects 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000001514 detection method Methods 0.000 claims description 18
- 230000004048 modification Effects 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 7
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000009825 accumulation Methods 0.000 claims description 2
- 230000000295 complement effect Effects 0.000 abstract description 3
- 238000004088 simulation Methods 0.000 abstract description 3
- 238000001994 activation Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- GLGLUQVVDHRLQK-WRBBJXAJSA-N n,n-dimethyl-2,3-bis[(z)-octadec-9-enoxy]propan-1-amine Chemical compound CCCCCCCC\C=C/CCCCCCCCOCC(CN(C)C)OCCCCCCCC\C=C/CCCCCCCC GLGLUQVVDHRLQK-WRBBJXAJSA-N 0.000 description 5
- 238000013145 classification model Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003925 brain function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005312 nonlinear dynamic Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请提供一种编译优化系统及精度可变的神经网络加速器,编译优化系统输出二进制文件和最优比特位宽,该编译优化系统可以消除跨平台部署神经网络模型的障碍,并可以量化与编译神经网络模型,指导神经网络加速器为不同的神经网络选择最合适的位宽。神经网络加速器和编译优化系统是相辅相成的,编译优化系统基于神经网络加速器的推理逻辑实现模拟计算方法,可以指导精度可变的神经网络加速器的比特位宽的选择。精度可变的神经网络加速器可以重新配置每个处理单元,从而可以实现神经网络模型中4bit、8bit、16bit权重和算子层输入的任意组合的乘法计算,并将位宽配置为编译优化系统提供的最优比特位宽。
Description
技术领域
本申请涉及神经网络模型技术领域,尤其涉及一种编译优化系统及精度可变的神经网络加速器。
背景技术
神经网络模型是一种模拟实际神经网络的数学方法,它由大量的处理单元互相连接而成,神经网络模型能够反映人脑功能的许多基本特征,是一种高度复杂的非线性动力学习系统。
在构建神经网络模型时,不同的开发者可能采用不同的深度学习平台,例如,符号数学系统Tensorflow、开源的Python机器学习库Pytorch、卷积神经网络框架Caffe和Python编写的开源人工神经网络库Keras等,不同的开发者可能会采用上述的一种或几种学习平台来构建神经网络模型,这样就会出现跨平台部署神经网络模型的障碍。
另外,传统的编译优化系统主要是为通用计算设备设计的,例如,CPU和GPU等,而越来越多的场景开始采用定制化的神经网络加速器,目前还没有通用框架完善地解决在定制化的神经网络加速器部署神经网络模型。并且,传统的神经网络加速器仅能支持特定精度数据的计算,例如INT8和FP16等,而无法进行多种比特位宽数据的计算。
发明内容
本申请提供了一种编译优化系统及精度可变的神经网络加速器,可以消除跨平台部署神经网络模型的障碍,同时通过精度可变的神经网络加速器实现多种比特位宽数据的计算。
第一方面,本申请一些实施例提供一种编译优化系统,包括:
转换模块,用于将不同格式的神经网络模型转换为预设格式模型,以及,根据所述预设格式模型和预设比特位宽值确定预设量化尺度因子;
推理模块,用于根据所述预设格式模型和预设量化尺度因子对比所述神经网络模型在不同比特位宽值的性能值,以根据所述性能值确定最优比特位宽值对应的最优量化尺度因子;
编译模块,用于根据所述预设格式模型和所述最优量化尺度因子生成二进制文件,所述二进制文件用于神经网络加速器执行推理运算,所述神经网络加速器与所述编译优化系统建立数据通信连接。
在一些实施例中,所述预设比特位宽值包括预设权重比特位宽值,所述转换模块还用于:
获取所述神经网络加速器支持的所述预设权重比特位宽值;
获取所述预设格式模型各个算子层的权重,以确定所述模型各个算子层的权重的动态范围;
根据所述权重的动态范围和所述预设权重比特位宽值确定所述模型各个算子层的权重的预设量化尺度因子。
在一些实施例中,所述预设比特位宽值还包括预设激活比特位宽值,所述转换模块还用于:
获取所述神经网络加速器支持的所述预设激活比特位宽值;
获取无标签的输入图片数据;
根据所述输入图片数据获取所述预设格式模型各个算子层的激活动态范围;
根据所述激活动态范围和所述预设激活比特位宽值计算所述模型各个算子层的激活的量化尺度因子。
在一些实施例中,所述所述模型各个卷积算子层的预设量化尺度因子包括权重因子、输入因子和输出因子,所述推理模块还用于:
根据所述权重因子对所述卷积算子层的权重执行量化,以生成量化权重;
根据所述输入因子对所述卷积算子层的输入执行量化,以生成量化输入;
对所述量化权重和所述量化输入执行溢出检测,以及对溢出检测完成的所述量化权重和所述量化输入执行卷积操作;
累加卷积操作后的结果,以生成部分和;
分别对所述部分和、移位后的所述部分和、根据所述输出因子对所述卷积算子层量化后的偏置、所述偏置和所述部分和相加运算后的结果执行溢出检测,以输出所述卷积算子层的卷积运算结果;
完成所述预设格式模型的所有算子层的计算后,根据最终运算结果计算所述预设格式模型在用所述预设比特位宽进行表示时的准确率。
在一些实施例中,所述推理模块还用于:
为所述神经网络模型匹配多个神经网络加速器支持的预设比特位宽值;
对比所述神经网络模型在不同预设比特位宽值下的准确率;
根据所述准确率确定所述神经网络模型的最优比特位宽值。
在一些实施例中,所述编译模块包括中间表示单元、硬件修改单元、节点调度单元、算子分组单元、指令节点生成单元、计算图生成单元和二进制文件生成单元,其中:
中间表示单元被配置为,获取所述预设格式模型中的图表和节点;
硬件修改单元被配置为,将所述图表中相邻的多个算子融合为硬件算子;
节点调度单元被配置为,将经过所述硬件修改单元处理过的所述图表中的所有节点执行拓扑排序,以生成各个节点按照被执行次序排序的节点列表;
算子分组单元被配置为,将所述节点列表重构为由节点组构成的节点组列表,所述节点组包括多个在所述神经网络加速器内部连续计算的节点;
指令节点生成单元被配置为,解析所述节点组列表,以生成所述神经网络加速器需要的配置信息;
计算图生成单元被配置为,按照预设计算顺序排列所述配置信息;
二进制文件生成单元被配置为,对所述配置信息使用预设位数的无符号正数进行编码,以生成所述神经网络加速器执行推理所需要的二进制文件。
由以上技术方案可知,本申请部分实施例提供一种编译优化系统,转换模块先将不同格式的神经网络模型转换为ONNX格式,消除跨平台部署的障碍;再配置不同比特位宽,通过应用少量无标签数据获取权重和激活的动态范围,以确定不同比特位宽相应的量化尺度因子。推理模块实现了硬件逻辑下的推理计算,可以得到模型在不同比特位宽下的准确率,从而为神经网络加速器选取最合适的比特位宽。编译模块利用最优比特位宽所对应的量化尺度因子,将ONNX模型编译为神经网络加速器执行推理需要的二进制文件。最后,编译优化系统输出二进制文件和最优比特位宽,该编译优化系统可以消除编译优化系统跨平台部署神经网络模型的障碍,并可以量化与编译神经网络模型,指导神经网络加速器为不同的神经网络选择最合适的位宽。
第二方面,本申请一些实施例基于第一方面的编译优化系统还提供一种精度可变的神经网络加速器,该神经网络加速器与第一方面的任一个编译优化系统建立数据通信连接,所述精度可变的神经网络加速器包括指令管理单元、静态随机存取存储单元、权重译码单元、精度可变处理单元阵列、部分和处理单元和非线性函数处理单元:
指令管理单元,被配置为获取二进制文件,所述二进制文件由所述编译优化系统生成,所述二进制文件包括指令二进制文件,所述指令二进制文件中包括用于控制所述神经网络加速器运行的操作指令;
静态随机存取存储单元,被配置为获取输入特征图,以及对所述输入特征图执行预处理;所述预处理包括对所述输入特征图至少执行上采样、裁剪和填充;
权重译码单元,被配置为获取包含神经网络模型权重的权重二进制文件;
精度可变处理单元阵列,包括多个可重新配置的处理单元,所述精度可变处理单元阵列被配置为基于所述指令二进制文件重新配置所述处理单元,以利用多种比特位宽分别表示权重、算子层输入和算子层输出,以及,根据所述权重和所述算子层输入执行卷积算子的乘法运算;
部分和处理单元,被配置为累加所述乘法运算的部分运算结果,得到部分卷积和;
非线性函数处理单元,被配置为基于所述部分卷积和执行非线性算子的运算,以生成所述非线性算子的输出特征图。
在一些实施例中,所述精度可变处理单元阵列包括权重预加载器,所述权重预加载器被配置为:
通过所述权重预加载器周期性地从所述权重译码单元获取所述神经网络模型的权重,以更新所述权重。
在一些实施例中,所述指令管理单元进一步被配置为:
响应于所述神经网络加速器的启动事件,将所述操作指令添加到指令队列中,以使所述指令队列中的操作指令按照预设顺序被执行。
在一些实施例中,所述精度可变处理单元阵列进一步被配置为:
获取所述处理单元的初始布局形式;
将所述处理单元划分为第一预设数量个处理子单元,以及,构建子单元组,所述子单元组包括第二预设数量个所述处理子单元;所述处理子单元用于对预设比特位的激活和权重执行乘法运算;
根据所述初始布局形式、所述第一预设数量和所述第二预设数量对乘法运算的运算结果执行移位和累加,以计算目标比特位的激活和权重的乘法运算。
由以上技术方案可知,本申请部分实施例提供一种精度可变的神经网络加速器,该神经网络加速器和编译优化系统是相辅相成的,编译优化系统基于神经网络加速器的推理逻辑实现模拟计算方法,可以指导精度可变的神经网络加速器的比特位宽的选择。而精度可变的神经网络加速器可以重新配置每个处理单元,从而可以实现神经网络模型中4bit、8bit、16bit权重和算子层输入的任意组合的乘法计算,并将位宽配置为编译优化系统提供的最优比特位宽。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一些实施例提供的编译优化系统结构示意图;
图2为本申请一些实施例提供的以卷积层为例,推理模块计算过程示意图;
图3为本申请一些实施例提供的编译模块结构示意图;
图4为本申请一些实施例提供的精度可变的神经网络加速器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。
在构建神经网络模型时,不同的开发者可能采用不同的深度学习平台,例如,符号数学系统Tensorflow、开源的Python机器学习库Pytorch、卷积神经网络框架Caffe和Python编写的开源人工神经网络库Keras等,不同的开发者可能会采用上述的一种或几种学习平台来构建神经网络模型,这样就会出现跨平台部署神经网络模型的障碍。
为了消除编译优化系统跨平台部署神经网络模型的障碍,本申请提供一种编译优化系统。图1为本申请一些实施例提供的编译优化系统结构示意图,如图1所示,在一些实施例中,编译优化系统可以包括转换模块100、推理模块200和编译模块300。其中,转换模块100,用于将不同格式的神经网络模型转换为预设格式模型,以及,根据预设格式模型和预设比特位宽值确定预设量化尺度因子;推理模块200,用于根据预设格式模型和预设量化尺度因子对比神经网络模型在不同比特位宽值的性能值,以根据性能值确定最优比特位宽值对应的最优量化尺度因子;编译模块300,用于根据预设格式模型和最优量化尺度因子生成二进制文件,该二进制文件用于神经网络加速器执行推理运算,神经网络加速器与编译优化系统建立数据通信连接。
为了便于对本申请技术方案的进一步理解,下面结合具体实例对编译优化系统中各个模块进行详细介绍。
转换模块100,用于将不同格式的神经网络模型转换为预设格式模型,以及,根据预设格式模型和预设比特位宽值确定预设量化尺度因子。在一些实施例中,预设格式模型可以为(Open Neural Network Exchange,ONNX)开放神经网络交换格式,以下简称ONNX模式,ONNX模式作为一种表示深度神经网络的可访问格式可以消除跨平台部署的障碍。这样,转换模块100可以先将不同格式的神经网络模型转换为统一的ONNX模式,在完成模型格式转换后,根据ONNX模式和预设比特位宽值确定预设量化尺度因子。
在一些实施例中,预设比特位宽值包括预设权重比特位宽值,转换模块100还用于获取神经网络加速器支持的预设权重比特位宽值,并获取预设格式模型各个算子层的权重,以确定模型各个算子层的权重的动态范围,再根据权重的动态范围和预设权重比特位宽值确定模型各个算子层的权重的预设量化尺度因子。在另一些实施例中,预设比特位宽值还包括预设激活比特位宽值,转换模块100还用于获取神经网络加速器支持的预设激活比特位宽值,获取无标签的输入图片数据,根据输入图片数据获取预设格式模型各个算子层的激活动态范围,再根据激活动态范围和预设激活比特位宽值计算模型各个算子层的激活的量化尺度因子。
示例性的,可以通过应用少量无标签数据,获取各个算子层的权重和激活的动态范围,再根据神经网络加速器支持的比特位宽值计算得到模型各个算子层的权重和激活的预设量化尺度因子。在一些实施例中,转换模块100还支持层级算子融合、添加层的维度信息、添加额外的层、调整特定层的输入顺序和修改权重参数存储方式等可选操作,对此本申请不作具体限定。
推理模块200,用于根据预设格式模型和预设量化尺度因子对比神经网络模型在不同比特位宽值的性能值,以根据性能值确定最优比特位宽值对应的最优量化尺度因子。
在一些实施例中,模型各个卷积算子层的预设量化尺度因子包括权重因子、输入因子和输出因子,推理模块200还用于:根据权重因子对卷积算子层的权重执行量化,以生成量化权重,根据输入因子对卷积算子层的输入执行量化,以生成量化输入;对量化权重和量化输入执行溢出检测,以及对溢出检测完成的量化权重和量化输入执行卷积操作;累加卷积操作后的结果,以生成部分和;分别对部分和、移位后的部分和、根据输出因子对卷积算子层量化后的偏置、偏置和部分和相加运算后的结果执行溢出检测,以输出卷积算子层的卷积运算结果,在完成所述预设格式模型的所有算子层的计算后,再根据卷积运算的最终运算结果计算预设格式模型在用预设比特位宽进行表示时的准确率。
示例性的,推理模块200支持基于神经网络加速器的推理逻辑的模拟计算,可以对神经网络模型进行不同的比特位宽的配置,并完成性能评估。在一些实施例中,根据预设格式模型评估预设比特位宽值先需要进行预设格式模型所有的算子层的运算,图2为本申请一些实施例提供的以卷积层为例,推理模块计算过程示意图,如图2所示,其中卷积算子层的计算包括如下步骤:
步骤一:nw、na和np分别是卷积层权重、激活和部分和的比特位宽,在本申请实施例中,激活可以理解为算子层的输出。其中,nw和na是可自由配置的。在转换模块100配置nw可以获取卷积层权重的量化尺度因子Sw,配置na可以获取输入和输出的量化尺度因子Sx和Sy;
步骤二:用量化尺度因子Sw和Sx分别对卷积层的权重和输入进行量化,然后执行溢出检测;
步骤三:用量化后的权重和输入进行卷积操作,累加得到部分和再进行溢出检测;
步骤四:对部分和进行移位操作,移动的位数可以为Sy-(Sx+Sw),并进行溢出检测;
步骤五:用量化尺度因子Sy对卷积层的偏置进行量化,并进行溢出检测;
步骤六:将量化后的偏置与移位后的部分和相加,再次进行溢出检测,输出卷积层最终的计算结果。
在上述计算过程中,单个卷积层输出的计算结果是一个多维数组,神经网络模型最后一层输出的可能是类别、检测框和概率,根据神经网络模型不同数据图片上的最后输出结果可以统计模型的准确率。例如,在完成模型所有算子层的计算后,可以统计得到图像分类模型的概率最大的前K个结果的准确率即Top-k准确率或目标检测模型的平均精度即mAP,最后再根据Top-k准确率或mAP,可以判断所配置的比特位宽是否合理。
为了根据准确率确定神经网络模型的最优比特位宽值,在一些实施例中,推理模块200还用于为神经网络模型匹配多个神经网络加速器支持的预设比特位宽值,并对比神经网络模型在不同预设比特位宽值下的准确率,最后,根据准确率确定神经网络模型的最优比特位宽值。
示例性的,推理模块200可以通过比较神经网络模型在不同比特位宽值下的性能表现,确定最优的量化比特位宽。如下为不同神经网络激活的比特位宽选取参照表,表中以目标检测模型和分类模型为例,示意性的列出如表中的模型,展示了在不同比特位宽值表示算子层输出时的准确率。
(a)目标检测模型
(b)分类模型
由上述表中展示的结果可知,对于目标检测模型,当激活量化使用的比特数小于10时,量化后的目标检测网络因准确率较低将无法工作,当比特数大于10时,网络精度基本满足要求。而对于分类模型,比特数可以减少到8,精度即可满足需求。
编译模块300,用于根据预设格式模型和最优量化尺度因子生成二进制文件,该二进制文件用于神经网络加速器执行推理运算,神经网络加速器与编译优化系统建立数据通信连接。图3为本申请一些实施例提供的编译模块结构示意图,如图3所示,在一些实施例中,编译模块300可以包括中间表示单元310、硬件修改单元320、节点调度单元330、算子分组单元340、指令节点生成单元350、计算图生成单元360和二进制文件生成单元370,编译模块300基于神经网络加速器的计算框架,利用转换模块100输出的ONNX模型和推理模块200输出的最优量化尺度因子,实现编译过程中的算子融合、算子分组和操作流优化等,编译模块300各个单元执行的功能介绍如下。
中间表示单元310被配置为,获取预设格式模型中的图表和节点。中间表示单元310可以对转换模块100输出的ONNX模型进行处理,把ONNX模型的节点、参数和计算图等信息解析成新的数据结构,通过定义图表Graph和节点Node的数据结构将ONNX模型解析为新的表示形式。示例性的,图表Graph的定义可以包括输入Inputs、输出ouputs、名称name、节点nodes等主要成员,用于解析ONNX模型的输入节点、输出节点、模型名称和运算节点,所有的输入节点、输出节点和运算节点通过定义Node数据结构实现。Node的定义可以包括输入节点parents、输出节点children、节点名称name、输出维度shape、输入维度input_shape、节点索引index、算子类型op_type、数据data等主要成员。ONNX模型中的张量数据和运算参数、硬件位宽、量化尺度因子将存储在相应节点Node的数据data中。
硬件修改单元320被配置为,将图表中相邻的多个算子融合为硬件算子。示例性的,硬件修改单元320可以将中间表示单元310生成的图表Graph中相邻的若干个算子融合成一个硬件算子,方便神经网络加速器的计算。在一些实施例中,该硬件算子中不包含任何分支结构,除第一个算子外,其他包含在硬件算子里的算子都有且只有一个输入节点,除最后一个算子外,其他包含在硬件算子里的算子都有且只有一个输出节点。
节点调度单元330被配置为,将经过硬件修改单元320处理过的图表中的所有节点执行拓扑排序,以生成各个节点按照被执行次序排序的节点列表。示例性的,可以将经过硬件修改的图表Graph中包含的所有节点Node进行拓扑排序,得到所有节点Node按被执行次序排序的节点列表。
算子分组单元340被配置为,将节点列表重构为由节点组构成的节点组列表,节点组包括多个可以在神经网络加速器内部连续计算的节点。示例性的,算子分组单元340可以将节点调度单元330得到的节点列表重构为一个由节点组Node Group构成的节点组列表,每个节点组可以由若干个能在神经网络加速器内部连续计算的节点构成。
指令节点生成单元350被配置为,解析节点组列表,以生成神经网络加速器需要的配置信息。示例性的,指令节点生成单元350可以对算子分组单元340的节点组列表进行解析,将每个节点组列表Node Group中的每一个算子解析成神经网络加速器需要的指令cmd、权重weight、直接内存访问(Direct Memory Access,DMA)和数据节点DataNode等信息。其中,指令cmd用于控制神经网络加速器的运行,包括启动加速器的运算、配置加速器的比特位宽为最优比特位宽等。根据转换模块100生成的量化尺度因子将模型原始的权重量化至神经网络加速器待处理的权重weight。直接内存访问DMA负责在神经网络加速器中传输信息,例如,可以包括数据输入直接内存访问(Data Input Direct Memory Access,DIDMA)、数据输出直接内存访问(Data Output Direct Memory Access,DODMA)、指令直接内存访问(Command Direct Memory Access,CDMA)和权重直接内存访问(Weight Direct MemoryAccess,WDMA)等。
其中,数据输入直接内存访问DIDMA负责从动态随机存取内存DRAM输入到静态随机存取存储器SRAM的数据传输,数据输出直接内存访问DODMA负责从静态随机存取存储器SRAM输出到动态随机存取内存DRAM的数据传输,指令直接内存访问CDMA负责向神经网络加速器传输加速器运行所需要的指令,权重直接内存访问WDMA负责向神经网络加速器传输加速器待处理的权重。数据节点DataNode描述了存在动态随机存取内存DRAM空间里数据的信息,方便DIDMA从动态随机存取内存DRAM中读取数据、DODMA将数据存储到动态随机存取内存DRAM等。
计算图生成单元360被配置为,按照预设计算顺序排列配置信息。示例性的,可以先定义指令直接内存访问CDMA、权重直接内存访问WDMA、数据输入直接内存访问DIDMA、数据输出直接内存访问DODMA、数据节点DataNode等计算节点,然后按照实际计算顺序排列配置信息,可以生成计算图。
二进制文件生成单元370被配置为,对配置信息使用预设位数的无符号正数进行编码,以生成神经网络加速器执行推理所需要的二进制文件。示例性的,在一些实施例中,二进制文件生成单元370可以将计算图生成单元360中定义的计算节点的成员变量使用32位无符号整数进行编码表示,得到神经网络加速器执行推理需要的二进制文件。例如,指令cmd被表示为cmd.bin,权重weight被表示为weight.bin等。
由以上技术方案可知,上述实施例提供的编译优化系统中,转换模块100先将不同格式的神经网络模型转换为ONNX格式,消除跨平台部署的障碍;再配置不同比特位宽,通过应用少量无标签数据获取权重和激活的动态范围,以确定不同比特位宽相应的量化尺度因子。推理模块200实现了硬件逻辑下的推理计算,可以得到模型在不同比特位宽下的准确率,从而为神经网络加速器选取最合适的比特位宽。编译模块300利用最优比特位宽所对应的量化尺度因子,将ONNX模型编译为神经网络加速器执行推理需要的二进制文件。最后,编译优化系统输出二进制文件和最优比特位宽,该编译优化系统可以消除编译优化系统跨平台部署的障碍,并可以量化与编译神经网络模型,指导神经网络加速器为不同的神经网络选择最合适的位宽。
基于上述实施例中的编译优化系统,本申请部分实施例还提供一种精度可变的神经网络加速器400。传统的编译优化系统主要是为通用计算设备设计的,例如,CPU和GPU等,而越来越多的场景开始采用定制化的神经网络加速器,目前还没有通用框架完善地解决在定制化的神经网络加速器部署神经网络模型。并且,传统的神经网络模型加速器仅能支持特定精度数据的计算,例如INT8和FP16等,而无法进行多种比特位宽数据的计算。
为了实现多种比特位宽数据的计算,本申请部分实施例中的神经网络加速器400可以与上述实施例中的编译优化系统建立数据通信连接。图4为本申请一些实施例提供的精度可变的神经网络加速器的结构示意图,如图4所示,在一些实施例中,精度可变的神经网络加速器400可以包括指令管理单元410、静态随机存取存储单元420、权重译码单元430、精度可变处理单元阵列440、部分和处理单元450和非线性函数处理单元460。
在一些实施例中,神经网络加速器待处理的输入图片数据和编译模块300生成的二进制文件存放在动态随机存取内存DRAM中,下面结合实例对神经网络加速器400的各个单元进行详细介绍。
指令管理单元410被配置为获取二进制文件,该二进制文件由编译优化系统生成。在一些实施例中,该二进制文件包括指令二进制文件,该指令二进制文件中包括用于控制神经网络加速器运行的操作指令。示例性的,指令管理单元410可以通过指令直接内存访问CDMA从动态随机存取内存DRAM中获取二进制文件如指令cmd.bin文件,在神经网络加速器400开始工作时将其加载到指令队列中。这些指令将按照顺序被执行,用于控制神经加速器的运行。
静态随机存取存储单元420被配置为获取输入特征图,以及对输入特征图执行预处理;预处理包括对输入特征图至少执行上采样、裁剪和填充。在一些实施例中,静态随机存取存储单元420可以被配置为两个子单元,分别用于存储神经网络模型算子层的输入数据和输出数据,并与动态随机存取内存进行数据交互。静态随机存取存储单元420通过数据输入直接内存访问DIDMA从动态随机存取内存DRAM中获取输入特征图Input FMAP,并执行上采样、裁剪和填充等操作,然后输出至精度可变处理单元阵列440。静态随机存取存储单元420是用于存储中间层数据,并与DRAM交互传输数据。在一些实施例中,它可以被均分为子单元Bank A和子单元Bank B,分别用于存储当前算子层的输入数据和输出数据。
权重译码单元430被配置为获取包含神经网络模型权重的权重二进制文件,例如,可以通过权重直接内存访问WDMA从动态随机存取内存DRAM中获取权重的二进制文件weight.bin。
精度可变(processing element,PE)处理单元阵列440包括多个可重新配置的处理单元,为了便于描述,以下可简称PE阵列440,PE阵列440被配置为基于指令二进制文件重新配置处理单元,以利用多种比特位宽分别表示权重、算子层输入和算子层输出,以及,根据权重和算子层输入执行卷积算子的乘法运算。在一些实施例中,响应于神经网络加速器的启动事件,指令管理单元410可以将操作指令添加到指令队列中,以使指令队列中的操作指令按照预设顺序被执行,则指令管理单元410可以通过指令启动PE阵列440开始执行卷积层的运算,并将PE阵列440的比特位宽配置为最优比特位宽值。
在一些实施例中,PE阵列440包括权重预加载器((Prefetch Weight Loader)4401,可以通过权重预加载器4401周期性地从权重译码单元获取神经网络模型的权重,以更新权重。同时,PE阵列440还可以获取处理单元的初始布局形式,并将处理单元划分为第一预设数量个处理子单元,以及,构建子单元组,子单元组可以包括第二预设数量个处理子单元,处理子单元用于对预设比特位的激活和权重执行乘法运算;最后,根据初始布局形式、第一预设数量和第二预设数量对乘法运算的运算结果执行移位和累加,以计算目标比特位的激活和权重的乘法运算。
示例性的,PE阵列440中的权重预加载器4401可以周期性地从权重译码单元430获取并更新PE阵列440需要处理的权重。在一些实施例中,PE阵列440可以由72个PE单元以3×3×8的形式进行布局而组成,因此可以处理8行的卷积运算以实现高度并行。每个PE单元都能进行重构,从而可以用多种比特位宽分别表示权重和激活的乘法运算,激活即算子层输入也是上一个算子层的输出,算子层输入和权重的比特位宽可以是4、8和16bit的任意组合。1个PE单元被分成16个小PE,每4个小PE组成1个PE组。每个小PE可以计算4bit算子层输入和4bit权重的乘法,而每个PE组可以通过对4bit乘法结果进行移位和累加来计算8bit激活和8bit权重的乘法,而1个完整的PE单元可以通过同样的方式来计算16bit激活和16bit权重的乘法。因此,通过上述实例实现了可以计算多种比特位宽数据的神经网络加速器。
部分和处理单元450被配置为累加乘法运算的部分运算结果,得到部分卷积和。例如,部分和处理单元450可以累加并存储PE阵列440中的运算结果,得到部分卷积和(partial sum,PSUM)。
非线性函数处理单元460被配置为基于部分卷积和执行非线性算子的运算,以生成非线性算子的输出特征图。示例性的,完成卷积层的运算后,非线性函数处理单元460可以执行数据归一化方法(Batch Normalization,BN)、线性整流函数(RectifiedLinearUnit,ReLU)和池化Pooling等非线性算子,同时这些算子的执行顺序也是可变的,使得神经网络加速器可以支持多种神经网络模型。非线性函数处理单元460计算得到的中间结果先存储在静态随机存取存储单元420中,再输送至PE阵列440继续重复PE阵列440、部分和处理单元450和非线性函数处理单元460的操作,直至完成所有算子层的运算。此外,在完成所有算子层的操作后,输出特征图这一运算结果也可以先存储于静态随机存取存储单元420中,再由数据输出直接内存访问DODMA输出至动态随机存取内存DRAM。
由以上技术方案可知,本申请实施例中的精度可变的神经网络加速器和编译优化系统是相辅相成的,编译优化系统基于神经网络加速器的推理逻辑实现模拟计算方法,可以指导精度可变的神经网络加速器的比特位宽的选择。而精度可变的神经网络加速器可以重新配置每个处理单元,从而可以实现神经网络模型中4bit、8bit、16bit权重和算子层输入的任意组合的乘法计算,并将位宽配置为编译优化系统提供的最优比特位宽。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种编译优化系统,其特征在于,包括:
转换模块,用于将不同格式的神经网络模型转换为预设格式模型,以及,根据所述预设格式模型和预设比特位宽值确定预设量化尺度因子;
推理模块,用于根据所述预设格式模型和预设量化尺度因子对比所述神经网络模型在不同比特位宽值的性能值,以根据所述性能值确定最优比特位宽值对应的最优量化尺度因子;
编译模块,用于根据所述预设格式模型和所述最优量化尺度因子生成二进制文件,所述二进制文件用于神经网络加速器执行推理运算,所述神经网络加速器与所述编译优化系统建立数据通信连接。
2.根据权利要求1所述的编译优化系统,其特征在于,所述预设比特位宽值包括预设权重比特位宽值,所述转换模块还用于:
获取所述神经网络加速器支持的所述预设权重比特位宽值;
获取所述预设格式模型各个算子层的权重,以确定所述模型各个算子层的权重的动态范围;
根据所述权重的动态范围和所述预设权重比特位宽值确定所述模型各个算子层的权重的预设量化尺度因子。
3.根据权利要求1所述的编译优化系统,其特征在于,所述预设比特位宽值还包括预设激活比特位宽值,所述转换模块还用于:
获取所述神经网络加速器支持的所述预设激活比特位宽值;
获取无标签的输入图片数据;
根据所述输入图片数据获取所述预设格式模型各个算子层的激活动态范围;
根据所述激活动态范围和所述预设激活比特位宽值计算所述模型各个算子层的激活的量化尺度因子。
4.根据权利要求1所述的编译优化系统,其特征在于,所述模型各个卷积算子层的所述预设量化尺度因子包括权重因子、输入因子和输出因子,所述推理模块还用于:
根据所述权重因子对所述卷积算子层的权重执行量化,以生成量化权重;
根据所述输入因子对所述卷积算子层的输入执行量化,以生成量化输入;
对所述量化权重和所述量化输入执行溢出检测,以及对溢出检测完成的所述量化权重和所述量化输入执行卷积操作;
累加卷积操作后的结果,以生成部分和;
分别对所述部分和、移位后的所述部分和、根据所述输出因子对所述卷积算子层量化后的偏置、所述偏置和所述部分和相加运算后的结果执行溢出检测,以输出所述卷积算子层的运算结果;
完成所述预设格式模型的所有算子层的计算后,根据最终运算结果计算所述预设格式模型在用所述预设比特位宽进行表示时的准确率。
5.根据权利要求1所述的编译优化系统,其特征在于,所述推理模块还用于:
为所述神经网络模型匹配多个神经网络加速器支持的预设比特位宽值;
对比所述神经网络模型在不同预设比特位宽值下的准确率;
根据所述准确率确定所述神经网络模型的最优比特位宽值。
6.根据权利要求1所述的编译优化系统,其特征在于,所述编译模块包括中间表示单元、硬件修改单元、节点调度单元、算子分组单元、指令节点生成单元、计算图生成单元和二进制文件生成单元,其中:
中间表示单元被配置为,获取所述预设格式模型中的图表和节点;
硬件修改单元被配置为,将所述图表中相邻的多个算子融合为硬件算子;
节点调度单元被配置为,将经过所述硬件修改单元处理过的所述图表中的所有节点执行拓扑排序,以生成各个节点按照被执行次序排序的节点列表;
算子分组单元被配置为,将所述节点列表重构为由节点组构成的节点组列表,所述节点组包括多个在所述神经网络加速器内部连续计算的节点;
指令节点生成单元被配置为,解析所述节点组列表,以生成所述神经网络加速器需要的配置信息;
计算图生成单元被配置为,按照预设计算顺序排列所述配置信息;
二进制文件生成单元被配置为,对所述配置信息使用预设位数的无符号正数进行编码,以生成所述神经网络加速器执行推理所需要的二进制文件。
7.一种精度可变的神经网络加速器,其特征在于,与权利要求1-6任一项所述的编译优化系统建立数据通信连接,所述精度可变的神经网络加速器包括指令管理单元、静态随机存取存储单元、权重译码单元、精度可变处理单元阵列、部分和处理单元和非线性函数处理单元:
指令管理单元,被配置为获取二进制文件,所述二进制文件由所述编译优化系统生成,所述二进制文件包括指令二进制文件,所述指令二进制文件中包括用于控制所述神经网络加速器运行的操作指令;
静态随机存取存储单元,被配置为获取输入特征图,以及对所述输入特征图执行预处理;所述预处理包括对所述输入特征图至少执行上采样、裁剪和填充;
权重译码单元,被配置为获取包含神经网络模型权重的权重二进制文件;
精度可变处理单元阵列,包括多个可重新配置的处理单元,所述精度可变处理单元阵列被配置为基于所述指令二进制文件重新配置所述处理单元,以利用多种比特位宽分别表示权重、算子层输入和算子层输出,以及,根据所述权重和所述算子层输入执行卷积算子的乘法运算;
部分和处理单元,被配置为累加所述乘法运算的部分运算结果,得到部分卷积和;
非线性函数处理单元,被配置为基于所述部分卷积和执行非线性算子的运算,以生成所述非线性算子的输出特征图。
8.根据权利要求7所述的精度可变的神经网络加速器,其特征在于,所述精度可变处理单元阵列包括权重预加载器,所述权重预加载器被配置为:
通过所述权重预加载器周期性地从所述权重译码单元获取所述神经网络模型的权重,以更新所述权重。
9.根据权利要求7所述的精度可变的神经网络加速器,其特征在于,所述指令管理单元进一步被配置为:
响应于所述神经网络加速器的启动事件,将所述操作指令添加到指令队列中,以使所述指令队列中的操作指令按照预设顺序被执行。
10.根据权利要求7所述的精度可变的神经网络加速器,其特征在于,所述精度可变处理单元阵列进一步被配置为:
获取所述处理单元的初始布局形式;
将所述处理单元划分为第一预设数量个处理子单元,以及,构建子单元组,所述子单元组包括第二预设数量个所述处理子单元;所述处理子单元用于对预设比特位的激活和权重执行乘法运算;
根据所述初始布局形式、所述第一预设数量和所述第二预设数量对乘法运算的运算结果执行移位和累加,以计算目标比特位的激活和权重的乘法运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310140042.4A CN116227565A (zh) | 2023-02-20 | 2023-02-20 | 一种编译优化系统及精度可变的神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310140042.4A CN116227565A (zh) | 2023-02-20 | 2023-02-20 | 一种编译优化系统及精度可变的神经网络加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116227565A true CN116227565A (zh) | 2023-06-06 |
Family
ID=86576363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310140042.4A Pending CN116227565A (zh) | 2023-02-20 | 2023-02-20 | 一种编译优化系统及精度可变的神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116227565A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431421A (zh) * | 2023-06-13 | 2023-07-14 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN116702852A (zh) * | 2023-08-02 | 2023-09-05 | 电子科技大学 | 基于多阶段事件驱动的动态重构神经网络加速电路及系统 |
-
2023
- 2023-02-20 CN CN202310140042.4A patent/CN116227565A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431421A (zh) * | 2023-06-13 | 2023-07-14 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN116431421B (zh) * | 2023-06-13 | 2023-08-29 | 成都登临科技有限公司 | 神经网络生成方法及生成器、验证方法及系统、存储介质 |
CN116702852A (zh) * | 2023-08-02 | 2023-09-05 | 电子科技大学 | 基于多阶段事件驱动的动态重构神经网络加速电路及系统 |
CN116702852B (zh) * | 2023-08-02 | 2023-10-20 | 电子科技大学 | 基于多阶段事件驱动的动态重构神经网络加速电路及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116227565A (zh) | 一种编译优化系统及精度可变的神经网络加速器 | |
CN110659728B (zh) | 神经网络优化方法、装置、计算机设备及存储介质 | |
US20210125071A1 (en) | Structured Pruning for Machine Learning Model | |
CN115017178B (zh) | 数据到文本生成模型的训练方法和装置 | |
CN110889497B (zh) | 一种人工智能处理器的学习任务编译方法及相关产品 | |
CN115828831A (zh) | 基于深度强化学习的多芯粒芯片算子放置策略生成方法 | |
CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
CN117032807A (zh) | 基于risc-v指令集的ai加速处理器架构 | |
CN105404611A (zh) | 一种基于矩阵模型的多计算引擎的自动选择方法 | |
CN117764122B (zh) | 计算图处理方法、装置、电子设备及存储介质 | |
CN117829149B (zh) | 一种语言模型混合训练方法、装置、电子设备和存储介质 | |
US20090064120A1 (en) | Method and apparatus to achieve maximum outer level parallelism of a loop | |
CN111831354A (zh) | 数据精度配置方法、装置、芯片、芯片阵列、设备及介质 | |
Wang et al. | Efficient and systematic partitioning of large and deep neural networks for parallelization | |
Liu et al. | Establishing high performance AI ecosystem on Sunway platform | |
CN105335135A (zh) | 数据处理方法和中心节点 | |
CN110377769A (zh) | 基于图数据结构的建模平台系统、方法、服务器及介质 | |
Moe et al. | Implementing spatio-temporal graph convolutional networks on graphcore ipus | |
CN113887730B (zh) | 量子模拟器实现方法、装置、相关设备以及量子模拟方法 | |
CN115437756A (zh) | 计算流图调度方案的生成方法、装置、电子设备及计算机可读存储介质 | |
CN112329924A (zh) | 一种提升神经网络预测性能的方法 | |
CN113760380A (zh) | 网络模型的运行代码的确定方法、装置、设备及存储介质 | |
CN117829242B (zh) | 模型处理方法及相关设备 | |
JP7187065B1 (ja) | 計算手法決定システム、計算手法決定方法、及び、計算手法決定プログラム | |
CN118113720B (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 |