ascend-ai-coding/awesome-ascend-skills/ascend-migration-analysis

Claude Code and agent skill by ascend-ai-coding/awesome-ascend-skills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

通用 PyTorch 项目 Ascend NPU 迁移可行性分析。系统化扫描代码库中的 CUDA/GPU 依赖,按 7 大域分类评估(设备层、注意力机制、自定义算子、分布式通信、精度策略、第三方依赖、编译加速),并基于 Wan2.2 实际迁移经验提供逐项替代方案。适用于评估任何 DiT/Transformer 类模型(视频生成、LLM、多模态等)在昇腾 NPU 上的运行可行性与迁移工作量估算。

Install

npx vskill@latest install ascend-ai-coding/awesome-ascend-skills/ascend-migration-analysis

SKILL.md

Ascend NPU Migration Analysis Skill

Purpose

对任意 PyTorch 项目进行系统化的 Ascend NPU 迁移可行性分析。扫描代码库中的 CUDA/NVIDIA 依赖,按域分类,逐项给出替代方案,并估算迁移工作量。

When to Use

  • 用户询问某个项目/模型能否在 Ascend NPU 上运行
  • 用户需要评估 PyTorch 项目迁移到昇腾 NPU 的工作量
  • 用户需要对 CUDA→Ascend 迁移做全面的技术尽职调查
  • 用户遇到 NPU 兼容性问题,需要排查哪些 CUDA 依赖未替换

Analysis Workflow

对目标项目执行以下 7 步分析,每步对应一个迁移域。详细方法和替代方案见各域的 reference 文档。

Step 1: Third-Party Dependency Audit (Domain 1)

Read references/01-dependency-audit.md.

扫描内容:

  • requirements.txt / setup.py / pyproject.toml 中的 NVIDIA 专属依赖
  • flash-attn, triton, xformers, nvidia-ml-py, cuda-python, cupy 等
  • 间接依赖中的 CUDA 硬编码

产出:依赖兼容性矩阵(每个依赖标注:兼容 / 需替换 / 不支持 / 不涉及)

Step 2: Device Layer Scan (Domain 2)

Read references/02-device-layer.md.

扫描内容(使用 grep/rg):

  • torch.cuda.* 全系列 API
  • 硬编码 "cuda" 设备字符串
  • backend="nccl" 分布式后端
  • amp.autocast(device_type='cuda') 混合精度
  • torch.compile / @torch.compile 使用
  • torch.cuda.Stream / torch.cuda.Event
  • init_device_mesh("cuda")

产出:设备层替换清单(文件:行号 → 替代方案)

Step 3: Attention Mechanism Analysis (Domain 3)

Read references/03-attention-mechanism.md.

扫描内容:

  • flash_attn (FA2) 导入与调用
  • flash_attn_interface (FA3) 导入与调用
  • xformers 注意力调用
  • F.scaled_dot_product_attention 调用
  • 手动实现的 attention (Q×K^T softmax 等)
  • 注意力的 tensor layout (BSHD / BNSD 等)

产出:注意力后端替换方案(每种 attention 类型 → 对应 NPU 替代)

Step 4: Custom Operator / Kernel Analysis (Domain 4)

Read references/04-custom-operators.md.

扫描内容:

  • .cu / .cuh / .cpp 自定义 CUDA 内核文件
  • @triton.jit 装饰的 Triton kernel
  • torch.utils.cpp_extension.CUDAExtension 构建
  • torch.autograd.Function 子类中的自定义前向/反向
  • csrc/ / ops/ / kernels/ 目录

产出:自定义算子迁移方案(每个 kernel 的功能描述 + 替代路径)

Step 5: Distributed Communication Analysis (Domain 5)

Read references/05-distributed.md.

扫描内容:

  • dist.init_process_group 后端选择
  • dist.all_to_all / dist.all_gather / dist.broadcast 等
  • init_device_mesh / DeviceMesh 使用
  • Ulysses / Ring / Sequence Parallel 模式
  • torch.distributed.P2POp / batch_isend_irecv

产出:分布式通信适配方案

Step 6: Precision & Numerics Analysis (Domain 6)

Read references/06-precision-strategy.md.

扫描内容:

  • .float() / .double() 类型转换
  • torch.bfloat16 / torch.float16 dtype 使用
  • torch.complex128 / torch.float64 高精度使用
  • autocast 上下文中的 dtype 设置
  • 数值敏感操作中的 float32 保护 (RMSNorm, LayerNorm, AdaLN)
  • dtype == torch.float32 assert 语句

产出:精度策略调整清单

Step 7: Task-Phase Dependency Matrix (Domain 7)

Read references/07-task-phase-matrix.md.

将前 6 步的发现按任务执行阶段拆分,识别:

  • 哪些依赖在每个阶段都需要(P0)
  • 哪些依赖仅在特定阶段/模式需要(P1)
  • 哪些依赖在当前任务中不涉及(可跳过)

产出:按阶段的依赖矩阵 + 最小迁移集 + 完整迁移工作量估算

Output Format

分析完成后,输出结构化报告:

markdown
# {Project} Ascend NPU Migration Assessment
## Executive Summary
-Overall feasibility: [可行 / 需适配 / 困难 / 不可行]
-Estimated effort: [X 周]
-Blockers: [list]
## Dependency Matrix (per task phase)
| Dependency | Phase A | Phase B | Replacement | Effort |
|------------|---------|---------|-------------|--------|
## Detailed Findings (per domain)
### Domain 1: Third-Party Dependencies
### Domain 2: Device Layer
### Domain 3: Attention Mechanism
### Domain 4: Custom Operators
### Domain 5: Distributed Communication
### Domain 6: Precision Strategy
## Migration Roadmap
## Risk Matrix

Quick Reference: Common Replacements

CUDA PatternAscend ReplacementConfidence
torch.cuda.empty_cache()torch.npu.empty_cache() or transfer_to_npuHigh
backend="nccl"backend="hccl"High
autocast('cuda')autocast('npu')High
device="cuda"device="npu"High
flash_attn.flash_attn_funcmindiesd.attention_forward(op_type="ascend_laser_attention")High
flash_attn.flash_attn_varlen_funcmindiesd.attention_forward(op_type="fused_attn_score")Medium
xformers.ops.memory_efficient_attentionmindiesd.attention_forward(op_type="fused_attn_score")High
F.scaled_dot_product_attentiontorch_npu 原生支持High
@triton.jit kernels需逐个分析,可能用 mindiesd/RainFusion/NPU原生算子替代Low-Medium
torch.compile禁用或使用 torch_npu backendMedium
RMSNorm .float()torch_npu.npu_rms_norm()High
LayerNorm .float()移除 .float(),NPU 原生 BF16High
RoPE complex128降为 complex64 或用 mindiesd.rotary_position_embedding()High
init_device_mesh("cuda")"npu"Medium
.cu / CUDAExtension需重写为 Ascend 算子Low

Notes

  • 本 skill 的替代方案知识库来自 Wan2.2 CUDA→Ascend 实际迁移经验
  • DiT/Transformer 类架构的迁移模式高度可复用
  • 分析结果需结合实际 CANN/torch_npu 版本验证
  • 部分替代方案依赖 mindiesd 库,需确认环境中是否可用

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
126
Repository forks
51
7-day trend score
24

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ascend-ai-coding/awesome-ascend-skills/ascend-migration-analysis/badge)](https://verified-skill.com/skills/ascend-ai-coding/awesome-ascend-skills/ascend-migration-analysis)

Something wrong with this skill or its page? Tell us.