rnn/dynamic_rnn 与 rnn/dynamic_rnnv2 的 framework 目录保留一组基于 REGISTER_CUSTOM_OP 注册的 TensorFlow 插件 (block_lstm_tf_plugin.cpp / dynamic_rnn_tf_plugin.cpp / dynamic_rnnv2_tf_plugin.cpp),用于将 TF 源算子 BlockLSTM、DynamicRNN/DynamicRnn、DynamicRnnV2/DynamicRnnv2WithoutSeqlength/DynamicRnnv2WithSeqlength 映射并融合解析 为 CANN DynamicRNN/DynamicRNNV2 算子。这批 TF 插件此前迁移到本仓后引发部分用例 ATC 失败,先行下线处理。 另外 matmul/batch_mat_mul_v3 下 einsum TF 插件仍使用旧的静态映射注册方式,与 Einsum 算子 DYNAMIC_INPUT(x) + REQUIRED_ATTR(N) 的变长输入原型不匹配,一并修复。ONNX 插件路径保留不受影响。
(建议由 PR 作者补充说明)
关联 PR:https://gitcode.com/cann/ops-nn/pull/9925
/assign @Nice_try
Backgroud(背景信息)
rnn/dynamic_rnn 与 rnn/dynamic_rnnv2 的 framework 目录保留一组基于 REGISTER_CUSTOM_OP 注册的 TensorFlow 插件
(block_lstm_tf_plugin.cpp / dynamic_rnn_tf_plugin.cpp / dynamic_rnnv2_tf_plugin.cpp),用于将 TF 源算子
BlockLSTM、DynamicRNN/DynamicRnn、DynamicRnnV2/DynamicRnnv2WithoutSeqlength/DynamicRnnv2WithSeqlength 映射并融合解析
为 CANN DynamicRNN/DynamicRNNV2 算子。这批 TF 插件此前迁移到本仓后引发部分用例 ATC 失败,先行下线处理。
另外 matmul/batch_mat_mul_v3 下 einsum TF 插件仍使用旧的静态映射注册方式,与 Einsum 算子
DYNAMIC_INPUT(x) + REQUIRED_ATTR(N) 的变长输入原型不匹配,一并修复。ONNX 插件路径保留不受影响。
Origin(信息来源)
(建议由 PR 作者补充说明)
Benefit / Necessity (价值/作用)
并同步数量属性 N,使变长输入场景的映射与算子原型(DYNAMIC_INPUT(x) / REQUIRED_ATTR(N))一致;
无需额外构建配置改动。
Design(设计方案)
(Transpose → time_major、Const(lstm_cell/add/y) → forget_bias、输入 HWCN);
注册由 ParseParamsByOperatorFn 改为 ParseParamsFn,映射改用 AutoMappingFnDynamic,value["in"]=("x","N"),
与 concat_offset_tf_plugin.cpp 动态映射用法一致。
npu_lstm_onnx_plugin.cpp、npu_lstm_cell_onnx_plugin.cpp 不受影响。
关联 PR:https://gitcode.com/cann/ops-nn/pull/9925