一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、装置、AI芯片、电子设备及存储介质与流程

2022-07-10 01:09:58 来源:中国专利 TAG:

数据处理方法、装置、ai芯片、电子设备及存储介质
技术领域
1.本技术属于神经网络技术领域,具体涉及一种数据处理方法、装置、ai芯片、电子设备及存储介质。


背景技术:

2.随着人工智能(artificial intelligence,ai)时代的到来,图像识别、语音识别、自然语言处理等智能任务在生活中无处不在。而神经网络作为当前实现这类智能任务最有效的算法之一,已经获得广泛关注和应用。然而大型的神经网络具有大量的层级和节点,导致其权重参数数量大,网络训练过程耗时,同时训练好的模型占用很大的存储空间。因此,目前在人工智能领域,越来越开始关注稀疏性的神经网络,并提出了很多优化方法,以便在这种特定场景下,相对于普通神经网络,获得更大的收益。
3.相对于稠密型神经网络,稀疏神经网络的权重矩阵的零值比例虽然增加了,但其尺寸大小依旧没变,里面的零值元素依旧占用存储空间。对于稀疏性的神经网络,如何利用稀疏性的特性,高效的利用硬件计算能力、降低数据带宽、降低功耗、提高能效比、提升神经网络最终性能,给ai神经网络的加速方案带来了新的挑战。
4.通常大部分神经网络部署的硬件是gpu(graphic process unit,图形处理器)或中央处理器(central process unit,cpu),在处理稀疏性神经网络时,这类处理器相对于专用的“压缩及解压缩”硬件模块,在效率及性能上要差很多,这是因为专用模块能直接对输入数据进行操作,并不需要涉及将压缩或解压缩程序指令转换为“通用指令”等操作。
5.又一种方式是将神经网络部署到专用的ai 加速芯片(比如google(谷歌)的tpu(tensor processing unit,张量处理器))上。但是该方式可能面临的问题是:该专用芯片可能不支持稀疏网络的压缩、解压缩操作;即便该芯片支持稀疏性网络,但是使用的某种压缩、解压缩方案可能并不适合当前网络场景,使得获得的收益不明显。


技术实现要素:

