System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种适用于国产硬件的FP32模型转换方法技术_技高网

一种适用于国产硬件的FP32模型转换方法技术

技术编号:40260661 阅读:9 留言:0更新日期:2024-02-02 22:51
本发明专利技术涉及一种适用于国产硬件的FP32模型转换方法,包括以下步骤:步骤S1:基于原始FP32模型,获取训练数据集;步骤S2:基于训练数据集,构建初始缩放因子和偏置;步骤S3:根据缩放因子,将原始FP32模型转换为INT8模型;步骤S4:基于量化感知训练INT8模型,在训练过程中,根据量化感知精度和量化感知损失的变化情况,动态调整模型参数,直到满足预设精度,则得到最终的INT8模型;步骤S5:将最终的INT8模型部署到国产硬件上。本发明专利技术在保持较高性能的同时,降低模型的精度损失,提高FP32模型在国产AI加速硬件上的运行效率。

【技术实现步骤摘要】

本专利技术涉及大模型领域,尤其涉及一种适用于国产硬件的fp32模型转换方法。


技术介绍

1、为了减少对外部技术依赖,国家正在鼓励推广基于自主知识产权的国产ai计算芯片。国产硬件芯片主要优化在int8算力,而深度学习模型参数基本上都是采用32位浮点进行训练的问题。然而,将fp32模型转换为int8模型可能会导致较大的精度损失,尤其是当模型的权重分布在较大的动态范围内时。

2、


技术实现思路

1、为了解决上述问题,本专利技术提供一种适用于国产硬件的fp32模型转换方法,的目的在于,在保持较高性能的同时,降低模型的精度损失,提高fp32模型在国产ai加速硬件上的运行效率。

2、为实现上述目的,本专利技术采用以下技术方案:

3、一种适用于国产硬件的fp32模型转换方法,包括以下步骤:

4、步骤s1:基于原始fp32模型,获取训练数据集;

5、步骤s2:基于训练数据集,构建初始缩放因子和偏置;

6、步骤s3:根据缩放因子,将原始fp32模型转换为int8模型;

7、步骤s4:基于量化感知训练int8模型,在训练过程中,根据量化感知精度和量化感知损失的变化情况,动态调整模型参数,直到满足预设精度,则得到最终的int8模型;

8、步骤s5:将最终的int8模型部署到国产硬件上。

9、进一步的,所述原始fp32模型包括图像分类模型和语言模型,构建初始的缩放因子和偏置项,具体如下:

>10、图像分类模型:

11、对于图像分类模型,使用训练集中的图像数据来计算均值和标准差;

12、对于每个通道(r、g、b)或特征维度,计算训练集中所有图像的均值和标准差;

13、将每个通道的标准差除以预设参量来估计缩放因子;

14、并使用每个特征维度的均值作为初始偏置项;

15、语言模型:

16、对于语言模型,对于每个特征维度,将文本数据视为序列,计算序列中所有数据的均值和标准差;

17、将每个特征维度的标准差除以预设参量来估计缩放因子;

18、并使用每个特征维度的均值作为初始偏置项。

19、进一步的,所述步骤s3具体为:

20、将原始的浮点权重和激活值转换为整数表示,量化的公式如下:

21、int8_weight = round(fp32_weight / scale_weight);

22、int8_activation = round(fp32_activation / scale_activation);

23、 其中,int8_weight和int8_activation 分别表示量化后的权重和激活值、scale_weight和scale_activation是量化的缩放因子;fp32_weight 和 fp32_activation分别表示浮点数表示的权重和激活值;

24、在模型推理过程中,将int8精度的权重和激活值反量化为浮点数表示,反量化的公式如下:

25、 fp32_weight = int8_weight * scale_weight;

26、fp32_activation = int8_activation * scale_activation;

27、引入量化误差,量化误差修正的公式如下:

28、fp32_activation = (int8_activation + bias_activation) * scale_activation;

29、其中,bias_activation是用于修正量化误差的偏置项。

