本技术涉及人工智能,特别是涉及模型无损压缩方法、模型解压缩方法及装置。
背景技术:
1、近年来,随着计算机技术和大数据的快速发展,基于深度学习的大模型在各个领域取得了显著的成果。大模型是指具有数千万甚至数亿参数的深度学习模型,它利用大量的数据和计算资源来训练具有大量参数的神经网络模型,通过不断地调整模型参数,使得模型能够在各种任务中取得最佳表现。大模型的“大”的特点体现在:参数数量庞大、训练数据量大、计算资源需求高等。模型参数越来越多,也使得其泛化性能和准确性越来越好。而另一方面,“大”的特点也给技术实现和应用带来了一些的问题,如在模型训练和推理过程中会占用大量计算和存储资源,而使其难以在资源有限的硬件上进行部署,其性能优化也受到很大挑战。
2、为在保证模型性能的同时,解决模型参数过多导致的存储和计算问题,模型压缩技术作为一种常用的重要方法,能够减少深度学习模型大小、提高运行效率和降低部署成本。模型压缩技术主要有:剪裁、量化、知识蒸馏、低秩分解、参数共享、神经网络架构搜索等。这些方法虽然在一定程度上改变了现有模型的复杂度或结构,但是在模型压缩的过程中同样会造成不同程度的模型精度损失。
技术实现思路
1、本技术提供了一种模型无损压缩方法,可以实现模型参数的无损压缩。
2、本技术提供了如下方案:
3、根据第一方面,提供了一种模型无损压缩方法,所述方法包括:获取模型所包含一个以上网络层分别对应的参数矩阵;确定所述一个以上网络层分别对应的参数矩阵的数据分布;利用所述数据分布确定编码位数,所述编码位数小于所述参数矩阵中参数所采用的原始位数;按照所述编码位数,对所述一个以上网络层分别对应的参数矩阵分别进行编码,得到各网络层对应的参数矩阵的编码结果;存储压缩后的模型数据,所述压缩后的模型数据包括各网络层对应的参数矩阵的编码结果以及编码表,所述编码表包括所述参数矩阵与所述编码结果之间的映射关系。
4、根据本技术实施例中一可实现的方式,所述数据分布包括所述参数矩阵中的唯一数值量,利用所述唯一数值量确定所述编码位数;或,所述数据分布包括所述参数矩阵中的参数出现概率,所述编码位数与所述参数出现概率呈负相关。
5、根据本技术实施例中一可实现的方式,所述利用所述唯一数值量确定所述编码位数包括:确定多个分块尺寸;分别确定采用各分块尺寸对所述参数矩阵进行分块所得到各分块中的唯一数值量以及所需要的所述编码位数;利用所述各分块尺寸对应的所述各分块中的唯一数值量以及所需要的编码位数,从所述多个分块尺寸中选择分块尺寸并确定其所需要的所述编码位数。
6、根据本技术实施例中一可实现的方式,按照所述编码位数,对所述一个以上网络层分别对应的参数矩阵分别进行编码,得到各网络层对应的参数矩阵的编码结果包括:利用选择的分块尺寸对所述一个以上网络层分别对应的参数矩阵分别进行分块,得到多个矩阵块;利用确定的编码位数分别对各矩阵块进行编码,得到各矩阵块对应的编码结果以及各矩阵块对应的编码表以作为所述压缩后的模型数据。
7、根据本技术实施例中一可实现的方式,所述编码结果包含指示矩阵块所对应网络层的标识信息;或者,将所述编码结果按照对应网络层在存储空间中存储。
8、根据本技术实施例中一可实现的方式,所述编码结果和所述编码表存储在全局内存中。
9、根据第二方面,提供了一种模型解压缩方法,所述方法包括:获取压缩后的模型数据,所述压缩后的模型数据包括模型所包含各网络层对应的参数矩阵的编码结果以及编码表,所述编码表包括所述参数矩阵与所述编码结果之间的映射关系;利用所述编码表,对所述各网络层对应的参数矩阵的编码结果分别进行解码,得到各网络层对应的参数矩阵以供推理执行单元读取。
10、根据本技术实施例中一可实现的方式,所述各网络层对应的参数矩阵的编码结果以及编码表包括:各矩阵块的编码结果及对应的编码表,所述矩阵块是对各网络层对应的参数矩阵进行分块得到的;利用所述编码表,对所述各网络层对应的参数矩阵的编码结果分别进行解码,得到各网络层对应的参数矩阵包括:利用各矩阵块对应的编码表,分别对各矩阵块的编码结果进行解码,得到各矩阵块的数据;依据各矩阵块所对应的网络层,得到各网络层对应的参数矩阵的数据。
11、根据本技术实施例中一可实现的方式,所述各矩阵块所对应的网络层是依据各编码结果所包含标识信息或编码结果在存储空间的存储位置确定的。
12、根据本技术实施例中一可实现的方式,所述获取压缩后的模型数据包括:从全局内存中获取模型所包含各网络层对应的参数矩阵的编码结果并加载至第一寄存器;从全局内存中获取所述编码表并加载至高速缓存;利用所述编码表,对所述各网络层对应的参数矩阵的编码结果分别进行解码包括:查询高速缓存中的所述编码表,利用所述编码表对所述各网络层对应的参数矩阵的编码结果分别进行解码,并将解码结果存储于第二寄存器,所述第二寄存器供所述推理执行单元读取。
13、根据第三方面,提供了一种模型无损压缩装置,所述装置包括:参数获取单元,获取模型所包含一个以上网络层分别对应的参数矩阵;数据分析单元,确定所述一个以上网络层分别对应的参数矩阵的数据分布;编码位数确定单元,利用所述数据分布确定编码位数,所述编码位数小于所述参数矩阵中参数所采用的原始位数;编码单元,按照所述编码位数,对所述一个以上网络层分别对应的参数矩阵分别进行编码,得到各网络层对应的参数矩阵的编码结果;数据存储单元,存储压缩后的模型数据,所述压缩后的模型数据包括各网络层对应的参数矩阵的编码结果以及编码表,所述编码表包括所述参数矩阵与所述编码结果之间的映射关系。
14、根据第四方面,提供了一种模型解压缩装置,所述装置包括:数据获取单元,获取压缩后的模型数据,所述压缩后的模型数据包括模型所包含各网络层对应的参数矩阵的编码结果以及编码表,所述编码表包括所述参数矩阵与所述编码结果之间的映射关系;解码单元,利用所述编码表,对所述各网络层对应的参数矩阵的编码结果分别进行解码,得到各网络层对应的参数矩阵以供推理执行单元读取。
15、根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面和第二方面中任一项所述的方法的步骤。
16、根据第六方面,提供了一种电子设备,包括:
17、一个或多个处理器;以及
18、与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述第一方面和第二方面中任一项所述的方法的步骤。
19、根据本技术提供的具体实施例,本技术公开了以下技术效果:
20、1)本技术利用参数矩阵的数据分布确定编码位数,该编码位数小于参数矩阵中参数所采用的原始位数,利用该编码位数对参数矩阵进行编码,得到参数矩阵的编码结果以及编码表。本技术在不损失模型精度的前提下,对模型参数进行了压缩编码,节约了参数矩阵的存储空间和访存开销。
21、2)本技术根据参数矩阵中的唯一数值量确定编码位数,或根据参数矩阵中参数出现的概率确定编码位数,对参数矩阵进行定长或变长编码,降低了参数矩阵的存储空间,实现了模型参数的无损压缩。
22、3)本技术分析不同分块尺寸下的各分块中的唯一数值量以及所需要的编码位数,利用分析结果,从多个分块尺寸中选择合适的分块尺寸并确定其所需要的编码位数,可以在确定编码位数时与分块尺寸大小进行权衡,使确定的编码位数更合理。
23、4)本技术通过对模型参数矩阵进行分块,并对切分后的矩阵块进行编码处理,进一步降低了所需的编码位数,提高了模型的压缩效果。
24、5)本技术通过在编码结果中包含指示矩阵块所对应网络层的标识信息,或将编码结果按照对应网络层在存储空间中存储,可以使解码时能快速准确定位出对用编码表,提高解码的效率和准确率。
25、6)本技术通过将编码结果和编码表存储在全局内存中,在解码时,将编码表加载于高速缓存中,将参数矩阵的编码结果从全局内存加载至第一寄存器,利用高速缓存中的编码表对编码结果分别进行解码,并将解码结果存储于第二寄存器,以供推理执行单元读取。本技术的解码过程在寄存器中即可完成,无需把结果写回显存中,提高了解码效率,节约了访存开销。
26、当然,实施本技术的任一产品并不一定需要同时达到以上所述的所有优点。