已关闭
[Requirement|需求建议]: 新增带跨步的layernorm算子LayernormStride #1709
slj创建于  3月25日关闭于  5月22日
slj
slj
3月25日 创建

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

Backgroud(背景信息)

使用AscendC实现MLA中跨步计算layernorm。输入是shape为[Batch, Seqlen, Stride]的张量,Stride为跨步大小,Stride = kv_lora_rank + qk_rope_head_dim。该算子对Stride的前kv_lora_rank维进行归一化计算

Origin(信息来源)

外部贡献

Benefit / Necessity (价值/作用)

将需要多步实现的跨步layernorm计算融合为一个算子,优化效率

Design(设计方案)

Tilling 策略

  • 分核策略:
    将输入[Batch, Seqlen, stride] 直接对Batch*Seqlen做loop_count任务切分,因此每个核分到 Batch * Seqlen / block_num * stride 的数据

Kernel 侧设计

进行Init和Process两个阶段,其中Process包括数据搬入(CopyIn)、计算(Compute)、数据搬出(CopyOut)三个阶段,实现带跨步的layernorm。

  • 初始化(Init)
    • 计算loop_count
    • 建立GM Tensor映射,初始化队列缓冲区,初始化临时缓冲区
  • 计算流程(Compute)
    • 调用CAST将in转为float类型
    • 调用Ascendc命令完成计算layernorm
    • 调用CAST将fp32表示的layernorm结果转为bfloat16/half类型
  • 数据搬入(CopyIn)搬出(CopyOut)
    • CopyIn: 将输入张量数据从inGM中搬入到inQueue
    • CopyOut: 将layernorm结果数据从outQueue搬出到outGM
  • 流程调度(Process)
    • 遍历loop_count,按CopyIn->Compute->CopyOut的顺序调度
likedislike
slj
slj
3月25日 评论:

/assign @slj02

likedislike
CANN-robotCANN-robot成员
3月25日 将 slj02 设为负责人
sljslj
3月25日 关联了pull request:add fused operator LayernormStride
chenqi317成员
3月26日 评论:

你好 你的pr 和当前nn 仓编译框架差距较大。
欢迎上nn sig 例会上审核
会议链接:https://meeting.osinfra.cn/cann/
会议议题申请:https://etherpad-cann.meeting.osinfra.cn/p/sig-ops-nn

sig例会时间:
会议主题:Ops-nn SIG 群组 双周例会
会议详情:Ops-nn SIG 群组 双周例会
发起人:chenqi317
会议时间:2026-03-27 每2周星期五 14:15 到 15:45 (UTC+08:00)Beijing 有效期从2025/12/19 至 2026/04/30
会议平台: WeLink
会议ID: 989248999
会议链接:https://meeting.huaweicloud.com:36443/#/j/989248999

likedislike
Cchenqi317成员
3月28日 将 lileizheng 设为负责人
Cchenqi317成员
3月28日 issue状态由 进行中 改变为 技术评审中
chenqi317成员
3月28日 评论:

您好 该issue 已接纳。
当前nn仓还不支持<<<>>>调用,后续和 @lileizheng 对接跟进工程合入情况!

likedislike
lileizheng成员
4月20日 评论:

您好,当前nn仓<<<>>>编译工程已经上库,可以参考<<<>>>贡献指南,贡献您的算子。

likedislike
Llileizheng成员
4月20日 移除了负责人 lileizheng
Lluyakun_hw成员
4月21日 关联了pull request:test layernorm_stride compile
Cchenqi317成员
4月24日 将 fullt 设为负责人
Cchenqi317成员
4月24日 移除了负责人 fullt
Cchenqi317成员
4月24日 将 lileizheng 设为负责人
Llileizheng成员
5月22日 issue状态由 技术评审中 改变为 已解决
Llileizheng成员
5月22日 关闭了 issue