一种基于LSTM网络的片上微调方法及装置

文档序号:33988193发布日期:2023-04-29 14:11阅读:42来源:国知局
一种基于LSTM网络的片上微调方法及装置

本技术涉及神经网络领域,尤其涉及一种基于lstm网络的片上微调方法及装置。


背景技术:

1、在深度学习领域,神经网络已经被用于处理各类数据,如:cnn在图像领域的应用、全连接神经网络在分类问题的应用等。随着神经网络在各个领域的渗透,以统计机器学习为主的nlp问题,也逐渐开始采用深度学习的方法来解决。rnn在面对长序列数据时,很容易便遭遇梯度弥散,使得rnn只具备短期记忆,即rnn面对长序列数据,仅可获取较近的序列的信息,而对较早期的序列不具备记忆功能,从而丢失信息。为此,为解决该类问题,便提出了长短期记忆网络lstm(long short term memory,lstm)。

2、长短期记忆网络lstm是一种循环神经网络变体,是一种特殊的rnn循环神经网络,广泛用于图像压缩、语音识别以及自然语言处理等,长短期记忆网络lstm通过引入门控机制和用于存储长短期历史信息的状态值,有效解决循环神经网络训练过程中出现的梯度消失问题。

3、与其他深度学习网络类似,长短期记忆网络lstm网络模型大小也在不断增加,以提高其准确性,大规模的lstm神经网络中包含大量参数和复杂的计算逻辑,长短期记忆网络lstm中引入了记忆元,记忆元是整个lstm神经元的核心结点增加了网络推理的计算复杂度和空间复杂度,在存储消耗、计算效率和功耗方面存在一些问题,计算平台如:cpu、gpu无法快速高效的计算lstm网络。


技术实现思路

1、本技术提供一种基于lstm网络的片上微调方法及装置,以解决计算平台无法快速高效的计算lstm网络的问题。

2、第一方面,本技术提供一种基于lstm网络的片上微调方法,包括:

3、根据lstm网络模型的参数,生成计算参数;

4、根据所述计算参数对输入值和权重值进行细粒度切分,以及生成指令集合;

5、在神经网络处理器npu读取所述指令集合;

6、根据所述指令集合执行npu片上计算,以生成中间值和lstm网络输出值;

7、将所述lstm网络输出值传输至误差函数,并通过所述误差函数得到误差值;

8、根据所述误差值,更新所述权重值以及偏置值,得到更新后的权重值以及偏置值;

9、使用所述更新后的权重值以及偏置值反向传播;

10、以根据所述指令集合执行新一轮npu片上计算。

11、可选的,根据lstm网络模型的参数,生成计算参数的步骤之前还包括:

12、对所述lstm网络模型的输入值以及权重值进行预处理,所述预处理包括将所述lstm网络模型的输入值以及权重值量化至低精度int8,用于进行npu片上计算。

13、可选的,所述计算参数包括:输入尺寸、输出尺寸、输入通道的分组数、输出通道的分组数、输入通道每组数量、输出通道每组数量、单次在板计算尺寸、单次在板任务中间计算结果尺寸。

14、可选的,根据所述计算参数对输入值和权重值进行细粒度切分,以及生成指令集合的步骤还包括:

15、根据所述计算参数对输入值以及权重值进行切割分块,得到单次在板计算块;

16、对所述在板计算块进行细粒度切分。

17、可选的,所述指令集合包括:加载指令、储存指令、矩阵乘指令以及矢量计算指令;

18、其中,所述加载指令用于完成存储器ddr中连续多组内存的数据到npu片上指定地址的数据搬运;所述存储指令用于完成写入计算结果到存储器ddr中;所述矩阵乘指令用于完成单位输入通道上的数据在单位输出通道上的乘累加运算,并与单位输出通道上的初始累加值相加;所述矢量计算指令用于完成输入通道上单位元素的偏置加法与移位激活。

19、可选的,根据所述指令集合执行npu片上计算,以生成中间值和lstm网络输出值还包括:软件cpu对所述中间值进一步处理,所述进一步处理包括:对所述中间值进行tanh函数计算以及矩阵hadamard乘积运算,所述tanh函数计算用于计算记忆元,所述矩阵hadamard乘积运算用于计算当前记忆元。

20、可选的,所述tanh函数为激活函数,所述tanh函数的值范围为(-1,1),所述记忆元的计算公式为:

21、;

22、其中,输入为,和为权重参数,前一时间步的隐状态为,为偏置参数;

23、所述当前记忆元的计算公式为:

24、;

25、其中,为输入门,为记忆元,是遗忘门,为当前记忆元;所述输入门用于控制采用来自记忆元的新数据的数量;所述遗忘门用于控制保留原始记忆元的内容的数量。

26、可选的,根据所述更新后的权重值以及偏置值反向传播的步骤之后还包括:

27、重新将所述lstm网络输出值传输至误差函数,通过所述误差函数得到新的误差值;

28、如果所述新的误差值小于或等于误差阈值,输出更新后的权重值以及偏置值;

29、如果所述新的误差值大于误差阈值,再次更新所述权重值以及偏置值,以及将所述lstm网络输出值传输至误差函数。

30、第二方面,本技术提供一种基于lstm网络的片上微调装置,包括:cpu模块以及神经网络处理器npu模块;

31、其中,cpu模块,用于根据lstm网络模型的参数,生成计算参数;根据所述计算参数对输入值和权重值进行细粒度切分以及生成指令集合;根据所述指令集合进行npu片上计算,生成中间值以及lstm网络输出值;

32、神经网络处理器npu模块,用于将所述lstm网络输出值传输至误差函数,通过所述误差函数得到误差值;根据所述误差值,对所述权重值以及偏置值更新,得到更新后的权重值以及偏置值;使用所述更新后的权重值以及偏置值反向传播至神经网络处理器npu,以根据所述指令集合进行新一轮npu片上计算。

33、可选的,所述神经网络处理器npu模块包括:加载模块、存储模块、矩阵乘模块以及矢量计算模块;

34、其中,加载模块,所述加载模块用于完成存储器ddr中连续多组内存的数据到npu片上指定地址的数据搬运;

35、存储模块,所述存储模块用于完成写入计算结果到存储器ddr中;

36、矩阵乘模块,所述矩阵乘模块用于完成单位输入通道上的数据在单位输出通道上的乘累加运算,并与单位输出通道上的初始累加值相加;

37、矢量计算模块,所述矢量计算模块用于完成输入通道上单位元素的偏置加法与移位激活。

38、由以上技术方案可知,本技术提供一种基于lstm网络的片上微调方法及装置,所述方法包括:根据lstm网络模型的参数,生成计算参数;根据所述计算参数对输入值和权重值进行细粒度切分,以及生成指令集合;在神经网络处理器npu读取所述指令集合;根据所述指令集合执行npu片上计算,以生成中间值和lstm网络输出值;将所述lstm网络输出值传输至误差函数,并通过所述误差函数得到误差值;根据所述误差值,更新所述权重值以及偏置值;使用所述更新后的权重值以及偏置值反向传播;以根据所述指令集合执行新一轮npu片上计算。本技术提供的方法通过cpu、npu协同,将lstm网络中的运算分工,以解决cpu、gpu无法快速高效的计算lstm网络的问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1