CN113139650A - 深度学习模型的调优方法和计算装置 - Google Patents
深度学习模型的调优方法和计算装置 Download PDFInfo
- Publication number
- CN113139650A CN113139650A CN202010067045.6A CN202010067045A CN113139650A CN 113139650 A CN113139650 A CN 113139650A CN 202010067045 A CN202010067045 A CN 202010067045A CN 113139650 A CN113139650 A CN 113139650A
- Authority
- CN
- China
- Prior art keywords
- model
- unit
- quantized
- models
- quantization
- 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
- 238000013136 deep learning model Methods 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims description 37
- 230000001133 acceleration Effects 0.000 claims abstract description 146
- 238000013139 quantization Methods 0.000 claims abstract description 126
- 238000013528 artificial neural network Methods 0.000 claims abstract description 52
- 238000003860 storage Methods 0.000 claims description 36
- 230000009467 reduction Effects 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 238000007667 floating Methods 0.000 claims description 8
- 239000010410 layer Substances 0.000 description 67
- 238000012545 processing Methods 0.000 description 23
- 210000002569 neuron Anatomy 0.000 description 19
- 238000011176 pooling Methods 0.000 description 16
- 230000002776 aggregation Effects 0.000 description 15
- 238000004220 aggregation Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 11
- 238000005457 optimization Methods 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000012792 core layer Substances 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101150041570 TOP1 gene Proteins 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007726 management method Methods 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
- 238000002360 preparation method Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000010200 validation analysis 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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Advance Control (AREA)
- Image Analysis (AREA)
Abstract
公开了一种计算装置,包括存储器、调度单元和加速单元,其中,加速单元用于执行每个量化模型,存储器存储指令,调度单元读取指令,以执行:为深度学习模型创建多个配置组合,每个配置组合指定多个量化配置参数的一个取值组合;基于每个配置组合,对深度学习模型进行量化操作,以得到多个量化操作后的模型;将多个量化操作后的模型依次部署到加速单元,并从加速单元接收多个量化操作后的模型各自对应的精度数据;基于多个量化操作后的模型各自的精度数据,获得精度损失满足设定条件的优选模型。本公开实施例利用神经网络加速单元和调度单元的相互配合,实现较快地获取到精度损失较小的优选模型。
Description
技术领域
本公开涉及神经网络领域,具体而言,涉及深度学习模型的调优方法和计算装置。
背景技术
在神经网络领域,推理(Inference)是指将一个预先训练好的深度学习模型推送到实际业务场景中使用。由于推理直接面向用户,因此推理性能至关重要,尤其对于企业级产品而言更是如此。
关于推理性能,除了硬件层面的优化,在算法层面,模型量化(Quantized Model)是提升推理性能的重要手段之一。目前模型量化的方法有很多,其中将模型从32位单精度浮点数(FP32)模型转化为8位整型数据(INT8)模型是其中之一的方法。通常我们在构建深度学习模型时使用的都是32位单精度浮点数,模型规模较大的时候,对数据吞吐量和存储空间的要求很高。因此将模型从32位单精度浮点数转化为8位整型数据,有助于降低对数据吞吐量和存储空间的要求。
但是将模型从FP32模型转化到INT8模型会产生数据精度的损失,因此如何在量化时最小化精度损失是一个关键问题。
发明内容
基于此,本公开的目的是提供一种深度学习模型的调优方法和计算装置,以解决现有技术中存在的问题。
本公开实施例提供一种计算装置,包括存储器、调度单元和加速单元,其中,所述加速单元用于执行每个量化操作后的模型,所述存储器存储指令,所述调度单元读取所述指令,以执行:
为深度学习模型创建多个配置组合,每个配置组合指定多个量化配置参数的一个取值组合;
基于每个配置组合,对所述深度学习模型进行量化操作,以得到多个量化操作后的模型;
将所述多个量化操作后的模型依次部署到所述加速单元,并从所述加速单元接收所述多个量化操作后的模型各自对应的精度数据;
基于所述多个量化操作后的模型各自的精度数据,获得精度损失满足设定条件的优选模型。
可选地,所述调度单元将所述量化操作后的模型依次部署到所述神经网络加速单元包括:
所述调度单元从所述存储器上获取所述量化操作后的模型对应的待执行指令,并发送所述加速单元。
可选地,所述调度单元将所述量化操作后的模型依次部署到所述神经网络加速单元包括:
所述调度单元将所述量化操作后的模型对应的待执行指令在所述存储器上的存储位置发送所述加速单元,所述加速单元从所述存储位置获取所述待执行指令。
可选地,还包括:所述加速单元从所述存储器获取所述量化操作后的模型所需的数据。
可选地,所述量化操作后的模型所需的数据包括:权重参数和/或输入数据。
可选地,在所述将所述多个量化操作后的模型依次部署到所述加速单元的步骤之前,所述调度单元还执行:将所述多个量化操作后的模型对应的待执行指令转换为所述加速单元能够识别的待执行指令。
可选地,所述将所述多个量化操作后的模型依次部署到所述加速单元包括:
对于每个量化操作后的模型,根据其精度数据判断其精度下降是否超过下降门限;
如果其精度下降没有超过下降门限,则停止将其余量化操作后的模型部署到所述加速单元,并将当前量化操作后的模型作为优选模型。
可选地,所述量化操作包括校准操作和量化操作。
可选地,所述量化配置参数包括以下参数的一个或多个:校准时一次处理的图片个数、校准时执行的迭代次数、量化操作的批数目、选择的量化算法。
可选地,所述量化操作将深度学习模型的权重参数从高精度数据转换为低精度数据。
可选地,所述高精度数据为32位单精度浮点数,所述低精度数据为8位整型或16位整型数据。
可选地,根据所述加速单元的硬件特性根据所述加速单元的硬件特性确定所述多个配置组合。
第二方面,本公开实施例提供一种深度学习模型的调优方法,包括:为深度学习模型创建多个配置组合,每个配置组合指定多个量化配置参数的一个取值组合;
基于每个配置组合,对所述深度学习模型进行量化操作,以得到多个量化操作后的模型;
执行所述多个量化操作后的模型,并得到所述多个量化操作后的模型各自对应的精度数据;
基于所述多个量化操作后的模型各自的精度数据,获得精度损失满足设定条件的优选模型。
可选地,所述调优方法应用于耦接的存储器、调度单元和加速单元,所述存储器用于存储深度学习模型和所述多个量化操作后的模型,所述调度单元将所述量化操作后的模型依次部署到所述加速单元执行并接收所精度数据。
可选地,所述调度单元将调度单元将所述量化操作后的模型依次部署到所述神经网络加速单元包括:
所述调度单元将所述量化操作后的模型对应的待执行指令在所述存储器上的存储位置发送所述加速单元,所述加速单元从所述存储位置获取所述待执行指令。
可选地,还包括:所述加速单元从所述存储器获取所述量化操作后的模型所需的数据。
可选地,在所述将所述多个量化操作后的模型依次部署到所述加速单元的步骤之前,所述调度单元还执行:将所述多个量化操作后的模型对应的待执行指令转换为所述加速单元能够识别的待执行指令。
可选地,所述将所述多个量化操作后的模型依次部署到所述加速单元包括:
对于每个量化操作后的模型,根据其精度数据判断其精度下降是否超过下降门限;
如果其精度下降没有超过下降门限,则停止将其余量化操作后的模型部署到所述加速单元,并将当前量化操作后的模型作为优选模型。
可选地,所述量化配置参数包括以下参数的一个或多个:校准时一次处理的图片个数、校准时执行的迭代次数、量化操作的批数目、选择的量化算法。
可选地,所述量化操作将所述深度学习模型的权重参数从高精度数据转换为低精度数据。
第三方面,本公开实施例提供一种数据中心,包括根据上述任一个所述的计算装置。
在本实施例中,由于神经网络加速单元不具有配置组合的搜索能力,因此由调度单元获得多个配置组合,进而通过将量化后的深度学习模型部署到神经网络加速单元上执行,能够快速地获得深度学习模型的精度数据,从而可以基于足够多的配置组合寻找优选模型,且相对于将量化操作后的模型在调度单元上执行产生的模拟数据,由此获得的精度数据更加准确,从而能够确保优选模型的“优选性”。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出本公开一个实施例所应用的数据中心的层级结构图;
图2是本公开一个实施例所应用的数据中心的结构图;
图3是本公开一个实施例的数据中心中一个服务器的内部结构框图;
图4是根据本公开一个实施例服务器内部的中央处理单元(CPU)和神经网络加速单元(NPU)的控制关系图;
图5是根据本公开一个实施例的NPU核的内部结构图;
图6是示例性的用于深度学习模型的编译和优化的软件平台的架构图;
图7是一个示例性的卷积神经网络结构;
图8用于示意本公开实施例提供的深度学习模型在图2所示的处理器和神经网络加速单元的执行状态;
图9是本公开实施例的深度学习模型的调优方法的交互示意图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
加速单元:也称为神经网络加速单元,针对通用处理器在一些专门用途的领域(例如,处理图像、处理神经网络的各种运算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,它往往与通用处理器CPU配套使用,接受通用处理器的控制,执行一些特定用途或特定领域的处理,提高在特定用途或特定领域中的计算机处理效率。
片上内存:在主核或副核内单独使用,不能被共享的存储器。
命令处理器:在加速单元和驱动该加速单元工作的中央处理单元之间的命令接口。命令处理器接收中央处理单元让加速单元执行的指令,将这些指令分给加速单元中的各个核去执行。另外,它还负责加速单元中各个核的同步。
生命周期:操作数在指令序列中并不是在全部过程中都会涉及到,在指令序列中其第一次出现和最后一次用到的指令之间的部分,就是该操作数的生命周期。也就是说,过了该生命周期后,它就不再使用,没有必要留在片上内存中。
神经网络:一般指人工神经网络(Artificial Neural Network,简写为ANN),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法网络。一个经典的神经网络,也是最简单的神经网络结构,包含三个层次:输入层、输出层和中间层(又称隐藏层)。输入层、输出层和中间层又各自包括多个神经元(也称节点)。神经元是神经网络中的最小处理单元。经由大量、简单功能的神经元的广泛的互相连接能够形成非常复杂的神经网络结构。
神经网络模型:在神经网络中,将神经元数学化,产生神经元数学模型,神经网络中的大量的神经元数学模型形成神经网络模型。
深度学习模型:深度学习的概念源于神经网络的研究,将含有多个中间层的神经网络称为深度学习网络。因此,从这个意义上将,深度学习模型也是一种神经网络模型。深度学习模型和神经网络模型都必须经由训练产生。将样本数据输入到设计好的网络结构(即网络结构已经确定)中,经由多个中间层提取特征信息,并基于输出层的输出结果不断地修正神经元的权重参数,使输出层的输出结果愈来愈趋向于预设结果,直至确定最终的权重参数。训练好的深度学习模型可以真正地应用于实际场景中,同时还可以收集深度学习模型在实际场景中的使用情况,反过来优化深度学习模型。
图1示出作为本公开实施例所应用的一种场景的数据中心的分层结构图。
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,人工智能等越来越多地应用到数据中心。而神经网络作为人工智能的重要技术,已经大量应用到数据中心大数据分析运算中。
在传统的大型数据中心,网络结构通常是图1所示的三层结构,即分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层:
接入层(Access Layer)103:有时也称为边缘层,包括接入交换机130和接入交换机所连接的各服务器140。各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。接入交换机130是用来让这些服务器接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器。
汇聚层(Aggregation Layer)102:有时候也称为分发层,包括汇聚交换机120。每台汇聚交换机120连接多台接入交换机,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心层(Core Layer)101:包括核心交换机110。核心交换机110为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性。整个数据中心的网络分为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,仍然只有一个在工作。
图2示出了图1的分层的数据中心中各部件的物理连接。如图2所示,一个核心交换机110连接多个汇聚交换机120,一个汇聚交换机120连接多个接入交换机130,一个接入交换机130接入多个服务器140。
服务器
由于服务器140才是数据中心真实的计算装置,图3示出了一个服务器140内部的结构框图。服务器140包括有总线连接的存储器210、中央处理器(CPU)220和各种加速单元。这些加速单元包括神经网络加速单元(NPU)230、数据传输单元(DTU)260、图形处理单元(GPU,未示)、专用集成电路(ASIC,未示)和现场可编程门阵列(FPGA,未示)。
传统的处理器的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速单元,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。本发明提出的加速单元可以是它们中的任一种,下面对这些加速单元分别进行介绍。
神经网络加速单元(NPU)230:它是采用数据驱动并行计算的架构,用于处理各神经网络节点的大量运算(例如卷积、池化等)的处理单元。由于各神经网络节点的大量运算(例如卷积、池化等)中的数据和中间结果在整个计算过程中紧密联系,会被经常用到,用现有的CPU构架,由于CPU核内的内存容量很小,因此要大量频繁访问核外存储器,造成处理的低效。采用NPU,每个核中具有适于神经网络计算用到的存储容量的片上内存,避免频繁访问核外部的存储器,就能大大提高处理效率,提高计算性能。
数据传输单元(DTU)260:它是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备。DTU的主要功能是把远端设备的数据通过无线的方式传送回后台中心。在前端,DTU和客户的设备通过接口相连。DTU上电运行后先注册到移动的GPRS网络,然后去和设置在DTU中的后台中心建立套接字连接。后台中心作为套接字连接的服务端,DTU是套接字连接的客户端。因此DTU和后台软件配合一起使用,在建立连接后,前端的设备和后台的中心就可以通过DTU进行无线数据传输。
图形处理单元(GPU):是专门做图像和图形相关运算工作的微处理器。GPU开发了CPU中计算单元的空间过少的缺点,采用大量用于专门做图形计算的计算单元,使显卡减少了对CPU的依赖,承担了CPU原来承担的一些计算密集的图形图像处理工作。
专用集成电路(ASIC):是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。由于这种集成电路是按照用户要求定制的,其结构往往与特定用户要求相适应。
现场可编程门阵列(FPGA):是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
加速单元虽然有对于特定的应用或领域来说,执行效率大大高于普通处理器的优点,但也要接受调度单元220的控制。以NPU为例,存储器210中存储有各种深度学习模型,包括这些模型的神经元和神经元的权重数据等。这些深度学习模型当需要时被图3中的一个调度单元220部署到一个加速单元230。具体地,调度单元220可以通过指令的形式向加速单元230告知加速单元230深度学习模型在存储器210的存储位置。加速单元230然后可以根据这些位置进行寻址,将待执行指令存储在其片上内存中。调度单元220也可以通过指令的形式向加速单元230发送加速单元230的待执行指令,加速单元230接收指令并存储到到片上内存中。同理,加速单元230也可以通过上述方式获取输入数据。加速单元230获取待执行指令和输入数据,以进行推理计算。节点的权重参数可以包含在深度学习模型的指令序列中,由加速单元230一并从存储器210中取出。当然节点的权重参数也可以独立存储,由加速单元230在需要时从存储器210中取出。此处调度单元220可以理解为具有调度和控制能力的硬件单元,一般可为中央处理器(CPU)、微控制器、微处理器等硬件单元。
调度单元和加速单元的内部结构
下面结合图4的调度单元与加速单元的内部结构图,具体说明调度单元是如何控制加速单元进行工作的。
如图4所示,调度单元220内包含多个处理器核222和被多个处理器核222共享的高速缓存221。每个处理器核222包括取指令单元203、指令译码单元224、指令发射单元225、指令执行单元226。
取指令单元223用于将要执行的指令从存储器210中搬运到指令寄存器(可以是图4示出的寄存器堆229中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,调度单元220进入指令译码阶段,指令译码单元224按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元225的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元225位于指令译码单元224与指令执行单元226之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元226,使得多个指令的并行操作成为可能。
指令发射单元225将指令发射到指令执行单元226后,指令执行单元226开始执行指令。但如果该指令执行单元226判断该指令应该是加速单元执行的,则将其转发到相应的加速单元执行。例如,如果该指令是一条神经网络推理(inference)的指令,指令执行单元226不再执行该指令,而是将该指令通过总线发送到加速单元230,由加速单元230执行。
加速单元230内部包括多个核236(图4中示出了4个核,但本领域技术人员应当理解,加速单元230中也可以包含其它数目的核236)、命令处理器237、直接存储访问机制235、和总线通道231。
总线通道231是指令从总线进出加速单元230的通道。按照不同的机制,总线通道231可以包括PCIE通道232、I2C通道233、JTAG通道234。
PCIE即PCI-Express,是一种高速串行计算机扩展总线标准,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。PCIE属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。它的主要优势就是数据传输速率高,而且还有相当大的发展潜力。目前,PCIE的总线大多是PCIE GEN3,但本公开实施例也可以采用PCIE GEN4,即遵循PCI-Express4.0标准的总线通道。
I2C通道233是由Philips公司开发的一种简单、双向二线制同步串行总线通道。它只需要两根线即可在连接于总线上的器件之间传送信息。
JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。此标准用于验证设计与测试生产出的印刷电路板功能。1990年JTAG正式由IEEE的1149.1-1990号文档标准化,在1994年,加入了补充文档对边界扫描描述语言(BSDL)进行了说明。从那时开始,这个标准被全球的电子企业广泛采用。边界扫描几乎成为了JTAG的同义词。JTAG通道234即是遵循该标准的总线通道。
直接内存访问(DMA,Direct Memory Access)机制235是一些计算机总线架构提供的功能,它能使数据从附加设备(例如外部的存储器)直接写入到加速单元230的片上内存中。这种方式相比于设备之间所有的数据传输都要通过命令处理器237的方式,大大提高了数据访问的效率。正是因为有这样的机制,加速单元230的核可以直接访问存储器210,读取深度学习模型中的参数(例如各节点的权重参数)等,大大提高了数据访问效率。虽然图上示出直接内存访问机制235位于处理器237和总线通道231之间,但是加速单元230的设计不局限于此。在某些硬件设计中,每个NPU核236都可以包含一个直接内存访问机制235,从而NPU核236无需经由命令处理器237,而是直接从附加设备上读取数据并写入到加速单元230的片上内存中。
命令处理器237将由调度单元220送至加速单元230的指令分配给核236执行。指令执行单元226将需要加速单元230执行的待执行指令发送给加速单元230或者指令执行单元226告知待执行指令在存储器210上的存储位置。待执行指令序列从总线通道231进入后,缓存在命令处理器237,由命令处理器237选择核236,将指令序列分配给其执行。待执行指令来自编译好的深度学习模型。需要明白的是,待执行指令序列中,可以包括在调度单元220执行的待执行指令和需要在加速单元230执行的待执行指令。
NPU核
图5是根据本公开一个实施例的NPU核的内部结构图。
在一个实施例中,如图5所示,NPU核236包括张量引擎310、池化引擎320、存储器拷贝引擎330、定序器350、指令缓存器340、片上内存360、常数缓冲器370。
命令处理器237分配给NPU核236的指令序列首先进入指令缓存器340缓存。然后,定序器350从指令缓存器340中按照先进先出的顺序取指令,根据指令的性质分配给张量引擎310或池化引擎320执行。张量引擎310负责处理深度学习模型中的卷积和矩阵乘法等相关操作。池化引擎320负责处理深度学习模型中的池化操作。定序器350根据取出的指令是卷积、矩阵乘法还是池化等操作性质,决定将指令分配给张量引擎310还是池化引擎320。
片上内存360是存储深度学习模型中的权重参数以及深度学习模型实际使用时的输入和各种中间结果的核内存储器。常数缓冲器370是存储深度学习模型中除权重参数之外的其它常量参数(例如,深度学习模型中的超参)的缓冲器。如上所述,在调度单元220将深度学习模型预先配置在加速单元230的过程中,调度单元220可以通过指令的形式向加速单元230发送模型中的参数在存储器210中的位置。这些参数包括节点的权重和其它参数(例如超参)。对于权重,加速单元230需要时就会从存储器210相应的位置取出,放在片上内存360中。对于其它参数,加速单元230需要时就会从存储器210相应的位置取出,放在常数缓冲器370中。另外,当实际开始推理(inference)的指令由命令处理器237分配给核236执行后,指令中的输入参数(给深度学习模型的输入)也存储在片上内存360。另外,当张量引擎310和池化引擎320进行卷积或池化运算后,得到的各种中间结果也存放在片上内存360中。
适用于深度学习模型的软件平台
深度学习模型的改进不仅需要上述硬件层的支持,而且需要软件层和算法层持续的改进。只能将底层最好的硬件支持和上面最好的深度学习算法结构结合起来,才能交付一个强大的计算引擎。
图6示出了示例性的深度学习模型的软件平台。该软件平台部署在研发人员的终端设备,提供适用于深度学习模型的各种环境,包括编辑环境、编译环境、量化运行环境、模拟运行环境,研发人员能够基于该平台实现深度学习模型的代码编辑、代码编译、参数调整、量化、模拟运行(即在CPU上运行模型)等一系列的操作。
参见图上所示,从上往下,架构图包括应用层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包括运行API 415、执行管理器416、用户模式驱动器417和内核模式驱动器418。执行管理器416执行的资源分配,批量调度。优化运行API 415用于提供各种运行时可以调用的接口。用户模式驱动器417和用于提供内核模式下的硬件命令,资源调度。内核模式驱动器418用于提供内核模式下的任务调度和硬件控制等。
应理解,图6所示的为一个通用型的软件平台。市面上还有一些专用于构建特定类型的深度学习模型的软件平台。当然,本公开实施例并不依赖于软件平台。
量化操作
本文所指的量化操作即上面提到的量化412。量化412是将深度学习模型中的权重参数从高精度数据转换为低精度数据以及针对深度学习模型的各个节点的输入数据精度的转换,以节省神经网络加速单元上所需的存储空间,减少数据吞吐量。本公开主要关于将深度学习模型中的权重参数从高精度数据转换为低精度数据。下面主要介绍和这种量化操作相关的各个方面。
下面以图7所示的卷积神经网络结构为例对此进行解释。如图上所示,卷积神经网络结构700包括输入层701、多个卷积层702、多个池化层703、多个全连接层704、softmax层705和输出层706。其中,三个卷积层702和一个池化层703组成模块,在卷积神经网络结构中重复出现n次,n为正整数。在卷积神经网络结构中,每个层都包含多个神经元(也称为节点),每个神经元与其他神经元相互连接,接收一些神经元的输入并将输出提供给另一些神经元。卷积层702提供卷积计算,卷积结算和矩阵计算类似,例如,将输入的矩阵和卷积核进行矩阵相乘再求和计算得到输出给另一些神经元。池化层703的神经元是将输入的矩阵相加求平均(平均池化)或者特征图的数值求最大值(最大池化)。全连接层704将输入的各种表征局部特征的矩阵数据再重新通过权值矩阵组装成完整的表征全部特征的矩阵。因为全连接层704用到了所有的局部特征,所以叫全连接。Softmax层705多用于多分类过程中,将多个神经元的输出映射到(0,1)区间内,将得到的数值看作概率,从而来进行分类。在这些层中,除了池化层不带权重参数之外,其它层都有自己的权重参数。而量化操作主要将深度学习模型中的权重参数以及给深度学习模型的输入数据从高精度数据转换为低精度数据。下面以一个卷积计算为例介绍对权重参数的量化操作。
假设一个卷积层的输入为X,卷积核为Y,采用公式(1)所示:
该卷积层的输出定义为Z,该卷积层Z表示为:
其中z1=x1w1+x2w3,z2=z1w2+z2w4,z3=z3w1+z4w3,z4=z3w2+z4w4(3)。卷积层的神经元负责矩阵求和计算。通过卷积层,提取输入数据的特征的同时压缩了数据规模。卷积核Y内的数据即我们所说的权重参数。通常卷积神经网络结构具有多个卷积层、多个全连接层、Softmax层等。这些层都具有多个,每个层也都具有各自的权重参数。可以想见,权重参数的数据规模是很庞大的。深度学习模型的训练阶段,一般采用高精度数据类型存储权重参数。由此训练好的深度学习模型也是基于高精度数据表示权重参数。虽然采用高精度数据存储权重参数能够确保深度学习模型具有高精度,但是这也导致深度学习模型在实际应用时需要足够的存储空间和较高的数据吞吐能力。基于此,将训练好的神经网络模型通过如图6所示的软件平台执行量化操作:即将权重参数从高精度数据转换到更低精度的数据进行存储和计算,例如32位浮点数据转换为8位整型(有符号整型或者无符号整型)或16位浮点数据进行存储和计算,更具体地,例如,在某个卷积层,高精度的权重参数的取指范围为[1,300],对于卷积核中的数据5,则将其映射到8位无符号整型数据的数据空间时,采用这样的计算方法得到量化后的权重参数:256*5/300=4。需要明白的是,此计算方法是一种线性映射方法,只作为量化操作的示例描述,是为了帮助我们更好地理解量化操作。量化操作也有其他线性映射方法和非线性映射方法,在这里不再详细介绍。另外,量化操作可以只转换一部分权重参数,例如只转换一部分卷积层的卷积核,其余部分卷积层的卷积核保持不变。
现结合图4所示的服务器结构理解量化操作的执行情况。调度单元执行量化操作,然后将执行完量化操作的深度学习模型(即深度学习模型中的权重参数已经变成量化后的数据)部署给神经网络加速单元230。具体地,调度单元220可以以指令形式向神经网络加速单元230发送指令序列,神经网络加速单元230读取指令序列并执行。在一种实施方式中,调度单元230可以将权重参数以低精度数据类型存放在存储器210中,然后向加速单元230发送权重参数在存储器210中的地址,加速单元230在进行推理时,就可以按照这些地址从存储器210中取出权重参数放到加速单元230的片上内存360中运行,此时片上内存360内的权重参数也为低精度数据类型。同时,调度单元也将量化后的模型的输入数据从高精度数据类型转换为低精度数据,并存放在存储器210中,然后通过指令的形式向加速单元230通知它们在存储器210中的地址,便于加速单元230利用这些输入参数和权重参数进行运算。在另一种实施方式中,调度单元230可以将权重参数以低精度数据类型存放在存储器210中,然后当加速单元230需要时,从存储器210获取权重参数发送给加速单元230,加速单元230得到权重参数放到加速单元230的片上内存360中以进行推理。
通过将权重参数和/或输入数据从高精度数据类型转换为低精度数据类型,可以节省在神经网络加速单元上所需的存储空间,并减少数据吞吐量。
图8示出了本公开实施例提供的深度学习模型不同阶段的模型状态。参见图8所示,原始模型801为一个预先训练好的高精度的深度学习模型,量化模型802为原始模型801经过量化操作后得到的深度学习模型。量化操作可以分步骤进行,例如先进行校准操作,再在校准操作的基础上实施量化操作,得到量化模型。校准即确定原始模型801的每个层的输入参数的取值范围的操作。可以在若干个时间点提取输入到深度学习模型的某个层的输入参数(这些输入数据也是其他层的输出数据),从这些时间点的输入参数,归纳出该层的输入参数的取值范围。然后根据取值范围执行量化操作,例如在对多个层执行完量化操作,将输出数据和校准操作得到的取值范围比较,以确定精度损失,根据精度损失调整量化操作。
有些深度学习模型将校准和量化操作合并执行,即输入原始模型801,输出经过校准和量化操作后的量化模型802。量化操作完成后,高精度模型转化为低精度模型。需要明白的是,量化模型803在处理器220上运行时,因此量化模型802所对应的指令序列需被处理器220识别和执行,当将量化模型802部署到加速单元230时,量化模型802需要被加速单元的指令集识别。因此,在一些实施例中,在得到量化模型802之后,将量化模型802所对应的指令序列再转换为加速单元230所能够识别的指令序列,这里我们这一步骤得到的模型称为加速单元模型803,以区分于量化模型802。当然,理想状况下,调度单元和加速单元230的指令集可以互相兼容,如此将量化模型802转换为加速单元模型的步骤可被省略。
需要指出的是,本文中的模型包含实现算法模型的源代码、可执行代码、权重参数和数据样本。源代码可以为任意编程语言形成的源代码,例如Java、Python,并经由图6所示的软件平台提供的编译器生成可执行代码,例如,生成调度单元的可执行性代码,和生成加速单元230的可执行代码。权重参数是各个层的权重参数。数据样本例如是保留在模型中的测试样本和验证样本。
需要强调的是,图8只用于示意上述模型的执行情况,而不能用于示意上述模型的存储情况,实际上,原始模型801、量化模型802和加速单元模型803都是存储在存储器210上,在执行时,加载到调度单元或加速单元230中。
在一些实施例中,量化模型中的权重参数为64、32或16位浮点数(FP64、FP32或FP16)数据,量化模型802和加速单元模型803的权重参数为以下之一:8位整型(包括有符号或无符号整型)、16位浮点数(FP16)数据。
量化配置参数
量化配置参数用于定义量化操作。量化配置参数一般有多个。例如一个CNN模型都提供如下的量化配置参数:校准时一次处理的图片个数(batch size)、校准时执行的迭代次数、量化用的批量数目(batch steps)、量化时选择的量化算法、不做量化的卷积层。每个量化配置参数通过枚举数据提供取值范围。当调度单元为量化配置参数指定不同取值并据此执行量化操作时,得到不同的量化模型(不同的量化模型具有不同数据的权重参数)。下面是由量化配置参数组成的四组配置组合OrderedDict,cal_num_steps、cal_batch_size、test_num_steps和test_batch_size为相应量化配置参数的变量名称,后面的数值对应它的取值,采用不同的配置组合得到的量化模型和加速单元模型不同,从而模型执行得到不同的精度数据。
OrderedDict([
('cal_num_steps',4),
('cal_batch_size',1),
('test_num_steps',-1),
('test_batch_size',1)])
OrderedDict([
('cal_num_steps',8),
('cal_batch_size',1),
('test_num_steps',-1),
('test_batch_size',1)])
OrderedDict([
('cal_num_steps',16),
('cal_batch_size',1),
('test_num_steps',-1),
('test_batch_size',1)])
OrderedDict([
('cal_num_steps',32),
('cal_batch_size',1),
('test_num_steps',-1),
('test_batch_size',1)])
OrderedDict([
('cal_num_steps',64),
('cal_batch_size',1),
('test_num_steps',-1),
('test_batch_size',1)])。
本公开实施例的调优策略
调度单元为原始模型801创建多个配置组合,每个配置组合指定多个量化配置参数的取值组合,然后根据每个配置组合执行量化操作,以得到多个量化模型,接着将多个量化模型依次部署到神经网络加速单元230。神经网络加速单元230每执行一个量化模型,向调度单元反馈精度数据,调度单元根据返回的精度数据评估量化操作,从多个量化模型802中选出精度损失满足设定条件的优选模型,并记录优选模型对应的配置组合。精度数据包括度量量化模型精度的各种指标。
一般情况下,可以在调度单元220上运行量化后的深度学习模型,并根据反馈的精度数据评价量化操作的精度损失。但是这样做速度较慢,而且不能准确地评价量化操作的精度损失。而本实施例通过将量化后的深度学习模型部署到神经网络加速单元上执行,则能够很好地规避这两个问题,而且由于神经网络加速单元不具有配置组合的搜索能力,因此由调度单元搜索多个配置组合,以确保基于足够多的配置组合中执行量化操作,并据此寻找优选模型。换言之,利用神经网络加速单元和调度单元的相互配合,便于较快地从中获取到精度损失较小的优选模型。
可选地,如果量化模型需要转换为加速单元模型,则在将量化模型部署到加速单元之前,先将量化模型转换为加速单元模型。
可选地,可以在将模型应用到实际业务场景之前执行上述调优步骤,从而确定采用何种配置组合将模型部署到实际业务场景中。
可选地,根据加速单元230的硬件特性确定多个配置组合。目前已有多家公司推出神经网络加速单元,不同公司在推出神经网络加速单元时,会有不同侧重点,从而导致这些神经网络加速单元具有不同的硬件特性。基于此,针对特定的神经网络加速单元时,应该有针对性地构建多个配置项。例如,如果神经网络加速单元230具有多个NPU核,由于卷积神经网络模型的卷积计算可以分布到多个核上,则减少量化操作的卷积层,以减少精度损失,反之则增加量化操作的卷积层。
图9是本公开实施例的深度学习模型的调优方法的交互示意图。
参见图上所示,步骤S1中,调度单元创建多个配置组合。每个配置组合对应于量化配置参数的一种取值组合。
在步骤S2中,调度单元针对每个配置组合,从原始模型生成量化模型。本步骤可以依赖于如图6所示的软件平台实施。即通过该软件平台提供的一些工具较为便利地获得各个配置组合,并在相应的配置组合下执行量化操作,得到量化模型,不同的量化模型具有不同数据的权重参数。
在步骤S3中,调度单元将量化模型部署到神经网络加速单元230。
在步骤S4中,神经网络加速单元230执行量化模型,得到精度数据。具体地,存储器上存储有量化模型执行所需的样本数据,调度单元220通过调度指令使得神经网络加速单元230可以不经由调度单元220直接访问存储器1300,以获得该样本数据,加速单元230将这些数据存储到自身的片上内存360中,并进行并行计算。最终加速单元根据230其中,精度数据为用于衡量加速单元模型的各种指标。
在步骤S5中,加速单元230将精度数据返回给调度单元。
在步骤S6中,调度单元220对返回的精度数据进行判断。
在步骤S7中,当精度下降超过下降门限时,跳转到步骤S1处重新执行,以重复执行步骤S1至S6。下降门限为一个预先设定的数值,例如1%,如果经过量化校准后的加速单元模型的精度下降超过了1%,则需要采用下一个配置组合生成量化模型。
在步骤S8中,当精度下降不超过下降门限时,将对应的加速单元模型和量化模型作为优选模型,将对应的配置组合作为优选配置组合,并停止将其余加速单元模型发送给神经网络加速单元。
在本公开实施例中,利用加速单元和调度单元的相互配合,能够获得精度下降在允许的范围内的优选模型,从而使得推理性能得到提高的基础上,精度损耗较小。
需要明白的是,本实施例的调优方法在得到精度下降不超过下降门限的量化模型即停止将其余量化模型发送给加速单元,但在另一个实施例中,所有量化模型依次在加速单元中执行一次,从中选出最优精度数据对应的量化模型作为优选模型。
可选地,在步骤S2和S3之间,增加步骤:判断是否需要将量化模型转换为加速单元模型,并据此执行。判断是否需要将量化模型转换为加速单元模型是确定调度单元220和加速单元230的指令集是否兼容。如果兼容,则省略本步骤。
需要明白的是,上述方法提供的是普遍意义上的深度学习模型的调优方法,虽然核心思想不变,但是在针对到一个具体的深度学习模型时,细节上还是有所区别的。例如,采用哪些指标作为该深度学习模型的精度数据就有区别,卷积深度学习模型一般可以采用精度数据平均精度均值(Mean Average Precision,mAP)形成精度数据,imagenet(一个计算机视觉系统识别项目)用的top1准确率(排名第一的类别与实际结果相符的准确率)和Top5准确率(指排名前五的类别包含实际结果的准确率),诸如此类。另外,如果该深度学习模型为可以采用一些公开的例程,则可以参一些源代码并使用其中的一些工具。
本公开实施例的商业价值
本公开实施例利用硬件层和算法层的配合获取优选模型。该优选模型已经具有广泛而且成功的应用场景,使得对于该模型的任何微小的改进都变得如此重要,这种重要不仅体现在技术层面,更体现在商业层面。以人脸识别领域为例,通过摄像头收集视频监控,通过神经网络模型识别人脸图像,将人脸图像和云存储的人脸比对,能够识别监控视频中犯罪人员。再在语音识别领域,通过神经网络模型进行语音识别,实现同声传译。这些应用场景都能够带来巨大的商业利益。
本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (21)
1.一种计算装置,包括存储器、调度单元和加速单元,其中,所述加速单元用于执行每个量化操作后的模型,所述存储器存储指令,所述调度单元读取所述指令,以执行:
为深度学习模型创建多个配置组合,每个配置组合指定多个量化配置参数的一个取值组合;
基于每个配置组合,对所述深度学习模型进行量化操作,以得到多个量化操作后的模型;
将所述多个量化操作后的模型依次部署到所述加速单元,并从所述加速单元接收所述多个量化操作后的模型各自对应的精度数据;
基于所述多个量化操作后的模型各自的精度数据,获得精度损失满足设定条件的优选模型。
2.根据权利要求1所述的计算装置,其中,所述调度单元将所述量化操作后的模型部署到所述神经网络加速单元包括:
所述调度单元从所述存储器上获取所述量化操作后的模型对应的待执行指令,并发送所述加速单元。
3.根据权利要求1所述的计算装置,其中,所述调度单元将所述量化操作后的模型部署到所述神经网络加速单元包括:
所述调度单元将所述量化操作后的模型对应的待执行指令在所述存储器上的存储位置发送所述加速单元,所述加速单元从所述存储位置获取所述待执行指令。
4.根据权利要求2或3所述的计算装置,还包括:所述加速单元从所述存储器获取所述量化操作后的模型所需的数据。
5.根据权利要求4所述的计算装置,所述量化操作后的模型所需的数据包括:权重参数和/或输入数据。
6.根据权利要求1所述的计算装置,在所述将所述多个量化操作后的模型依次部署到所述加速单元的步骤之前,所述调度单元还执行:将所述多个量化操作后的模型对应的待执行指令转换为所述加速单元能够识别的待执行指令。
7.根据权利要求1所述的计算装置,其中,所述将所述多个量化操作后的模型依次部署到所述加速单元包括:
对于每个量化操作后的模型,根据其精度数据判断其精度下降是否超过下降门限;
如果其精度下降没有超过下降门限,则停止将其余量化操作后的模型部署到所述加速单元,并将当前量化操作后的模型作为优选模型。
8.根据权利要求1所述的计算装置,所述量化操作包括校准操作和量化操作。
9.根据权利要求1所述的计算装置,其中,所述量化配置参数包括以下参数的一个或多个:校准时一次处理的图片个数、校准时执行的迭代次数、量化操作的批数目、选择的量化算法。
10.根据权利要求1至9任一项所述的计算装置,其中,所述量化操作将所述深度学习模型的权重参数从高精度数据转换为低精度数据。
11.根据权利要求10所述的计算装置,其中,所述高精度数据为32位单精度浮点数,所述低精度数据为8位整型或16位整型数据。
12.根据权利要求1所述的计算装置,其中,所述多个配置组合与所述加速单元的硬件特性相关。
13.一种深度学习模型的调优方法,包括:
为深度学习模型创建多个配置组合,每个配置组合指定多个量化配置参数的一个取值组合;
基于每个配置组合,对所述深度学习模型进行量化操作,以得到多个量化操作后的模型;
执行所述多个量化操作后的模型,并得到所述多个量化操作后的模型各自对应的精度数据;
基于所述多个量化操作后的模型各自的精度数据,获得精度损失满足设定条件的优选模型。
14.根据权利要求13所述的调优方法,其中,所述调优方法应用于耦接的存储器、调度单元和加速单元,所述存储器用于存储深度学习模型和所述多个量化操作后的模型,所述调度单元将所述多个量化操作后的模型依次部署到所述加速单元执行并接收所精度数据。
15.根据权利要求14所述的调优方法,所述调度单元将所述量化操作后的模型部署到所述神经网络加速单元包括:
所述调度单元将所述量化操作后的模型对应的待执行指令在所述存储器上的存储位置发送所述加速单元,所述加速单元从所述存储位置获取所述待执行指令。
16.根据权利要求15所述的调优方法,还包括:所述加速单元从所述存储器获取所述量化操作后的模型所需的数据。
17.根据权利要求14所述的调优方法,在所述将所述多个量化操作后的模型依次部署到所述加速单元的步骤之前,所述调度单元还执行:将所述多个量化操作后的模型对应的待执行指令转换为所述加速单元能够识别的待执行指令。
18.根据权利要求14所述的调优方法,其中,所述将所述多个量化操作后的模型依次部署到所述加速单元包括:
对于每个量化操作后的模型,根据其精度数据判断其精度下降是否超过下降门限;
如果其精度下降没有超过下降门限,则停止将其余量化操作后的模型部署到所述加速单元,并将当前量化操作后的模型作为优选模型。
19.根据权利要求13所述的调优方法,其中,所述量化配置参数包括以下参数的一个或多个:校准时一次处理的图片个数、校准时执行的迭代次数、量化操作的批数目、选择的量化算法。
20.根据权利要求13至19任一项所述的调优方法,其中,所述量化操作将所述深度学习模型的权重参数从高精度数据转换为低精度数据。
21.一种数据中心,包括根据权利要求1-12中任一个所述的计算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010067045.6A CN113139650B (zh) | 2020-01-20 | 2020-01-20 | 深度学习模型的调优方法和计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010067045.6A CN113139650B (zh) | 2020-01-20 | 2020-01-20 | 深度学习模型的调优方法和计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113139650A true CN113139650A (zh) | 2021-07-20 |
CN113139650B CN113139650B (zh) | 2024-07-26 |
Family
ID=76809134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010067045.6A Active CN113139650B (zh) | 2020-01-20 | 2020-01-20 | 深度学习模型的调优方法和计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113139650B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113627620A (zh) * | 2021-07-29 | 2021-11-09 | 上海熠知电子科技有限公司 | 一种面向深度学习的处理器模组 |
CN113645281A (zh) * | 2021-07-29 | 2021-11-12 | 上海熠知电子科技有限公司 | 一种面向深度学习的分布式服务器及服务器集群 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247949A (zh) * | 2017-08-02 | 2017-10-13 | 北京智慧眼科技股份有限公司 | 基于深度学习的人脸识别方法、装置和电子设备 |
CN108268950A (zh) * | 2018-01-16 | 2018-07-10 | 上海交通大学 | 基于矢量量化的迭代式神经网络量化方法及系统 |
CN108734268A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型的压缩方法及装置、终端、存储介质 |
CN109767001A (zh) * | 2019-01-07 | 2019-05-17 | 深圳增强现实技术有限公司 | 神经网络模型的构建方法、装置及移动终端 |
CN109934285A (zh) * | 2019-03-11 | 2019-06-25 | 吉林大学 | 一种基于深度学习的图像分类神经网络压缩模型设计 |
CN110008952A (zh) * | 2019-03-26 | 2019-07-12 | 深兰科技(上海)有限公司 | 一种目标识别方法及设备 |
CN110163368A (zh) * | 2019-04-18 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 基于混合精度的深度学习模型训练方法、装置及系统 |
US20190286973A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
CN110348562A (zh) * | 2019-06-19 | 2019-10-18 | 北京迈格威科技有限公司 | 神经网络的量化策略确定方法、图像识别方法和装置 |
CN110555450A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人脸识别神经网络调整方法和装置 |
-
2020
- 2020-01-20 CN CN202010067045.6A patent/CN113139650B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108734268A (zh) * | 2017-04-21 | 2018-11-02 | 展讯通信(上海)有限公司 | 深度神经网络模型的压缩方法及装置、终端、存储介质 |
CN107247949A (zh) * | 2017-08-02 | 2017-10-13 | 北京智慧眼科技股份有限公司 | 基于深度学习的人脸识别方法、装置和电子设备 |
CN108268950A (zh) * | 2018-01-16 | 2018-07-10 | 上海交通大学 | 基于矢量量化的迭代式神经网络量化方法及系统 |
US20190286973A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
CN110555450A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人脸识别神经网络调整方法和装置 |
CN109767001A (zh) * | 2019-01-07 | 2019-05-17 | 深圳增强现实技术有限公司 | 神经网络模型的构建方法、装置及移动终端 |
CN109934285A (zh) * | 2019-03-11 | 2019-06-25 | 吉林大学 | 一种基于深度学习的图像分类神经网络压缩模型设计 |
CN110008952A (zh) * | 2019-03-26 | 2019-07-12 | 深兰科技(上海)有限公司 | 一种目标识别方法及设备 |
CN110163368A (zh) * | 2019-04-18 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 基于混合精度的深度学习模型训练方法、装置及系统 |
CN110348562A (zh) * | 2019-06-19 | 2019-10-18 | 北京迈格威科技有限公司 | 神经网络的量化策略确定方法、图像识别方法和装置 |
Non-Patent Citations (2)
Title |
---|
卢冶;陈瑶;李涛;蔡瑞初;宫晓利;: "面向边缘计算的嵌入式FPGA卷积神经网络构建方法", 计算机研究与发展, no. 03, 15 March 2018 (2018-03-15) * |
王磊;赵英海;杨国顺;王若琪;: "面向嵌入式应用的深度神经网络模型压缩技术综述", 北京交通大学学报, no. 06, 15 December 2017 (2017-12-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113627620A (zh) * | 2021-07-29 | 2021-11-09 | 上海熠知电子科技有限公司 | 一种面向深度学习的处理器模组 |
CN113645281A (zh) * | 2021-07-29 | 2021-11-12 | 上海熠知电子科技有限公司 | 一种面向深度学习的分布式服务器及服务器集群 |
Also Published As
Publication number | Publication date |
---|---|
CN113139650B (zh) | 2024-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110084281B (zh) | 图像生成方法、神经网络的压缩方法及相关装置、设备 | |
WO2022083624A1 (zh) | 一种模型的获取方法及设备 | |
US11783227B2 (en) | Method, apparatus, device and readable medium for transfer learning in machine learning | |
CN109104876B (zh) | 一种运算装置及相关产品 | |
CN112651511B (zh) | 一种训练模型的方法、数据处理的方法以及装置 | |
EP3537349A1 (en) | Machine learning model training method and device | |
WO2021190597A1 (zh) | 一种神经网络模型的处理方法以及相关设备 | |
CN113313241A (zh) | 确定深度学习模型的张量信息的方法和计算装置 | |
WO2022111617A1 (zh) | 一种模型训练方法及装置 | |
CN115456159A (zh) | 一种数据处理方法和数据处理设备 | |
WO2021051987A1 (zh) | 神经网络模型训练的方法和装置 | |
US12067479B2 (en) | Heterogeneous deep learning accelerator | |
CN113269319A (zh) | 深度学习模型的调优方法、编译方法及计算装置 | |
CN113705798A (zh) | 处理单元、计算装置及深度学习模型的计算图优化方法 | |
CN113505883A (zh) | 一种神经网络训练方法以及装置 | |
WO2024212648A1 (zh) | 一种分类模型的训练方法及相关装置 | |
Dai | Real-time and accurate object detection on edge device with TensorFlow Lite | |
CN109583367A (zh) | 图像文本行检测方法及装置、存储介质和电子设备 | |
CN113139650A (zh) | 深度学习模型的调优方法和计算装置 | |
CN116362325A (zh) | 一种基于模型压缩的电力图像识别模型轻量化应用方法 | |
WO2024160187A1 (zh) | 一种神经网络的训练方法、图像处理的方法以及装置 | |
CN118297911A (zh) | 绝缘子缺陷故障检测方法、装置、存储介质及计算机设备 | |
CN116362301A (zh) | 一种模型的量化方法以及相关设备 | |
CN114997380A (zh) | 采样器以及用于图神经网络模型执行的装置 | |
CN113269320B (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240226 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 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |