Skip to content
cccskills
FreePublished on GitHub

ascend-prof-compare

Compares two Prof datasets (GPU vs NPU / NPU vs NPU) by auto-installing and calling msprof-analyze compare, then parses the result xlsx into HTML report and Chinese xlsx. Invoke when user provides two prof dirs to compare, or has a compare result xlsx to analyze/translate.

The English summary is being prepared. Showing the original description.

Works withExcel
See how to install

Files included (16)

  • SKILL.md11.2 KB
  • references/analysis_methodology.md15.1 KB
  • references/compare_quickstart.md3.6 KB
  • scripts/csv_translator.py8.9 KB
  • scripts/html_generator.py39.4 KB
  • scripts/main_analyzer.py12.5 KB
  • scripts/parsers/__init__.py765 B
  • scripts/parsers/api_compare.py3.8 KB
  • scripts/parsers/common.py2.4 KB
  • scripts/parsers/communication.py3.3 KB
  • scripts/parsers/kernel.py14.0 KB
  • scripts/parsers/memory.py4.4 KB
  • scripts/parsers/module.py4.8 KB
  • scripts/parsers/operator.py4.7 KB
  • scripts/parsers/overall_metrics.py6.6 KB
  • scripts/run_compare.py10.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Compare Analyzer

功能概述

本 Skill 支持两种工作模式:

  • 模式一(直比):用户提供两张 Prof 数据路径(GPU vs NPU、NPU vs NPU),自动检测/安装 msprof-analyze,调用 compare 生成 performance_comparison_result_*.xlsx,随后自动进入分析流程
  • 模式二(xlsx 分析):用户已持有 compare 输出的 performance_comparison_result_*.xlsx,直接解析分析

分析流程针对每个 Sheet 页提炼关键数据并进行分析,最终生成:

  1. 中间件 JSON:包含所有 Sheet 的结构化分析结果
  2. HTML 报告:可视化呈现性能比对分析结论(改善亮点/劣化风险双维度)
  3. 中文 xlsx:将原版英文表头翻译为中文的 xlsx 文件(多 Sheet 标签页 + 同步 CSV)

使用方法

模式一:直接比对两张 Prof(自动调用 compare)

# 最简用法:默认开启全部比对能力(msprof-analyze 未安装时自动从 PyPI 安装)
python scripts/run_compare.py -d <待比对prof路径> -bp <基准prof路径>

# 指定输出目录
python scripts/run_compare.py -d ./ascend_pt -bp ./base_ascend_pt -o ./out

# 透传 compare 的额外参数(开关、step 过滤等)
python scripts/run_compare.py -d ./ascend_pt -bp ./gpu_trace.json --compare_args "--enable_operator_compare --use_input_shape"

# 只生成 compare xlsx,不生成分析报告
python scripts/run_compare.py -d ./ascend_pt -bp ./gpu_trace.json --compare_only

参数说明

参数必选说明
-d / --profiling_path是待比对 Prof 路径(通常是 NPU 数据 / 优化后数据 / 新版本数据)
-bp / --benchmark_profiling_path是基准 Prof 路径(通常是 GPU 数据 / 优化前数据 / 旧版本数据)
-o / --output否输出目录,默认 ./compare_output_<时间戳>
--compare_args否透传给 compare 的额外参数字符串,详见 references/compare_quickstart.md
--compare_only否只执行 compare 生成 xlsx,跳过后续分析
--skip_install否跳过 msprof-analyze 检测与自动安装

msprof-analyze 安装策略(run_compare.py 自动执行,按序尝试,任一成功即止):

  1. 已安装则直接使用(检测 msprof-analyze 命令或 msprof_analyze 包)
  2. 未安装则在线安装:pip install msprof-analyze——msprof-analyze 官方发布于 PyPI(MindStudio 官方维护,Python ≥ 3.7,建议 3.9+),在线环境开箱即用

Prof 数据要求(详见 references/compare_quickstart.md):

  • NPU:指定到 *_ascend_pt(TorchNPU)或 *_ascend_ms(MindSpore)层级,目录内含 ASCEND_PROFILER_OUTPUT/(Text 或 Db 格式均可,同时存在时优先 Db)
  • GPU:torch profiler 导出的目录(含 *.pt.trace.json)
  • 建议只采集一个 step;多 step 时用 --compare_args "--base_step=1 --comparison_step=1" 固定

模式二:分析已有 compare 结果 xlsx

# 完整流程:解析 xlsx → 生成中间件 JSON → 生成 HTML 报告 → 生成中文 xlsx
python scripts/main_analyzer.py <xlsx_file_path> [-o <output_dir>]

# 示例
python scripts/main_analyzer.py ./performance_comparison_result_20250101.xlsx -o ./report_output

文件结构

ascend-prof-compare/
├── SKILL.md                          # Skill 说明文件
├── references/
│   ├── analysis_methodology.md       # 分析方法论(各 Sheet 指标含义与分析经验)
│   └── compare_quickstart.md         # compare 参数速查与 Prof 数据准备要求
└── scripts/
    ├── run_compare.py                # 直比编排:检测/安装 msprof-analyze → compare → 自动分析
    ├── main_analyzer.py              # 主调度脚本
    ├── html_generator.py             # HTML 报告生成器
    ├── csv_translator.py             # 中文翻译器(xlsx + CSV 同步输出)
    └── parsers/                      # 8 个解析器模块
        ├── __init__.py
        ├── common.py                 # 公共工具:safe_float、safe_int、get_sheet_data
        ├── overall_metrics.py        # 总体性能:维度拆解 + 改善/劣化双方向
        ├── operator.py               # 算子统计+明细(合并)
        ├── module.py                 # 模块统计+明细(合并)
        ├── memory.py                 # 内存统计+明细(合并)
        ├── kernel.py                 # Kernel比对+类型+负载均衡(合并)
        ├── communication.py          # 通信比对
        └── api_compare.py            # API比对

compare 常用参数速查(用于 --compare_args)

完整参数说明与数据准备要求见 references/compare_quickstart.md。

参数用途
(不设任何开关)默认开启全部比对能力(总体/算子/内存/通信/API/Kernel)
--enable_profiling_compare只看总体性能(计算/通信/调度/E2E 拆解)
--enable_operator_compare只看算子性能(较耗时,建议单 step 数据)
--enable_communication_compare只看通信性能
--enable_memory_compare只看内存差异(较耗时)
--enable_kernel_compare只看 Kernel 比对(仅 NPU vs NPU)
--enable_api_compare只看 Host 侧 API 比对
--base_step=N --comparison_step=N固定比对某个 step(需成对配置)
--disable_details隐藏明细 Sheet,只输出统计级比对(更快)
--use_input_shape算子按输入 Shape 精准匹配
--use_kernel_typeKernel 比对改用 op_statistic.csv,输出简化且更快
--gpu_flow_cat=<id>GPU trace 的 CPU-kernel 连线标识(GPU Device Duration 全为 0 时使用)
--force跳过文件属主 / 大小校验,强制执行

各 Sheet 分析思路

1. OverallMetrics(总体性能比对)

  • 分析目标:定界性能方向(计算/通信/调度),区分改善和劣化
  • 关键指标:E2E Time、Computing Time、Uncovered Communication Time、Free Time
  • 分析方法:提取四大维度的基准/比对值和差异比率,分别识别改善最大维度和劣化最大维度,计算各维度对总变化的贡献占比
  • 下钻分析:提取子类别(FA前向/反向、Conv、Matmul、Vector等),分改善/劣化两组排序
  • 特殊检测:Not minimal profiling 警告

2. OperatorCompareStatistic(算子统计比对)

  • 分析目标:定位劣化 TOP 算子
  • 关键指标:Diff Duration(ms)、Diff Ratio
  • 分析方法:按 Diff Duration 降序排列,提取 Top 10,计算累计劣化占比(集中度),判断劣化是否集中于少数算子

3. OperatorCompare(算子明细比对)

  • 分析目标:查看 TOP 算子的 Kernel 级详情
  • 关键指标:Device Duration(us)、Kernel Details、Input Shape
  • 分析方法:关联统计页 TOP 算子,提取对应明细行的 Kernel 信息,分析 Kernel 数量变化

4. ModuleCompareStatistic(模块统计比对)

  • 分析目标:定位劣化 TOP 模块
  • 关键指标:Device Total Time Diff(ms)、Device Self Time Diff(ms)
  • 分析方法:筛选 [ TOTAL ] 行,按总耗时差异降序,提取 Top 10 模块

5. ModuleCompare(模块明细比对)

  • 分析目标:结合调用栈定位代码位置
  • 关键指标:Call Stack、Device Self Time(us)
  • 分析方法:提取劣化模块下算子的调用栈信息

6. CommunicationCompare(通信比对)

  • 分析目标:定位通信改善/劣化算子,区分等待 vs 传输
  • 关键指标:Total Duration(us)、Diff Ratio、Wait/Transmit 拆解
  • 分析方法:按差异绝对值排序,分别识别改善最大和劣化最大的算子,标记极端改善(ratio < 0.1)

7. MemoryCompareStatistic(内存统计比对)

  • 分析目标:定位内存增长 TOP 算子
  • 关键指标:Diff Memory(MB)、Diff Ratio
  • 分析方法:按内存差异降序,提取 Top 10。检测全零内存场景(NPU vs NPU 无内存差异)

8. MemoryCompare(内存明细比对)

  • 分析目标:查看 TOP 算子内存分配详情
  • 关键指标:Size(KB)、Allocated Details
  • 分析方法:关联统计页 TOP 算子,提取分配明细

9. KernelCompare(Kernel比对)

  • 分析目标:定位劣化 Kernel,分析负载均衡
  • 关键指标:Total/Avg/Max/Min Duration(us)、Calls、Diff Total/Avg Ratio
  • 分析方法:
    • 全局统计:劣化/改善总量、净趋势判断
    • 显著劣化:ratio > 1.05 的 Kernel 单独标记
    • 通信/计算分离:hcom_ 前缀的通信算子排除出 Top10 和负载均衡分析,单独折叠展示
    • 两卡数据量比对:计算每个算子的输入数据量(Shape 各维度相乘后所有 tensor 求和),汇总两卡总数据量和总 calls,判断负载是否均衡
    • Top 10 计算算子数据量明细:展示单次数据量、基准/比对 calls、基准/比对总数据量、耗时对比
    • 负载均衡分析:仅对 calls > 10 的计算算子做 max/min 方差分析,方差 > 2x 标记预警
    • 多 Shape 分布:同名 Kernel 不同 Shape 的数据量和耗时对比

10. KernelTypeCompare(Kernel类型比对)

  • 分析目标:按类型汇总 Kernel 劣化
  • 关键指标:Kernel Type、Core Type、Total Duration
  • 分析方法:按类型聚合,识别劣化集中的 Kernel 类型

11. ApiCompare(API比对)

  • 分析目标:定位劣化 Host 侧 API
  • 关键指标:Total Duration(ms)、Self Time(ms)、Calls
  • 分析方法:按总耗时差异排序,区分纯耗时变化(calls_ratio=1.0)vs 调用次数变化,统计净趋势

异常处理

所有解析器均处理以下异常情况:

  • Sheet 不存在(比对开关未开启)
  • Sheet 为空(无数据行)
  • 列数不匹配(数据格式变化)
  • 数值解析失败(非数字字段)
  • 比率为 inf 或 NaN(基准值为 0)
  • 全零内存场景(NPU vs NPU 无内存差异)
  • 通信算子空 Shape(排除出负载均衡分析)

输出件

