已关闭
[Bug]: 分析msprof采集的数据时,如果存在${OUTPUT}/PROF_*/msprof_*.db*文件,则msprof-analyze cluster -m all -d ${OUTPUT}命令无法生成cluster_communication*.json文件 #57
文刀林创建于  7月25日关闭于  8月6日
文刀林
文刀林
7月25日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

例如:
=== OS ===
PRETTY_NAME="Ubuntu 24.04 LTS"
5.15.0-119-generic
=== NPU ===
        Product Name                   : IT21HMDB02-B2
        Software Version               : 25.0.rc1.1
        Firmware Version               : 7.7.0.1.231
=== CANN ===
package_name=Ascend-cann-toolkit
version=9.0.0
innerversion=V100R001C10SPC001B250
compatible_version=[V100R001C21],[V100R001C22],[V100R001C23],[V100R001C25],[V100R001C10]
arch=x86_64
os=linux
path=/usr/local/Ascend/cann-9.0.0
=== Packages ===
accelerate                               1.10.1
msprof-analyze                           26.0.0
open_clip_torch                          3.2.0
pytorch-lightning                        2.6.5
pytorch-memlab                           0.3.2
pytorch-wpe                              0.0.1
pytorchvideo                             0.1.5
rotary-embedding-torch                   0.8.9
torch                                    2.10.0+cpu
torch-complex                            0.4.4
torch-einops-utils                       0.1.4
torch_npu                                2.10.0.post2
torch-stoi                               0.2.3
torchao                                  0.9.0+cpu
torchaudio                               2.10.0+cpu
torchcodec                               0.11.1+cpu
torchdiffeq                              0.2.5
torchinfo                                1.8.0
torchlibrosa                             0.1.0
torchmetrics                             1.9.0
torchsde                                 0.2.6
torchvision                              0.25.0+cpu
torchvision_npu                          0.22.1+git9d394ad
transformers                             5.13.0
triton                                   3.6.0
triton_ascend                            3.2.1
vllm                                     0.24.0+empty                   
vllm_ascend                              0.1.dev293+g23ddb8089        
vllm-omni                                0.20.0+cpu
x-transformers                           2.23.1

🐛 问题描述

使用如下命令采集数据:

#!/bin/bash

COLLECT_DURATION=${1:-5}

OUTPUT="$PWD/profiling_$(date +%Y%m%d_%H%M%S)"

LOG_FILE="${OUTPUT}/msprof_chain.log"  
mkdir -p ${OUTPUT}

# export PROFILING_MODE=dynamic   # 需要在vllm启动是设置环境变量

# 获取所有PID(采集至少2个rank才有集群通信数据)
PIDS=$(ls -t ~/dynamic_profiling_socket_* 2>/dev/null | awk -F '_' '{print $4}' | head -1)

# 将PID转换为数组
PID_ARRAY=($PIDS)

# 函数:对单个PID执行采集
collect_profiling() {
    local PID=$1
    local OUT_DIR=$2
    
    echo -e "##################[$(date +%Y%m%d_%H%M%S)] Starting to collect profiling data for PID: $PID -> ${OUT_DIR}"
    
    # 使用 echo 管道自动交互
    {
        echo "start"
        sleep ${COLLECT_DURATION}
        echo "stop"
        echo "quit"
    } | msprof \
        --dynamic=on \
        --pid=$PID \
        --output=${OUT_DIR} \
        --runtime-api=on \
        --ascendcl=on \
        --hccl=on \
        --sys-interconnection-profiling=on \
        --aicpu=on \
        --l2=on \
        --aic-metrics=PipeUtilization \
        --msproftx=on \
        --task-time=l2
    
    echo "##################[$(date +%Y%m%d_%H%M%S)] Finished collecting profiling data for PID: $PID"
}


# ===== 正式采集 =====
for PID in "${PID_ARRAY[@]}"; do
    collect_profiling $PID ${OUTPUT} &
done

# 等待所有后台进程完成
wait

# 检查 ffts_profile.data 是否存在,缺失表示没有采集到数据,退出
ffts_count=$(find ${OUTPUT}/PROF_*/device_*/data/ -name "ffts_profile.data.*" 2>/dev/null | wc -l) 
if [ "${ffts_count}" -eq 0 ]; then 
    echo "##################[$(date +%Y%m%d_%H%M%S)] ERROR: 采集数据缺失,请重新执行."  
    exit 1 
fi  

exec &> >(tee -a "${LOG_FILE}")  

echo -e "\n\n##################[$(date +%Y%m%d_%H%M%S)] Starting to parse profiling data"

# msprof --parse=on 
msprof --parse=on --output=${OUTPUT}

echo -e "\n\n##################[$(date +%Y%m%d_%H%M%S)] Starting to export profiling data"
# 导出 CSV 文件,不知为何会导出db文件
msprof --export=on --type=text --summary-format=csv --output=${OUTPUT}

# 通信分析(生成 analyze/communication.json),注意必须分析PROF_子目录,这样msprof-analyze cluster才能分析整个集群
for prof_dir in ${OUTPUT}/PROF_*/; do    
    echo -e "\n\n##################[$(date +%Y%m%d_%H%M%S)] Starting to analyze communication data"                                                                                                               
    msprof --analyze=on --type=text --rule=communication,communication_matrix --output=${prof_dir}                                                      
done 

# 删除 msprof_*.db 强制 TEXT 模式(如果不删除,msprof-analyze cluster会执行失败)
rm -f ${OUTPUT}/PROF_*/msprof_*.db*