6.鉴于此,本技术的目的在于提供一种数据处理方法、装置、ai芯片、电子设备及存储介质,以改善现有方案所存在的缺陷,以提升处理稀疏性神经网络的能耗比(性能功耗比)和效率。
7.本技术的实施例是这样实现的:第一方面,本技术实施例提供了一种数据处理方法,包括:获取部署到ai芯片中的神经网络的基本信息及所述ai芯片的基本信息;根据所述神经网络的基本信息及所述ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法;利用最优压缩算法对所述神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,所述数据索引用于将所述压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
8.在本技术实施例中,通过获取神经网络的基本信息及ai芯片的基本信息,并以此
来灵活选取适合当前场景的最优压缩方案,再以最优压缩方案对神经网络的相关数据进行压缩,不仅能够节省神经网络在硬件中的整体带宽,还能够节省网络在硬件中的计算资源的使用,能以相对最优的方式完成稀疏性神经网络的加速,提升能耗比(性能功耗比)和性能。
9.结合第一方面实施例的一种可能的实施方式,所述神经网络的基本信息包括:网络稀疏程度、网络原始数据量;所述ai芯片的基本信息包括:芯片的传输带宽、芯片的计算资源使用情况、芯片的片上内存消耗情况;根据所述神经网络的基本信息及所述ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法,包括:针对每一个预设的压缩算法,将该压缩算法、所述网络稀疏程度、所述网络原始数据量、所述芯片的传输带宽、所述芯片的计算资源使用情况、所述芯片的片上内存消耗情况,输入预设性能评估模型中进行处理,得到对应的评估分数;其中,所述预设性能评估模型用于模拟所述ai芯片对经过该压缩算法模拟压缩后的模拟压缩数据及对应的数据索引进行预处理时所需的性能开销;将最大评估分数对应的压缩算法作为所述最优压缩算法。
10.在本技术实施例中,通过将上述参数输入预设性能评估模型中进行处理,以此来模拟ai芯片对经过压缩算法模拟压缩后的模拟压缩数据及对应的数据索引进行预处理时所需的性能开销,使得并不需要真正运行硬件,就能够非常快速的得到硬件运行的评估指标(近似于在真实硬件上跑的性能数据),以此来选择压缩方案,从而能够灵活选取适合当前场景的最优压缩方案。
11.结合第一方面实施例的一种可能的实施方式,将该压缩算法、所述网络稀疏程度、所述网络原始数据量、所述芯片的传输带宽、所述芯片的计算资源使用情况、所述芯片的片上内存消耗情况,输入预设性能评估模型中进行处理,得到对应的评估分数,包括:所述预设性能评估模型根据所述网络稀疏程度、所述网络原始数据量得到经过该压缩算法模拟压缩后的模拟压缩数据量及对应的数据索引量;所述预设性能评估模型根据所述芯片的片上内存消耗情况,对所述模拟压缩数据量及对应的数据索引量进行数据切分;针对切分后的每一个数据块,所述预设性能评估模型模拟所述ai芯片按照所述芯片的传输带宽对该数据块进行数据加载,并按照所述芯片的计算资源使用情况对加载的数据进行指定处理所需的性能开销;所述预设性能评估模型根据模拟的各个数据块各自对应的性能开销,得到对应的评估分数。
12.在本技术实施例中,由于不同的压缩算法在对相同的数据进行压缩时,得到的数据量不同,根据网络稀疏程度、网络原始数据量便可得到经过压缩算法模拟压缩后的数据量,之后再根据芯片的片上内存消耗情况,对压缩后的数据量进行切分,以便与实际处理流程保持一致,避免因数据过大而无法一次加载到片上内存,之后,针对切分后的每一个数据块,模拟ai芯片从加载压缩数据到可配置解压缩单元进行解压缩,以及最后计算单元对解压缩数据进行指定计算的整个过程,以此能够非常准确的评估出当前场景下,芯片最后运行的性能、能耗状况(近似于在真实硬件上跑的性能数据),以此来选择最优的压缩方案。
13.结合第一方面实施例的一种可能的实施方式,利用最优压缩算法对所述神经网络的相关数据进行压缩,包括:按照硬件所需格式对所述神经网络的相关数据进行分块;针对切分后的每一个数据块,按照硬件所需的对齐要求进行数据对齐;利用所述最优压缩算法按照硬件所需的对齐要求,对对齐后的每一个数据块进行压缩。
14.在本技术实施例中,在对相关数据进行压缩时,通过按照硬件所需的格式对相关数据进行分块,以便于更好的发挥硬件性能,并对分块后的数据按照硬件所需的对齐要求进行数据对齐,之后再对对齐后的每一个数据块按照硬件所需的对齐要求进行压缩,以提高后续硬件读取数据的效率。
15.结合第一方面实施例的一种可能的实施方式,在得到压缩数据和对应的数据索引后,所述方法还包括:在需要对所述神经网络的相关数据进行指定计算时,获取所述神经网络的相关数据对应的目标压缩数据和对应的目标数据索引;判断计算单元是否能直接对所述目标压缩数据和对应的目标数据索引进行指定计算;在为是时,将所述目标压缩数据和对应的目标数据索引透传给所述计算单元进行指定计算。
16.在本技术实施例中,在需要对神经网络的相关数据进行指定计算时,获取对应的目标压缩数据和对应的目标数据索引,若计算单元能直接对目标压缩数据和对应的目标数据索引进行指定计算,则直接将获取的目标压缩数据和对应的目标数据索引透传给计算单元进行指定计算,以减少对目标数据进行解压缩的处理流程,从而提高处理效率。
17.结合第一方面实施例的一种可能的实施方式,在判断计算单元是否能直接对所述目标压缩数据和对应的目标数据索引进行指定计算之后,所述方法还包括:在为否时,根据所述目标数据索引对所述目标压缩数据进行解压缩,将解压缩得到的原始数据发送给所述计算单元进行指定计算。
18.在本技术实施例中,若计算单元不能直接对目标压缩数据和对应的目标数据索引进行指定计算,对目标压缩数据进行解压缩,之后将解压缩得到的原始数据发送给计算单元进行指定计算,以保证计算单元能正确的计算,避免计算出错。
19.第二方面,本技术实施例还提供了一种ai芯片,包括:片上内存、数据加载单元、可配置解压缩单元、计算单元;片上内存,用于存储部署到所述ai芯片中的神经网络的压缩数据和对应的数据索引;数据加载单元,用于读取所述片上内存中存储的目标压缩数据和对应的目标数据索引;可配置解压缩单元,用于获取所述数据加载单元发送的目标压缩数据和对应的目标数据索引,并根据配置信息判断是否需要对所述目标压缩数据进行解压缩;在为否时,透传所述目标压缩数据和对应的目标数据索引;计算单元,用于接收所述可配置解压缩单元透传的所述目标压缩数据和对应的目标数据索引,并对其进行指定计算。
20.结合第二方面实施例的一种可能的实施方式,可配置解压缩单元,还用于在需要对所述目标压缩数据进行解压缩时,根据所述目标数据索引对所述目标压缩数据进行解压缩,将解压缩得到的原始数据发送给所述计算单元;所述计算单元,还用于对所述可配置解压缩单元发送的原始数据进行指定计算。
21.第三方面,本技术实施例还提供了一种数据处理装置,包括:获取模块、选择模块、压缩模块;获取模块,用于获取部署到ai芯片中的神经网络的基本信息及所述ai芯片的基本信息;选择模块,用于根据所述神经网络的基本信息及所述ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法;压缩模块,用于利用最优压缩算法对所述神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,所述数据索引用于将所述压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
22.第四方面,本技术实施例还提供了一种电子设备,包括:存储器和处理器,所述处
理器与所述存储器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
23.第五方面,本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
24.本技术的其他特征和优点将在随后的说明书阐述。本技术的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
25.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本技术的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本技术的主旨。
26.图1示出了本技术实施例提供的一种软硬结合的数据处理流程的原理示意图。
27.图2示出了本技术实施例提供的一种数据处理方法的流程示意图。
28.图3示出了本技术实施例提供的ai芯片的结构示意图。
29.图4示出了本技术实施例提供的一种数据处理装置的功能模块示意图。
30.图5示出了本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
31.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
32.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
33.再者,本技术中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
34.本技术实施例提供了一种从上至下,从软件层面到硬件层面的整体解决方案,以提升处理稀疏性神经网络的能耗比(性能功耗比)和效率。相比于使用第三方(gpu或cpu)通用硬件资源的方案,本技术提供了一种专用的ai芯片,可以避免抢占第三方通用硬件的计算资源,不需要涉及将压缩、解压缩程序指令转换为“通用指令”等操作(第三方通用硬件资源在做“压缩”、“解压缩”操作时需要将压缩/解压缩程序指令转换为“通用指令”,之后才能压缩/解压缩操作),能极大地提升能耗比和效率。相对比常见的ai 加速芯片(比如google
(谷歌)的tpu),本技术提供了一种配合该ai芯片的驱动程序,其支持灵活的压缩算法选取,能解决现有ai加速芯片使用的某种压缩方案可能并不适合当前网络场景,使得获得的收益不明显的问题,能以相对最优的方式完成稀疏性神经网络的加速,提升能耗比和性能。
35.需要说明的是,使用第三方(gpu或cpu)通用硬件资源做“压缩/解压缩”操作时,整个“压缩”、“解压缩”会经过一个相当复杂和冗长的过程。例如,以传统gpu的解压缩为例,需要将解压缩程序指令编译成gpu通用指令,之后将编译好的gpu通用指令发送给gpu,gpu 在根据gpu通用指令取需要解压缩的数据时,需要对编译的gpu通用指令进行译码,之后再根据译码后的指令取数据进行解压缩操作。
36.为了更好的理解,下面将结合图1对本技术的原理进行说明。为了避免抢占第三方通用硬件的计算资源,在硬件层面,本技术提供了一种专用的ai芯片,该ai芯片包括片上内存、数据加载单元、可配置解压缩单元及计算单元。为了解决一些场景的ai 加速芯片可能不支持稀疏网络的压缩、解压缩操作,或者,即便该芯片支持稀疏性网络,但是其使用的某种压缩方案可能并不适合当前网络场景,使得获得的收益不明显的问题,在软件层面,本技术提供了一种配合该ai芯片使用的驱动程序,该驱动程序能结合神经网络的基本信息和ai芯片的基本信息,依靠评估函数cost_func = f (a,s,m,b,c,d)来灵活选取压缩方案,以相对最优的方式完成稀疏性神经网络的加速,提升能耗比和性能。
37.其中,该驱动程序可以通过固化在如光盘、u盘等存储介质中,与ai芯片一同出售,使用者在安装好ai芯片后,运行该驱动程序便可自动完成本技术所示的数据处理方法的处理。此外,该驱动程序也可以挂载到网上,需要时,通过链接从网上下载安装到本地。
38.为了更好的理解本技术的原理,下面将结合图2,对本技术实施例提供的数据处理方法的原理进行说明。
39.s1:获取部署到ai芯片中的神经网络的基本信息及所述ai芯片的基本信息。
40.把训练好的神经网络部署到本技术的专用ai芯片上,使用配套ai芯片的驱动程序,该驱动程序会获取部署到ai芯片中的神经网络的基本信息及所述ai芯片的基本信息。其中,可以利用现有的部署方式将训练好的神经网络部署到本技术的专用ai芯片上,此处不再介绍。
41.其中,神经网络的基本信息可以包括网络稀疏程度和网络原始数据量等信息。网络稀疏程度表示网络中的零值权重相当于整体权重的占比,例如,假设网络稀疏程度为30%,则表示其中的零值权重的占比为30%,非零值权重的占比为70%。网络原始数据量为网络中非压缩的权重数据的大小,如100m。需要说明的是,此处所示例的数值仅为示例,具体取决于神经网络本身的信息。
42.ai芯片的基本信息可以包括一些硬件的基本信息,如芯片的传输带宽、芯片的计算资源使用情况、芯片的片上内存消耗情况等。
43.本技术中的神经网络可以是任何可以部署于ai芯片中的神经网络,如可以是卷积神经网络(convolution neural network,cnn)、循环神经网络(rerrent neural network,rnn)、长短期记忆(long short term memory,lstm)神经网络等各种神经网络。
44.s2:根据所述神经网络的基本信息及所述ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法。
45.驱动程序在获取到这些信息后,可以根据获取到的神经网络的基本信息及ai芯片
的基本信息,从预设的多个压缩算法中选取出最优压缩算法。由于不同的压缩算法所压缩的数据量不同,使得在解压缩时所需要消耗的硬件资源也不同。因此,通过比较不同的压缩算法所带来的硬件性能的消耗情况,从中选取出最优压缩算法,以提升能耗比和性能。
46.其中,目前存在的压缩算法有很多,理论上可以实现的所有优秀的压缩算法都可以固化到硬件里面,例如,预设的压缩算法可以是bitmap压缩算法、行压缩算法如csr(compressed sparse row)或列压缩算法如csc(compressed sparse column)、坐标压缩算法,如coo(coordinate)或coo-1d(coo的变形)、游程长度编码(run length coding,rlc)压缩算法等。不同的压缩算法所压缩的数据量不同,主要体现在数据索引不同。
47.在压缩或模拟压缩时,主要是将数据中零值(0)元素剔除,只保留非0的元素,之后将非0的元素依次排列即可,而其中生成如何表示非0元素或者0元素的位置信息,则取决于压缩算法,不同的压缩算法对应的数据索引不同。比如输入数据是(2,0,5,0),使用bitmap压缩算法,那么得到的压缩数据是(2,5),数据量减少了一半,而数据索引是一个二进制数1010。二进制数中的每个bit,1代表非零元素,0代表0元素。但是,如果是使用csr/csc的压缩方式,那么得到的压缩数据还是(2,5), 但是数据索引变成了坐标信息的序列(0,2) ,其中,坐标0表示位置0对应的元素是非0元素,坐标2表示位置2对应的元素是非0元素。对于上述的原始输入数据(2,0,5,0)来说,位置0对应的元素为2,位置1对应的元素为0,位置2对应的元素为5,位置3对应的元素为0。
48.一种可选实施方式下,s2的实现过程可以是:针对每一个预设的压缩算法,将该压缩算法、网络稀疏程度、网络原始数据量、芯片的传输带宽、芯片的计算资源使用情况、芯片的片上内存消耗情况,输入预设性能评估模型中进行处理,得到对应的评估分数;将最大评估分数对应的压缩算法作为最优压缩算法。其中,预设性能评估模型用于模拟ai芯片对指定数据进行预处理(如进行数据加载、解压缩以及指定计算处理等)时所需的性能开销,指定数据包括经过该压缩算法模拟压缩后的模拟压缩数据及对应的数据索引。其中,数据索引用于将压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
49.预设性能评估模型包含评估函数cost_func = f (a,s,m,b,c,d),其中,a表示压缩算法(algorithm),s表示网络稀疏程度(sparse),m表示芯片的片上内存(memory)消耗情况,b表示芯片的传输带宽(bandwidth),d表示网络原始数据量(data)。将上述参数(a,s,m,b,c,d)输入预设性能评估模型中,便可得到对应的分数。该分值越高,代表在当前场景中,使用该压缩算法获取的收益最大(带宽低、能耗低、性能好)。为了选取最优压缩算法,驱动程序会针对硬件支持的所有压缩算法,逐个调用cost_func计算其分数,最后选取最大分值的压缩算法作为备选方案。可选地,当最大的分值低于驱动设置的阈值时,说明当前场景不适合做压缩处理,或者压缩处理带来的收益不大,这时驱动程序会按非压缩的方式来处理神经网络的数据。
50.利用预设性能评估模型选取最优压缩算法的逻辑可以是:a)假设初始最大分数score
max 等于0;b)驱动程序针对压缩算法ai(其中,i依次取值1至n,n为预设的压缩算法的数量)使用评估函数得到分值scorei,如果score
i 比 score
max 大,则更新最大分数为scorei,候选压缩算法为ai;
c)在没有得到所有压缩算法的分数之前,重复步骤b),否则进行步骤d);d) 使用得到的最大分值和驱动设置的阈值比较,如果最大分值大于阈值(不同的神经网络对应的阈值可以不同),说明收益较大,按最大分数值对应的压缩方案处理神经网络的相关数据,反之,则说明收益较小,按非压缩方案处理神经网络的相关数据。
51.预设性能评估模型是一个性能、能耗模型,它内部建模了ai芯片从加载压缩数据到可配置解压缩单元进行解压缩,以及最后计算单元对解压缩数据进行指定计算的整个过程,能够非常准确的评估出当前场景下,芯片最后运行的性能、能耗状况,使得并不需要真正运行硬件,就能够非常快速的得到硬件运行的评估指标。预设性能评估模型模拟了整个硬件的各个模块,包括数据加载单元、可配置解压缩单元、计算单元等模块。根据前文输入的参数,得到网络在硬件上运行的性能数据(近似于在真实硬件上跑的性能数据),以此来选择最优的压缩方案。
52.性能评估模型常常被当作一个“分析工具”用来观察硬件在特定场景下的运行情况,定位该场景下的硬件运行的瓶颈。比如,模拟数据加载单元的性能,其方式是:时间开销(单位为秒) =加载总数据量/写入带宽。模拟可配置解压缩单元的性能,其方式是:时间开销 = 压缩的数据量/(可配置解压缩单元数量* 单次每个可配置解压缩单元的解压数据量),而模拟计算单元(arithmetic logic unit,alu)的建模方式是:时间开销= 总计算量/(硬件alu 数量*每个alu单元的计算量),对于其他硬件模块也用类似方式建模,如模拟数据写出单元的性能,其方式是:时间开销= 写出总数据量/写出带宽,采用上述的建模方式对各个所需的模块进行建模,最后得到一个完整的硬件性能模型。
53.一种可选实施方式下,将该压缩算法、网络稀疏程度、网络原始数据量、芯片的传输带宽、芯片的计算资源使用情况、芯片的片上内存消耗情况,输入预设性能评估模型中进行处理,得到对应的评估分数的过程可以是:预设性能评估模型根据网络稀疏程度、网络原始数据量得到经过该压缩算法模拟压缩后的模拟压缩数据量及对应的数据索引量;预设性能评估模型根据芯片的片上内存消耗情况,对模拟压缩数据量及对应的数据索引量进行数据切分;针对切分后的每一个数据块,预设性能评估模型模拟ai芯片按照芯片的传输带宽对该数据块进行数据加载,并按照芯片的计算资源使用情况对加载的数据进行指定处理所需的性能开销;预设性能评估模型根据模拟的各个数据块各自对应的性能开销,得到对应的评估分数。
54.预设性能评估模型在模拟ai芯片按照芯片的传输带宽对数据块进行数据加载,并按照芯片的计算资源使用情况对加载的数据进行指定处理时,在这一过程中,涉及到的硬件包括数据加载单元、可配置解压缩单元及计算单元,因此,需要模拟硬件从处理加载压缩数据到可配置解压缩单元进行解压缩,以及最后计算单元对解压缩数据进行指定计算的整个过程的性能消耗,例如,针对切分后的每一个数据块,预设性能评估模型模拟ai芯片中的数据加载单元按照芯片的传输带宽对该数据块进行数据加载所需的性能开销;预设性能评估模型模拟ai芯片中的可配置解压缩单元对该数据块进行解压缩所需的性能开销;预设性能评估模型模拟ai芯片中的计算单元按照芯片的计算资源使用情况对该数据块进行指定运算所需的性能开销。之后选择出其中制约硬件的瓶颈,并以此得到对应的评估分数。例如,制约硬件的瓶颈为数据加载单元的传输带宽,则以数据加载单元的性能消耗来得到对应的评估分数,若制约硬件的瓶颈为可配置解压缩单元或计算单元等计算瓶颈,则以可配
置解压缩单元或计算单元的性能消耗来得到对应的评估分数。
55.其中,性能消耗越小,对应的评估分数越高,表征性能越好。可以通过事先制作表征性能消耗与评估分数的关系表,之后通过查表的方式来得到性能消耗对应的评估分数。该部分已经为本领域所熟知,此处不再介绍。
56.为了更好的理解,举例进行说明,假设网络稀疏程度为30%、网络原始数据量为100m,则可以得到经过该压缩算法模拟压缩后的模拟压缩数据量(70m)和对应的数据索引量(假设为5m),则模拟压缩数据量和对应的数据索引量共计75m。根据输入的片上内存消耗情况可以知道当前片上内存的剩余存储空间(假设为40m),由于需要存储的数据量大于75m,因此需要对其进行切分,如可以切分为2个数据块(如可以是数据块1的大小为40m、数据块2的大小为35m),分两次进行处理。
57.针对切分后的每一个数据块,如针对数据块1,按照芯片的传输带宽(例如2m/s,此处仅为示例,实际传输带宽远不止于此)对该数据块1进行数据加载,需要20s,针对数据块2,按照芯片的传输带宽(如2m/s)对该数据块2进行数据加载,需要17.5 s。则对于数据加载单元来说,总性能开销为37.5s。
58.若计算单元不能直接处理压缩的数据,则可配置解压缩单元需要根据数据索引对压缩数据进行解压缩,假设可配置解压缩单元的数量为1,单次每个可配置解压缩单元的解压数据量为4m/s,则对于数据块1,需要10s,针对数据块2需要8.75s。则对于可配置解压缩单元来说,其总性能开销为18.75s。
59.假设数据块1解压缩后的数据量为55m,数据块2解压缩后的数据量为45m。在计算按照芯片的计算资源使用情况(假设可用的计算单元的数量为5,每个计算单元的计算量为1m/s)则对加载的数据进行指定处理所需的性能开销时,对于数据块1,需要10(即55/5)s,对于数据块2,需要9(即45/5)s。对于计算单元来说,其总性能开销为19s。
60.由于,对于数据加载单元来说,其性能开销为37.5s;对于可配置解压缩单元来说,其性能开销为18.75s,对于计算单元来说,其性能开销为19s。可见制约该ai芯片的凭瓶颈为传输带宽(由于数据加载单元的性能开销最大)。因此预设性能评估模型模拟在根据各个数据块各自对应的性能开销,得到对应的评估分数时,主要根据数据加载单元在处理各个数据块各自对应的性能开销来得到对应的评估分数。如通过查表的方式,来查找性能开销为37.5s对应的评估分数。
61.s3:利用最优压缩算法对所述神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,所述数据索引用于将所述压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
62.在选出最优压缩算法后,驱动程序利用最优压缩算法对神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,数据索引用于将压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
63.一种可选实施方式下,在利用最优压缩算法对所述神经网络的相关数据进行压缩时,其过程可以是:按照硬件所需格式对神经网络的相关数据进行分块;针对切分后的每一个数据块,按照硬件所需的对齐要求进行数据对齐;利用最优压缩算法按照硬件所需的对齐要求,对对齐后的每一个数据块进行压缩,得到对应的压缩数据及对应的数据索引,以保证压缩数据符合硬件所需的对齐要求。
64.由于神经网络的相关数据(未压缩的数据)可能会很大,比如100m,若计算单元一次只能完成1m的任务计算。这时候硬件需要重复100次将数据加载到计算单元中进行计算。而每次加载的数据就是整体输入数据中的“一块”。而一个数据块的大小,完全由硬件计算资源多少、片上内存大小来决定。进行分块之后,100m大小的计算任务,就被切割为100个1m大小的“子任务”,压缩是在每个子任务上面进行。
65.硬件对输入数据的格式是有要求的,比如上面例子中的1m的子任务,里面的数据是有一定物理含义的。权重数据一般有4个属性(output channel(输入通道),kernel height(内核高度),kernel width(内核宽度),input channel(输入通道))。这1m子任务里面每个属性放多少,就是分块的格式。不同的硬件实现对分块的格式要求不一样,匹配的格式更能发挥硬件性能。比如原始数据的4个属性分别是(1000,3,3,512),那么一个子任务可以优先放input channel,也可以优先放kernel width。本技术中是优先放入32个input channel,然后才依次放入kernel width,kernel height,output channel。一个子任务的格式如果是(8,3,3,32),那么划分的子任务个数就是:子任务数量(sub_task_number )= (1000 / 8) * (3 / 3) * (3 / 3) * (512 / 32) = 2000个。
66.硬件对输入数据的起始地址有严格的要求,一般来说必须对齐到32 bytes(即需要对齐到32字节的整数倍)。这样硬件才能够正确、高效的获取数据。如果不是32 bytes对齐的数据,硬件可能需要多花好几个硬件时钟(cycle)才能获取到所需的数据,如果是对齐的数据,一般一个硬件时钟就能获取到数据。所以软件层(驱动程序)在对分块的数据分配内存时,需要按照对齐到32bytes的方式分配,以便保证数据地址是对齐的。同时,在进行数据压缩时,也需要保证压缩后的数据是按照硬件的对齐要求对齐的,也需要按照对齐到32bytes的方式,对压缩数据进行对齐。
67.由于不同的数据类型所占用的字节数不同,因此在对数据进行对齐时,还要考虑数据的类型,比如对于一个张量,在网络里面的描述是(shape=(100, 3,3,63),dtype=np.int8),其中,shape =(100,3,5,63)表示张量是一个4维数据,其中100 表示output channel,3 表示kernel height,5表示kernel width,63表示input channel,而这个张量在片上内存里面放的数据总量就是100 * 3 * 5 * 63 个元素。而dtype = np.int8,表示每个元素的数据类型是integer 8bits的定点数,所以一个元素占用一个bytes(每8个bit 就是一个byte),最后在内存中占用的总数据量是 100 * 3 * 5 * 63 * 1 byte。如果dtype=np.float32,即每个元素都是一个32bits的浮点数,则占用4bytes (32 /8 ),所以同样的元素在内存中占用100 * 3 * 5 * 64 * 4 bytes。而对于上面两种张量的描述,虽然元素个数一样,但是实际占用的bytes却是不一样的。所以对于这两种情况,把input channel = 63对齐到32bytes,就变成了将63 * 1bytes = 63bytes对齐64 bytes和将63 * 4 bytes = 252 bytes对齐到256 bytes。最后,对于np.int8的对齐,其在片上内存里面的摆放是每隔63 bytes 就会空1个bytes,而第二个情况(np.float32)是每隔252bytes就会空4个bytes。
68.其中,在对对齐的数据进行压缩时,主要是将数据中零值(0)元素剔除,只保留非0的元素,之后将非0的元素依次排列即可,而其中生成如何表示非0元素或者0元素的位置信息,则取决于压缩算法,不同的压缩算法对应的数据索引不同。需要指出的是,在进行数据压缩时,并不是将所有0元素都剔除掉,这会根据硬件的对齐要求,保留少量的0。在压缩时,
如果没有那么多非0元素,则需要保留一定数量的0元素,以保证压缩后的数据符合硬件的对齐要求。
69.一种可选实施方式下,除了选用最优压缩算法对神经网络的相关数据进行压缩外,还可以在得到压缩数据和对应的数据索引后,还可以利用ai芯片运行神经网络对外部输入激励(如输入的图像特征)进行预处理(如卷积处理、池化、向量加操作、分类等处理)。该数据处理方法还包括:在需要对神经网络的相关数据进行指定计算时,获取神经网络的相关数据对应的目标压缩数据和对应的目标数据索引;判断计算单元是否能直接对目标压缩数据和对应的目标数据索引进行指定计算(如卷积处理、池化、向量加操作、分类等处理);在为是时,将目标压缩数据和对应的目标数据索引透传给计算单元进行指定计算。在为否时,根据目标数据索引对目标压缩数据进行解压缩,将解压缩得到的原始数据发送给计算单元进行指定计算。
70.一种实施方式下,可以是利用软件的方式来获取神经网络的相关数据对应的目标压缩数据和对应的目标数据索引;并判断计算单元是否能直接对目标压缩数据和对应的目标数据索引进行指定计算;在为是时,将目标压缩数据和对应的目标数据索引透传给计算单元进行指定计算。
71.又一种实施方式下,可以是利用硬件的方式来实现,例如驱动程序在需要对神经网络的相关数据进行指定计算时,可以是利用数据加载单元从ai芯片的片上内存中正常获取进行指定计算所需的目标压缩数据和对应的目标数据索引,因为当前获取的数据是压缩之后的,数据量大大降低,数据加载单元读取数据的带宽需求也会大大降低。目标压缩数据和对应的目标数据索引进入可配置解压缩单元后,可配置解压缩单元根据预设的配置信息,来判断计算单元是否能直接对目标压缩数据和对应的目标数据索引进行指定计算,如果计算单元能够直接处理目标压缩数据,则不进行任何解压操作,“透传(pass-through)”数据到计算单元。如果计算单元不能直接处理目标压缩数据,那么在进行计算之前,根据目标数据索引对目标压缩数据进行解压缩,还原回压缩之前的状态,之后将解压缩得到的原始数据发送给计算单元进行指定计算。
72.其中,可配置解压缩单元可以根据预设的配置信息来判断计算单元是否能直接对目标压缩数据和对应的目标数据索引进行指定计算。例如,假设配置信息为1,则表示计算单元能直接对目标压缩数据和对应的目标数据索引进行指定计算,反之,配置信息为0,则表示计算单元能不能直接对目标压缩数据和对应的目标数据索引进行指定计算。当然,也可以反过来,如配置信息为1,则表示计算单元能不能直接对目标压缩数据和对应的目标数据索引进行指定计算。
73.计算单元在对可配置解压缩单元发送的数据进行指定计算时,计算逻辑分为两种情况:1. 对于已解压的数据,计算单元不做任何特殊处理,这和不开启压缩方案的做法一样。2. 对于非解压的数据,计算单元需要拿到非0元素的数据索引,以便定位非0元素在未压缩之前的原始数据中的位置,从而进行正确的计算。
74.本技术实施例提供的数据处理方法,通过从软件和硬件层面进行设计,结合了神经网络和ai芯片的具体情况,灵活选取适合当前场景的压缩方案,不仅能够节省神经网络在硬件中的整体带宽,还能够节省网络在硬件中的计算资源的使用,能以相对最优的方式完成稀疏性神经网络的加速,提升能耗比和性能。
75.基于同样的发明构思,本技术实施例还提供了一种ai芯片,如图3所示。该ai芯片包括:片上内存、数据加载单元、可配置解压缩单元、计算单元。
76.片上内存,用于存储部署到ai芯片中的神经网络的压缩数据和对应的数据索引。通过数据压缩来减少存储数据量以及加快数据处理。其中,可以通过与该ai芯片配套的驱动程序来完成对部署到ai芯片中的神经网络的原始数据的压缩压缩,得到对应的压缩数据和对应的数据索引。例如,在进行数据压缩时,可以是获取部署到ai芯片中的神经网络的基本信息及ai芯片的基本信息;根据神经网络的基本信息及ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法;利用最优压缩算法对神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,数据索引用于将压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
77.数据加载单元,用于读取片上内存中存储的目标压缩数据和对应的目标数据索引。例如,在需要对神经网络的相关数据进行指定计算时,可以是利用数据加载单元从ai芯片的片上内存中正常获取进行指定计算所需的目标压缩数据和对应的目标数据索引。
78.可配置解压缩单元,用于获取数据加载单元发送的目标压缩数据和对应的目标数据索引,并根据配置信息判断是否需要对目标压缩数据进行解压缩;在为否时,透传目标压缩数据和对应的目标数据索引。其中,配置信息用于执行是否需要对目标压缩数据进行解压缩,如配置信息为1时,表示计算单元能不能直接对目标压缩数据和对应的目标数据索引进行指定计算,不需要对目标压缩数据进行解压缩;反之,配置信息为0,则表示计算单元能不能直接对目标压缩数据和对应的目标数据索引进行指定计算,需要对目标压缩数据进行解压缩。
79.计算单元,用于接收可配置解压缩单元透传的目标压缩数据和对应的目标数据索引,并对其进行指定计算。
80.其中,可配置解压缩单元还用于:在需要对目标压缩数据进行解压缩时,根据目标数据索引对目标压缩数据进行解压缩,将解压缩得到的原始数据发送给计算单元;计算单元,还用于对可配置解压缩单元发送的原始数据进行指定计算。
81.ai芯片实施例所提供的数据解压缩原理,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,ai芯片实施例部分未提及之处,可参考前述方法实施例中相应内容。
82.基于同样的发明构思,本技术实施例还提供了一种数据处理装置100,如图4所示。该数据处理装置100包括:获取模块110、选择模块120、压缩模块130。
83.获取模块110,用于获取部署到ai芯片中的神经网络的基本信息及ai芯片的基本信息。
84.选择模块120,用于根据神经网络的基本信息及ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法。
85.压缩模块130,用于利用最优压缩算法对神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,数据索引用于将压缩数据还原成未压缩之前的原始数据,或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
86.其中,可选地,神经网络的基本信息包括:网络稀疏程度、网络原始数据量;ai芯片的基本信息包括:芯片的传输带宽、芯片的计算资源使用情况、芯片的片上内存消耗情况;
选择模块120,用于针对每一个预设的压缩算法,将该压缩算法、网络稀疏程度、网络原始数据量、芯片的传输带宽、芯片的计算资源使用情况、芯片的片上内存消耗情况,输入预设性能评估模型中进行处理,得到对应的评估分数;其中,预设性能评估模型用于模拟ai芯片对经过该压缩算法模拟压缩后的模拟压缩数据及对应的数据索引进行预处理时所需的性能开销;将最大评估分数对应的压缩算法作为最优压缩算法。
87.选择模块120,具体用于利用预设性能评估模型根据网络稀疏程度、网络原始数据量得到经过该压缩算法模拟压缩后的模拟压缩数据量及对应的数据索引量;利用预设性能评估模型根据芯片的片上内存消耗情况,对模拟压缩数据量及对应的数据索引量进行数据切分;针对切分后的每一个数据块,利用预设性能评估模型模拟ai芯片按照芯片的传输带宽对该数据块进行数据加载,并按照芯片的计算资源使用情况对加载的数据进行指定处理所需的性能开销;利用预设性能评估模型根据模拟的各个数据块各自对应的性能开销,得到对应的评估分数。
88.压缩模块130,用于按照硬件所需格式对神经网络的相关数据进行分块;针对切分后的每一个数据块,按照硬件所需的对齐要求进行数据对齐;利用最优压缩算法按照硬件所需的对齐要求,对对齐后的每一个数据块进行压缩。
89.可选地,数据处理装置100还包括解压缩模块和发送模块;获取模块110,还用于在压缩模块130得到压缩数据和对应的数据索引后,在需要对神经网络的相关数据进行指定计算时,获取神经网络的相关数据对应的目标压缩数据和对应的目标数据索引。
90.解压缩模块,用于判断计算单元是否能直接对目标压缩数据和对应的目标数据索引进行指定计算。
91.发送模块,用于在为是时,将目标压缩数据和对应的目标数据索引透传给计算单元进行指定计算。
92.解压缩模块,还用于在为否时,根据目标数据索引对目标压缩数据进行解压缩。发送模块,还用于将解压缩得到的原始数据发送给计算单元进行指定计算。
93.该装置实施例的实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
94.如图5所示,图5示出了本技术实施例提供的一种电子设备200的结构框图。所述电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。
95.所述收发器210、所述存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图4中所示的软件功能模块,即数据处理装置100。其中,数据处理装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作系统(operating system,os)中的软件功能模块。所述处理器240,用于执行存储器220中存储的可执行模块,例如数据处理装置100包括的软件功能模块或计算机程序。例如,处理器240,用于获取部署到ai芯片中的神经网络的基本信息及所述ai芯片的基本信息;根据所述神经网络的基本信息及所述ai芯片的基本信息,从预设的多个压缩算法中选取出最优压缩算法;利用最优压缩算法对所述神经网络的相关数据进行压缩,得到压缩数据和对应的数据索引,所述数据索引用于将所述压缩数据还原成未压缩之前的原始数据,
或者,用于确定压缩数据中的非零元素在未压缩之前的原始数据中的位置。
96.其中,存储器220可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
97.处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(central processing unit, cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器240也可以是任何常规的处理器等。
98.其中,上述的电子设备200,包括但不限于计算机、服务器等。
99.本技术实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的数据处理方法。
100.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
101.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
102.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
103.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
104.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献