CANN/cann-recipes-infer LongCat-Flash-Lite EP路径优化进度归档 LongCat-Flash-Lite EP 路径改造进度归档【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer阶段 1 - 并行策略分析首版2026-03-28已被新方案覆盖归档原因: 该版分析仅推导出 D1纯 TP8和 D3attn_tp8 EP8两个候选后续按客户方案进一步细化为 dense_tp1 ngram_embed_tp8 的差异化切分。参数与模块链路模块总参数量BF16 显存说明embed_tokens0.40 B0.8 GB主词表Ngram Embedding~31 B62 GB12 个子表 × ~10M vocab × 256必须 TP 切MLA × 280.99 B0.13 GBq_lora1536, kv_lora512Dense MLP × 280.5 B1.0 GBgate/up/downMoE × 1433.8 B62 GBEP8 时单卡 32 expertLM Head0.4 B0.8 GB候选方案D1纯 TP8: 全部张量并行包括 MoE。问题: MoE 切 1024/8128 维成碎矩阵D3attn_tp8 ep8: attn 走 TPMoE 走 EP。最终采用此方案归档于 2026-03-31旧版 EP8 实施记录旧 EP8 配置attn_tp8 dense_tp8 embed_tp8LongcatFlashExperts 沿用FusedMoEGMM每 rank 持有 32 个 routed expert走 EP8 双重 AllToAll双路由跳过 npu_moe_distribute_dispatch K24 上限实测 prefill ~250msdecode ~170ms被新版 ep8 dense DP 主 embed DP 替代后归档。阶段 1 - 并行化改造完成归档部署方案确认按客户要求实施 | 模块 | TP 大小 | 备注 | |------|--------|------| | MLA | 4 或 8 | 提供两套配置b2 用 4b1 用 8 | | Dense MLP | 1 (DP) | 不切每卡持有完整权重 | | MoE | EP8 | 走双重 AllToAll routing | | 主 Embedding | 1 (DP) | 主表 0.8 GB 复制到每卡 | | Ngram subtables | 8 | 沿 vocab 切AllReduce 形式 | | LM Head | 8 | 沿 vocab 切 |与旧 EP8 实现的差异模块旧 ep8 (TP8 一刀切)新 ep8 (本次实现)dense MLPTP8 AllReduceDP1不切主 EmbeddingTP8 AllReduceDP1不切ngram 子表与主 embed 共用 embed_tp通过custom_params.ngram_embed_tp_size独立 TP与主 embed 解耦MoEEP8 双重路由EP8 双重路由一致AttentionTP8TP8 / TP4 双套配置BSPR check强制 batch % attn_tp 0已移除与 MLA 切头不冲突代码改动模型侧自闭环未改框架代码ngram_embed_tp_size通过model_config.custom_params读取ngram 通信复用embed_tp_group。文件变更models/longcat_flash_lite/models/modeling_longcat_flash_lite.pyLongcatFlashMLP切到dense_tp_groupNgramEmbedding增加独立ngram_tp_size/rank/group参数由 model__init__从custom_params读出后注入models/longcat_flash_lite/config/longcat_flash_lite_rank_8_8ep.yamldense_tp_size1,embed_tp_size1,custom_params.ngram_embed_tp_size8实测性能验收配置PrefillDecode对比基线输出验证baseline (旧 TP8)4475 ms273 ms——ep8 attn_tp8 batch1198 ms161 ms-41% decode✓ 与 baseline 完全匹配ep8 attn_tp4 batch2207 ms150 ms (per req 75 ms)-45% decode✓ 完全匹配关键观察 / 经验客户方案的合理性: dense MLP 走 DP 节省 AllReduce虽然每卡多 1.4 GB 权重但通信省下来的时间显著单卡 HBM 完全负担得起。attn_tp4 batch2 比 attn_tp8 batch1 总吞吐更好: 因 attn_tp 更小时 q/k/v/o 矩阵更大cube 利用率更高同时 batch2 让 MoE GMM 也更接近峰值。ngram 子表 TP8 不必转 ReduceScatter: 当前的 AllReduce 形式已经能并行没有 SP 串接转换无收益。验证结果指标attn_tp8 batch1attn_tp4 batch2prefill198 ms220 msdecode/token161 ms150 ms单卡显存峰值19.6 GB20.4 GB输出与 baseline 对齐✓✓阶段 1 通过进入阶段 2。阶段 2 — KVCache FA 改造归档于 2026-04-28实施替换_forward_legacy中的 manual SDPA 路径新增_forward_prefill_paNTD/TND FA npu_kv_rmsnorm_rope_cache和_forward_decode_paBSND_NBSD FA absorb path新增LongcatFlashNgramForCausalLM.process_weights_after_loading→ 调用_init_absorb_weights拆分kv_b_proj为kv_b_proj_w_k / kv_b_proj_w_v新增LongcatFlashNgramForCausalLM.init_pa_cache(...)按batch_size_per_dp_rank * ceil(max_seq/block_size)分配cache_nope、cache_rope、block_table删除LongcatFlashMLA._forward_legacy、self.k_cache/v_cache/k_cache_unit/v_cache_unit、self.scaling避免model_worker._init_kvcache误分配 ~336 MB legacy buffer简化forward()dispatcher仅根据forward_metadata.is_prefill分流到_forward_prefill_pa/_forward_decode_pa验证结果配置PrefillDecode输出对齐Stage 1 baseline207 ms151 ms(基线)Stage 2 PA FA455 ms145 ms✓ 与 baseline 完全一致[MLA] use_paTrue ...调试日志确认_forward_prefill_pa实际被执行。已知问题 / 待跟进Prefill 退化 120%: 与 tp8 stage 1 数据持平 -1.6%差距巨大未充分定位根因。怀疑旧 cache 残留已修复cleanup commit双 BMM 在 attn_tp4 时每卡 8 headlaunch 开销显著待图模式验证npu_kv_rmsnorm_rope_cache在 attn_dp2 模式下首次 launch 被序列化Decode 持平与 tp8 持平表现一致图模式stage 4才能拿到收益需在 stage 3/4 定位 prefill 退化问题或引入混合方案prefill 走 legacy SDPAdecode 走 PA absorb。阶段 3 - 融合算子已完成于 2026-04-28实施内容改动位置备注LongcatFlashRMSNorm.forward用npu_rms_norm/npu_add_rms_norm融合 addnormline 33-58支持(x, residual)接口与 tp8 一致LongcatFlashMLP合并gate_projup_proj→MergedColumnParallelLinear再走npu_swigluline 491-5251 GEMM 1 fused activation 替代原 2 GEMM 2 element-wiseLongcatFlashDecoderLayer.forward改为残差链式传递4 处npu_add_rms_normline 970-1007节省 28 layer × 4 112 个独立 launch / stepload_weights增加 dense MLPgate_proj/up_proj→gate_up_proj装载line 1497 之后兼容 checkpoint 格式实测性能attn_tp4, batch2, seq1024阶段Prefill (steady)Decode avg说明Stage 1 baseline (legacy SDPA)207 ms151 msmanual SDPA 手写 RMSNorm/SiLUStage 2 (PAFA only)455 ms (120%)145 ms (-4%)PA 路径仅替换 KV cache attentionStage 3 (PAFA 融合算子)244 ms (18%)124 ms (-18%)加上npu_rms_norm/npu_add_rms_norm/gate_up_projnpu_swiglu验证✓ 输出与 baseline 一致computed as a weighted sum of the values...✓ NPU 利用率正常无 OOM 或超时待优化prefill 仍比 baseline 慢 ~37 ms推断来自kv_b_proj_w_k/w_vBMM 在 ND→NZ 转换的开销Decode 已经从 151 → 123 ms是 stage 2 stage 3 联合收益【免费下载链接】cann-recipes-infer本项目针对LLM与多模态模型推理业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-infer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考