Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
BlockLstmGrad 是 BlockLSTM(分块长短期记忆网络)的反向梯度算子,对应 TensorFlow 原生算子 tf.raw_ops.BlockLSTMGrad(V1)与 tf.raw_ops.BlockLSTMGradV2(V2)。
tf.raw_ops.BlockLSTMGrad
tf.raw_ops.BlockLSTMGradV2
LSTM 是序列建模(语音识别、机器翻译、时序预测、语言模型)的核心结构。其反向传播需沿时间步逆序递推回传梯度,计算输入、权重、偏置及各门控的梯度共 8 个梯度张量。BlockLSTM 将单个时间步内 4 个门(input/forget/cell/output)的计算融合为单个算子,反向同理——BlockLstmGrad 在一次调用内完成整段序列(T 个时间步)的反向递推,避免逐门逐步骤的算子碎片化开销。
当前 CANN ops-nn 仓 rnn 分类下已交付前向 block_lstm,但缺少反向算子:TF BlockLSTM 网络在 NPU 上训练时反向图无法落图(回退 CPU 或训练不可用)。本算子补齐该闭环。
rnn
block_lstm
对标结论:数学公式 1:1 移植自 TF v2.21 lstm_ops(carry 序、乘法序、gate 布局保留);PyTorch 无对等独立算子(其 LSTM 反向封装于 cuDNN/autograd 内),故竞品对标以 TensorFlow 为准。
lstm_ops
NA
ifco
icfo
单算子 + gate_order 属性统一覆盖 TF 两个 op(V1=icfo / V2=ifco)。
gate_order
cs_grad_t = cs_prev_carry + cs_grad[t]; h_grad_t = h_prev_carry + h_grad[t] do_ = o*(1-o)·h_grad_t·co # 门导数由前向缓存激活代数构造,无超越函数 dcs = (1-co·co)·h_grad_t·o + cs_grad_t (+ do_·wco if peephole) dci/df/di = tanh'·dcs·i / sigmoid'·dcs·cs_prev / sigmoid'·dcs·ci dgates = pack([di,dci,df,do_], gate_order) cs_prev_carry = dcs·f (+ di·wci + df·wcf if peephole) xh_grad = dgates @ w.T; x_grad[t]=xh_grad[:,:I]; h_prev_carry=xh_grad[:,I:] w_grad += xh_t.T @ dgates; b_grad += Σbatch dgates # 跨 t、batch 归约
liboptf_plugin_nn.so
npu_device
性能对比数据已采集(NPU GEIR 端到端 vs A100 TF 设备时延,小 shape 中位比值 5.8x、大 shape 偏慢,详见测试报告)。
rnn/block_lstm_grad/
ops-nn/rnn/block_lstm_grad/
/assign
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
BlockLstmGrad 是 BlockLSTM(分块长短期记忆网络)的反向梯度算子,对应 TensorFlow 原生算子
tf.raw_ops.BlockLSTMGrad(V1)与tf.raw_ops.BlockLSTMGradV2(V2)。LSTM 是序列建模(语音识别、机器翻译、时序预测、语言模型)的核心结构。其反向传播需沿时间步逆序递推回传梯度,计算输入、权重、偏置及各门控的梯度共 8 个梯度张量。BlockLSTM 将单个时间步内 4 个门(input/forget/cell/output)的计算融合为单个算子,反向同理——BlockLstmGrad 在一次调用内完成整段序列(T 个时间步)的反向递推,避免逐门逐步骤的算子碎片化开销。
当前 CANN ops-nn 仓
rnn分类下已交付前向block_lstm,但缺少反向算子:TF BlockLSTM 网络在 NPU 上训练时反向图无法落图(回退 CPU 或训练不可用)。本算子补齐该闭环。对标结论:数学公式 1:1 移植自 TF v2.21
lstm_ops(carry 序、乘法序、gate 布局保留);PyTorch 无对等独立算子(其 LSTM 反向封装于 cuDNN/autograd 内),故竞品对标以 TensorFlow 为准。Origin(信息来源)
NA
Benefit / Necessity (价值/作用)
Design(设计方案)
1. 接口定义(18 输入 / 8 输出 / 2 属性)
ifco(V2)/icfo(V1),默认 ifco单算子 +
gate_order属性统一覆盖 TF 两个 op(V1=icfo / V2=ifco)。2. 数学核心(沿 t 逆序递推,carry 跨步依赖)
3. 工程实现要点
liboptf_plugin_nn.so注册 BlockLSTMGrad/V2 解析器 →npu_device路由 NPU4. 验证结论(已完成)
性能对比数据已采集(NPU GEIR 端到端 vs A100 TF 设备时延,小 shape 中位比值 5.8x、大 shape 偏慢,详见测试报告)。
5. 关联
rnn/block_lstm_grad/,含全部检视意见修复)ops-nn/rnn/block_lstm_grad/