Pull Request已成功合入, 合并人@ascend-robot
(感谢 suis-moi 的贡献)变更摘要
此 PR 主要实现了两方面的功能:1) 为 Kimi K3 模型的 KDA(Kimi Delta Attention)短卷积引入 AscendC 后端实现,通过新增 causal_conv1d_implementation 配置项支持在 triton 和 ascendc 之间切换;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_attention、MoonViT3dEncoder、KimiMLAAttention、KimiDeltaAttention和KimiLinearModel中引入all_to_all、split_forward_gather_backward_with_cp、packed_data_split_forward_gather_backward_with_cp等通信原语,实现头/序列维度的重分布、序列分割与收集,并在KimiK3ForConditionalGeneration中对 CP 分片后的 loss 进行跨组收集。 - 全局序列长度管理:在
modeling_kimi_linear.py中新增set_seq_len/get_seq_len函数,用于在 Ulysses CP 流程中传递total、visual和per_visual序列长度信息,供各层通信时确定 gather/split 尺寸。


代码审查
我已经完成了对所有 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 |
💬 仅评论


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
/approveor/lgtm- Commenting
/approveimplies 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. 👍


Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


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 精度验证通过。