首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

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

申请/专利权人:福建亿榕信息技术有限公司;国网信息通信产业集团有限公司

申请日:2023-12-25

公开(公告)日:2024-07-05

公开(公告)号:CN117454948B

主分类号:G06N3/063

分类号:G06N3/063;G06N3/06;G06F18/214

优先权:

专利状态码:有效-授权

法律状态:2024.07.05#授权;2024.02.13#实质审查的生效;2024.01.26#公开

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

主权项:1.一种适用于国产硬件的FP32模型转换方法,其特征在于,包括以下步骤:步骤S1:基于原始FP32模型,获取训练数据集;步骤S2:基于训练数据集,构建初始缩放因子和偏置;步骤S3:根据缩放因子,将原始FP32模型转换为INT8模型;步骤S4:基于量化感知训练INT8模型,在训练过程中,根据量化感知精度和量化感知损失的变化情况,动态调整模型参数,直到满足预设精度,则得到最终的INT8模型;步骤S5:将最终的INT8模型部署到国产硬件上;所述步骤S3具体为:将原始的浮点权重和激活值转换为整数表示,量化的公式如下:INT8_weight=roundFP32_weightscale_weight;INT8_activation=roundFP32_activationscale_activation;其中,INT8_weight和INT8_activation分别表示量化后的权重和激活值、scale_weight和scale_activation是量化的缩放因子;FP32_weight和FP32_activation分别表示浮点数表示的权重和激活值;在模型推理过程中,将INT8精度的权重和激活值反量化为浮点数表示,反量化的公式如下FP32_weight=INT8_weight*scale_weight;FP32_activation=INT8_activation*scale_activation;引入量化误差,量化误差修正的公式如下:FP32_activation=INT8_activation+bias_activation*scale_activation;其中,bias_activation是用于修正量化误差的偏置项;所述原始FP32模型包括图像分类模型和语言模型,构建初始的缩放因子和偏置项,具体如下:图像分类模型:对于图像分类模型,使用训练集中的图像数据来计算均值和标准差;对于每个通道(R、G、B)或特征维度,计算训练集中所有图像的均值和标准差;将每个通道的标准差除以预设参量来估计缩放因子;并使用每个特征维度的均值作为初始偏置项;语言模型:对于语言模型,对于每个特征维度,将文本数据视为序列,计算序列中所有数据的均值和标准差;将每个特征维度的标准差除以预设参量来估计缩放因子;并使用每个特征维度的均值作为初始偏置项;所述基于量化感知训练INT8模型,具体为:(1)将量化后的权重和激活值输入到模型中进行前向传播;(2)在前向传播过程中,使用量化后的权重和激活值进行计算,得到输出结果;(3)基于损失函数,进行输出结果和真实标签进行比较,loss=-1N*sumy_true*logsoftmaxy_pred;其中,y_true是真实标签,y_pred是量化后的整数输出结果,N是样本数量;softmaxy_pred表示对量化后的整数输出结果进行softmax函数计算;(4)根据损失函数计算损失,使用梯度下降算法计算梯度,并将梯度传播回模型的每一层;(5)在反向传播过程中,使用量化后的权重和激活值进行梯度计算和参数更新;(6)基于更新后的权重和激活值,更新量化的缩放因子;(7)重复进行多个训练迭代,直到达到预定的训练轮数或达到预设精度要求;所述前向传播,具体为:对于每个神经元的输入,使用量化后的权重和激活值进行计算;对于第l层的第j个神经元,使用以下公式计算其输入:input_j=sumINT8_weight[l][j][i]*INT8_activation[l-1][i]foriinrangenum_inputs;对于第l层的第j个神经元,使用激活函数计算其输出:output_j=activation_functioninput_j;重复以上步骤,直到计算出模型的输出;其中,INT8_weight[l][j][i]表示第l层的第j个神经元与第l-1层的第i个神经元之间的连接权重,INT8_activation[l-1][i]表示第l-1层的第i个神经元的激活值,num_inputs表示第l-1层的神经元数量;所述反向传播,具体如下:对于量化权重的梯度计算:gradient_weight=gradient_quantized_weight*scale_factor;其中,gradient_quantized_weight表示量化后的权重梯度,scale_factor表示缩放因子,gradient_weight表示浮点数权重的梯度;对于量化激活值的梯度计算:gradient_activation=gradient_quantized_activation*scale_factor;其中,gradient_quantized_activation表示量化后的激活值梯度,scale_factor表示缩放因子,gradient_activation表示浮点数激活值的梯度;参数更新:对于量化权重的参数更新:updated_weight=weight-learning_ratea*gradient_weight;其中,weight表示浮点数权重,learning_ratea表示学习率,gradient_weight表示浮点数权重的梯度,updated_weight表示更新后的浮点数权重;对于量化激活值的参数更新:updated_activation=activation-learning_rateu*gradient_activation;其中,activation表示浮点数激活值,learning_rateu表示学习率,gradient_activation表示浮点数激活值的梯度,updated_activation表示更新后的浮点数激活值;基于更新后的权重和激活值,更新量化的缩放因子,具体为:对于权重的缩放因子更新:updated_scale_factor_weight=maxmax_weight,min_weight2^bitwidth-1;其中,bitwidth表示量化位宽,updated_scale_factor_weight表示更新后的权重的缩放因子;max_weight=maxabsupdated_weight;min_weight=minabsupdated_weight;对于激活值的缩放因子更新:updated_scale_factor_activation=maxmax_activation,min_activation2^bitwidth-1;其中,bitwidth表示量化位宽,updated_scale_factor_activation表示更新后的激活值的缩放因子;max_activation=maxabsupdated_activation;min_activation=minabsupdated_activation;所述步骤S5具体为:获取与目标硬件设备兼容的驱动程序,所述驱动程序负责与硬件设备进行通信,并提供接口和功能,以支持模型推理操作;在驱动程序的基础上,集成一个推理引擎,用于加载和执行量化的INT8模型,所述推理引擎负责解析模型文件、构建计算图、执行推理操作,并将结果返回给驱动程序;在推理引擎中,实现模型加载和优化的功能,包括将量化后的INT8模型文件加载到内存中,并进行模型优化;在推理引擎中,实现模型的推理过程,包括将输入数据传递给模型,执行前向计算,并获取模型的输出结果。

全文数据:

权利要求:

百度查询: 福建亿榕信息技术有限公司 国网信息通信产业集团有限公司 一种适用于国产硬件的FP32模型转换方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。