已合并
feta: kimi k3 support ulysess cp #2933
suis-moi创建于 15 天前
feta: kimi k3 support ulysess cp #2933
已合并
suis-moi创建于 15 天前
suis-moi
suis-moi成员
15 天前

What this PR does / why we need it?

1、kimi k3 support ulysess cp;
2、causal conv 1d support ascendc implement

Does this PR introduce any user-facing change?

新增CP功能,已在readme说明使能方式

How was this patch tested?

NPU自对齐 w/ v.s w/o cp 精度验证通过。

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 suis-moi 的贡献)
suis-moisuis-moi成员
15 天前 创建了 pull request,commit 63b7ce53
atomgit-bot
atomgit-bot
15 天前 评论:

变更摘要

此 PR 主要实现了两方面的功能:1) 为 Kimi K3 模型的 KDA(Kimi Delta Attention)短卷积引入 AscendC 后端实现,通过新增 causal_conv1d_implementation 配置项支持在 tritonascendc 之间切换;2) 为 Kimi K3 的 ViT 编码器、MLA 注意力、Delta 注意力(LASP)以及整体 loss 计算添加 Ulysses 上下文并行(CP)支持,使模型能够在多卡序列并行场景下正确运行。

主要改动

  • 新增 causal_conv1d_implementation 配置项:在 kimik3_config.yaml 中添加 causal_conv1d_implementation: triton,并在 __init__.py 中读取、校验该参数并写入 transformer_config.text_config,控制 KDA 短卷积使用 Triton 还是 AscendC 实现。
  • ShortConvolution 算子扩展:新增 implementation'triton''ascendc')和 head_num 参数;forward 方法新增 weight 参数以支持 Ulysses CP 下的头切片权重覆盖;新增 AscendC 路径调用 causal_conv1d_ascendc 融合算子。
  • Kimi K3 模型 Ulysses 上下文并行支持:在 multihead_attentionMoonViT3dEncoderKimiMLAAttentionKimiDeltaAttentionKimiLinearModel 中引入 all_to_allsplit_forward_gather_backward_with_cppacked_data_split_forward_gather_backward_with_cp 等通信原语,实现头/序列维度的重分布、序列分割与收集,并在 KimiK3ForConditionalGeneration 中对 CP 分片后的 loss 进行跨组收集。
  • 全局序列长度管理:在 modeling_kimi_linear.py 中新增 set_seq_len / get_seq_len 函数,用于在 Ulysses CP 流程中传递 totalvisualper_visual 序列长度信息,供各层通信时确定 gather/split 尺寸。
likedislike
atomgit-bot
atomgit-bot
15 天前 评论:

代码审查

我已经完成了对所有 6 个变更文件的逐文件审查。以下是审查总结:


审查总结

各文件审查结果

文件 审查结果
examples/kimi_k3/README.md 无问题 — 新增的 fla-npu 安装文档和配置表更新没有引入安全问题或错误指令
examples/kimi_k3/kimik3_config.yaml 无问题 — 新增的 causal_conv1d_implementation: triton 配置项 key 拼写正确
mindspeed_mm/fsdp/models/kimi_k3/__init__.py 无问题 — causal_conv1d_implementation 的校验和向 config 的传播逻辑正确
mindspeed_mm/fsdp/models/kimi_k3/modeling_kimi_k3.py 2 个问题 (P2×2) — 遗留调试 print + loss 为 None 时的崩溃
mindspeed_mm/fsdp/models/kimi_k3/modeling_kimi_linear.py 无问题 — Ulysses CP 的 all-to-all、权重切片、序列拆分/汇集逻辑均经过仔细审查,无缺陷
mindspeed_mm/fsdp/ops/kda/short_conv.py 无问题 — ascendc/triton 双路径权重格式处理正确,移除了已死代码的 CUDA fallback

问题汇总

  • P0: 0
  • P1: 0
  • P2: 2
  • P3: 0

整体风险判断

中低风险。核心的 Ulysses CP 支持逻辑(all-to-all 通信、权重切片、序列拆分/汇集)实现正确,ShortConvolution 的 ascendc 适配路径正确。两个 P2 问题均属于可快速修复的遗漏——一处是调试 print 遗留(可能在非标准调用路径下崩溃),一处是 CP 启用时未对 loss=None 做防御(eval 场景)。建议合入前修复这两处。

类型 数量
🔴 阻塞 0
🟡 建议 2

💬 仅评论

likedislike
ascend-robotascend-robot成员
15 天前 添加了label:ascend-cla/no
ascend-robot
ascend-robot成员
15 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-Ascend/MindSpeed-MM cxiaolong, 王海涛, LinMingZhe (3/2) 王海涛 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

suis-moi, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了102条消息 查看更多
ascend-robotascend-robot成员
6 天前 添加了label:lgtm
htwang成员
6 天前 评论:

/approve

likedislike
ascend-robotascend-robot成员
6 天前 添加了label:approved
ascend-robotascend-robot成员
6 天前 合入了pull request
ascend-robot
ascend-robot成员
6 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike