CN116050469A - Ai模型的处理方法、运算方法及装置 - Google Patents
Ai模型的处理方法、运算方法及装置 Download PDFInfo
- Publication number
- CN116050469A CN116050469A CN202111265704.8A CN202111265704A CN116050469A CN 116050469 A CN116050469 A CN 116050469A CN 202111265704 A CN202111265704 A CN 202111265704A CN 116050469 A CN116050469 A CN 116050469A
- Authority
- CN
- China
- Prior art keywords
- target
- weight
- model
- matrix
- block
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
- 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
- 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/084—Backpropagation, e.g. using gradient descent
Abstract
本申请公开了人工智能领域中的一种AI模型的处理方法、运算方法及装置,在该处理方法中,以权重块作为稀疏粒度对初始AI模型进行稀疏处理,得到目标AI模型,权重块的尺寸为加速器的最小计算单元的整数倍。本申请的方案减少了计算量,提高了模型的运行速度,减少了运算开销。
Description
技术领域
本申请涉及人工智能领域,并且更具体地,涉及AI模型的处理方法、运算方法及装置。
背景技术
人工智能(artificial intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
随着人工智能技术的快速发展和迭代,神经网络模型的性能得到了持续的提升,同时神经网络模型的训练需要使用到海量的数据计算,也对计算芯片提出了更高要求。为了提高神经网络模型的训练速度,可以采用稀疏计算等方式减少训练量。
现有的稀疏计算的方案通常需要特定的硬件的支持。例如,在一个权重矩阵中,从每4个权重中选择2个权重参与矩阵运算。然而该方案需要特定的硬件支持才能实现权重矩阵的稀疏化处理,在其他通用的AI加速器中,若没有特定的硬件支持,可能无法实现权重矩阵的稀疏化处理。
发明内容
本申请提供一种AI模型的处理方法、运算方法及装置,能够提高AI模型的运算速度,减少运算开销。
第一方面,提供了一种AI模型的处理方法,该方法包括:获取初始AI模型和加速器的最小计算单元的尺寸,加速器用于执行目标AI模型的运算;对初始AI模型进行稀疏处理,以得到目标AI模型,其中,目标AI模型的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,其中,位于目标神经网络模型的第i层的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
根据本申请实施例的方案,以权重块的尺寸作为稀疏处理的粒度,即以权重块为单位保留或舍弃权重矩阵中的权重值,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍。本申请实施例的方案减少了初始AI模型中的冗余权重,减少模型的计算量,有利于提高加速器的处理速度。而且,目标AI模型的目标权重块的尺寸为最小计算单元的尺寸的整数倍,在目标AI模型的运算过程中,加速器可以根据最小计算单元所支持的数据格式一次性获取运算所需的数据,无需通过裁剪和拼凑等方式将运算所需的数据转换为最小计算单元能够支持的数据格式,降低了运算的时延。此外,以权重块作为稀疏处理的粒度,降低了权重索引的复杂性,在运算过程中能够减少输入数据的寻址时间,无需特定的硬件支持即可实现有效的硬件加速。
最小计算单元的尺寸指的是加速器能够一次性处理的矩阵运算的规模,或者说,计算单元一次运算执行的计算量。
示例性地,加速器可以包括以下至少一项:中央处理器(central processingunit,CPU)、图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)和张量处理器(tensor processing unit,TPU)等等。
结合第一方面,在第一方面的某些实现方式中,对初始AI模型进行稀疏处理,以得到目标AI模型,包括:将初始AI模型中的至少一个目标网络层中的各个目标网络层中的至少一个权重块作为不参与运算的权重块,以得到稀疏AI模型;对稀疏AI模型进行调优,以得到目标AI模型。
可选地,一个权重矩阵中的多个权重块的尺寸相同。
若权重矩阵中的多个权重块的尺寸不同,那么在对AI模型中的算子进行编译时,需要针对不同的尺寸的权重块分别进行算子的编译,增加了编译次数。在本申请实施例的方案中,一个权重矩阵中的多个权重块的尺寸相同,在对AI模型中的算子进行编译时,仅需执行一次算子编译,即减少了编译次数,进而减少了编译时间,提高了模型的运算速度。此外,当加速器包括多个计算单元时,能够实现多个权重块的并行计算,进一步提高模型的运算速度。
结合第一方面,在第一方面的某些实现方式中,方法还包括:以压缩权重的形式存储目标神经网络模型的权重矩阵,压缩权重由至少一个目标权重块构成。
根据本申请实施例的方案,以压缩权重的形式存储该至少一个目标网络层的权重矩阵,能够减少对存储空间的需求量。此外,在矩阵运算累加方向上的目标权重块的数量相同的情况下,能够得到结构化稀疏矩阵,在运算过程中,可以直接将压缩权重加载至计算单元中进行矩阵运算,有利于提高处理速度。
结合第一方面,在第一方面的某些实现方式中,整数倍对应的倍数是在搜索空间内进行搜索得到的。
可选地,目标AI网络模型中的不同网络层的权重矩阵中的权重块的尺寸不同。
在本申请实施例的方案中,在搜索空间内搜索权重块的尺寸,能够得到适合各个网络层的权重块的尺寸,有利于提高模型的精度。此外,一定尺寸的权重块可以保证在一定目标精度的情况下,得到一定的稀疏率,能够提高模型的处理效率。
结合第一方面,在第一方面的某些实现方式中,目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,目标AI模型的稀疏率满足目标稀疏率。
在本申请实施例的方案中,在模型的稀疏率满足目标稀疏率的前提下,在搜索空间内搜索目标AI模型的权重矩阵的稀疏率,能够得到适合的稀疏率,有利于提高模型的精度。
结合第一方面,在第一方面的某些实现方式中,目标AI模型的权重矩阵的稀疏率是在搜索空间内进行搜索得到的。稀疏神经网络模型的精度满足目标精度。
在本申请实施例的方案中,在模型的精度满足目标精度的前提下,在搜索空间内搜索目标AI模型的权重矩阵的稀疏率,能够得到适合目标AI模型的权重矩阵的稀疏率,有利于降低模型的稀疏率,进而减少模型的计算量,以便实现模型的加速运算。
结合第一方面,在第一方面的某些实现方式中,目标AI模型的权重矩阵对应的网络层属于多个候选网络层。
在本申请实施例的方案中,可以在指定的候选网络层的范围内进行稀疏处理,避免影响其他网络层,例如,避免影响与模型的精度的相关性较高的网络层,有利于保证模型的精度。
结合第一方面,在第一方面的某些实现方式中,在目标AI模型的权重矩阵对应的网络层为卷积层的情况下,目标AI模型的权重矩阵可以是通过将网络层的卷积核转换为二维矩阵得到的。
第二方面,提供了一种AI模型的运算方法,目标AI模型的第i层的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,位于目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同,在加速器执行目标AI模型的运算的过程中执行以下步骤:根据目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,至少一个目标数据块对应于至少一个目标权重块,权重索引用于指示至少一个目标权重块在目标AI模型的权重矩阵中的位置;基于至少一个目标数据块和至少一个目标权重块执行矩阵运算,以得到矩阵运算的结果。
根据本申请实施例的方案,在运算过程中,加速器可以根据最小计算单元能够支持的数据格式一次性获取运算所需的数据,无需通过裁剪或拼凑等方式将运算所需的数据转换为最小计算单元能够支持的数据格式,降低了运算的时延。而且,索引用于指示目标权重块的位置,降低了索引的复杂性,在运算过程中能够减少输入数据的寻址时间,无需特定的硬件支持即可实现有效的硬件加速。
该至少一个目标数据块指的是矩阵运算中需要计算的输入数据,即权重矩阵中的目标权重块对应的输入数据。
结合第二方面,在第二方面的某些实现方式中,目标AI模型的权重矩阵以压缩权重的形式存储,压缩权重由至少一个目标权重块构成。
根据本申请实施例的方案,以压缩权重的形式存储该至少一个目标网络层的权重矩阵,能够减少对存储空间的需求量。此外,在矩阵运算累加方向上的目标权重块的数量相同的情况下,能够得到结构化稀疏矩阵,在运算过程中,可以直接将压缩权重加载至计算单元中进行矩阵运算,有利于提高处理速度。
结合第二方面,在第二方面的某些实现方式中,方法还包括:将至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,多个权重组中的一个权重组包括目标AI模型的权重矩阵中位于矩阵运算累加方向上的目标权重块;以及基于至少一个目标数据块和至少一个目标权重块执行矩阵运算,以得到矩阵运算的结果,包括:对多个数据矩阵和多个权重组分别执行矩阵运算,得到多个矩阵运算的结果;对多个矩阵运算的结果进行数据重排,以得到矩阵运算的结果。
根据本申请实施例的方案,通过并行执行矩阵运算,能够提高加速器的处理效率。
结合第二方面,在第二方面的某些实现方式中,在目标AI模型的权重矩阵对应的网络层为卷积层的情况下,目标AI模型中的权重矩阵是将该网络层的卷积核转换为二维矩阵得到的。
结合第二方面,在第二方面的某些实现方式中,根据目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,包括:根据目标AI模型的权重矩阵的权重索引确定输入数据矩阵中的目标位置;将输入数据矩阵中的目标位置上的数据转换为至少一个目标数据块。
根据本申请的方案,当网络层为卷积层时,根据权重索引从输入数据矩阵中的目标位置的数据,并通过im2col将目标位置的数据展开为多个数据矩阵,这样无需将输入数据矩阵先通过im2col的方式进行转换,再从转换后的输入数据矩阵中获取该至少一个目标数据块,无需保存转换后的输入数据矩阵,减少了对存储空间的需求,同时提高了处理效率。
结合第二方面,在第二方面的某些实现方式中,整数倍对应的倍数是通过在搜索空间内进行搜索得到的。
结合第二方面,在第二方面的某些实现方式中,目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,目标AI模型的稀疏率满足目标稀疏率。
第三方面,提供了一种AI模型的处理装置,该装置包括用于执行上述第一方面以及第一方面中的任意一种实现方式中的方法的模块或单元。
第四方面,提供了一种AI模型的运算装置,该装置包括用于执行上述第二方面以及第二方面中的任意一种实现方式中的方法的模块或单元。
应理解,在上述第一方面中对相关内容的扩展、限定、解释和说明也适用于第二方面、第三方面以及第四方面中相同的内容。
第五方面,提供了一种AI模型的处理装置,该装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。
上述第五方面中的处理器既可以是中央处理器(central processing unit,CPU),也可以是CPU与AI运算处理器的组合,这里的AI运算处理器可以包括图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)和张量处理器(tensor processing unit,TPU)等等。其中,TPU是谷歌(google)为机器学习全定制的人工智能加速器专用集成电路。
第六方面,提供了一种AI模型的运算装置,该装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行第人方面以及第二方面中的任意一种实现方式中的方法。
上述第六方面中的处理器既可以是CPU,也可以是CPU与AI运算处理器的组合,这里的AI运算处理器可以包括GPU、NPU和TPU等等。
第七方面,提供一种计算机可读存储介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行第一方面或第二方面中的任意一种实现方式中的方法。
第八方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第二方面中的任意一种实现方式中的方法。
第九方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第一方面或第二方面中的任意一种实现方式中的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第二方面中的任意一种实现方式中的方法。
上述芯片具体可以是现场可编程门阵列(field-programmable gate array,FPGA)或者专用集成电路(application-specific integrated circuit,ASIC)。
附图说明
图1是本申请实施例提供的一种人工智能主体框架示意图;
图2为本申请实施例提供的一种系统架构的结构示意图;
图3为本申请实施例提供的一种芯片的硬件结构示意图;
图4为本申请实施例提供的一种系统架构的示意图;
图5为本申请实施例提供的一种编译器的结构示意图;
图6为本申请实施例提供的一种AI模型的处理方法的示意图;
图7为本申请实施例提供的一种权重矩阵的稀疏处理过程的示意图;
图8为本申请实施例提供的一种最小计算单元的尺寸的示意图;
图9为本申请实施例提供的一种稀疏处理过程的示意图;
图10为本申请实施例提供的权重矩阵的表达方式的示意图;
图11为本申请实施例提供的一种AI模型的运算方法的示意性流程图;
图12为本申请实施例提供的全连接层的运算过程的示意图;
图13为本申请实施例提供的一种卷积层的输入数据的处理方式的示意图;
图14为本申请实施例提供的一种卷积层的运算过程的示意图;
图15为本申请实施例提供的目标神经网络模型和初始神经网络模型的精度的对比图;
图16为本申请实施例提供的初始神经网络模型和目标神经网络模型中的单算子的运算时间的对比图;
图17为本申请实施例提供的目标神经网络模型的加速程度的示意图;
图18是本申请实施例提供的一种AI模型的处理装置的示意性框图;
图19是本申请实施例提供的一种加速器的示意性框图;
图20是本申请实施例提供的另一种AI模型的处理装置的示意性框图;
图21是本申请实施例提供的一种AI模型的运算装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“信息技术(information technology,IT)价值链”(垂直轴)两个维度对上述人工智能主题框架进行详细的阐述。
“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施:
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。
基础设施可以通过传感器与外部沟通,基础设施的计算能力可以由智能芯片提供。
这里的智能芯片可以是中央处理器(central processing unit,CPU)、神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphics processingunit,GPU)、专门应用的集成电路(application specific integrated circuit,ASIC)以及现场可编程门阵列(field programmable gate array,FPGA)等硬件加速芯片。
基础设施的基础平台可以包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。
例如,对于基础设施来说,可以通过传感器和外部沟通获取数据,然后将这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据:
基础设施的上一层的数据用于表示人工智能领域的数据来源。该数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理:
上述数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等处理方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力:
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用:
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
本申请实施例可以应用在人工智能中的很多领域,例如,智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市等领域。
具体地,本申请实施例可以具体应用在自动驾驶、图像分类、图像检索、图像语义分割、图像质量增强、图像超分辨率和自然语言处理等需要使用(深度)神经网络的领域。
下面对图片分类和监控这两种应用场景进行简单的介绍。
图片分类:
当用户在终端设备(例如,手机)或者云盘上存储了大量的图片时,通过对相册中图像进行识别可以方便用户或者系统对相册进行分类管理,提升用户体验。
利用本申请实施例的AI模型的运算方法,能够降低硬件开销,对终端设备更友好。此外,能够提高利用该神经网络对图片进行分类的速度,有利于实时为不同的类别的图片打上标签,便于用户查看和查找。
监控:
监控场景包括:智慧城市、野外监控、室内监控、室外监控、车内监控等。其中,智慧城市场景下,需要进行多种属性识别,例如行人属性识别和骑行属性识别,深度神经网络凭借着其强大的能力在多种属性识别中发挥着重要的作用。
通过采用本申请实施例的AI模型的运算方法,能够提高神经网络模型的处理效率,有利于对输入的道路画面进行实时处理,更快地识别出道路画面中的不同的属性信息,同时降低功耗。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。
f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号变换为输出信号。该激活函数的输出信号可以作为下一层的输入。
神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量。由于DNN层数多,系数W和偏移向量的数量也比较多。这些参数在DNN中的定义如下所述:以系数W为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络(convolutional neuron network,CNN)
卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deeplearning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
下面介绍一层卷积层的内部工作原理。
卷积层可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络进行正确的预测。
当卷积神经网络有多个卷积层的时候,初始的卷积层往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络深度的加深,越往后的卷积层提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
为了提高卷积运算的速度,可以通过img2col的方式将卷积运算转换为矩阵乘法运算。
(4)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。通常地,loss越小,该深度神经网络的训练质量越高,loss越大,深度神经网络的训练质量越低。类似的,loss波动越小,训练越稳定;loss波动越大,训练越不稳定。
(5)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
例如,神经网络模型每次训练产生的loss值在神经网络模型中从后向前逐层传递。传递到每一层时,同时计算出该层参数的更新量(偏导运算),这个更新量与梯度(gradient)相关。
如图2所示,本申请实施例提供了一种系统架构200。在图2中,数据采集设备260用于采集训练数据。例如,针对本申请实施例的AI模型的处理方法来说,若训练数据为图像数据,则训练数据可以包括训练图像以及训练图像对应的处理结果。例如,训练图像对应的分类结果,训练图像的分类结果可以是人工预先标注的结果。
在采集到训练数据之后,数据采集设备260将这些训练数据存入数据库230,训练设备220基于数据库230中维护的训练数据训练得到目标模型/规则201。
下面对训练设备220基于训练数据得到目标模型/规则201进行描述,训练设备220对输入的原始数据进行处理,将输出值与目标值进行对比,直到训练设备220输出的值与目标值的差值小于一定的阈值,从而完成目标模型/规则201的训练。
本申请实施例中的目标模型/规则201具体可以为神经网络模型。例如,卷积神经网络或残差神经网络等。需要说明的是,在实际的应用中,数据库230中维护的训练数据不一定都来自于数据采集设备260的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备220也不一定完全基于数据库230维护的训练数据进行目标模型/规则201的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备220训练得到的目标模型/规则201可以应用于不同的系统或设备中,如应用于图2所示的执行设备210,所述执行设备210可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)AR/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端等。在图2中,执行设备210配置输入/输出(input/output,I/O)接口212,用于与外部设备进行数据交互,用户可以通过客户设备240向I/O接口212输入数据,输入数据在本申请实施例中可以包括:客户设备输入的待处理的数据。
在执行设备210对输入数据进行预处理,或者在执行设备210的计算模块211执行计算等相关的处理过程中,执行设备210可以调用数据存储系统250中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统250中。
最后,I/O接口212将处理结果,如上述得到的数据的处理结果返回给客户设备240,从而提供给用户。
值得说明的是,训练设备220可以针对不同的目标或不同的任务,基于不同的训练数据生成相应的目标模型/规则201,该相应的目标模型/规则201即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图2中所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口212提供的界面进行操作。另一种情况下,客户设备240可以自动地向I/O接口212发送输入数据,如果要求客户设备240自动发送输入数据需要获得用户的授权,则用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端,采集如图所示输入I/O接口212的输入数据及输出I/O接口212的输出结果作为新的样本数据,并存入数据库230。当然,也可以不经过客户设备240进行采集,而是由I/O接口212直接将如图所示输入I/O接口212的输入数据及输出I/O接口212的输出结果,作为新的样本数据存入数据库230。
值得注意的是,图2仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210中。
如图2所示,根据训练设备220训练得到目标模型/规则201,该目标模型/规则201在本申请实施例中可以是本申请中的神经网络,具体的,本申请实施例的神经网络可以为CNN等。
图3为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器30。该芯片可以被设置在如图2所示的执行设备210中,用以完成计算模块211的计算工作。该芯片也可以被设置在如图2所示的训练设备220中,用以完成训练设备220的训练工作并输出目标模型/规则201。本申请实施例中的方法可在如图3所示的芯片中得以实现。
神经网络处理器30可以是神经网络处理器(neural-network processing unit,NPU),张量处理器(tensor processing unit,TPU),或者图形处理器(graphicsprocessing unit,GPU)等一切适合用于大规模异或运算处理的处理器。以NPU为例:神经网络处理器NPU20作为协处理器挂载到主中央处理器(central processing unit,CPU)(hostCPU)上,由主CPU分配任务。NPU的核心部分为运算电路303,控制器304控制运算电路303提取存储器(权重存储器或输入存储器)中的数据并进行运算。其中,TPU是谷歌(google)为机器学习全定制的人工智能加速器专用集成电路。
在一些实现中,运算电路303内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路303是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器302中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器301中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)308中。
向量计算单元307可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元307可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization,BN),局部响应归一化(local response normalization)等。
在一些实现种,向量计算单元能307将经处理的输出的向量存储到统一缓存器306。例如,向量计算单元307可以将非线性函数应用到运算电路303的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元307生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路303的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器306用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器305(direct memory accesscontroller,DMAC)将外部存储器中的输入数据搬运到输入存储器301和/或统一存储器306、将外部存储器中的权重数据存入权重存储器302,以及将统一存储器306中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)310,用于通过总线实现主CPU、DMAC和取指存储器309之间进行交互。
与控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令;
控制器304,用于调用取指存储器309中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器306,输入存储器301,权重存储器302以及取指存储器309均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random accessmemory,DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
上文中介绍的图2中的执行设备210或图3中的芯片可以作为加速器执行本申请实施例的AI模型的运算方法的各个步骤。上文中介绍的图2中的训练设备220或图3中的芯片能够执行本申请实施例的AI模型的处理方法的各个步骤。
如图4所示,本申请实施例提供了一种系统架构400。该系统架构包括本地设备401、本地设备402以及执行设备410和数据存储系统450,其中,本地设备401和本地设备402通过通信网络与执行设备410连接。
执行设备410可以由一个或多个服务器实现。可选的,执行设备410可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备410可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备410可以使用数据存储系统450中的数据,或者调用数据存储系统450中的程序代码来实现本申请实施例的AI模型的运算方法或AI模型的处理方法。
具体地,在一种实现方式中,执行设备410可以执行以下过程:
提供了一种AI模型的处理方法,该方法包括:获取初始AI模型和加速器的最小计算单元的尺寸,加速器用于执行目标AI模型的运算;对初始AI模型进行稀疏处理,以得到目标AI模型,其中,目标AI模型的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,其中,位于目标神经网络模型的第i层的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
用户可以操作各自的用户设备(例如本地设备401和本地设备402)与执行设备410进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备410进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
在一种实现方式中,本地设备401、本地设备402从执行设备410获取到目标AI模型的相关参数,将目标神经网络部署在本地设备401、本地设备402上,利用该目标AI模型进行图像分类、进行图像处理、语音处理或者文本处理等等。
在另一种实现中,执行设备410上可以直接部署目标AI模型,执行设备410通过从本地设备401和本地设备402获取待处理数据,并采用目标AI模型对待处理数据进行处理。
上述执行设备410也可以为云端设备,此时,执行设备410可以部署在云端;或者,上述执行设备410也可以为终端设备,此时,执行设备410可以部署在用户终端侧,本申请实施例对此并不限定。
图5示出了本申请实施例提供的一种加速器中的编译器的示意图,如图5所示,编译器500包括:稀疏工具510、图优化和编译模块520和算子编译模块530。
稀疏工具510用于对初始AI模型进行稀疏处理,以得到目标AI模型。
可选地,稀疏工具510包括稀疏网络生成模块511和稀疏网络调优模块512。
其中,稀疏网络生成模块511用于将初始AI模型中的至少一个目标网络层中的各个目标网络层中的至少一个权重块作为不参与运算的权重块,以得到稀疏AI模型。
稀疏网络调优模块512用于对稀疏网络生成模块511得到的稀疏AI模型进行调优(fine tune),以得到目标AI模型。
稀疏工具510可以通过本申请实施例中的AI模型的处理方法得到目标AI模型,具体过程可以参见后文中的方法600。
图优化和编译模块520用于对AI模型的拓扑图进行处理。
具体地,如图5所示,图优化和编译模块520可以包括图引擎(graph engine,GE)521,融合引擎(fusion engine,FE)522,AI CPU引擎(AI CPU engine,AICPUE)523和华为集合通信库(Huawei collective communication library,HCCL)524。
GE521用于为不同的深度学习框架提供统一的中间表示(intermediaterepresentation,IR)接口。
在本申请实施例中,GE521可以用于将稀疏工具510处理后得到的目标AI模型的拓扑图解析为适配当前的硬件的模型的拓扑图,即将目标AI模型的拓扑图进行改写。
FE522用于对GE521处理过的图中的部分算子进行融合。
AICPUE523用于执行目标AI模型的运算。
HCCL524用于提供集合通信算子,实现不同的加速器之间的数据传输。例如,分布式训练中不同的NPU之间可以通过HCCL524实现数据传输。
算子编译模块530用于对图优化和编译模块520处理过的图中的每个算子,即图中的每个节点进行编译,生成对应的可执行文件。
算子编译模块530包括算子库531和张量加速引擎(tensor boost engine,TBE)532。
算子库531中可以包括稀疏算子。稀疏算子用于实现目标AI模型中的稀疏网络层的运算。稀疏网络层的运算也可以称为稀疏计算。具体描述可以参见本申请实施例中的方法900。
TBE532用于为GE521提供算子信息,以及为FE522提供子图优化信息和TBE算子调用信息,最终生成可执行任务。
TBE532还用于生成自定义的可执行算子。换言之,TBE532能够为用户提供自定义算子开发方式。
示例性地,该编译器500可以是基于现有编译器得到的,例如,该编译器500可以是通过在神经网络计算架构(compute architecture for neural networks,CANN)中的昇腾张量编译器(ascend tensor compiler,ATC)中集成稀疏工具510得到的。
需要说明的是,图5中的编译器的结构仅为示例,在具体实现过程中,本领域的技术人员应当理解,编译器500还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,编译器500还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,编译器500也可仅仅包括实现本申请实施例所必须的器件,而不必包括图5中所示的全部模块。
AI模型的运算通常需要很高的计算力和存储空间的支持,影响了模型的运算速度。在保证模型的精度的前提下,对模型进行稀疏计算是一种实现加速计算的有效手段。
权重稀疏化通过减少AI模型中的冗余权重减少模型的计算量,进而提高硬件加速器的处理速度和能效。然而,现有权重稀疏化方案,尤其是细粒度的稀疏化方案,通常需要在特定的硬件支持下才能实现模型的加速计算。
英伟达的A200中以4个相邻的权重为一组,每个组中保留2个非零权重,即实现50%的稀疏率。该方案以单个权重作为剪枝单元,权重稀疏化后得到的稀疏网络中的非零权重是随机出现的,权重索引的复杂性较高,需要特定的硬件支持才能实现有效的硬件加速。A200的张量核(tensor core)结构中使用4x4的数据结构,即以4个权重为一组,以支持4选2的稀疏计算。进一步地,4选2的稀疏方案能够将权重的随机性限制在组内。在运算过程中A200将一组权重对应的数据全部加载至计算核的寄存器上,从而避免权重的随机性带来的延迟问题,即减少随机访问外部存储器带来的延迟问题,实现有效的硬件加速。
在其他通用的AI加速器中,如果没有特定的硬件支持,4选2的稀疏方案无法实现有效的硬件加速,甚至可能无法进行稀疏计算。此外,A200的硬件设计也决定了其仅能支持50%的稀疏率。
本申请实施例提供了一种AI模型的处理方法,减少了AI模型的计算量,在无需增加额外的硬件支持的情况下,提高了AI模型的运算速度。
下面结合图6至图10对本申请实施例中的AI模型的处理方法进行详细的描述。
图6示出了本申请实施例提供的AI模型的处理方法600。图6所示的方法可以由AI模型的训练装置来执行,该装置可以是云服务设备,也可以是终端设备,例如,电脑、服务器等运算能力足以用来执行AI模型训练的装置,也可以是由云服务设备和终端设备构成的系统。示例性地,方法600可以由图2中的训练设备220、图3中的神经网络处理器50或图4中的执行设备410或本地设备执行。例如,方法600可以由AI模型的训练装置调用图5中的稀疏工具510执行。
方法600包括步骤S610至步骤S620。下面对步骤S610至步骤S620进行详细介绍。
S610,获取初始AI模型和加速器的最小计算单元的尺寸。该加速器用于执行目标AI模型的运算。
示例性地,AI模型可以为神经网络模型、支持向量机、随机森林或决策树等模型。
为了便于描述和说明,后文中主要以神经网络模型为例对本申请实施例的方案进行说明,不对本申请实施例的方案构成限定。即初始AI模型可以为初始神经网络模型,目标AI模型可以为目标神经网络模型。本申请实施例中的神经网络模型可以是现有的神经网络模型,例如,残差网络或卷积神经网络等。或者,该神经网络模型也可以是自行构建的其他结构的神经网络模型。本申请实施例对此不作限定。
初始AI模型可以是训练好的AI模型。
用于训练初始AI模型的第一训练数据的类型与AI模型的任务有关。例如,AI模型用于图像处理任务,则该第一训练数据可以为图像数据。具体地,图像处理任务包括图像分类、图像检测、图像分割或图像生成等。再如,AI模型用于文本处理任务,则该第一训练数据可以为文本数据。具体地,文本处理任务包括文本识别或文本翻译等。再如,AI模型用于语音处理任务,则该第一训练数据可以为语音数据。具体地,语音处理任务包括语音识别等。本申请实施例对第一训练数据的类型不做限定。
步骤S610中可以通过多种方式获取初始AI模型。例如,步骤S610中可以获取用户输入的初始AI模型。即该初始AI模型是由用户提供的。或者,步骤S610中可以读取本地存储的初始AI模型。或者,步骤S610中可以接收其他设备发送的初始AI模型。或者,步骤S610中可以对AI模型进行训练得到初始AI模型。本申请实施例对初始AI模型的具体获取方式不做限定。
在本申请实施例中,计算单元是加速器中提供算力的核心单元,也可以称为核(core)。例如,计算单元可以用于执行矩阵运算、向量运算以及标量数据运算等运算操作。
最小计算单元的尺寸指的是加速器能够一次性处理的矩阵运算的规模,或者说,计算单元一次运算执行的计算量。示例性地,最小计算单元的尺寸可以为加速器在一个时钟周期内能够完成的矩阵运算的规模。
示例性地,加速器可以包括以下至少一项:CPU、GPU、NPU和TPU等等。
本申请实施例中,最小计算单元也可以称为块单元(blockunit)。blockunit是由加速器的硬件规格决定的。不同的加速器可能具有不同的blockunit。例如,如图8所示,加速器1、加速器2、加速器3、加速器4和加速器5分别对应五个不同的blockunit:blockunit_1、blockunit_2、blockunit_3、blockunit_4和blockunit_5。
示例性地,最小计算单元的尺寸可以是用户输入的。或者,最小计算单元的尺寸也可以是预先存储的。本申请实施例对最小计算单元的尺寸的获取方式不做限定。
S620,对初始AI模型进行稀疏处理,以得到目标AI模型,其中,目标AI模型的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,位于目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
下面以AI模型为神经网络模型对步骤S620进行说明。在初始AI模型为初始神经网络模型的情况下,步骤S620可以包括:对初始神经网络模型进行稀疏处理,以得到目标神经网络模型。其中,目标神经网络模型的第i层的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块。权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,第i层的权重矩阵的尺寸为权重块的尺寸的整数倍。
该至少一个目标权重块在目标神经网络模型的第i层的权重矩阵中的位置由第i层的权重索引指示。i为正整数。
换言之,在利用目标AI模型对待处理的数据进行处理的过程中,无效权重块中的所有权重值不参与运算,目标权重块中的至少一个权重值参与运算。
无效权重块和目标权重块可以通过多种方式表示。
示例性地,无效权重块中的所有权重值置为0。换言之,目标AI模型的多个权重块中,所有权重值为0的权重块即为无效权重块。至少一个权重值不为0的权重块即为目标权重块。
示例性地,无效权重块中的所有权重值不被激活,目标权重块中的权重值被激活。换言之,在目标AI模型的权重矩阵的所有权重块中,只有部分权重块在运算过程中会被激活。在运算过程中不被激活的权重块即为无效权重块,在运算过程中被激活的权重块即为目标权重块。例如,可以通过值为0和1的矩阵形式的掩膜(mask)指示目标AI模型的无效权重块和目标权重块,即指示哪些权重块被激活,哪些权重块不被激活。
以上仅为示例,无效权重块和目标权重块还可以通过其他方式表示,本申请实施例对此不做限定。为了便于理解和描述简洁,后文中仅以将权重值置为0作为不参与运算的一种示例对本申请的方案进行描述,不对本申请实施例的方案构成限定。
在AI模型为神经网络模型的情况下,步骤S620可以理解为,对初始神经网络模型中的至少一个目标网络层的权重矩阵进行稀疏处理,以得到目标神经网络。对于该至少一个目标网络层中的任一个目标网络层而言,稀疏处理的粒度即为该目标网络层的权重块的尺寸,即以目标网络层的权重块为单位保留或舍弃初始神经网络模型的目标网络层的权重矩阵中的权重值。目标神经网络模型中的该至少一个目标网络层也可以称为稀疏网络层。
第i层可以为该至少一个目标网络层中的任一网络层。为了便于描述,本申请实施例中仅以第i层为例对稀疏处理的过程进行说明。该至少一个目标网络层中的其他网络层也可以采用相同的方式进行稀疏处理。
该至少一个目标网络层中的各个目标网络层的权重块的尺寸可以相同,也可以不同。
根据本申请实施例的方案,以权重块的尺寸作为稀疏处理的粒度,即以权重块为单位保留或舍弃权重矩阵中的权重值,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍。本申请实施例的方案减少了初始AI模型中的冗余权重,减少模型的计算量,有利于提高加速器的处理速度。而且,目标AI模型的目标权重块的尺寸为最小计算单元的尺寸的整数倍,在目标AI模型的运算过程中,加速器可以根据最小计算单元所支持的数据格式从一次性获取运算所需的数据,无需通过裁剪和拼凑等方式将运算所需的数据转换为最小计算单元能够支持的数据格式,降低了运算的时延。此外,以权重块作为稀疏处理的粒度,降低了权重索引的复杂性,在运算过程中能够减少输入数据的寻址时间,无需特定的硬件支持即可实现有效的硬件加速。
具体地,在AI模型为神经网络模型的情况下,步骤S620包括步骤S621和步骤S622(图6中未示出)。
S621,将初始神经网络模型中的至少一个目标网络层中的各个目标网络层中的至少一个权重块作为不参与运算的权重块,以得到稀疏神经网络模型。该至少一个目标网络层包括第i层。
示例性地,步骤S621可以由图5中的稀疏网络生成模块511执行。
示例性地,步骤S621可以为,将初始神经网络模型中的至少一个目标网络层中的各个目标网络层中的至少一个权重块的权重值置为0,以得到稀疏神经网络模型。
该至少一个目标网络层包括第i层。下面以第i层为例对步骤S621进行说明。
如前所述,初始神经网络模型的第i层的权重矩阵包括多个权重块。将该多个权重块中的至少一个权重块的权重值置为0,即可得到稀疏神经网络模型的第i层的权重矩阵。
将一个权重块的权重值置为0,在本申请实施例中,也可以理解为删除该至少一个权重块中的权重值。
权重值被置为0的权重块即为无效权重块。权重值未被置为0的权重块即为被保留的有效权重块。以第i层为例,在稀疏神经网络模型的第i层的权重矩阵中,有效权重块中的至少一个权重值不为0,无效权重块中的所有权重值为0。
图7示出了一个权重矩阵的示意图。该权重矩阵的尺寸为K×N,加速器的最小计算单元的尺寸为BU_K×BU_N。该目标网络层的权重块(block)的尺寸为最小计算单元的整数倍,该block的尺寸可以表示为(α*BU_K)×(β*BU_N),权重矩阵的尺寸为block的尺寸的整数倍。α为正整数,β为正整数,K为正整数,N为正整数,BU_K为正整数,BU_N为正整数。α*BU_K≤K,β*BU_N≤N。
根据该block的尺寸将该权重矩阵划分为多个block,在该多个block中选择需要保留的block。例如,如图7所示,将该权重矩阵划分为15个block,保留9个block的权重值,该9个block即为有效权重块,其余6个权重块即为无效权重块。
一个权重矩阵中的多个权重块的尺寸可以是相同的。若权重矩阵中的多个权重块的尺寸不同,那么在对AI模型中的算子进行编译时,需要针对不同的尺寸的权重块分别进行算子的编译,增加了编译次数。在本申请实施例的方案中,一个权重矩阵中的多个权重块的尺寸相同,在对AI模型中的算子进行编译时,仅需执行一次算子编译,即减少了编译次数,进而减少了编译时间,提高了模型的运算速度。此外,当加速器包括多个计算单元时,能够实现多个权重块的并行计算,进一步提高模型的运算速度。
可选地,稀疏神经网络模型的第i层的权重矩阵包括至少一个有效权重块,有效权重块中的至少一个权重值不为0。该至少一个有效权重块中位于稀疏神经网络模型的第i层的权重矩阵中的矩阵运算累加(reduce)方向上的有效权重块的数量相同。
也就是说,对于初始神经网络模型的第i层的权重矩阵而言,矩阵运算累加方向上被舍弃的权重块的数量是相同的,或者说,被保留的权重块的数量是相同。
例如,如图7所示,该权重矩阵在累加方向上被划分为三列,即图7中的三个虚线框,每一列被保留的权重块的数量是相同的。图7中的每一列均保留了三个权重块。
这样,当加速器包括多个计算单元时,能够实现并行计算,进一步提高模型的运算速度。
示例性地,该至少一个目标网络层的权重块的尺寸可以是人为设置的。
然而,采用人为设置的方式难以针对不同的初始神经网络模型得到各个目标网络层的权重块的最优尺寸,影响模型的精度。
可选地,权重块的尺寸可以是在搜索空间内进行搜索得到的。
如前所述,权重块的尺寸在最小计算单元的尺寸的整数倍。权重块的尺寸可以是在搜索空间内进行搜索得到的,也可以理解为:该整数倍对应的倍数是在搜索空间内进行搜索得到的。
搜索空间指的是可搜索的范围或者说可选择的范围。自动机器学习(automachine learning,AutoML)通常预先定义一个搜索空间,在搜索空间内不断产生不同的配置,形成评价-反馈-再次产生配置的闭环,直至得到所需的配置。
具体地,搜索空间根据待搜索的任务确定。例如,在搜索权重块的尺寸时,搜索空间中可以产生不同的倍数,对当前得到的权重块的尺寸进行评价,例如,对当前权重块的尺寸对应的模型进行评价,基于反馈的评价结果再次产生其他倍数,直至得到所需的倍数。
示例性地,在AI模型为神经网络模型的情况下,第i层的权重块的尺寸可以是在搜索空间内进行搜索得到的。
具体的搜索方法可以采用现有技术中的方案,例如,采用自动机器学习模型压缩(AutoML model compression,AMC)得到权重块的尺寸。
需要说明的是,在AI模型包括多个权重矩阵的情况下,该多个权重矩阵的权重块的尺寸的设置方式可以相同,也可以不同。例如,该多个权重矩阵中的部分权重矩阵的权重块的尺寸可以是人为设置的,其余权重矩阵的权重块的尺寸可以是在搜索空间中搜索得到的。本申请实施例对此不做限定。
可选地,在AI模型为神经网络模型的情况下,目标神经网络模型的第i层的权重矩阵中的权重块的尺寸和目标神经网络模型的第j层的权重矩阵中的权重块的尺寸不同,j为正整数。
换言之,该不同目标网络层的权重矩阵中的权重块的尺寸可以是相同的,也可以是不同的。
在本申请实施例的方案中,在搜索空间内搜索权重块的尺寸,能够得到适合各个权重矩阵的权重块的尺寸,有利于提高模型的精度。
目标AI模型中的各个权重矩阵的稀疏率可以相同,也可以不同。
示例性地,目标AI模型的权重矩阵的稀疏率(sparse ratio)可以是人为设置的。
可选地,目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,目标AI模型的稀疏率满足目标稀疏率。
示例性地,目标AI模型的稀疏率满足目标稀疏率,可以为,目标AI模型的稀疏率小于或等于目标稀疏率。目标AI模型的稀疏率越小,目标AI模型中被保留的权重块越少,即目标AI模型所需的计算量越小。或者,目标AI模型的稀疏率满足目标稀疏率,也可以为,目标AI模型的稀疏率与目标稀疏率之间的差值小于或等于第一阈值。
以AI模型为神经网络模型为例,进行稀疏处理的至少一个目标网络层的稀疏率可以是在搜索空间内进行搜索得到的。稀疏神经网络模型的稀疏率满足目标稀疏率。
该至少一个目标网络层包括第i层,即第i层的稀疏率是在搜索空间内进行搜索得到的。
示例性地,稀疏神经网络模型可以为在稀疏率满足目标稀疏率的候选稀疏神经网络模型中,搜索得到的精度最高的候选稀疏神经网络模型。
示例性地,候选稀疏神经网络模型的稀疏率满足目标稀疏率,可以为,候选稀疏神经网络模型的稀疏率小于或等于目标稀疏率。候选稀疏神经网络模型的稀疏率越小,候选稀疏神经网络模型中被保留的权重块越少,即候选稀疏神经网络模型所需的计算量越小。或者,候选稀疏神经网络模型的稀疏率满足目标稀疏率,也可以为,候选稀疏神经网络模型的稀疏率与目标稀疏率之间的差值小于或等于第一阈值。
示例性地,目标稀疏率可以是用户输入的。或者,目标稀疏率也可以是根据加速器的算力确定的。
具体的搜索方法可以采用现有技术中的方案,例如,采用AMC得到权重矩阵的稀疏率。
在本申请实施例的方案中,在模型的稀疏率满足目标稀疏率的前提下,在搜索空间内搜索各个权重矩阵的稀疏率,能够得到适合各个权重矩阵的稀疏率,有利于提高模型的精度。
或者,进行稀疏处理的至少一个目标网络层的稀疏率是在搜索空间内进行搜索得到的。稀疏神经网络模型的精度满足目标精度。
示例性地,该稀疏神经网络模型可以为在精度满足目标精度的候选稀疏神经网络模型中,搜索得到的稀疏率最高的候选稀疏神经网络模型。
示例性地,候选稀疏神经网络模型的精度满足目标精度,可以为,候选稀疏神经网络模型的精度大于或等于目标精度。或者,候选稀疏神经网络模型的精度满足目标精度,也可以为,目标精度与候选稀疏神经网络模型的精度之间的差值小于或等于第二阈值。
示例性地,目标精度可以是用户输入的。
具体的搜索方法可以采用现有技术中的方案,例如,采用AMC得到权重矩阵的稀疏率。
在本申请实施例的方案中,在模型的精度满足目标精度的前提下,在搜索空间内搜索各个权重矩阵的稀疏率,能够得到适合各个权重矩阵的稀疏率,有利于降低模型的稀疏率,进而减少模型的计算量,以便实现模型的加速运算。
各个权重矩阵的稀疏率的设置方式可以相同,也可以不同。例如,部分权重矩阵的稀疏率可以是人为设置的,其余权重矩阵的稀疏率可以是在搜索空间中搜索得到的。本申请实施例对此不做限定。
示例性地,目标AI模型的权重矩阵对应的网络层是随机确定的。
也就是说,在AI模型为神经网络模型的情况下,进行稀疏处理的至少一个目标网络层可以是随机确定的。
可选地,目标AI模型的权重矩阵对应的网络层属于多个候选网络层。
也就是说,该至少一个目标网络层为多个候选网络层中的至少一个候选网络层。
在该情况下,在AI模型为神经网络模型的情况下,可以选择该多个候选网络层中的部分或全部候选网络层作为进行稀疏处理的至少一个目标网络层。
例如,至少一个目标网络层可以是在多个候选网络层中进行搜索得到的。
示例性地,该多个候选网络层可以是人为设定的。例如,该多个候选网络层可以包括第一层以外的其他网络层。
可替换地,该至少一个目标网络层可以是人为设定的。例如,该至少一个目标网络层可以包括第一层以外的其他网络层。
在本申请实施例的方案中,可以在指定的候选网络层的范围内进行稀疏处理,避免影响其他网络层,例如,避免影响与模型的精度的相关性较高的网络层,有利于保证模型的精度。
S622,对稀疏神经网络模型进行调优(fine tune),以得到目标神经网络模型。
示例性地,步骤S622可以由图5中的稀疏网络调优模块512执行。
用于对稀疏神经网络模型进行调优的第二训练数据的类型与第一训练数据的类型可以是相同的。
需要说明的是,步骤S622为可选步骤,在步骤S620不包括S622的情况下,可以将稀疏神经网络模型作为目标神经网络模型。
通过对稀疏神经网络模型进行调优,能够提高目标神经网络模型的精度。
需要说明的是,在对稀疏神经网络模型进行调优的过程中,不会改变稀疏神经网络模型的稀疏配置。具体来说,调优不会改变稀疏神经网络模型的该至少一个目标网络层中的各个目标网络层的稀疏率以及各个目标网络层的权重块的尺寸。相应地,调优也不会改变稀疏神经网络模型的稀疏率。调优也不会改变稀疏神经网络模型中的各个目标网络层中的有效权重块的位置。
换言之,稀疏神经网络模型中的各个目标网络层的稀疏率即为目标神经网络模型的各个目标网络层的稀疏率。稀疏神经网络模型的各个目标网络层的权重块的尺寸即为目标神经网络模型的各个目标网络层的权重块的尺寸。稀疏神经网络模型的稀疏率即为目标神经网络模型的稀疏率。稀疏神经网络模型中的各个目标网络层中的有效权重块在各个目标网络层的权重矩阵中的位置与目标神经网络模型中的各个目标网络层中的目标权重块在各个目标网络层的权重矩阵中的位置是相同的。
为了便于描述,本申请实施例将稀疏神经网络模型的该至少一个目标网络层的稀疏率和目标神经网络模型的该至少一个网络层的稀疏率统称为该至少一个网络层的稀疏率,将稀疏神经网络模型的该至少一个网络层的权重矩阵中的权重块的尺寸和目标神经网络模型的该至少一个网络层的权重矩阵中的权重块的尺寸统称为该至少一个网络层的权重矩阵中的权重块的尺寸。例如,该至少一个目标网络层包括第i层,“稀疏神经网络模型的第i层的稀疏率”和“目标神经网络模型的第i层的稀疏率”统称为“第i层的稀疏率”;“稀疏神经网络模型的第i层的权重矩阵中的权重块的尺寸”和“目标神经网络模型的第i层的权重矩阵中的权重块的尺寸”统称为“第i层的权重矩阵中的权重块的尺寸”,或者“第i层的权重块的尺寸”。
如前所述,稀疏神经网络模型的第i层的权重矩阵包括至少一个有效权重块。目标神经网络模型的第i层的权重矩阵包括至少一个目标权重块。该至少一个有效权重块中位于稀疏神经网络模型的第i层的权重矩阵中的矩阵运算累加方向上的有效权重块的数量相同,也可以理解为,该至少一个目标权重块中位于目标神经网络模型的第i层的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
该至少一个目标网络层可以包括全连接层或卷积层。第i层可以为卷积层,也可以为全连接层。
可选地,第i层为卷积层。第i层的权重矩阵可以是通过将第i层的卷积核转换为二维矩阵得到的。
为了提高卷积运算的运算速度,可以通过im2col的方式将卷积运算转换为矩阵乘法运算。相应地,将第i层的卷积核展开为适合矩阵乘法运算的二维矩阵,该二维矩阵即为本申请实施例中的卷积层的权重矩阵。对展开后得到的二维矩阵可以采用前文中的方式进行稀疏处理,此处不再展开描述。
这样可以提高卷积运算的速度。
下面结合图9对方法600的一种实现方式进行举例说明。
具体地,基于稀疏原则对整网的稀疏配置进行搜索,得到稀疏神经网络模型。该稀疏神经网络模型可以为在候选稀疏神经网络模型满足目标稀疏率的情况下精度最高的候选稀疏神经网络模型。对稀疏神经网络模型进行调优,得到目标神经网络模型。
具体的搜索方法可以采用现有技术中的方案,例如,采用AMC的方式搜索得到稀疏神经网络模型。
稀疏原则包括:
(1)各个目标网络层的权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,各个目标网络层的权重矩阵的尺寸分别为各个目标网络层的权重块的尺寸的整数倍。以各个目标网络层的权重块的尺寸作为对初始神经网络模型中的各个目标网络层的权重矩阵进行稀疏处理的粒度。
(2)各个目标网络层的权重矩阵中位于矩阵运算累加方向上的有效权重块的数量相同。
如图9所示,稀疏工具获取加速器的最小计算单元的尺寸、目标稀疏率以及原始的深度神经网络(original DNN)。例如,加速器的最小计算单元的尺寸可以为16*16。也就是说,加速器的最小计算单元能够处理的数据格式为排布成16*16的矩阵形式的256个元素。目标稀疏率可以为50%。original DNN即为本申请实施例中的初始神经网络模型的一例。稀疏工具可以执行步骤S620对original DNN进行稀疏处理,例如,基于稀疏原则对整网的稀疏配置进行搜索,得到稀疏神经网络模型,并对稀疏神经网络模型进行调优,以得到目标神经网络模型。
整网的稀疏配置可以包括稀疏神经网络模型中的至少一个目标网络层中的各个目标网络层的稀疏率、各个目标网络层的权重块的尺寸以及各个目标网络层中的有效权重块的位置。
如前所述,目标神经网络模型中的各个目标网络层的稀疏率可以相同,也可以不同。目标神经网络模型中的各个目标网络层的权重块的尺寸可以相同,也可以不同。
例如,图9中的目标神经网络模型中的4个目标网络层的稀疏率分别为50%、66%、25%和33%。该4个目标网络层的权重块的尺寸分别为16*16、32*32、16*32和32*32。
可选地,方法600还包括:对目标AI模型的权重矩阵进行压缩,得到压缩权重,以压缩权重的形式存储目标AI模型的权重矩阵。
在AI模型为神经网络模型的情况下,该步骤可以理解为:对目标神经网络模型中的该至少一个目标网络层的权重矩阵进行压缩,得到至少一个目标网络层的压缩权重,以至少一个目标网络层的压缩权重的形式存储该至少一个目标网络层的权重矩阵。
以该至少一个目标网络层的压缩权重的形式存储目标神经网络模型中的至少一个目标网络层的权重矩阵,可以理解为仅存储目标神经网络模型中的至少一个目标网络层的权重矩阵中的目标权重块,无需保存各个目标网络层的权重矩阵中的无效权重块。压缩权重可以表示为稠密矩阵。
例如,该至少一个目标网络层包括第i层,对目标神经网络模型的第i层的权重矩阵进行压缩,得到第i层的压缩权重。目标神经网络模型的第i层的权重矩阵包括至少一个目标权重块。第i层的压缩权重由该至少一个目标权重块构成。以第i层的压缩权重的形式存储目标神经网络模型的第i层的权重矩阵。
各个目标网络层的索引用于指示各个目标网络层中的目标权重块在各个目标网络层的权重矩阵中的位置。
示例性地,各个目标网络层的索引可以表示为二维矩阵,即以二维矩阵的形式存储各个目标网络层的索引。该二维矩阵也可以称为索引矩阵。
各个目标网络层的索引矩阵中的元素所在的位置以及元素值即用于指示目标数据块所在的位置。例如,一个目标网络层的索引矩阵中的第一列的元素值可以用于指示目标权重块在该目标网络层的权重矩阵的第一列中的行数。
例如,对于图9中按照从上到下的顺序排序的第一个索引矩阵,该索引矩阵包括8个元素,分别用于指示权重矩阵中的8个目标权重块的位置。其中,第一列的0表示的一个目标权重块位于权重矩阵中的第一列的第0行,第一列的2表示一个目标权重块位于权重矩阵中的第一列的第2行。
目标网络层的权重矩阵可以通过目标网络层的压缩权重和目标网络层的索引表示。
例如,如图10所示,一个K*N的权重矩阵,可以通过N’*K’*block的压缩权重和N’*K’的索引矩阵表示,N’*K’*block表示N’*K’个block,即压缩权重包括N’*K’个block。其中,N’表示索引矩阵的列数,K’表示索引矩阵的行数。目标权重块的数量即为索引矩阵中的元素的数量。
应理解,各个索引也可以表示为其他形式,本申请实施例对此不做限定。
以压缩权重的形式存储权重矩阵,能够减少对存储空间的需求量。此外,在运算过程中,可以直接将压缩权重加载至计算单元中进行矩阵运算,有利于提高处理速度。
需要说明的是,还可以以其他形式存储目标AI模型中的该权重矩阵。例如,存储该权重矩阵中的全部权重值。本申请实施例对此不做限定。
本申请实施例还提供了一种AI模型的运算方法,下面结合图11对本申请实施例提供的AI模型的运算方法进行说明。图11所示的方法可以由AI模型的执行装置来执行,该装置可以是云服务设备,也可以是终端设备,例如,电脑、服务器等运算能力足以用来执行AI模型运算的装置,也可以是由云服务设备和终端设备构成的系统。示例性地,方法900可以由图2中的执行设备210、图3中的AI处理器50或图4中的执行设备410或本地设备执行。示例性地,加速器可以调用图5中的稀疏算子执行方法900,实现稀疏计算。
图11所示的运算方法中的目标AI模型可以是通过图6所示的方法构建的,目标AI模型的具体描述可以参考前述方法600,为了避免不必要的重复,下面在介绍方法900时适当省略重复的描述。
目标AI模型是通过对初始AI模型进行稀疏处理得到的。目标AI模型的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍。加速器用于执行目标AI模型的运算。位于目标AI模型的权重矩阵中的矩阵累加方向上的目标权重块的数量相同。
示例性地,目标AI模型可以为目标神经网络模型,初始AI模型可以为初始神经网络模型。目标神经网络模型是通过对初始神经网络模型中的至少一个目标网络层进行稀疏处理得到的。该至少一个目标网络层包括第i层。目标神经网络模型的第i层的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,第i层的权重矩阵的尺寸为权重块的尺寸的整数倍。加速器用于执行目标神经网络模型的运算,i为正整数。
在加速器执行目标AI模型的运算过程中执行步骤S910至步骤S920。
S910,根据目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,至少一个目标数据块对应于至少一个目标权重块,权重索引用于指示至少一个目标权重块在目标AI模型的权重矩阵中的位置。
S920,基于至少一个目标数据块和至少一个目标权重块执行矩阵运算,以得到矩阵运算的结果。
该至少一个目标数据块指的是矩阵运算中需要计算的输入数据,即权重矩阵中的目标权重块对应的输入数据。
目标AI模型的输入数据的类型可以为图像数据、语音数据或文本数据等。
输入数据的类型与目标AI模型的任务有关。例如,目标AI模型用于图像处理任务,则该输入数据的类型可以为图像数据。具体地,目标图像处理任务包括图像分类、图像检测、图像分割、图像识别或图像生成等。再如,目标AI模型用于文本处理任务,则该输入数据的类型可以为文本数据。具体地,文本处理任务包括文本识别或文本翻译等。再如,目标AI模型用于语音处理任务,则该输入数据的类型可以为语音数据。具体地,语音处理任务包括语音识别等。本申请实施例对输入数据的类型不做限定。
根据本申请实施例的方案,在运算过程中,加速器可以根据最小计算单元能够支持的数据格式一次性获取运算所需的数据,无需通过裁剪或拼凑等方式将运算所需的数据转换为最小计算单元能够支持的数据格式,降低了运算的时延。而且,索引用于指示目标权重块的位置,降低了索引的复杂性,在运算过程中能够减少输入数据的寻址时间,无需特定的硬件支持即可实现有效的硬件加速。
下面以AI模型为神经网络模型为例对方法900进行说明。该权重矩阵可以为目标神经网络模型中的第i层的权重矩阵。
在加速器执行目标神经网络模型的第i层的运算的过程中执行步骤S910至步骤S920。
S910,根据第i层的权重索引从第i层的输入数据矩阵中获取至少一个目标数据块,至少一个目标数据块对应于该至少一个目标权重块,第i层的权重索引用于指示该至少一个目标权重块在目标神经网络模型的第i层的权重矩阵中的位置。
S920,基于该至少一个目标数据块和该至少一个目标权重块执行矩阵运算,以得到第i层的矩阵运算结果。
示例性地,第i层可以为全连接层或卷积层。
可选地,目标AI模型的权重矩阵以压缩权重的形式存储,压缩权重由该至少一个目标权重块构成。
以AI模型为神经网络模型为例,目标神经网络模型的第i层的权重矩阵以压缩权重的形式存储,第i层的压缩权重由该至少一个目标权重块构成。
下面结合图12对步骤S910进行说明。
示例性地,图12中的权重矩阵的尺寸为K*N,输入数据矩阵的尺寸为M*K。如图12所示的特征图(feature map)即为输入数据矩阵的一例。对输入数据矩阵和权重矩阵执行矩阵乘法运算,得到的矩阵运算结果的尺寸为M*N。
压缩权重的尺寸为N’*K’*block,block表示权重矩阵中的权重块。该block的尺寸可以表示为(α*BU_K)×(β*BU_N)。索引可以表示为N’*K’的索引矩阵。权重矩阵可以通过N’*K’*block的压缩权重和N’*K’的索引矩阵表示。
如图12所示,压缩权重可以直接搬入加速器的计算单元中。根据索引将特征图中的目标数据块加载至计算单元中。
例如,图12中的索引矩阵的第一列的0表示的一个目标权重块位于权重矩阵中的第一列的第0行,第一列的2表示一个目标权重块位于权重矩阵中的第一列的第2行。与这两个目标权重块对应的目标数据块分别为特征图的第0列和第2列的数据块。数据块的尺寸为M*(α*BU_K)。将特征图的第0列和第2列的数据块加载至计算单元中。
进一步地,在图12中,可以将压缩权重和目标数据块加载至4个计算单元中,这样可以实现并行计算。
可选地,方法900还包括步骤S911。
S911,将至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,多个权重组中的一个权重组包括在目标AI模型的权重矩阵中位于矩阵运算累加方向上的目标权重块。
以AI模型为神经网络模型为例,步骤S922可以理解为,将至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,多个权重组中的一个权重组包括在目标神经网络模型的第i层的权重矩阵中位于矩阵运算累加方向上的目标权重块。
或者说,一个权重组指的是在目标神经网络模型的第i层的权重矩阵中位于矩阵运算累加方向上的目标权重块构成的矩阵。
一个权重组对应的目标数据块可以组合为一个稠密矩阵。
如图12所示,压缩权重包括4列权重块。在图12中,列方向即为矩阵运算累加方向。因此,压缩权重包括4个权重组。该4个权重组对应的目标数据块可以分别构成4个数据矩阵。例如,图12中的索引矩阵的第一列即用于指示第一权重组的位置,第一权重组对应的目标数据块包括特征图的第0列和第2列的数据块,将特征图的第0列和第2列的数据块构成一个数据矩阵。
在方法900包括步骤S911的情况下,步骤S920可以通过以下步骤执行。
(1)对多个数据矩阵和多个权重组分别执行矩阵运算,得到多个矩阵运算的结果。
例如,如图12所示,对该4个数据矩阵和该4个权重组分别执行矩阵运算,得到4个结果(result)矩阵。
这样,通过多个数据矩阵和多个权重组之间的稠密计算即可得到多个矩阵运算的结果。
可选地,对该多个数据矩阵和多个权重组并行执行矩阵运算,得到多个矩阵运算的结果。
该4组运算过程可以由4个计算单元并行执行。
示例性地,该多个数据矩阵可以构成具有并行维度的特征图。或者说,该多个数据矩阵具有并行维度,以便并行执行矩阵运算。并行维度可以理解为并行计算的维度。相应地,该多个矩阵运算的结果也具有并行维度。
这样,通过并行执行矩阵运算,能够提高加速器的处理效率。
(2)对多个矩阵运算的结果进行数据重排,以得到矩阵运算的结果。
示例性地,在将该多个矩阵运算的结果输出计算单元的过程中,对该多个矩阵运算的结果进行数据重排,得到矩阵运算结果。
例如,可以根据该多个权重组在权重矩阵中的位置对该多个矩阵运算的结果进行数据重排,得到矩阵运算的结果。
例如,按照如图12所示的N’对应的箭头所指示的方向,该4个权重组依次为权重组1、权重组2、权重组3和权重组4,分别位于第i层的权重矩阵的第一列、第二列、第三列和第四列。按照如图12所示的N’对应的箭头所指示的方向,该4个权重组对应的多个矩阵运算的结果分别为结果1、结果2、结果3和结果4,分别位于该层的矩阵运算结果中的第一列、第二列、第三列和第四列。
可选地,在目标AI模型的权重矩阵所在的网络层为卷积层的情况下,该权重矩阵可以是通过将该网络层的卷积核转换为二维矩阵得到的。
也就是说,第i层为卷积层,目标神经网络模型的第i层的权重矩阵可以是通过对第i层的卷积核转换为二维矩阵得到的。
示例性地,步骤S910可以包括:通过im2col将输入数据矩阵进行转换,得到转换后的输入数据矩阵,根据权重索引从转换后的输入数据矩阵中获取至少一个目标数据块,至少一个目标数据块对应于该至少一个目标权重块。
进一步地,将至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,多个权重组中的一个权重组包括在目标神经网络模型的第i层的权重矩阵中位于矩阵运算累加方向上的目标权重块。
例如,如图13的(a)图所示,在第i层为卷积层时,可以将输入的三维(threedimensions,3D)特征图通过im2col展开为二维(2D)特征图,然后根据第i层的权重索引从该二维特征图中获取至少一个目标数据块,构成多个数据矩阵。
可选地,在目标AI模型的权重矩阵所在的网络层为卷积层的情况下,步骤S910包括:根据权重索引确定输入数据矩阵中的目标位置;将输入数据矩阵的目标位置上的数据转换为该至少一个目标数据块。
以AI模型为神经网络模型为例,在第i层为卷积层的情况下,步骤S910包括:根据第i层的权重索引确定第i层的输入数据矩阵中的目标位置;将第i层的输入数据矩阵的目标位置上的数据转换为该至少一个目标数据块。
具体地,根据第i层的权重索引即可确定与第i层的至少一个目标数据块在第i层的展开后的输入数据矩阵中的位置。该至少一个目标数据块对应于至少一个目标权重块。
需要说明的是,在执行过程中,并没有通过im2col将第i层的输入数据矩阵展开为二维矩阵。通常输入数据矩阵的尺寸是固定的,相应地,展开后的二维矩阵的尺寸也是固定的。因此,不需要执行im2col的展开操作即可确定至少一个目标数据块在展开后的输入数据矩阵中的位置。
根据该至少一个目标数据块在展开后的输入数据矩阵中的位置即可反推得到该至少一个目标数据块的数据在第i层的输入数据矩阵中的位置,即第i层的输入数据矩阵中的目标位置。通过im2col的方式将目标位置上的数据展开即可得到该至少一个目标数据块。
进一步地,将至少一个目标数据块中的、与多个权重组对应的目标数据块通过im2col分别组合为多个数据矩阵,多个权重组中的一个权重组包括在目标神经网络模型的第i层的权重矩阵中位于矩阵运算累加方向上的目标权重块。
也就是说,不对第i层的输入数据矩阵进行展开,而是直接根据第i层的权重索引从第i层的输入数据矩阵确定目标位置,进而通过im2col的方式将目标位置的数据组成多个数据矩阵。
例如,如图13的(b)图所示,在第i层为卷积层时,可以根据第i层的权重索引获取第i层的输入数据矩阵中的目标位置的数据,并通过im2col展开为多个数据矩阵。
图14示出了在第i层为卷积层的情况下的运算过程的示意图,图14与图12的区别主要在于输入特征图的维数和结果的维数不同,具体描述可以参考图12的相关描述,此处不再赘述。
根据本申请的方案,当第i层为卷积层时,根据第i层的权重索引从第i层的输入数据矩阵中的目标位置的数据,并通过im2col将目标位置的数据展开为多个数据矩阵,这样无需将第i层的输入数据矩阵先通过im2col的方式进行转换,再从转换后的输入数据矩阵中获取该至少一个目标数据块,无需保存转换后的输入数据矩阵,减少了对存储空间的需求,同时提高了处理效率。
可选地,整数倍对应的尺寸是通过在搜索空间内进行搜索得到的。
可选地,目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,目标AI模型的稀疏率满足目标稀疏率。
应理解,方法900仅以一个权重矩阵为例对运算过程进行说明,对于目标AI模型中的其他权重矩阵也可以采用相同的方法执行运算过程。
表1示出了本申请实施例提供的一种ResNet50的部分参数。采用本申请实施例的方法600对表1中的模型进行压缩,得到压缩后的模型。其中,加速器的最小计算单元为16*16,目标稀疏率为20%。
表1
表2示出了压缩后的模型中的各个卷积层的权重块的尺寸以及各个卷积层的稀疏率,即各个卷积层的稀疏配置。基于表2所示的压缩模型对待处理数据进行处理,即可得到待处理数据的处理结果。示例性地,各个卷积层的稀疏配置可以是利用AMC的方法搜索得到的。
表2
layer name | 权重块 | 稀疏率 |
conv1 | 16×64 | 0% |
conv2_x | 16×64 | 50% |
conv3_x | 16×64 | 50% |
conv4_x | 16×64 | 50% |
conv5_x | 16×64 | 50% |
图15示出了本申请实施例中的目标神经网络模型和初始神经网络模型的精度的对比图。
具体地,图15示出了4组目标神经网络模型与表1所示的初始神经网络模型的TOP-1准确率(TOP-1accuracy,TOP-1ACC)的对比。TOP-1ACC指的是输出结果中排名第一的类别与实际结果相符的概率。其中,权重块的尺寸为16×64。第一组对比结果为不对conv1和fc(表1中未示出fc)进行稀疏处理,即跳过conv1和fc,且目标神经网络模型的稀疏率为50%的情况下的目标神经网络模型的精度与初始神经网络模型的精度的对比结果。第二组对比结果为不对conv1、fc以及conv1×1(表1中未示出conv1x1)进行稀疏处理,且目标神经网络模型的稀疏率为50%的情况下的目标神经网络模型的精度与初始神经网络模型的精度的对比结果。第三组对比结果为不对conv1和fc进行稀疏处理,且局卷积核为3×3的算子的稀疏率为50%,卷积核为1×1的算子的稀疏率为30%的情况下的目标神经网络模型的精度与初始神经网络模型的精度的对比结果。第四组对比结果为不对conv1和fc进行稀疏处理,且目标神经网络模型的稀疏率为30%的情况下的目标神经网络模型的精度与初始神经网络模型的精度的对比结果。
如图15所示,与初始神经网络模型相比,目标神经网络模型的精度差在+0.102%~-0.794%的范围内。从第四组对比结果可以看出,稀疏率为30%时,目标神经网络模型的精度可以超过初始神经网络模型。当稀疏率为50%时,可以通过调整稀疏配置减少模型精度的回退程度,即保证模型精度的下降程度。从第一组对比结果可以看出,最差情况下的精度回退程度小于1%。
图16示出了初始神经网络模型和目标神经网络模型中的conv2D单算子的运算时间的对比图。具体地,图16示出了4个conv2D单算子(conv2_x、conv3_x、conv4_x、conv5_x)对4批(batch)数据(batch_1、batch_2、batch_3和batch_4)的处理时间。如图16所示,目标神经网络模型中的conv2D单算子的运算时间明显少于初始神经网络模型中的conv2D单算子的运算时间。
图17示出了图16对应的目标神经网络模型的加速程度的示意图。目标神经网模型中的一个conv2D算子的加速程度是通过初始神经网络模型中的该算子的运算时间除以目标神经网络模型中的该算子的运算时间得到的。如图16和图17所示,一个conv2D算子的平均加速程度为30%。
下面结合图18至图21对本申请实施例的装置进行说明。应理解,下面描述的装置能够执行前述本申请实施例的方法,为了避免不必要的重复,下面在介绍本申请实施例的装置时适当省略重复的描述。
图18是本申请实施例的AI模型的处理装置的示意性框图。图18所示的AI模型的处理装置3000包括获取单元3010和处理单元3020。
获取单元3010和处理单元3020可以用于执行本申请实施例的AI模型的处理方法,具体地,可以用于执行方法600。
获取单元3010用于获取初始AI模型和加速器的最小计算单元的尺寸,加速器用于执行目标AI模型的运算。
处理单元3020,用于对初始AI模型进行稀疏处理,以得到目标AI模型,其中,目标AI模型的权重矩阵包括多个权重块,多个权重块包括至少一个无效权重块和至少一个目标权重块,无效权重块为不参与运算的权重块,目标权重块为参与运算的权重块,权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,位于目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
可选地,作为一个实施例,装置还包括存储单元,用于:以压缩权重的形式存储目标AI模型的权重矩阵,压缩权重由至少一个目标权重块构成。
可选地,作为一个实施例,整数倍对应的倍数是在搜索空间内进行搜索得到的。
可选地,作为一个实施例,目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,目标AI模型的稀疏率满足目标稀疏率。
图19是本申请实施例提供的加速器4000的示意性框图。图19所示的加速器4000包括获取单元4010和处理单元4020。
获取单元4010和处理单元4020可以用于执行本申请实施例的AI模型的运算方法,例如,可以用于执行方法900。
获取单元4010用于根据目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,至少一个目标数据块对应于至少一个目标权重块,权重索引用于指示至少一个目标权重块在目标AI模型的权重矩阵中的位置。
处理单元4020用于基于至少一个目标数据块和至少一个目标权重块执行矩阵运算,以得到矩阵运算的结果。
可选地,作为一个实施例,目标AI模型的权重矩阵以压缩权重的形式存储,压缩权重由至少一个目标权重块构成。
可选地,作为一个实施例,处理单元4020还用于:将至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,多个权重组中的一个权重组包括目标AI模型的权重矩阵中位于矩阵运算累加方向上的目标权重块;以及处理单元4020具体用于:对多个数据矩阵和多个权重组分别执行矩阵运算,得到多个矩阵运算的结果;对多个矩阵运算的结果进行数据重排,以得到的矩阵的运算结果。
可选地,作为一个实施例,在目标AI模型的权重矩阵对应的网络层为卷积层的情况下,目标AI模型中的权重矩阵是将网络层的卷积核转换为二维矩阵得到的。
可选地,作为一个实施例,处理单元4020具体用于:根据目标AI模型的权重矩阵的权重索引确定输入数据矩阵中的目标位置;将输入数据矩阵中的目标位置上的数据转换为至少一个目标数据块。
可选地,作为一个实施例,整数倍对应的倍数是通过在搜索空间内进行搜索得到的。
可选地,作为一个实施例,目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,目标AI模型的稀疏率满足目标稀疏率。
需要说明的是,上述装置3000以及加速器4000以功能单元的形式体现。这里的术语“单元”可以通过软件和/或硬件形式实现,对此不作具体限定。
例如,“单元”可以是实现上述功能的软件程序、硬件电路或二者结合。硬件电路可能包括应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
因此,在本申请的实施例中描述的各示例的单元,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图20是本申请实施例提供的AI模型的处理装置的硬件结构示意图。图20所示的AI模型的处理装置5000(该装置5000具体可以是一种计算机设备)包括存储器5001、处理器5002、通信接口5003以及总线5004。其中,存储器5001、处理器5002、通信接口5003通过总线5004实现彼此之间的通信连接。
存储器5001可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器5001可以存储程序,当存储器5001中存储的程序被处理器5002执行时,处理器5002用于执行本申请实施例的AI模型的处理方法的各个步骤。具体地,处理器5002可以执行上文中图6所示的方法600。
处理器5002可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请方法实施例的AI模型的处理方法。
处理器5002还可以是一种集成电路芯片,具有信号的处理能力,例如,可以是图3所示的芯片。在实现过程中,本申请的AI模型的处理方法的各个步骤可以通过处理器5002中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器5002还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器5001,处理器5002读取存储器5001中的信息,结合其硬件完成图18所示的处理装置中包括的单元所需执行的功能,或者,执行本申请方法实施例的图6所示的AI模型的处理方法。
通信接口5003使用例如但不限于收发器一类的收发装置,来实现装置5000与其他设备或通信网络之间的通信。例如,可以通过通信接口5003获取初始神经网络模型和加速器的最小计算单元的尺寸。
总线5004可包括在装置5000各个部件(例如,存储器5001、处理器5002、通信接口5003)之间传送信息的通路。
图21是本申请实施例的AI模型的运算装置的硬件结构示意图。图21所示的数据处理装置6000包括存储器6001、处理器6002、通信接口6003以及总线6004。其中,存储器6001、处理器6002、通信接口6003通过总线6004实现彼此之间的通信连接。
存储器6001可以是ROM,静态存储设备和RAM。存储器6001可以存储程序,当存储器6001中存储的程序被处理器6002执行时,处理器6002和通信接口6003用于执行本申请实施例的AI模型的运算方法的各个步骤。具体地,处理器6002可以执行上文中图11所示的方法900。
处理器6002可以采用通用的,CPU,微处理器,ASIC,GPU或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的加速器中的单元所需执行的功能,或者执行本申请方法实施例的AI模型的运算方法。
处理器6002还可以是一种集成电路芯片,具有信号的处理能力,例如,可以是图3所示的芯片。在实现过程中,本申请实施例的AI模型的运算方法的各个步骤可以通过处理器6002中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器6002还可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器6001,处理器6002读取存储器6001中的信息,结合其硬件完成本申请实施例的加速器中包括的单元所需执行的功能,或者执行本申请方法实施例的AI模型的运算方法。
通信接口6003使用例如但不限于收发器一类的收发装置,来实现装置6000与其他设备或通信网络之间的通信。例如,可以通过通信接口6003获取输入数据。
总线6004可包括在装置6000各个部件(例如,存储器6001、处理器6002、通信接口6003)之间传送信息的通路。
应注意,尽管上述装置5000和装置6000仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置5000和装置6000还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置5000和装置6000还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置5000和装置6000也可仅仅包括实现本申请实施例所必须的器件,而不必包括图20和图21中所示的全部器件。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行本申请实施例中的任意一种实现方式中的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行本申请实施例中的任意一种实现方式中的方法。
本申请实施例还提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行本申请实施例中的任意一种实现方式中的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行本申请实施例中的任意一种实现方式中的方法。
上述芯片具体可以是现场可编程门阵列(field-programmable gate array,FPGA)或者专用集成电路(application-specific integrated circuit,ASIC)。
应理解,本申请实施例中的处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (27)
1.一种人工智能AI模型的处理方法,其特征在于,包括:
获取初始AI模型和加速器的最小计算单元的尺寸,所述加速器用于执行目标AI模型的运算;
对所述初始AI模型进行稀疏处理,以得到目标AI模型,其中,目标AI模型的权重矩阵包括多个权重块,所述多个权重块包括至少一个无效权重块和至少一个目标权重块,所述无效权重块为不参与运算的权重块,所述目标权重块为参与运算的权重块,所述权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,其中,位于所述目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
以压缩权重的形式存储所述目标AI模型的权重矩阵,所述压缩权重由所述至少一个目标权重块构成。
3.根据权利要求1或2所述的方法,其特征在于,所述整数倍对应的倍数是在搜索空间内进行搜索得到的。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,所述目标AI模型的稀疏率满足目标稀疏率。
5.一种AI模型的运算方法,其特征在于,目标人工智能AI模型的权重矩阵包括多个权重块,所述多个权重块包括至少一个无效权重块和至少一个目标权重块,所述无效权重块为不参与运算的权重块,所述目标权重块为参与运算的权重块,所述权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,所述加速器用于执行目标AI模型的运算,位于所述目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同,
在所述加速器执行所述目标AI模型的运算的过程中执行以下步骤:
根据所述目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,所述至少一个目标数据块对应于所述至少一个目标权重块,所述权重索引用于指示所述至少一个目标权重块在所述目标AI模型的权重矩阵中的位置;
基于所述至少一个目标数据块和所述至少一个目标权重块执行矩阵运算,以得到所述矩阵运算的结果。
6.根据权利要求5所述的方法,其特征在于,所述目标AI模型的权重矩阵以压缩权重的形式存储,所述压缩权重由所述至少一个目标权重块构成。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
将所述至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,所述多个权重组中的一个权重组包括所述目标AI模型的权重矩阵中位于矩阵运算累加方向上的目标权重块;以及
所述基于所述至少一个目标数据块和所述至少一个目标权重块执行矩阵运算,以得到所述矩阵运算的结果,包括:
对所述多个数据矩阵和所述多个权重组分别执行矩阵运算,得到多个矩阵运算的结果;
对所述多个矩阵运算的结果进行数据重排,以得到所述矩阵运算的结果。
8.根据权利要求7所述的方法,其特征在于,在所述目标AI模型的权重矩阵对应的网络层为卷积层的情况下,所述目标AI模型的权重矩阵是将所述网络层的卷积核转换为二维矩阵得到的。
9.根据权利要求8所述的方法,其特征在于,所述根据所述目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,包括:
根据所述目标AI模型的权重矩阵的权重索引确定所述输入数据矩阵中的目标位置;
将所述输入数据矩阵中的目标位置上的数据转换为所述至少一个目标数据块。
10.根据权利要求5至9中任一项所述的方法,其特征在于,所述整数倍对应的倍数是通过在搜索空间内进行搜索得到的。
11.根据权利要求5至10中任一项所述的方法,其特征在于,所述目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,所述目标AI模型的稀疏率满足目标稀疏率。
12.一种AI模型的处理装置,其特征在于,包括:
获取单元,用于获取初始AI模型和加速器的最小计算单元的尺寸,所述加速器用于执行目标AI模型的运算;
处理单元,用于对所述初始AI模型进行稀疏处理,以得到目标AI模型,其中,目标AI模型的权重矩阵包括多个权重块,所述多个权重块包括至少一个无效权重块和至少一个目标权重块,所述无效权重块为不参与运算的权重块,所述目标权重块为参与运算的权重块,所述权重块的尺寸为加速器的最小计算单元的尺寸的整数倍,位于所述目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括存储单元,用于:
以压缩权重的形式存储所述目标AI模型的权重矩阵,所述压缩权重由所述至少一个目标权重块构成。
14.根据权利要求12或13所述的装置,其特征在于,所述整数倍对应的倍数是在搜索空间内进行搜索得到的。
15.根据权利要求12至14中任一项所述的装置,其特征在于,所述目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,所述目标AI模型的稀疏率满足目标稀疏率。
16.一种加速器,其特征在于,目标AI模型的权重矩阵包括多个权重块,所述多个权重块包括至少一个无效权重块和至少一个目标权重块,所述无效权重块为不参与运算的权重块,所述目标权重块为参与运算的权重块,所述权重块的尺寸为所述加速器的最小计算单元的尺寸的整数倍,所述加速器用于执行目标AI模型的运算,位于所述目标AI模型的权重矩阵中的矩阵运算累加方向上的目标权重块的数量相同,以及所述加速器包括:
获取单元,用于根据所述目标AI模型的权重矩阵的权重索引从输入数据矩阵中获取至少一个目标数据块,所述至少一个目标数据块对应于所述至少一个目标权重块,所述权重索引用于指示所述至少一个目标权重块在所述目标AI模型的权重矩阵中的位置;
处理单元,用于基于所述至少一个目标数据块和所述至少一个目标权重块执行矩阵运算,以得到所述矩阵运算的结果。
17.根据权利要求16所述的加速器,其特征在于,所述目标AI模型的权重矩阵以压缩权重的形式存储,所述压缩权重由所述至少一个目标权重块构成。
18.根据权利要求16或17所述的加速器,其特征在于,所述处理单元还用于:
将所述至少一个目标数据块中的、与多个权重组对应的目标数据块分别组合为多个数据矩阵,所述多个权重组中的一个权重组包括所述目标AI模型的权重矩阵中位于矩阵运算累加方向上的目标权重块;以及所述处理单元具体用于:
对所述多个数据矩阵和所述多个权重组分别执行矩阵运算,得到多个矩阵运算的结果;
对所述多个矩阵运算的结果进行数据重排,以得到所述的矩阵的运算结果。
19.根据权利要求18所述的加速器,其特征在于,在所述目标AI模型的权重矩阵对应的网络层为卷积层的情况下,所述目标AI模型中的权重矩阵是将所述网络层的卷积核转换为二维矩阵得到的。
20.根据权利要求19所述的加速器,其特征在于,所述处理单元具体用于:
根据所述目标AI模型的权重矩阵的权重索引确定所述输入数据矩阵中的目标位置;
将所述输入数据矩阵中的目标位置上的数据转换为所述至少一个目标数据块。
21.根据权利要求16至20中任一项所述的加速器,其特征在于,所述整数倍对应的倍数是通过在搜索空间内进行搜索得到的。
22.根据权利要求16至21中任一项所述的加速器,其特征在于,所述目标AI模型的权重矩阵的稀疏率是通过在搜索空间内进行搜索得到的,所述目标AI模型的稀疏率满足目标稀疏率。
23.一种AI模型的处理装置,其特征在于,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令以执行如权利要求1至4中任一项所述的方法。
24.一种加速器,其特征在于,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令以执行如权利要求5至11中任一项所述的方法。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储设备执行的程序代码,所述程序代码包括用于执行如权利要求1至4或权利要求5至11中任一项所述的方法。
26.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1至4或权利要求5至11中任一项所述的方法。
27.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令以执行如权利要求1至4或权利要求5至11中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111265704.8A CN116050469A (zh) | 2021-10-28 | 2021-10-28 | Ai模型的处理方法、运算方法及装置 |
PCT/CN2022/121335 WO2023071658A1 (zh) | 2021-10-28 | 2022-09-26 | Ai模型的处理方法、运算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111265704.8A CN116050469A (zh) | 2021-10-28 | 2021-10-28 | Ai模型的处理方法、运算方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116050469A true CN116050469A (zh) | 2023-05-02 |
Family
ID=86118720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111265704.8A Pending CN116050469A (zh) | 2021-10-28 | 2021-10-28 | Ai模型的处理方法、运算方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116050469A (zh) |
WO (1) | WO2023071658A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093816B (zh) * | 2023-10-19 | 2024-01-19 | 上海登临科技有限公司 | 矩阵乘运算方法、装置和电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977704B (zh) * | 2017-11-10 | 2020-07-31 | 中国科学院计算技术研究所 | 权重数据存储方法和基于该方法的神经网络处理器 |
US11625584B2 (en) * | 2019-06-17 | 2023-04-11 | Intel Corporation | Reconfigurable memory compression techniques for deep neural networks |
CN112633477A (zh) * | 2020-12-28 | 2021-04-09 | 电子科技大学 | 一种基于现场可编程阵列的量化神经网络加速方法 |
CN113537465A (zh) * | 2021-07-07 | 2021-10-22 | 深圳市易成自动驾驶技术有限公司 | Lstm模型优化方法、加速器、装置及介质 |
-
2021
- 2021-10-28 CN CN202111265704.8A patent/CN116050469A/zh active Pending
-
2022
- 2022-09-26 WO PCT/CN2022/121335 patent/WO2023071658A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023071658A1 (zh) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020221200A1 (zh) | 神经网络的构建方法、图像处理方法及装置 | |
WO2022083536A1 (zh) | 一种神经网络构建方法以及装置 | |
WO2021120719A1 (zh) | 神经网络模型更新方法、图像处理方法及装置 | |
CN112183718B (zh) | 一种用于计算设备的深度学习训练方法和装置 | |
WO2021233342A1 (zh) | 一种神经网络构建方法以及系统 | |
US20230215159A1 (en) | Neural network model training method, image processing method, and apparatus | |
WO2021218517A1 (zh) | 获取神经网络模型的方法、图像处理方法及装置 | |
CN110222718B (zh) | 图像处理的方法及装置 | |
CN111368972B (zh) | 一种卷积层量化方法及其装置 | |
CN111882031A (zh) | 一种神经网络蒸馏方法及装置 | |
CN110222717A (zh) | 图像处理方法和装置 | |
CN112529146B (zh) | 神经网络模型训练的方法和装置 | |
WO2023093724A1 (zh) | 神经网络模型的处理方法及装置 | |
WO2022007867A1 (zh) | 神经网络的构建方法和装置 | |
US20230281973A1 (en) | Neural network model training method, image processing method, and apparatus | |
CN111340190A (zh) | 构建网络结构的方法与装置、及图像生成方法与装置 | |
WO2023280113A1 (zh) | 数据处理方法、神经网络模型的训练方法及装置 | |
US20240078428A1 (en) | Neural network model training method, data processing method, and apparatus | |
CN111931901A (zh) | 一种神经网络构建方法以及装置 | |
CN114004383A (zh) | 时间序列预测模型的训练方法、时间序列预测方法及装置 | |
WO2023071658A1 (zh) | Ai模型的处理方法、运算方法及装置 | |
WO2021057690A1 (zh) | 构建神经网络的方法与装置、及图像处理方法与装置 | |
CN111652349A (zh) | 一种神经网络的处理方法及相关设备 | |
WO2023122854A1 (zh) | 数据处理的方法和装置 | |
WO2022227024A1 (zh) | 神经网络模型的运算方法、训练方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |