识别代码中可替换为CAM算子的DeepEP算子,基于实际运行参数校验约束,自动完成通信域转换(NCCL->HCCL)、设备适配(CUDA->NPU)及算子替换。
60
68%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./jiuwenclaw/jiuwenclaw/resources/agent/jiuwenclaw_workspace/skills/deepep-to-cam-converter/SKILL.md本技能专注于将基于DeepEP的Mixture of Experts (MoE) 代码迁移至昇腾(Ascend)NPU环境。它能自动识别DeepEP dispatch & combine算子,**严格基于代码的实际运行参数(而非默认值)**校验CAM算子约束。
核心原则:
import deep_ep及dispatch/combine相关调用。import语句,识别本地模块依赖。dist.init_process_group、backend='nccl'、torch.cuda.set_device等特征代码。utils.init_dist),需同步分析这些函数的实现。🛑 阶段 1 阻断检查(必须显式输出) 在生成任何回复前,请先输出以下内容:
[阶段 1 自检] - DeepEP 代码识别:[是/否] - 本地依赖文件列表:[列出文件] - 状态:[通过/失败]若“DeepEP 代码识别”为否,直接终止。若为是,继续下一阶段。
注意:此阶段必须与用户交互,不得跳过。
向用户展示以下选项,确定目标运行环境:
npu-smi info,根据设备型号判断是A2环境或A3环境)。重要原则:代码中的默认值(Default Value)≠ 实际运行值(Runtime Value)
在执行替换前,必须对约束条件涉及的参数进行实际值溯源:
参数溯源:
argparse、config.yaml或命令行传入。parser.add_argument(..., default=XXX) 中的 XXX 作为判断依据。交互确认机制:
“检测到参数 [参数名] 在代码中的默认值为 [默认值],但这可能不是实际运行值。请确认实际运行时的数值是多少?以便准确判断是否满足CAM算子约束。”
约束校验逻辑:
在确认参数值满足约束后,根据目标环境确定具体算子模式:
检测到当前代码同时满足多组算子的约束条件,请做出选择:()
- 选项1(普通A3):参数配置简单,无需额外共享内存初始化。
- 选项2(Shmem A3):性能更优,但需满足特定约束及初始化。
- 选项2(fused deep moe算子):性能最优,将通信计算过程融合为一个大算子。 请回复选项继续。
在执行替换前,必须对比DeepEP原功能与CAM算子支持范围,并输出分析报告。
生成支持度报告:
用户确认策略:
🛑 阶段 2 阻断检查(必须显式输出) 在进入代码生成前,请输出:
[阶段 2 自检] - 目标环境确认:[A2/A3] - 关键参数实际值确认:[列出参数及值,严禁使用默认值] - A3模式决策:[A2算子替换不涉及/普通A3/Shmem] - 功能支持度报告已展示:[是/否] - 用户策略确认:[保留/删除/混合] - 状态:[通过/失败 - 若失败请停止,针对不满足项重新执行阶段2]
执行范围:目标文件及所有识别到的本地依赖文件。
| 原代码特征 (CUDA/NCCL) | 替换后代码 (NPU/HCCL) | 备注 |
|---|---|---|
backend='nccl' | backend='hccl' | 核心通信后端 |
torch.cuda.set_device(x) | torch.npu.set_device(x) | 设备绑定 |
torch.set_default_device('cuda') | torch.set_default_device('npu') | 默认设备 |
torch.device('cuda:0') | torch.device('npu:0') | 设备对象 |
tensor.cuda() | tensor.npu() | Tensor迁移 |
根据用户确认的CAM算子模式(A2/A3/Shmem)和策略(保留/删除),执行以下操作:
import deep_ep替换为cam对应库,注意cam库依赖torch_npu,必须先import torch_npu然后import umdk_cam_op_lib。# CAM Migration: DeepEP code retained due to unsupported feature。🛑 阶段 3 自检 在结束前,请简要确认:
- 所有
nccl已替换为hccl- 所有
cuda已替换为npu- 接口入参形状和类型和接口文档要保持一致
- 如果使用shmem,需要保证shmem资源释放(aclshmem_free和aclshmem_finialize)要在算子执行结束之后,即torch.npu.synchronize()等同步操作之后
- 状态:[通过/失败 - 若失败请停止,针对不满足项重新执行阶段3]
在执行替换时,必须严格查阅以下文档:
references/nccl_to_hccl_converter.mdreferences/cam_dispatch_and_combine_a2.mdreferences/cam_dispatch_and_combine_a3.mdreferences/cam_dispatch_and_combine_shmem.mdreferences/cam_fused_deep_moe.md在输出最终结果前,自我核对:
nccl替换为hccl?cuda相关调用替换为npu?If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.