30、进一步的,所述基于量化感知训练int8模型,具体为:

31、(1)将量化后的权重和激活值输入到模型中进行前向传播;

32、(2)在前向传播过程中,使用量化后的权重和激活值进行计算,得到输出结果;

33、(3)基于损失函数,进行输出结果和真实标签进行比较:

34、loss = -1/n * (sum(y_true * log(softmax(y_pred))));

35、其中,y_true是真实标签,y_pred是量化后的整数输出结果,n是样本数量;softmax(y_pred)表示对量化后的整数输出结果进行softmax函数计算;

36、(4)根据损失函数计算损失,使用梯度下降算法计算梯度,并将梯度传播回模型的每一层;

37、(5)在反向传播过程中,使用量化后的权重和激活值进行梯度计算和参数更新;

38、(6)基于更新后的权重和激活值,更新量化的缩放因子;

39、(6)重复进行多个训练迭代,直到达到预定的训练轮数或达到预设精度要求。

40、进一步的,所述前向传播,具体为:

41、对于每个神经元的输入,使用量化后的权重和激活值进行计算;

42、对于第l层的第j个神经元,使用以下公式计算其输入:

43、input_j = sum(int8_weight[l][j][i] * int8_activation[l-1][i] for i inrange(num_inputs));

44、对于第l层的第j个神经元,使用激活函数计算其输出:

45、output_j = activation_function(input_j);

46、重复以上步骤,直到计算出模型的输出;

47、其中,int8_weight[l][j][i]表示第l层的第j个神经元与第l-1层的第i个神经元之间的连接权重,int8_activation[l-1][i]表示第l-1层的第i个神经元的激活值,num_inputs表示第l-1层的神经元数量。

48、进一步的,所述反向传播,具体如下:

49、对于量化权重的梯度计算:

50、gradient_weight = gradient_quantized_weight * scale_factor;

51、其中,gradient_quantized_weight表示量化后的权重梯度,scale_factor表示缩放因子,gradient_weight表示浮点数权重的梯度;

52、对于量化激活值的梯度计算:

53、gradient_activation = gradient_quantized_activation * scale_factor;

54、其中,gradient_quantized_activation表示量化后的激活值梯度,scale_factor表示缩放因子,gradient_activation表示浮点数激活值的梯度;

55、参数更新:

56本文档来自技高网...

【技术保护点】

1.一种适用于国产硬件的FP32模型转换方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种适用于国产硬件的FP32模型转换方法,其特征在于,所述原始FP32模型包括图像分类模型和语言模型,构建初始的缩放因子和偏置项,具体如下:

3.根据权利要求1所述的一种适用于国产硬件的FP32模型转换方法,其特征在于,所述基于量化感知训练INT8模型,具体为:

4.根据权利要求3所述的一种适用于国产硬件的FP32模型转换方法,其特征在于,所述前向传播,具体为:

5.根据权利要求3所述的一种适用于国产硬件的FP32模型转换方法,其特征在于,所述反向传播,具体如下:

6.根据权利要求5所述的一种适用于国产硬件的FP32模型转换方法,其特征在于,基于更新后的权重和激活值,更新量化的缩放因子,具体为:

7.根据权利要求1所述的一种适用于国产硬件的FP32模型转换方法,其特征在于,所述步骤S5具体为:

【技术特征摘要】

1.一种适用于国产硬件的fp32模型转换方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种适用于国产硬件的fp32模型转换方法,其特征在于,所述原始fp32模型包括图像分类模型和语言模型,构建初始的缩放因子和偏置项,具体如下:

3.根据权利要求1所述的一种适用于国产硬件的fp32模型转换方法,其特征在于,所述基于量化感知训练int8模型,具体为:

4.根据权利要求3所述的一种适用于国产...

【专利技术属性】
技术研发人员:李强庄莉梁懿王秋琳吕君玉伍臣周陈锴叶文良王从潘进土
申请(专利权)人:福建亿榕信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1