用于神经网络量化的方法和装置与流程
本公开的一个或更多个实施例涉及神经网络领域,更具体地,涉及一种用于神经网络量化的方法和装置。
背景技术:
1、目前,神经网络已经在各个领域广泛使用。例如文生图神经网络(诸如少步的文生图扩散模型)可以极大的缩短图像生成时间,但是需要大量的内存占用,导致难以直接在边缘设备上部署这些神经网络。
2、通常采用神经网络的量化来减少内存占用。然而,对于诸如文生图神经网络,量化算法很难保证生成的图像有较高的质量和文图匹配,这是由于在神经网络中有很多关键层对量化比较敏感,从而导致了极大的量化损失。
技术实现思路
1、根据本公开的示例实施例的一方面,提供了一种由至少一个处理器执行的用于神经网络量化的方法,包括:获取神经网络中的与输出质量相关的第一层和与输出内容相关的第二层;对第一层的激活和权重进行聚类,并基于聚类的激活和权重获取第一矢量;基于第二层的激活获取第一值;基于第一矢量对第一层的激活和权重中的至少一个进行平滑以用于量化,并基于第一值对第二层的激活的第一个通道进行平滑以用于量化。
2、对激活和权重进行聚类的步骤可包括:获取基于第一层的激活的每个通道的数据范围的第二矢量和基于第一层的权重的每个通道的数据范围的第三矢量;基于第二矢量和第三矢量获取第四矢量;将基于第四矢量中的值的激活的通道和权重的通道分别进行聚类。
3、获取第一矢量的步骤可包括:基于每组聚类的通道所对应的第四矢量中的值获取第二值;基于第二矢量、第三矢量和第二值来获取第一矢量。
4、所述方法还可包括:迭代地更新第一矢量以使激活和权重的卷积与基于第一矢量平滑并量化后的激活和权重的卷积之间的差别最小,其中,对激活和权重中的至少一个进行平滑的步骤包括:基于使差别最小的更新的第一矢量对第一层的激活和权重中的至少一个进行平滑。
5、获取第一值的步骤可包括:基于第二层的激活获取第一值的取值范围;获取所述取值范围中使基于第一值平滑的激活与基于第一值平滑并量化后的激活差别最小的第一值,其中,第一值包括整数值。
6、所述取值范围可包括从基于第一值平滑的第二层的激活的第一个通道中的最大值除以基于第一值平滑的第二层的激活的其余通道中的最大值所获得的值到基于第一值平滑的激活的第一个通道中的最大值。
7、第一层可包括卷积层,第二层可包括注意力层。
8、根据本公开的示例实施例的一方面,提供了一种用于神经网络量化的装置,包括用于实现以下的单元的处理电路:层分类单元,被配置为获取神经网络中的与输出质量相关的第一层和与输出内容相关的第二层;矢量获取单元,被配置为对第一层的激活和权重进行聚类,并基于聚类的激活和权重获取第一矢量;值获取单元,被配置为基于第二层的激活获取第一值;平滑单元,被配置为基于第一矢量对第一层的激活和权重中的至少一个进行平滑,并基于第一值对第二层的激活的第一个通道进行平滑。
9、矢量获取单元还可被配置为进行以下操作:获取基于第一层的激活的每个通道的数据范围的第二矢量和基于第一层的权重的每个通道的数据范围的第三矢量;基于第二矢量和第三矢量获取第四矢量;将基于第四矢量中的值的激活的通道和权重的通道分别进行聚类。
10、矢量获取单元还可被配置为进行以下操作:基于每组聚类的通道所对应的第四矢量中的值获取第二值;基于第二矢量、第三矢量和第二值来获取第一矢量。
11、矢量获取单元还可被配置为迭代地更新第一矢量以使激活和权重的卷积与基于第一矢量平滑并量化后的激活和权重的卷积之间的差别最小,其中,平滑单元还被配置为基于使差别最小的更新的第一矢量对第一层的激活和权重中的至少一个进行平滑。
12、值获取单元还可被配置为进行以下操作:基于第二层的激活获取第一值的取值范围;获取所述取值范围中使基于第一值平滑的激活与基于第一值平滑并量化后的激活差别最小的第一值,其中,第一值包括整数值。
13、所述取值范围可包括从基于第一值平滑的第二层的激活的第一个通道中的最大值除以基于第一值平滑的第二层的激活的其余通道中的最大值所获得的值到基于第一值平滑的激活的第一个通道中的最大值的绝对值。
14、第一层可包括卷积层,第二层可包括注意力层。
15、根据本公开的示例实施例的一方面,提供了一种用于神经网络量化的装置,包括:一个或更多个处理器,包括处理电路;以及存储器,存储指令,其中,所述指令在被所述一个或更多个处理器单独或集合地执行时使所述装置进行以下操作:获取神经网络中的与输出质量相关的第一层和与输出内容相关的第二层;对第一层的激活和权重进行聚类,并基于聚类的激活和权重获取第一矢量;基于第二层的激活获取第一值;基于第一矢量对第一层的激活和权重中的至少一个进行平滑,并基于第一值对第二层的激活的第一个通道进行平滑。
16、所述指令在被所述一个或更多个处理器单独或集合地执行时还可使所述装置进行以下操作:获取基于第一层的激活的每个通道的数据范围的第二矢量和基于第一层的权重的每个通道的数据范围的第三矢量;基于第二矢量和第三矢量获取第四矢量;将基于第四矢量中的值的激活的通道和权重的通道分别进行聚类。
17、所述指令在被所述一个或更多个处理器单独或集合地执行时还可使所述装置进行以下操作:基于每组聚类的通道所对应的第四矢量中的值获取第二值;基于第二矢量、第三矢量和第二值来获取第一矢量。
18、所述指令在被所述一个或更多个处理器单独或集合地执行时还可使所述装置进行以下操作:迭代地更新第一矢量以使激活和权重的卷积与基于第一矢量平滑并量化后的激活和权重的卷积之间的差别最小,其中,对激活和权重中的至少一个进行平滑的步骤包括:基于使差别最小的更新的第一矢量对第一层的激活和权重中的至少一个进行平滑。
19、所述指令在被所述一个或更多个处理器单独或集合地执行时还可使所述装置进行以下操作:基于第二层的激活获取第一值的取值范围;获取所述取值范围中使基于第一值平滑的激活与基于第一值平滑并量化后的激活差别最小的第一值,其中,第一值包括整数值。
20、所述取值范围可包括从基于第一值平滑的第二层的激活的第一个通道中的最大值除以基于第一值平滑的第二层的激活的其余通道中的最大值所获得的值到基于第一值平滑的激活的第一个通道中的最大值。
21、第一层可包括卷积层,第二层可包括注意力层。
22、根据本公开的示例实施例的一方面,提供了一种计算机可读介质,其上存储有计算机可执行指令,当执行所述指令时,执行前述的方法。
1.一种由至少一个处理器执行的用于神经网络量化的方法,包括:
2.如权利要求1所述的方法,其中,对激活和权重进行聚类的步骤包括:
3.如权利要求2所述的方法,其中,获取第一矢量的步骤包括:
4.如权利要求3所述的方法,还包括:
5.如权利要求1所述的方法,其中,获取第一值的步骤包括:
6.如权利要求5所述的方法,其中,所述取值范围包括从基于第一值平滑的第二层的激活的第一个通道中的最大值除以基于第一值平滑的第二层的激活的其余通道中的最大值所获得的值到基于第一值平滑的激活的第一个通道中的最大值。
7.如权利要求1所述的方法,其中,第一层包括卷积层,第二层包括注意力层。
8.一种用于神经网络量化的装置,包括用于实现以下的单元的处理电路:
9.一种用于神经网络量化的装置,包括:
10.一种计算机可读介质,其上存储有计算机可执行指令,当执行所述指令时,执行前述权利要求1~7中任一项所述的方法。