输出件文件名说明
中间件 JSONcompare_analysis_result.json所有 Sheet 的结构化分析结果
HTML 报告compare_analysis_report.html改善/劣化双维度可视化报告
中文 xlsxcompare_chinese_result.xlsx英文表头翻译为中文,多 Sheet 标签页
中文 CSVchinese_csv/*.csv每个 Sheet 一个独立 CSV(与 xlsx 同步生成)

分析方法论

详细的分析方法论请参考 references/analysis_methodology.md,包含:

  • 各 Sheet 指标详解(每个字段的含义和分析要点)
  • 综合分析决策树(先定界方向 → 再定位瓶颈 → 最后下钻根因)
  • 常见场景与解读(GPU→NPU 迁移、版本升级、MoE 通信瓶颈、KV Cache 优化)
  • 指标单位速查表和比率解读速查表

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

当用户直接要求进行数据集压缩测评,或在量化调优过程中需要使用 AISBench 评测工具输出数据集精度等场景时使用。 本 Skill 负责:使用 AISBench 数据集压缩代码、用 RBF Kernel Herding 算法生成压缩后的数据子集(coreset),并按用户目标交付两种产物之一: ① 接入量化调优主流程:产出独立的 coreset 数据集配置(不覆盖原始数据),回传「全集 config_name + coreset config_name」给编排层,供 evaluation.yaml 切换; ② 仅数据集压缩测评(不做量化调优):基于 example 模板生成「全集测试脚本」和「子集测试脚本」两份 shell 脚本。 暂时支持 AIME 2025 和 GPQA,其他数据集需要再结合 aisbench tools目录下 herding_coreset_selector 源码进行分析。

The English summary is being prepared. Showing the original description.

kali20gakki/msAgent32Updated Oct 17, 2026

Ascend cluster comparison tool. Invoke when user asks to compare two cluster datasets (DB or TEXT), or to generate cluster_analysis_output from raw profiling data via msprof-analyze and then compare.

The English summary is being prepared. Showing the original description.

kali20gakki/msAgent32Updated Oct 17, 2026

专门用于 Ascend 集群 Profiling 性能数据的“快慢卡”诊断专家技能。当用户提供【集群性能数据目录/路径】并要求分析【快慢卡】、【慢节点】、【负载不均衡】或【集群瓶颈】时,必须触发此技能。该技能会自动接收集群路径,调度相关工具输出快慢卡的宏观定性与微观根因(如 Host 下发瓶颈、算子计算劣化)。

The English summary is being prepared. Showing the original description.

kali20gakki/msAgent32Updated Oct 17, 2026

Analyze Ascend NPU collective communication profiling data with a DB-first workflow. Use when the user provides `cluster_analysis_output/cluster_analysis.db`, rank-level `analysis.db`, rank-level `ascend_pytorch_profiler_{rank_id}.db`, together with `profiler_info.json`, and asks about HCCL or hcom communication cost, collective communication TOP ops, wait time, slow rank/straggler, Notify Wait, bandwidth, retry, relay, SDMA/RDMA/HCCS links, communication matrix, or Ascend communication fault patterns.

The English summary is being prepared. Showing the original description.

kali20gakki/msAgent32Updated Oct 17, 2026

Analyze Ascend NPU computation-side profiling data for single-card runs or a selected rank from multi-card runs. Use this skill when the user asks to diagnose computation bottlenecks, AI Core / AI Vector / AICPU hotspots, dynamic shape overhead, block dim issues, redundant TransData/Transpose/Cast, cross-stream waits, frequency/runtime-state issues, or fusion opportunities.

The English summary is being prepared. Showing the original description.

kali20gakki/msAgent32Updated Oct 17, 2026

针对昇腾 NPU 上的 PyTorch 模型,识别可做融合算子替换的代码段、替换为 torch_npu 融合算子并做性能/精度验证。当用户提到融合算子、NPU 算子替换、RMSNorm/SwiGLU/RoPE/Attention 融合、torch_npu 亲和算子等关键词是,使用本 Skill。

The English summary is being prepared. Showing the original description.

kali20gakki/msAgent32Updated Oct 17, 2026

See all skills by kali20gakki

Report a problem with this skill