echo -e "\n\n##################[$(date +%Y%m%d_%H%M%S)] Starting to analyze cluster data"
msprof-analyze cluster -m all -d ${OUTPUT}

# echo -e "\n\n##################[$(date +%Y%m%d_%H%M%S)] Starting to analyze advisor data"
# # msprof-analyze advisor all -d ${OUTPUT} -o ${OUTPUT} --force

find ${OUTPUT} -name "cluster_communication*.json" -exec ls -lh {} \;

echo "##################[$(date +%Y%m%d_%H%M%S)] Finished all profiling for PID: $PIDS_STR, Results are in: $OUTPUT"

可以正常生成cluster_communication*.json供ms_insight分析,输出部分日志如下,可见正常生成了cluster_communication.json:

[2026-07-25 17:15:24][INFO][comm_matrix_analysis.py:55] CommMatrixAnalysis completed
Cluster analyzing:  20%|██         | 1/5[2026-07-25 17:15:25][INFO][host_info_analysis.py:45] HostInfoAnalysis completed
Cluster analyzing:  40%|████       | 2/5[2026-07-25 17:15:25][INFO][cluster_base_info_analysis.py:40] ClusterBaseInfoAnalysis skipped, since data type is not db
Cluster analyzing:  60%|██████     | 3/5[2026-07-25 17:15:26][INFO][communication_analysis.py:63] CommunicationAnalysis completed
Cluster analyzing: 100%|██████████ | 5/5[2026-07-25 17:15:28][INFO][step_trace_time_analysis.py:100] StepTraceTimeAnalysis completed
Cluster analyzing: 100%|██████████ | 5/5
[2026-07-25 17:15:28][INFO][cluster_analysis.py:116] The cluster analysis result file has been generated: /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_171459
-rw-r----- 1 root root 2.7K Jul 25 17:15 /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_171459/cluster_analysis_output/cluster_communication_matrix.json
-rw-r----- 1 root root 2.0M Jul 25 17:15 /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_171459/cluster_analysis_output/cluster_communication.json
##################[20260725_171528] Finished all profiling for PID: , Results are in: /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_171459

但是如果把脚本中的 “rm -f ${OUTPUT}/PROF_/msprof_.db*”注释掉,则无法生成 cluster_communication.json文件。部分日志如下:

[2026-07-25 17:00:59][INFO][base_recipe_analysis.py:130] Exporting data to database: /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_165932/cluster_analysis_output/cluster_analysis.db, table: ClusterCommunicationMatrix
[2026-07-25 17:01:00][INFO][analysis_facade.py:99] Recipe CommMatrixSum analysis launched successfully.
Cluster analyzing:   0%|           | 0/3[2026-07-25 17:01:00][WARNING][cluster_base_info_analysis.py:43] ClusterBaseInfoAnalysis skipped, since no metadata or distributed args found
Cluster analyzing:  33%|███▎       | 1/3[2026-07-25 17:01:00][INFO][host_info_analysis.py:51] HostInfoAnalysis completed
Cluster analyzing:  67%|██████▋    | 2/3[2026-07-25 17:01:01][INFO][step_trace_time_analysis.py:100] StepTraceTimeAnalysis completed
Cluster analyzing:  67%|██████▋    | 2/3
[2026-07-25 17:01:01][INFO][cluster_analysis.py:116] The cluster analysis result file has been generated: /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_165932
##################[20260725_170102] Finished all profiling for PID: , Results are in: /inspire/sj-ssd3/project/pretrain-test/panqihan-W25083/lxl/models/MiniMax-M3-w8a8/a009/profiling_20260725_165932

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
Mrtutu
Mrtutu成员
7月25日 评论:

👋 您好,欢迎向 MindStudio-Profiler-Analyze 提交 Issue!
我们已收到您的反馈,感谢你对开源社区的支持。🎉

📅处理时效: 维护团队将在24小时内 查看并回复您的问题(工作日)。
🔍自助查询: 在等待期间,建议您先查阅以下资料,可能已有解决方案:

📖 MindStudio MindStudio-Profiler-Analyze官方文档
📝 贡献者指南

请确保 Issue 描述清晰,包含复现步骤和日志,这将帮助我们更快定位问题。谢谢!

likedislike
MrtutuMrtutu成员
7月25日 添加了label:triaged
ascend-robotascend-robot成员
7月25日 添加了label:bug
fanglanyue
fanglanyue成员
7月27日 评论:

${OUTPUT}/PROF_*/msprof_*.db* 这种DB数据场景,对应msprof-analyze cluster -m all 生成的是cluster_analysis.db,内容覆盖cluster_communication.json,也可在MindStudio Insight中可视化呈现

likedislike
fanglanyue
fanglanyue成员
7月27日 评论:

/label add resolved

likedislike
ascend-robotascend-robot成员
7月27日 添加了label:resolved
Ccai-weiwei1989成员
7月28日 关联了pull request:docs:安装指南优化
Ccai-weiwei1989成员
7月28日 删除了关联的pull request:docs:安装指南优化
ascend-robot
ascend-robot成员
8月3日 评论:

您好,当前Issue标记为resolved且有一段时间未进一步更新,因此我们将其标记为'stale'(闲置)状态。若您认为这是误操作,可通过添加任意评论来去除'stale'标签。标记为stale的Issue在4天内无更新活动将自动关闭。

likedislike
ascend-robotascend-robot成员
8月3日 添加了label:stale
fanglanyuefanglanyue成员
8月6日 issue状态由 TODO 改变为 DONE
fanglanyuefanglanyue成员
8月6日 关闭了 issue