System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种提升GRU推理速度的方法技术_技高网

一种提升GRU推理速度的方法技术

技术编号:43558559 阅读:2 留言:0更新日期:2024-12-06 17:32
本发明专利技术提供一种提升GRU推理速度的方法,包括:S1.计算gate_i;S2,计算gate_h;S3,计算GRU;这里将使用CUDA核函数进行加速,核函数是指在GPU端运行的代码,即就是规定GPU的各个线程访问哪个数据并执行什么计算;CUDA从逻辑上将GPU线程分成了三个层次——线程格grid、线程块block和线程thread;将线程块设置成(batch_size,direction),direction值表示单向或双向gru取值范围为[0,1];线程thread块设置成512;获取对应值;最后套入公式,得:r_t=sigmoid(gate_ir+gate_hr),z_t=sigmoid(gate_iz+gate_hz),n_t=tanh(gate_in+r_t×gate_hn),h_t=(1‑z_t)×n_t+z_t×hS4,更新状态h,结果赋值;S5,循环序列,重复步骤S2到S4。本方法提升了GRU算子的推理速度。

【技术实现步骤摘要】

本专利技术属于循环神经网络的算子推理流程领域,特别涉及一种提升gru推理速度的方法。


技术介绍

1、现有技术中,gru全称是gate recurrent unit(门循环单元),它是循环神经网络(recurrent neural network,rnn)的一种。是为了解决长期记忆和反向传播中的梯度等问题而提出来的。rnn是一种用于处理序列数据的神经网络。在北京君正集成电路股份有限公司(简称:君正)的产品中,君正magik是一个为端侧ai应用场景打造的集模型训练、优化转换、部署推理于一体的全栈式深度学习开放平台,提升平台训练量化的算子支持广度与效率,循环神经网络是必须要支持的重要一部分,循环神经网络对处理音频与文字识别具有重要位置,gru算子属于训练神经网络的一种。而提升君正magik平台gru算子的推理速度与训练速度,目前存在的问题是现有gru算子推理速度要比官方(cudnn)的推理速度慢很多。


技术实现思路

1、为了解决上述问题,本申请的目的在于:本方法为提升gru算子的推理速度提出解决方法。具体地,本专利技术提供一种提升gru推理速度的方法,其中,gru算子的获得是通过addmm函数实现矩阵的乘运算,加bi as操作;通过sigmoid函数代码实现1/1+expf(data);通过tanh函数代码实现(expf(data)-expf(-data))/(expf(data)+expf(-data));计算r_t:sigmoid(addmm(x_t,w_i r,b_i r)+addmm(h,w_hr,b_hr));计算z_t:sigmoid(addmm(x_t,w_i z,b_i z)+addmm(h,w_hr,b_hr));计算n_t:tanh(addmm(x_t,w_i n,b_i n)+addmm(h,w_hr,b_hr)*r_t);计算h_t:(1-z_t)*n_t+z_t*h;所述方法包括以下步骤:

2、s1.计算gate_i;

3、直接求gru的输入x_t与权重w_i的矩阵乘,

4、实际实现流程中w_i r w_i z w_i n在一个变量中存储表示为w_iw_i=[w_i r,w_iz,w_i n]

5、同样的,

6、b_i=[b_i r,b_iz,b_i n]

7、gate_i=addmm(x_t,w_i,b_i)

8、gate_i存储的结果可视为[gate_i r,gate_i z,gate_i n]等同于

9、[addmm(x_t,w_i r,b_i r),addmm(x_t,w_i z,b_i z),addmm(x_t,w_i n,b_in)]

10、gate_i=matmul(x_t,w_i)+b_i,

11、gate_i的维度为(seq_length,batch_size,3×hidden_size),

12、正向记作f_gate_i,反向记作b_gate_i;

13、s2.计算gate_h;

14、gate_h=addmm(h,w_h,b_h)

15、gate_h存储的结果可视为[gate_hr,gate_hz,gate_hn]等同于

16、[addmm(h,w_hr,b_hr),addmm(h,w_hz,b_hz),addmm(h,w_hn,b_hn)]gate_h=matmul(h,w_h)+b_h,

17、gate_h的维度为(batch_size,3×hidden_size);

18、s3.计算gru;

