CN113269320A - 处理单元、计算装置、片上系统、数据中心和相关方法 - Google Patents
处理单元、计算装置、片上系统、数据中心和相关方法 Download PDFInfo
- Publication number
- CN113269320A CN113269320A CN202010092279.6A CN202010092279A CN113269320A CN 113269320 A CN113269320 A CN 113269320A CN 202010092279 A CN202010092279 A CN 202010092279A CN 113269320 A CN113269320 A CN 113269320A
- Authority
- CN
- China
- Prior art keywords
- quantization
- precision
- deep learning
- learning model
- node
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000013139 quantization Methods 0.000 claims abstract description 313
- 238000013136 deep learning model Methods 0.000 claims abstract description 153
- 230000001133 acceleration Effects 0.000 claims abstract description 85
- 230000015654 memory Effects 0.000 claims abstract description 43
- 238000004422 calculation algorithm Methods 0.000 claims description 51
- 238000004088 simulation Methods 0.000 abstract description 10
- 239000010410 layer Substances 0.000 description 22
- 230000015556 catabolic process Effects 0.000 description 15
- 238000006731 degradation reaction Methods 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000002776 aggregation Effects 0.000 description 11
- 238000004220 aggregation Methods 0.000 description 11
- 238000011176 pooling Methods 0.000 description 10
- 238000005457 optimization Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100006960 Caenorhabditis elegans let-2 gene Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012549 training 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/045—Combinations of 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开提供了一种计算装置、数据中心及深度学习模型的调优方法。该处理单元包括:取指令单元,用于从存储器取回计算机指令;指令译码单元,用于对取回的计算机指令进行译码;指令执行单元,用于执行译码后的所述计算机指令,以实现:将所述深度学习模型的每个节点按照第一量化级进行第一量化后,模拟运行后得到第一精度;对于所述深度学习模型的第一节点,按照低于第一量化级的第二量化级进行第二量化,模拟运行后得到第二精度;如果所述第一精度与第二精度的差满足预定条件,对第一节点进行改进量化;将改进量化后的深度学习模型部署到加速单元。本公开实施例在深度学习模型的实际运行中,减小了量化带来的精度损失。
Description
技术领域
本公开涉及芯片领域,更具体而言,涉及一种处理单元、计算装置、片上系统、数据中心和相关方法。
背景技术
在深度学习(deep learning)领域,推理(Inference)是指将一个预先训练好的深度学习模型推送到实际业务场景中使用。由于推理直接面向用户,因此推理性能至关重要,尤其对于企业级产品而言更是如此。
关于推理性能,除了硬件层面的优化,在算法层面,模型量化(Quantized Model)是提升推理性能的重要手段之一。模型量化是指,将深度学习模型中的每个节点的权重数据和输入数据,从高精度的量化级转换为低精度的量化级,例如从32位单精度浮点数(FP32)转化为8位整型数据(INT8)。这样做虽然精度降低了,但有助于降低对数据吞吐量和存储空间的要求。
在深度学习模型的实际运行中,经常遇到精度不够的情况。由于量化导致的精度下降是精度不够的一个重要原因。如何在量化时最小化精度损失是一个亟待解决的问题。
发明内容
有鉴于此,本公开实施例旨在在深度学习模型的实际运行中,减小量化带来的精度损失。
为了达到这个目的,根据本公开的一方面,本公开提供一种处理单元,包括:
取指令单元,用于从所述处理单元外部的存储器取回计算机指令;
指令译码单元,用于对取回的计算机指令进行译码;
指令执行单元,用于执行译码后的所述计算机指令,以实现:将所述深度学习模型的每个节点按照第一量化级进行第一量化后,模拟运行第一量化后的所述深度学习模型,得到第一精度;对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,模拟运行第二量化后的所述深度学习模型,得到第二精度,所述第二量化级低于第一量化级;如果所述第一精度与第二精度的差满足预定条件,对第一节点进行改进量化;将改进量化后的深度学习模型部署到所述处理单元外部的加速单元。
可选地,所述预定条件包括:所述差大于预定差阈值。
可选地,所述指令执行单元还用于执行译码后的所述计算机指令,以在得到第一精度后实现:对于所述深度学习模型的第一节点以外的第二节点,按照第二量化级进行第三量化,模拟运行第三量化后的所述深度学习模型,得到第三精度;所述预定条件包括:如果所述第一精度与第二精度的差大于所述第一精度与第三精度的差。
可选地,所述第一量化和第二量化采用从预定量化算法集合中选出的第一量化算法进行,所述改进量化采用从预定量化算法集合中选出的第二量化算法进行,其中第二量化算法的量化精度等级大于第一量化算法的量化精度等级。
可选地,所述第一精度满足预定精度标准。
可选地,所述将改进量化后的深度学习模型部署到所述处理单元外部的加速单元,包括:将改进量化后的深度学习模型转换成能被所述加速单元的指令集识别的模型,部署到所述加速单元。
可选地,所述将所述深度学习模型的每个节点按照第一量化级进行第一量化,包括:
将所述深度学习模型的每个节点进行校准操作,得到校准模型;
对所述校准模型中的每个节点的输入参数和权重参数按照第一量化级量化。
可选地,所述对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,包括:
将所述深度学习模型的第一节点进行校准操作,得到校准模型;
对所述校准模型中的第一节点的输入参数和权重参数按照第二量化级量化。
可选地,第一量化级为16位整型数,第二量化级为8位整型数。
根据本公开的一方面,提供了一种计算装置,包括:
根据如上所述的处理单元;
存储器,用于存储所述计算机指令;
所述加速单元,用于运行部署的深度学习模型。
根据本公开的一方面,提供了一种片上系统,包括如上所述的计算装置。
根据本公开的一方面,提供了一种数据中心,包括如上所述的片上系统。
根据本公开的一方面,提供了一种深度学习模型的调优方法,包括:
将所述深度学习模型的每个节点按照第一量化级进行第一量化后,模拟运行第一量化后的所述深度学习模型,得到第一精度;
对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,模拟运行第二量化后的所述深度学习模型,得到第二精度,所述第二量化级低于第一量化级;
如果所述第一精度与第二精度的差满足预定条件,对第一节点进行改进量化;
将改进量化后的深度学习模型部署到所述处理单元外部的加速单元。
可选地,所述预定条件包括:所述差大于预定差阈值。
可选地,在得到第一精度后,所述方法还包括:对于所述深度学习模型的第一节点以外的第二节点,按照第二量化级进行第三量化,模拟运行第三量化后的所述深度学习模型,得到第三精度;所述预定条件包括:如果所述第一精度与第二精度的差大于所述第一精度与第三精度的差。
可选地,所述第一量化和第二量化采用从预定量化算法集合中选出的第一量化算法进行,所述改进量化采用从预定量化算法集合中选出的第二量化算法进行,其中第二量化算法的量化精度等级大于第一量化算法的量化精度等级。
可选地,所述第一精度满足预定精度标准。
可选地,所述将改进量化后的深度学习模型部署到所述处理单元外部的加速单元,包括:将改进量化后的深度学习模型转换成能被所述加速单元的指令集识别的模型,部署到所述加速单元。
可选地,第一量化级为16位整型数,第二量化级为8位整型数。
在本公开实施例中,首先对于所述深度学习模型的每个节点,按照第一量化级量化后运行,得到第一精度,然后对于第一节点,按照第二量化级进行第二量化,模拟运行后得到第二精度,所述第二量化级低于第一量化级。如果第二精度相对于第一精度降低的差满足预定条件,说明对第一节点按照第二量化级进行第二量化效果不好,导致精度下降太多,这时就对第二节点进行改进量化。如果不满足预定条件,说明对第一节点按照第二量化级进行第二量化效果很好,没有使精度下降太多,就可以继续使用量化后模型。这样,自动化地减小了量化带来的精度损失。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本公开一个实施例所应用的数据中心的结构图;
图2是本公开一个实施例的数据中心中一个服务器的内部结构图;
图3是根据本公开一个实施例服务器内部的处理单元和加速单元的内部结构图;
图4是根据本公开一个实施例的加速单元核的内部结构图;
图5是一个示例性的用于深度学习模型的编译和优化的架构图;
图6示出了本公开实施例提供的深度学习模型不同阶段的模型状态;
图7示出了本公开实施例的一种深度学习模型的调优方法的流程图;
图8示出了本公开实施例中深度学习模型各节点的第一精度和第二精度差列表和分布曲线。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
深度学习模型:深度学习是机器学习(ML,Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,ArtificialIntelligence)。深度学习学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习采用的模型即深度学习模型。
加速单元:针对传统处理单元在一些专门用途的领域(例如,处理图像、处理深度学习模型的各种运算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,在本公开实施例中主要是为了加速深度学习模型的运算处理速度而设计的专门处理单元。
处理单元:又称调度单元,对加速单元进行调度、向各加速单元分配要执行的待执行指令序列的处理单元,它可以采用中央处理器(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
量化:将深度学习模型中的节点的模型参数(例如权重)和输入参数由高精度数据类型转换为低精度数据类型,从而降低对数据吞吐量和存储空间的要求的行为。
下面结合一个量化的具体例子简单介绍量化的过程。
在量化时,为了将节点的模型参数和输入参数转换为低精度数据类型的数据,首先需要知道模型参数和输入参数的取值范围,例如最大值为100,最小值为-100,如果转换为二进制8位整型数的话,让28-1,即11111111对应于最大值100,让0,即00000000对应于最小值-100。这时,相当于将-100到100之间共200的区间长度平均分成(28-1)个小区间,每个小区间的长度为200/(28-1)=0.784。这样,对于-100和100之间任意一个数值,就可以确定出它所在的小区间。将小区间的左端点或右端点数值作为量化后的数值。例如,对于50来说,[50-(-100)]/0.784=191.3,相当于第191个小区间,左端点为191,即10111111,量化后的数值为10111111。
在线性量化的情况下,可以通过如下的公式来进行量化。δ是缩放系数,相当于每单位的量化后数值代表着量化前的数值差。δ是由待量化输入的最大值xmax、最小值xmin决定的。它将【xmin,xmax】内的待量化输入量化为0到n-1之间(包括0和n-1)的任意一个整数。设q(x)是待量化输入x量化成的数值,有公式:
其中,clamp为限值函数,公式1表示将round((x-xmin)/δ)限制在0到n-1之间。如果round((x-xmin)/δ)大于n-1,则公式1的值为n-1;如果round((x-xmin)/δ)小于0,则公式1的值为0;如果round((x-xmin)/δ)在0和n-1之间,则公式1的值为round((x-xmin)/δ)。
缩放系数δ如下计算:
δ=[max(xmax)-min(xmin)]/(n-1) 公式2
量化级:量化中节点的模型参数(例如权重)和输入参数所转换成的低精度数据类型。例如,将32位浮点数转换为8位整型数或16位整型数,8位整型数和16位整型数就是不同的量化级。
节点:深度学习模型中独立运算的最小单位,其接收输入参数,经本身的权重参数或其它模型中参数(例如超参)运算后,产生输出。狠毒学习模型中有多个层,每个层有多个节点,每个节点的输出是下一层的节点的输入。
精度:深度学习模型实际使用后推理(inference)的准确性的度量。
校准:如上所述,在量化时首先要确定模型中节点的输入参数的取值范围,再将取值范围的最大值与量化后最大值相对应,将取值范围的最小值与量化后最小值相对应,从而进行量化。确定深度学习模型中每个节点的输入参数的取值范围,叫做校准。可以提取在若干个时间点输入到深度学习模型的某个节点的输入参数,从这些时间点的输入参数,归纳出该节点的输入参数的取值范围。校准是量化的基础。
数据中心
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。而深度学习作为人工智能的重要技术,已经大量应用到数据中心大数据分析运算中。
在传统的大型数据中心,网络结构通常如图1所示,即互连网络模型(hierarchical inter-networking model)。这个模型包含了以下部分:
服务器140:各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。
接入交换机130:接入交换机130是用来让服务器140接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器。
汇聚交换机120:每台汇聚交换机120连接多台接入交换机130,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心交换机110:核心交换机110为进出数据中心的包提供高速的转发,为汇聚交换机120提供连接性。整个数据中心的网络分为L3层路由网络和L2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的L3层路由网络。
通常情况下,汇聚交换机120是L2和L3层路由网络的分界点,汇聚交换机120以下的是L2网络,以上是L3网络。每组汇聚交换机管理一个传送点(POD,Point Of Delivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
汇聚交换机120和接入交换机130之间通常使用生成树协议(STP,Spanning TreeProtocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机120可用,其他的汇聚交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚交换机120的层面,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
服务器
由于服务器140才是数据中心真实的处理设备,图2示出了一个服务器140内部的结构框图。服务器140包括有总线连接的存储器210、处理单元集群270和加速单元集群280。处理单元集群也叫做调度单元集群。处理单元集群270包括多个处理单元220。处理单元220也叫做调度单元。加速单元集群280包括多个加速单元230。加速单元在本公开实施例中主要是为了加速深度学习模型的运算处理速度而设计的专门处理单元,可以体现为专门为深度学习模型运算处理设计的处理单元、图形处理单元(GPU)、专用集成电路(ASIC)和现场可编程门阵列(FPGA)等。处理单元是对加速单元进行调度、向各加速单元分配要执行的待执行指令序列的单元,它可以采用中央处理器(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
传统的处理单元的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速单元,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。本发明提出的加速单元是专用于加速深度学习模型的运算处理速度的处理单元。它是采用数据驱动并行计算的架构,用于处理各深度学习模型节点的大量运算(例如卷积、池化等)的处理单元。由于各深度学习模型节点的大量运算(例如卷积、池化等)中的数据和中间结果在整个计算过程中紧密联系,会被经常用到,用现有的处理单元构架,由于处理单元的核内的内存容量很小,因此要大量频繁访问核外存储器,造成处理的低效。采用这种专用于加速深度学习模型的运算处理速度的加速单元,由于其每个核中具有适于深度学习模型计算用到的存储容量的片上内存,避免频繁访问核外部的存储器,就能大大提高处理效率,提高计算性能。
加速单元230要接受处理单元220的调度。如图2所示,存储器210中存储有各种深度学习模型,包括这些模型的节点和节点的权重数据等。这些深度学习模型当需要时被图2中的一个处理单元220部署到一个加速单元230。即,处理单元220可以通过指令的形式向加速单元230发送模型中的参数(如各节点的权重)在存储器210中的地址。加速单元230在实际使用该深度学习模型进行计算时,就会根据这些参数(例如权重)在存储器210中的地址,直接在存储器210中寻址这些参数,将其暂存在其片上内存中。加速单元230在实际使用该深度学习模型进行计算时,处理单元220还会将模型的输入参数通过指令的形式发送给加速单元230,暂存在加速单元230的片上内存中。这样,加速单元230就可以根据这些输入参数和模型中的参数(例如权重)进行推理计算。本公开实施例主要着眼于处理单元220将深度学习模型向加速单元230部署前的量化过程。在后文中会详细描述量化。
处理单元和加速单元的内部结构
下面结合图3的处理单元220与加速单元230的内部结构图,具体说明处理单元220是如何调度加速单元230进行工作的。
如图3所示,处理单元220内包含多个处理器核222和被多个处理器核222共享的高速缓存221。每个处理器核222包括取指令单元203、指令译码单元224、指令发射单元225、指令执行单元226。
取指令单元223用于将要执行的指令从存储器210中搬运到指令寄存器(可以是图3示出的寄存器堆229中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,处理单元220进入指令译码阶段,指令译码单元224按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元225的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元225位于指令译码单元224与指令执行单元226之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元226,使得多个指令的并行操作成为可能。
指令发射单元225将指令发射到指令执行单元226后,指令执行单元226开始执行指令。但如果该指令执行单元226判断该指令应该是加速单元执行的,则将其转发到相应的加速单元执行。例如,如果该指令是一条深度学习模型推理(inference)的指令,指令执行单元226不再执行该指令,而是将该指令通过总线发送到加速单元230,由加速单元230执行。
加速单元30内部包括多个核236(图3中示出了4个核,但本领域技术人员应当理解,加速单元230中也可以包含其它数目的核236)、命令处理器237、直接存储访问机制235、和总线通道231。
总线通道231是指令从总线进出加速单元230的通道。
直接内存访问(DMA,Direct Memory Access)机制235是一些计算机总线架构提供的功能,它能使数据从附加设备直接写入计算机主板的存储器上。这种方式相比于设备之间所有的数据传输都要通过处理单元的方式,大大提高了数据访问的效率。正是因为有这样的机制,加速单元230的核可以直接访问存储器210,读取深度学习模型中的参数(例如各节点的权重)等,大大提高了数据访问效率。
命令处理器237将由处理单元220发送至加速单元230的指令分配给核236执行。指令执行单元226将需要加速单元230执行的待执行指令序列发送给加速单元230。该待执行指令序列从总线通道231进入后,缓存在命令处理器237,由命令处理器237选择核236,将指令序列分配给其执行。另外,命令处理器237还负责核236之间的同步操作。
加速单元核
图4是根据本公开一个实施例的加速单元核的内部结构图。
在一个实施例中,如图4所示,加速单元核236包括张量引擎310、池化引擎320、存储器拷贝引擎330、定序器350、指令缓存器340、片上内存360、常数缓冲器370。
命令处理器237分配给加速单元核236的指令序列首先进入指令缓存器340缓存。然后,定序器350从指令缓存器340中按照先进先出的顺序取指令,根据指令的性质分配给张量引擎310或池化引擎320执行。张量引擎310负责处理深度学习模型中的卷积和矩阵乘法等相关操作。池化引擎320负责处理深度学习模型中的池化操作。存储器拷贝引擎330是专门处理数据拷贝的单元,这里的数据拷贝包括由于片上内存360可能会溢出而将一些数据由片上内存360拷贝到各核236共享的存储器,或者其它核236的片上内存360。定序器350根据取出的指令是卷积、矩阵乘法、池化、还是数据拷贝等操作性质,决定将指令分配给张量引擎310、池化引擎320、或者存储器拷贝引擎330。
片上内存360是存储深度学习模型中的权重参数、以及深度学习模型实际使用时的输入参数和各种中间结果的核内存储器。常数缓冲器370是存储深度学习模型中除权重参数之外的其它常量参数(例如,神经网络模型中的超参)的缓冲器。如上所述,在处理单元220将深度学习模型预先配置在加速单元230的过程中,处理单元220通过指令的形式向加速单元230发送模型中的参数在存储器210中的地址。这些参数包括节点的权重和其它参数(例如超参)。对于权重,加速单元230在实际的深度学习模型运算时,将它从存储器210相应的位置取出,放在片上内存360中。对于其它参数,加速单元230在实际的深度学习模型运算时,从存储器210相应的位置取出,放在常数缓冲器370中。另外,当实际开始推理(inference)的指令由命令处理器237分配给核236执行后,指令中的输入参数(给深度学习模型的输入)也存储在片上内存360。另外,当张量引擎310和池化引擎320进行卷积或池化运算后,得到的各种中间结果也存放在片上内存360中。
量化操作
下面,结合附图5,介绍一个示例性的用于深度学习模型的编译和优化的架构图。
参见图上所示,从上往下,架构图包括应用层401,框架层402,功能层403。
应用层401是深度学习模型在特定场景下的应用,例如视觉405,自然语言406,推荐407等方面的应用。这些应用使用本架构构建,也可以在应用中调用架构提供运行接口,以在应用中获得推理能力。
框架层402整合TensorFlow 408,MXNet 409,Caffe 410等开源平台,并且提供算子库和工具,使得可以继续对各种算法进行优化和改进。TensorFlow408是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现。MXNet 409是亚马逊(Amazon)选择的深度学习库。Caffe 410,全称ConvolutionalArchitecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。
功能层403包括编译栈403和运行栈404。编译栈403用于对各种模型进行转化(converter)411、量化(quantization)412、优化(optimization)413和编译(compile)414。转化411是提供模型的内部数据转化为中间(IR)格式。量化412是将深度学习模型中的权重参数以及给深度学习模型的输入参数从高精度数据类型转换为低精度数据类型。优化413是对模型内部的算子进行融合,多模型优化链接等操作。编译414是根据硬件(例如神经网络处理器)对模型进行优化,生成硬件能够识别的二进制模型。运行栈404包括运行API415、执行管理器416、用户模式驱动器417和内核模式驱动器418。执行管理器416执行的资源分配,批量调度。优化运行API 415用于提供各种运行时可以调用的接口。用户模式驱动器417和用于提供内核模式下的硬件命令,资源调度。内核模式驱动器418用于提供内核模式下的任务调度和硬件控制等。
本文所指的量化操作即上面提到的量化412,主要包括将深度学习模型中的权重参数以及给深度学习模型的输入参数从高精度数据类型转换为低精度数据类型。下面以卷积神经网络为例对此进行解释。卷积神经网络包括多个卷积层,每一层具有多个节点。节点是深度学习模型中根据输入进行运算得到输出特征的最小计算单位。每一卷积层的节点输出的特征传送到下一卷积层的节点,作为下一卷积层接待的输入。每一层通过卷积核进行矩阵相乘再求和计算得到特征图,卷积核为二维矩阵,二维矩阵中的每个数值都可视为一个权重参数,由于卷积神经网络有多个层,每一层的卷积核中有多个权重参数,因此权重参数数量庞大。与权重参数相应地,与所述卷积核相乘的输入矩阵中的输入参数的数量也是巨大的。在模型训练阶段,权重参数一般采用32位浮点数存储和计算,量化操作就是将权重参数从32位浮点数转换到更低精度的数据类型进行存储和计算,例如转换为8位整型(有符号整型或者无符号整型)或16位浮点型进行存储和计算。量化操作可以只转换一部分权重参数,例如只转换一部分卷积层的卷积核,其余部分卷积层的卷积核保持不变。与权重参数对应地,量化操作也将实际输入矩阵中的每个参数转换到更低精度的数据类型进行存储和计算。处理单元220通常在完成量化操作后,才将量化后的深度学习模型通过指令的形式部署给加速单元230。即,处理单元220将存储在存储器210的深度学习模型的各权重从高精度数据类型转换为低精度数据类型,从而提高数据吞吐量和节省存储空间。然后,处理单元220通过指令的形式向加速单元230发送这些量化后的权重在存储器210中的地址。加速单元230在实际运行深度学习模型进行推理时,就可以按照这些地址直接从存储器210中取出,放到加速单元230的片上内核360中运行。同时,在深度学习模型实际运行时,处理单元220也将量化后的模型实际输入参数从高精度数据类型转换为低精度数据类型,通过指令的形式向加速单元230通知它们在存储器210中的地址,便于加速单元230利用这些输入参数和权重参数运行模型,提高数据吞吐量和节省存储空间。
图6示出了本公开实施例提供的深度学习模型不同阶段的模型状态。参见图6所示,原始模型501为一个预先训练好的高精度深度学习模型,量化模型502为原始模型501经过量化操作后得到的深度学习模型。量化操作可以分步骤进行,例如先进行校准,得到校准模型,再在校准模型的基础上实施量化操作,得到量化模型502。校准即确定深度学习模型中每个节点的输入参数的取值范围的行为。可以提取在若干个时间点输入到深度学习模型的某个节点的输入参数,从这些时间点的输入参数,归纳出该节点的输入参数的取值范围。校准是量化的基础。
有些深度学习模型将校准和量化操作合并执行,即输入原始模型501,输出经过校准和量化操作后的量化模型502。量化操作完成后,高精度模型转化为低精度模型。然后将量化模型502转化为加速单元模型503。加速单元模型503还是低精度模型。但是加速单元模型503可以由加速单元230的指令集识别从而可以在加速单元230上执行,而原始模型501和量化模型502只能由处理单元220的指令集识别从而可以在处理单元220上执行。
应该指出的是,图6只用于示意上述模型的执行情况,而不能用于示意上述模型的存储情况,实际上原始模型501、量化模型502和加速单元模型503都是存储在存储器210上,只有执行时,才会加载到处理单元220或加速单元230中。
还应该指出的是,通常说法的模型实际上包含实现相应算法的代码和数据样本。代码存在多种形式,例如源代码(例如Java、Python实现)和可执行代码(二级制代码)。源代码经由编译得到可执行代码之后,才能够被处理器识别和执行,因此上述的将量化模型502转化为加速单元模型503,从而由加速单元230的指令集识别,是指修改量化模型的部分源代码并将其编译为可执行代码,然后可执行代码可以被加速单元230的指令集识别,以此类推。但是为了简化描述,在本文中不会每个步骤中都进行这样严格的描述。
本公开实施例的量化调优策略
在深度学习模型的实际运行中,经常遇到精度不够的情况。由于量化导致的精度下降是精度不够的一个重要原因。如何在量化时最小化精度损失是一个亟待解决的问题。为了解决这个问题,本公开实施例首先对于所述深度学习模型的每个节点,按照第一量化级量化后运行,得到第一精度,然后对于第一节点,按照低于第一量化级的第二量化级进行第二量化,模拟运行后得到第二精度。如果第二精度相对于第一精度降低的差满足预定条件,说明对第一节点按照第二量化级进行第二量化效果不好,导致精度下降太多,这时就对第二节点进行改进量化。如果不满足预定条件,说明对第一节点按照第二量化级进行第二量化效果很好,没有使精度下降太多,就可以继续使用量化后模型。这样,自动化地减小了量化带来的精度损失。
本公开实施例中,处理单元220首先要确定第一量化级,在优选的实施例中,这个第一量化级带来的精度应该是能满足预定精度标准的。这样,在后面的过程中,针对第一节点按照低于第一量化级的第二量化级进行量化后,如果最后得到的第二精度不佳,就可以进行改进量化。因此,希望第一量化级带来的精度满足预定精度标准,以作为参照。
为了确保它带来的精度应该是能满足预定精度标准的,在一个实施例中,第一量化级可以从多个候选量化级中选出。从所述多个候选量化级中任取一个候选量化级,将所述深度学习模型的每个节点按照选出的候选量化级进行第一量化后,模拟运行第一量化后的所述深度学习模型,得到一个第一精度。每从多个候选量化级中取一个候选量化级,就得到相应的一个第一精度。因此,当所述多个候选量化级都分别被选取完后,就得到与多个候选量化级分别对应的多个第一精度。在一个实施例中,预定精度标准可以是,精度大于预定精度阈值。这样,从与多个候选量化级分别对应的多个第一精度中,任取一个大于预定精度阈值的第一精度,其对应的候选量化级就可以作为第一量化级。在另一个实施例中,预定精度标准可以是,在多个候选量化级对应的精度中最高。这样,选取与多个候选量化级分别对应的多个第一精度中最高的一个精度,其对应的候选量化级就可以作为第一量化级。
处理单元220要将所述深度学习模型的每个节点按照第一量化级进行第一量化,然后模拟运行第一量化后的所述深度学习模型,得到第一精度。如果所述第一精度满足预定精度标准,该第一量化级就是期望的第一量化级。
这里的将所述深度学习模型的每个节点按照第一量化级进行第一量化,可以包括这样的操作:将所述深度学习模型的每个节点进行校准操作,得到校准模型;对所述校准模型中的每个节点的输入参数和权重参数按照第一量化级量化。在校准时,可以针对深度学习模型中的每个节点,提取在若干个时间点输入该节点的输入参数,自动归纳出该节点的输入参数的取值范围。例如,将这些输入参数的最低值和最高值之间的范围,作为输入参数的取值范围。在量化时选取的配置参数是与这个范围相关的,要依据这个范围进行选取。每个节点的输入参数取值范围确定后,就可以根据该取值范围选择合适的量化配置参数进行量化。
在一个实施例中,量化配置参数可以包括缩放系数δ。如上所述,可以采取公式1进行线性量化:
缩放系数δ相当于每单位的量化后数值代表着量化前的数值差。δ是由待量化输入的最大值xmax、最小值xmin决定的。它将【xmin,xmax】内的待量化输入x量化为0到n-1之间(包括0和n-1)的任意一个整数。q(x)是待量化输入x量化成的数值。clamp为限值函数,公式1表示将round((x-xmin)/δ)限制在0到n-1之间。如果round((x-xmin)/δ)大于n-1,则公式1的值为n-1;如果round((x-xmin)/δ)小于0,则公式1的值为0;如果round((x-xmin)/δ)在0和n-1之间,则公式1的值为round((x-xmin)/δ)。
缩放系数δ按照公式2计算:
δ=[max(xmax)-min(xmin)]/(n-1) 公式2
将所述深度学习模型的每个节点按照第一量化级进行第一量化后,处理单元220开始模拟运行量化后的所述深度学习模型。如前所述,深度学习模型一般是由处理单元220部署到加速单元230执行的。即,处理单元220通过指令的形式通知加速单元230该模型中的权重参数存储在存储器210中的地址,以便加速单元230在实际运行该模型时加载到其本地的片上内存360。处理单元220发给加速单元230执行,只是因为加速单元230对于处理深度学习模型中的计算指令更具有高效性,不是因为处理单元220不能执行,只不过处理单元220是执行深度学习模型中的指令不如加速单元230高效。模拟运行的含义就是将本应交给加速单元230运行的指令由处理单元220本身运行,尽管其执行效率不高。处理单元220模拟运行后,会产生模型的精度,作为第一精度。精度是深度学习模型实际使用后推理的准确性的度量。如果第一精度满足预定精度标准,则该第一量化级的选取成功。例如,第一精度为93%,预定精度标准为大于或等于85%,这时确定第一量化级选取成功。在一个例子中,原深度学习模型的节点参数存储为32位浮点数,第一量化级是16位整型数。
然后,对于所述深度学习模型分别进行单节点量化降级,仅针对深度学习模型中的一个节点,将其由按第一量化级量化降级成按低于第一量化级的第二量化级量化,而其他的节点仍旧按第一量化级量化。假设选定进行降级量化的节点是第一节点。针对第一节点进行第二量化后,模拟运行此时产生的深度学习模型,得到第二精度。这时,通过判断第二精度相比于第一精度下降的差是否满足预定条件,就可以决定是否要对第一节点进行改进量化。
这里的按照第二量化级进行第二量化也同样包括上述的校准和参数量化两个过程,故不赘述。该模型的模拟运行也是由处理单元220替代加速单元230执行。
在一个实施例中,所述预定条件包括:所述差大于预定差阈值。也就是说,将第一节点按照第二量化级进行第二量化后,运行量化后的深度学习模型,得到的第二精度如果相对于第一精度下降的差太大了,说明将第一节点按照第二量化级进行第二量化引起精度偏差较大,就要考虑进行改进量化了。改进量化的方法在下文中描述。
另外,也可以不只针对一个节点进行降级量化,而是分别针对多个节点进行降级量化,每个节点降低量化后的深度学习模型会产生不同的精度,进而就有不同的相对于第一精度的下降的差。如果针对某一节点进行降低量化后,产生的精度相对于第一精度下降的差比其它节点大,就要考虑进行改进量化了。在该实施例中,预定条件不是绝对条件,而是一个相对条件,其要将其它节点降级量化后产生的精度下降与本节点降级量化后产生的精度下降进行比较。
在该实施例中,可以对于所述深度学习模型的第一节点以外的第二节点,按照第二量化级进行第三量化,模拟运行第三量化后的所述深度学习模型,得到第三精度。所述预定条件包括:如果所述第一精度与第二精度的差大于所述第一精度与第三精度的差。
例如,第一精度是99%。将深度学习模型的节点A按照第二量化级进行第二量化,模拟运行后得到的第二精度为96.5%,相对于第一精度下降了2.5%。如果将深度学习模型的另一节点B按照第二量化级进行第二量化,模拟运行后得到的第二精度为97.5%,相对于第一精度下降了1.5%。这时,由于2.5%>1.5%,说明将节点A按照第二量化级进行量化后效果不如将节点B按照第二量化级进行量化好。因此,可以考虑进行改进量化。
在一个极端情况下,可以将每个节点都进行一次单点降级量化。在该次单点降级量化中,该节点按照第二量化级进行量化,其它节点仍然按照第一量化级进行第一量化。例如,在第一量化级为16位整型数的情况下,第二量化级可以为8位整型数。这样,将深度学习模型的第一个节点的权重和输入参数,由16位整型数量化改为8位整型数量化,其它节点的权重和输入参数仍然用16位整型数量化,得到第一个节点量化降级后的深度学习模型;将深度学习模型的第二个节点的权重和输入参数,由16位整型数量化改为8位整型数量化,其它节点的权重和输入参数仍然用16位整型数量化,得到第二个节点量化降级后的深度学习模型……以此类推,就得到了深度学习模型中每个节点量化降级后的深度学习模型,模拟运行后,分别产生每个节点量化降级后的精度。哪个节点量化降级后,模型的精度下降得最多,说明该节点很可能是量化后影响模型精度比较严重的节点,要对其进行改进量化。
作为一个示例,图8左侧按照从高到低的顺序列出了深度学习模型中各节点量化降级后产生的精度与第一精度的差。从中可以看出,节点索引为46的节点降级后产生的精度相比于第一精度的差为17227,节点索引为44的节点降级后产生的精度相比于第一精度的差为15311……将这些节点的精度差作成的分布图曲线如图8右侧所示。该分布图的横坐标为节点名称,纵坐标为得到的精度差。将每个节点的所述精度差按照从高到低的顺序排列,在分布图上表示成点,依次连接这些点,得到如图8右侧的曲线。在所述预定条件为所述差大于预定差阈值时,如果预定差阈值设定为1000,则节点索引为46、44、56、47、55、48、45、49、50、190、118、17的所述差都大于1000,将它们确定为需要进行改进量化的节点。
下面讨论改进量化的具体方法。前述公式(1)和(2)给出了一种量化算法,实际上还可以有其他量化算法。这些量化算法是具有量化精度等级的。量化精度等级是事先通过大量的实验,利用大量的基础数据,按照不同的量化算法进行量化,对量化产生的精度进行评估而得到的等级。例如,将精度较高的算法评估为A级,将精度一般的算法评估为B级,将精度较低的算法评估为C级。这样,可以预先确定一个量化算法集合,该集合中的每个量化算法具有一个量化精度等级。第一量化和第二量化采用从预定量化算法集合中选出的第一量化算法进行。在进行改进量化时,可以采用从预定量化算法集合中选出的、量化等级高于第一量化算法的量化等级的第二量化算法进行。例如,第一量化算法是上述如公式1和2所示的仅考虑缩放系数δ的量化算法,第二量化算法是同时考虑缩放系数δ和偏移量zq的量化算法。同时考虑缩放系数δ和偏移量zq的量化算法是量化精度等级比仅考虑缩放系数δ的量化算法高一级的量化算法。
该偏移量zq的增加是为了考虑到零点问题(浮点数为0的无误差表示)。由于考虑到零点问题,不能单纯根据(x/δ)的数值来确定将其量化为0到n-1中的哪一个,要考虑偏移量zq。该偏移量zq如下计算:
考虑该偏移量zq后,按照如下公式根据量化前数值x确定量化后数值q(x):
然后,如以上结合图6所示,与将改进量化后的深度学习模型,即量化模型502,转换成能被所述加速单元230的指令集识别的模型,即加速单元模型503,部署到所述加速单元230。
如图7所示,本公开实施例还提供了一种深度学习模型的调优方法,包括:
步骤610、将所述深度学习模型的每个节点按照第一量化级进行第一量化后,模拟运行第一量化后的所述深度学习模型,得到第一精度;
步骤620、对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,模拟运行第二量化后的所述深度学习模型,得到第二精度,所述第二量化级低于第一量化级;
步骤630、如果所述第一精度与第二精度的差满足预定条件,对第一节点进行改进量化;
步骤640、将改进量化后的深度学习模型部署到所述处理单元外部的加速单元。
由于上述调优方法的细节在上述本公开实施例的量化调优策略部分结合结构图已经详细描述,为节约篇幅,不再赘述。
本公开实施例的商业价值
本公开实施例在解决由于量化导致的深度学习模型运行精度下降的调优时,以自动化的方式实现量化调优,使得调优的速度快了几倍,在优化深度学习模型的部署和执行方面,具有良好的市场前景。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
Claims (19)
1.一种处理单元,包括:
取指令单元,用于从所述处理单元外部的存储器取回计算机指令;
指令译码单元,用于对取回的计算机指令进行译码;
指令执行单元,用于执行译码后的所述计算机指令,以实现:将所述深度学习模型的每个节点按照第一量化级进行第一量化后,模拟运行第一量化后的所述深度学习模型,得到第一精度;对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,模拟运行第二量化后的所述深度学习模型,得到第二精度,所述第二量化级低于第一量化级;如果所述第一精度与第二精度的差满足预定条件,对第一节点进行改进量化;将改进量化后的深度学习模型部署到所述处理单元外部的加速单元。
2.根据权利要求1所述的处理单元,其中,所述预定条件包括:所述差大于预定差阈值。
3.根据权利要求1所述的处理单元,其中,所述指令执行单元还用于执行译码后的所述计算机指令,以在得到第一精度后实现:对于所述深度学习模型的第一节点以外的第二节点,按照第二量化级进行第三量化,模拟运行第三量化后的所述深度学习模型,得到第三精度;
所述预定条件包括:如果所述第一精度与第二精度的差大于所述第一精度与第三精度的差。
4.根据权利要求1所述的处理单元,其中,所述第一量化和第二量化采用从预定量化算法集合中选出的第一量化算法进行,所述改进量化采用从预定量化算法集合中选出的第二量化算法进行,其中第二量化算法的量化精度等级大于第一量化算法的量化精度等级。
5.根据权利要求1所述的处理单元,其中,所述第一精度满足预定精度标准。
6.根据权利要求1所述的计算装置,其中,所述将改进量化后的深度学习模型部署到所述处理单元外部的加速单元,包括:将改进量化后的深度学习模型转换成能被所述加速单元的指令集识别的模型,部署到所述加速单元。
7.根据权利要求1所述的计算装置,其中,所述将所述深度学习模型的每个节点按照第一量化级进行第一量化,包括:
将所述深度学习模型的每个节点进行校准操作,得到校准模型;
对所述校准模型中的每个节点的输入参数和权重参数按照第一量化级量化。
8.根据权利要求1所述的计算装置,其中,所述对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,包括:
将所述深度学习模型的第一节点进行校准操作,得到校准模型;
对所述校准模型中的第一节点的输入参数和权重参数按照第二量化级量化。
9.根据权利要求1所述的计算装置,其中,第一量化级为16位整型数,第二量化级为8位整型数。
10.一种计算装置,包括:
根据权利要求1-9中任一个所述的处理单元;
存储器,用于存储所述计算机指令;
所述加速单元,用于运行部署的深度学习模型。
11.一种片上系统,包括根据权利要求10所述的计算装置。
12.一种数据中心,包括根据权利要求11所述的片上系统。
13.一种深度学习模型的调优方法,包括:
将所述深度学习模型的每个节点按照第一量化级进行第一量化后,模拟运行第一量化后的所述深度学习模型,得到第一精度;
对于所述深度学习模型的第一节点,按照第二量化级进行第二量化,模拟运行第二量化后的所述深度学习模型,得到第二精度,所述第二量化级低于第一量化级;
如果所述第一精度与第二精度的差满足预定条件,对第一节点进行改进量化;
将改进量化后的深度学习模型部署到所述处理单元外部的加速单元。
14.根据权利要求13所述的方法,其中,所述预定条件包括:所述差大于预定差阈值。
15.根据权利要求13所述的方法,其中,在得到第一精度后,所述方法还包括:对于所述深度学习模型的第一节点以外的第二节点,按照第二量化级进行第三量化,模拟运行第三量化后的所述深度学习模型,得到第三精度;
所述预定条件包括:如果所述第一精度与第二精度的差大于所述第一精度与第三精度的差。
16.根据权利要求13所述的方法,其中,所述第一量化和第二量化采用从预定量化算法集合中选出的第一量化算法进行,所述改进量化采用从预定量化算法集合中选出的第二量化算法进行,其中第二量化算法的量化精度等级大于第一量化算法的量化精度等级。
17.根据权利要求13所述的方法,其中,所述第一精度满足预定精度标准。
18.根据权利要求13所述的方法,其中,所述将改进量化后的深度学习模型部署到所述处理单元外部的加速单元,包括:将改进量化后的深度学习模型转换成能被所述加速单元的指令集识别的模型,部署到所述加速单元。
19.根据权利要求13所述的方法,其中,第一量化级为16位整型数,第二量化级为8位整型数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010092279.6A CN113269320B (zh) | 2020-02-14 | 处理单元、计算装置、片上系统、数据中心和相关方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010092279.6A CN113269320B (zh) | 2020-02-14 | 处理单元、计算装置、片上系统、数据中心和相关方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113269320A true CN113269320A (zh) | 2021-08-17 |
CN113269320B CN113269320B (zh) | 2024-07-26 |
Family
ID=
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118384A (zh) * | 2021-12-09 | 2022-03-01 | 安谋科技(中国)有限公司 | 神经网络模型的量化方法、可读介质和电子设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN107256422A (zh) * | 2017-06-06 | 2017-10-17 | 上海兆芯集成电路有限公司 | 数据量化方法及装置 |
CN107646116A (zh) * | 2015-05-08 | 2018-01-30 | 高通股份有限公司 | 用于定点神经网络的位宽选择 |
CN108491928A (zh) * | 2018-03-29 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置、服务器及存储介质 |
CN108734264A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型压缩方法及装置、存储介质、终端 |
CN108734268A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型的压缩方法及装置、终端、存储介质 |
CN108734266A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型的压缩方法及装置、终端、存储介质 |
CN109740737A (zh) * | 2018-12-30 | 2019-05-10 | 联想(北京)有限公司 | 卷积神经网络量化处理方法、装置及计算机设备 |
CN110188880A (zh) * | 2019-06-03 | 2019-08-30 | 四川长虹电器股份有限公司 | 一种深度神经网络的量化方法及装置 |
CN110363281A (zh) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | 一种卷积神经网络量化方法、装置、计算机和存储介质 |
CN110555450A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人脸识别神经网络调整方法和装置 |
CN110555508A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人工神经网络调整方法和装置 |
CN110598838A (zh) * | 2018-06-13 | 2019-12-20 | 国际商业机器公司 | 统计感知权重量化 |
CN110738315A (zh) * | 2018-07-18 | 2020-01-31 | 华为技术有限公司 | 一种神经网络精度调整方法及装置 |
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107646116A (zh) * | 2015-05-08 | 2018-01-30 | 高通股份有限公司 | 用于定点神经网络的位宽选择 |
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN108734266A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型的压缩方法及装置、终端、存储介质 |
CN108734264A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型压缩方法及装置、存储介质、终端 |
CN108734268A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型的压缩方法及装置、终端、存储介质 |
CN107256422A (zh) * | 2017-06-06 | 2017-10-17 | 上海兆芯集成电路有限公司 | 数据量化方法及装置 |
CN108491928A (zh) * | 2018-03-29 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置、服务器及存储介质 |
CN110555450A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人脸识别神经网络调整方法和装置 |
CN110555508A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人工神经网络调整方法和装置 |
CN110598838A (zh) * | 2018-06-13 | 2019-12-20 | 国际商业机器公司 | 统计感知权重量化 |
CN110738315A (zh) * | 2018-07-18 | 2020-01-31 | 华为技术有限公司 | 一种神经网络精度调整方法及装置 |
CN109740737A (zh) * | 2018-12-30 | 2019-05-10 | 联想(北京)有限公司 | 卷积神经网络量化处理方法、装置及计算机设备 |
CN110188880A (zh) * | 2019-06-03 | 2019-08-30 | 四川长虹电器股份有限公司 | 一种深度神经网络的量化方法及装置 |
CN110363281A (zh) * | 2019-06-06 | 2019-10-22 | 上海交通大学 | 一种卷积神经网络量化方法、装置、计算机和存储介质 |
Non-Patent Citations (1)
Title |
---|
蔡瑞初;钟椿荣;余洋;陈炳丰;卢冶;陈瑶;: "面向"边缘"应用的卷积神经网络量化与压缩方法", 计算机应用, no. 09 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118384A (zh) * | 2021-12-09 | 2022-03-01 | 安谋科技(中国)有限公司 | 神经网络模型的量化方法、可读介质和电子设备 |
CN114118384B (zh) * | 2021-12-09 | 2024-06-04 | 安谋科技(中国)有限公司 | 神经网络模型的量化方法、可读介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4235514A2 (en) | Methods, systems, articles of manufacture and apparatus to map workloads | |
WO2022068623A1 (zh) | 一种模型训练方法及相关设备 | |
US11669443B2 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
US9536206B2 (en) | Method and apparatus for improving resilience in customized program learning network computational environments | |
CN115129386A (zh) | 用于神经网络部署和执行的有效优化 | |
CN115878330A (zh) | 线程的运行控制方法及其系统 | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
CN115016938A (zh) | 一种基于强化学习的计算图自动划分方法 | |
CN115080139A (zh) | 用于神经网络部署和执行的有效量化 | |
CN113688982A (zh) | 处理单元、相关装置和方法 | |
CN112990461B (zh) | 构建神经网络模型的方法、装置、计算机设备和存储介质 | |
CN117196000A (zh) | 一种容器化部署的边缘侧模型推理加速方法 | |
Harkin et al. | Genetic algorithm driven hardware–software partitioning for dynamically reconfigurable embedded systems | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
CN113269320B (zh) | 处理单元、计算装置、片上系统、数据中心和相关方法 | |
CN113269320A (zh) | 处理单元、计算装置、片上系统、数据中心和相关方法 | |
CN113705800A (zh) | 处理单元、相关装置和方法 | |
CN113313242A (zh) | 处理单元、相关装置和方法 | |
Minnella et al. | Design and Optimization of Residual Neural Network Accelerators for Low-Power FPGAs Using High-Level Synthesis | |
Lambert et al. | Flexible recurrent neural networks | |
US20230004855A1 (en) | Co-operative and adaptive machine learning execution engines | |
US12045611B1 (en) | Reconfigurable neural network processing based on subgraph recognition | |
CN113688979A (zh) | 处理单元、加速单元、相关装置和方法 | |
EP4177731A1 (en) | Sparsity uniformity enforcement for multicore processor |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240228 Address after: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai Applicant after: Pingtouge (Shanghai) semiconductor technology Co.,Ltd. Country or region after: China Address before: 847, 4 / F, capital tower 1, Grand Cayman, British Cayman Islands Applicant before: ALIBABA GROUP HOLDING Ltd. Country or region before: United Kingdom |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant |