已关闭
[Requirement|需求建议]: OptimizedTransducer算子AscendC实现贡献 #298
gcw_wUGgi1cC创建于  2025年12月29日关闭于  5月15日
gcw_wUGgi1cC
2025年12月29日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

使用AscendC对业界开源算法optimized_transducer进行重构,实现了OptimizedTransducer算子对Atlas 800I/T A2硬件的适配。

Origin(信息来源)

外部来源

Benefit / Necessity (价值/作用)

OptimizedTransducer算子主要功能是为端到端语音识别提供无需强制对齐的序列建模能力,核心作用是可以自动对齐,无需人工标注音频和文本的对齐关系,同时可以变长序列处理,直接处理不同长度的音频和文本序列,是实现CTC的改进版本,更适合语音识别。

Design(设计方案)

算子描述

输入输出参数描述:

名称 类别 数据类型 数据排布 数据形状 介绍
logits 输入 float16/float32 ND (batch, maxT, maxU + 1, V) 输入序列
targets 输入 int32 ND (batch, maxU) 目标序列
logit_lengths 输入 int32 ND (batch) 每个输入序列的长度
target_lengths 输入 int32 ND (batch) 每个目标序列的长度
loss 输出 float16/float32 ND (batch) 每个序列的损失
grad 输出 float16/float32 ND (batch, maxT, maxU + 1, V) 输入序列的梯度
blank 参数 int32 - - blank的位置
clamp 参数 float32 - - 梯度的边界
reduction 参数 int32 - - 规约类型
fused_log_softmax 参数 bool - - 输入是否经过log_softmax
requires_grad 参数 bool - - 是否需要计算梯度

Host侧设计

1)分核策略
按照logits输入的batch大小进行分核,如果batch数量不超过核心数量,则每个核心单独处理一个batch,否则分大核和小核,每个大核多处理一个batch
2)单核内切分策略
每次搬运的logtis数量以V为基本单位,充分使用UB的原则,以V为基本块进行UB划分

Kernel侧设计

进行Init和Process两个阶段,其中Process包括概率计算(ComputeLogProbs)、前向DP(ComputeAlpha)、后向DP(ComputeBeta)、梯度计算(ComputeGrad)四个阶段。
当数据类型是float16时,为了满足精度要求,同时为了方便scalar单元计算,会使用cast指令转为float32处理。

likedislike
gcw_wUGgi1cC
2025年12月29日 评论:

/assign

likedislike
CANN-robotCANN-robot成员
2025年12月29日 将 gcw_wUGgi1cC 设为负责人
胡一航成员
2025年12月29日 评论:

感谢您的反馈,可以关联上您的PR,在验证后由commiter审视合入。

likedislike
Ggcw_wUGgi1cC
2025年12月29日 关联了pull request:【社区任务】optimized_transducer算子设计文档
Cchenqi317成员
2月10日 将 yu-xinjie62 设为负责人
Cchenqi317成员
4月13日 将 fullt 设为负责人
Cchenqi317成员
4月13日 移除了负责人 yu-xinjie62
Cchenqi317成员
4月13日 将 yu-xinjie62 设为负责人
Cchenqi317成员
4月13日 移除了负责人 yu-xinjie62
Ffulltower成员
4月16日 关联了pull request:【社区任务】optimized_transducer算子设计文档
Cchenqi317成员
4月24日 将 yu-xinjie62 设为负责人
Ffulltower成员
5月12日 关联了pull request:贡献自定义算子optimized_transducer operator
Ffulltower成员
5月15日 issue状态由 进行中 改变为 已完成
Ffulltower成员
5月15日 关闭了 issue
CANN-robotCANN-robot成员
5月15日 添加了label:Accepted