19、这里将使用cuda核函数进行加速,核函数是指在gpu端运行的代码,即是规定gpu的各个线程访问哪个数据并执行什么计算;cuda从逻辑上将gpu线程分成了三个层次——线程格grid、线程块block和线程thread;具体流程:定义gird如下

20、batch_size:为当前输入数据的batch_size维度;

21、grid_y:为判断gru是否为双向,如果是则为2,如果不是则为1;

22、block:默认设置为512,表示为block=512;

23、dim3 grid(batch_size,grid_y)

24、通过实现核函数完成了对gate_i,gate_h索引取值和计算结果;

25、使用gru_unit_forward_kerenl<<<grid,block,0,stream>>>(参数)完成cuda核函数线程分配;

26、将线程块设置成(batch_size,direction),direction值表示单向或双向gru取值范围为[0,1];

27、线程thread设置成512;

28、获取对应值:

29、gate_i的维度为(seq_length,batch_size,3×hidden_size),设seq_index循环遍历seq_length长度,令i=threadidx.x,i<hidden_size;

30、将公式中x_t×w_ir+b_ir记作gate_ir,h×w_hr+b_hr记作gate_hr,gate_ir在gate_i对应值的索引值为:

31、seq_index×batch_size×3×hidden_size+blockidx.x×3×hidden_size+i,gate_hr在gate_h对应值的索引值为:blockidx.x×3×hidden_size+i,将公式中x_t×w_iz+b_iz记作gate_iz,h×w_hz+b_hz记作gate_hz,gate_iz在gate_i对应值的索引值为:

32、seq_index×batch_size×3×hidden_size+blockidx.x×3×hidden_size+i+hidden_size,

33、gate_hz在gate_h对应值的索引值为:

34、blockidx.x×3×hidden_size+i+hidden_size,

35、将公式中x_t×w_in+b_in记作gate_in,h×w_hn+b_hn记作gate_hn,

36、gate_in在gate_i对应值的索引值为:

37、seq_index×batch_size×3×hidden_size+blockidx.x×3×hidden_size+i+2×hidden_size,

38、gate_hn在gate_h对应值的索引值为:

39、blockidx.x×3×hidden_size+i+2×hidden_size,

40、套入gru算子公式,得:

41、r_t=sigmoid(gate_ir+ga本文档来自技高网...

【技术保护点】

1.一种提升GRU推理速度的方法,其中,GRU算子的获得是通过Addmm函数实现矩阵的乘运算,加bias操作;通过Sigmoid函数代码实现1/1+expf(data);通过tanh函数代码实现(expf(data)-expf(-data))/(expf(data)+expf(-data));

2.根据权利要求1所述的一种提升GRU推理速度的方法,其特征在于,所述步骤S1,进一步包括:

3.根据权利要求1所述的一种提升GRU推理速度的方法,其特征在于,所述步骤S2,进一步包括:

4.根据权利要求1所述的一种提升GRU推理速度的方法,其特征在于,所述步骤S3中,所述得:r_t=sigmoid(gate_ir+gate_hr),z_t=sigmoid(gate_iz+gate_hz),n_t=tanh(gate_in+r_t×gate_hn),h_t=(1-z_t)×n_t+z_t×h的具体流程如下:

5.根据权利要求1所述的一种提升GRU推理速度的方法,其特征在于,所述步骤S4中的赋值,进一步包括:

6.根据权利要求5所述的一种提升GRU推理速度的方法,其特征在于,所述步骤S5进一步包括:

...

【技术特征摘要】

1.一种提升gru推理速度的方法,其中,gru算子的获得是通过addmm函数实现矩阵的乘运算,加bias操作;通过sigmoid函数代码实现1/1+expf(data);通过tanh函数代码实现(expf(data)-expf(-data))/(expf(data)+expf(-data));

2.根据权利要求1所述的一种提升gru推理速度的方法,其特征在于,所述步骤s1,进一步包括:

3.根据权利要求1所述的一种提升gru推理速度的方法,其特征在于,所述步骤s2,进一步包括:

4.根据权利...

【专利技术属性】
技术研发人员:闫少甫
申请(专利权)人:北京君正集成电路股份有限公司
类型:发明
国别省市:

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

1