昇腾开源仓Issue分析解答-Ascend精选(十三)·观测续篇
昇腾开源仓Issue分析解答-Ascend精选(十三)·观测续篇
一句话让Agent变成昇腾专家,昇腾任务轻松搞定。评测入口:请按这个开源仓接入昇腾图谱 https://gitcode.com/agent0/kg-tools
总览
| 仓库 | 定位 | 收录条数 |
|---|---|---|
| msprof-analyze | msprof 采集数据的集群/迭代/算子分析:advisor 专家建议与 PyTorch Profiler 数据接入 | 32 |
| msmonitor | 基于 msPTI 的 npu_monitor 采集接口:marker/npu_trace 采集与 dynolog 通信链 | 18 |
msprof-analyze(性能数据分析器)
msprof 采集数据的集群/迭代/算子分析:advisor 专家建议与 PyTorch Profiler 数据接入
表一:数据与分析正确性(14 条)
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #6 | cluster_time_summary缺step_time表;hccl_sum的text导出不支持 | 根因:torch profiler未调prof.step则db无STEP_TIME表,cluster_time_summary硬依赖。PR !74适配表不存在场景(step置-1、stepTime置0,仍输出交付件),2026-03-04合并;同类!69修mstx_sum。text导出已由更早!64提供(2026-02-09合并,报不支持属旧版本未含,推断)。 |
| #34 | profiling路径含中文方括号【】被安全校验拦截,集群分析失败不生成结果 | 根因:工具路径安全校验拦截含中文括号【】()的路径,msprof-analyze出错连带Insight无法展示集群数据。PR !157(标题同款,2026-06-05合入,推断关联:标题+作者+合入后1分钟官方答复’已支持中文方括号’)放行中文方括号;官方确认英文[]仍不支持。 |
| #35 | 读JSON/文本文件未指定encoding,Windows默认GBK致中文乱码或异常 | 根因:open()未传encoding,Windows按默认GBK解码UTF-8文件(同文件read_yaml_file本就带encoding,属遗漏)。修复已落master:file_manager.py两处读文件均已补encoding=‘utf-8’(直接核验源码,原报L43/L107已位移);未见独立PR,推断随6月批次合入,后续!228再修compare trace同类问题。 |
| #38 | advisor all用-tv指定torch版本报No such option ‘-t’ | 根因:advisor all子命令缺–torch_version/-tv选项(schedule/computation子命令有),click将-tv解析为-t报错。修复:PR !176(2026-06-22合并)在cli/analyze_cli.py的analyze_all装饰器链新增该选项,经EnumParamsParser取可选torch版本列表及默认值,与其它子命令一致。 |
| #39 | A5上集群分析+专家建议(advisor)联用暴露多处公共bug | PR !164(2026-06-10合入)聚合修复:①集群分析关闭stdout致advisor因进度条写已关流报错②SlowLinkExport缺抽象方法出错③int转shape未处理空字符串④多输出memory计算遗漏⑤ST指标更新。官方注明不区分平台均为公共问题。推断关联:标题语义+作者+合入即’代码已合入’时序吻合。 |
| #46 | PYTORCH_API数据里name为空时advisor运行报错 | 根因:advisor处理PYTORCH_API表时api_name为空直接抛异常并打ERROR日志。PR !182(标题与issue一字不差,2026-07-03合入)对空name容错;合入后4小时官方评论’已解决’。 |
| #52 | cluster的calibrate_npu_gpu分析在低版本Python上报错 | 根因:代码用dict|dict并集语法,Python3.9前不支持;而官方安装指南承诺支持Python3.7.5+(建议3.9+)。PR !199(master,07-14)/!204(26.1.0同步,07-15)改为{**d1,**d2}兼容写法;合入后2分钟’代码已合入’、3分钟’验证通过’。KG安装指南确证版本承诺。 |
| #56 | 单卡profiler数据db文件无rank后缀,mfu recipe无法分析 | 根因:多卡数据文件名为ascend_pytorch_profiler_{rank_id}.db,单卡是ascend_pytorch_profiler.db(无rank),mfu按多卡命名约定匹配致单卡失败。修复:PR !212(2026-07-28合并)让单卡数据可正常跑recipe分析,顺带适配–agent输出、修–help缺-m说明并补UT用例。 |
| #57 | 存在msprof_*.db时cluster -m all不生成JSON输出,疑无法分析 | 官方口径澄清(非bug):db数据场景cluster -m all输出cluster_analysis.db,内容覆盖cluster_communication.json,可在MindStudio Insight可视化呈现。KG官方文档确证db格式为推荐输入(处理效率更高),analysis.db含传输量/链路/通信矩阵等通信细节。 |
| #64 | Windows下运行compare报gbk codec解码失败,无法生成对比结果 | 根因:compare读trace JSON用open()默认编码,Windows默认GBK,遇UTF-8字节抛UnicodeDecodeError退出。修复:PR !228(2026-08-06合并)将_trace_event_generator中open(json_path,‘r’)改为显式encoding=‘utf-8’。要点:跨平台Python读写文件须显式指定编码,勿依赖系统默认。 |
| #73 | msprof_tx打点改JSON结构(含streamId),mstx2commop解析失败 | 根因:新格式MSTX JSON带反斜杠转义,且新streamId关联无法匹配TASK。PR !237(分支fix/issue-73-mstx-commop-format)规范化通信JSON文本兼容转义/未转义两种格式,按connectionId或JSON内streamId关联TASK,新增新旧格式回归测试;2026-08-19合并。 |
| #78 | -m all先删cluster_analysis_output,MFU被清,Insight无法连用 | 根因:DB格式集群通信分析每次整体删除输出目录,已有cluster_analysis.db及无关结果表被删。PR !240:DB输入时保留输出目录,text输入仍清理重建,落盘统一replace或先drop后写,补UT;2026-08-25合并。推断关联:同作者、issue正文根因与PR修改原因逐点一致。 |
| #81 | 集群分析原始数据缺通信带宽但有通信耗时时,-m all 两类结果均不落盘 | 根因:通信时间/带宽统计任一类缺失时旧逻辑整体丢弃可用统计。PR !243(分支fix/communication-time-sum-missing-stat)改为分别处理两类数据,缺带宽时仍落盘ClusterCommunicationTime,补UT;2026-09-02合并。推断关联:同作者、issue创建与PR同日、合并与issue关闭同分钟。 |
| #82 | 950DT集群自动解析后输出缺rank_id/通信矩阵/带宽等数据 | 根因(!243正文):通信时间与带宽统计单独缺失时,旧逻辑把另一类可用统计一并丢弃,致解析结果缺数据。PR !243(fix: retain available communication stats,2026-09-02合入)分别处理两类统计并补UT(pytest 3 passed);resolved标签在合入后2分钟添加。推断关联:标题语义+同日时序。 |
表二:工具链工程化、安全与文档(18 条)
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #12 | readme参数说明排序杂乱重点不突出,用户难选配置 | 官方整改(推断关联PR !84 docs refactor,2026-03-25合并,PR作者与关闭评论同人同日):重构外层README、docs/zh资料按层级存放;参数说明按子命令归位——compare/advisor/cluster等子命令与分析特性参数移至各自instruct文档说明,README不再堆砌全量参数,并按热门场景列举典型用法。同族:#11安装步骤缺cd同批整改。 |
| #14 | 文档只给采集链接,未说明性能数据格式要求与数据文件夹层级,易致报错 | 文档重构PR !84新增user_guide/cluster_analyse_instruct.md并写入“数据要求”章节(以Ascend PyTorch Profiler为例说明输入数据要求),同批新增profiling_data_guide.md采集指南;关闭评论明确指认该章节为修复位置,合入34分钟后关闭。 |
| #15 | 文档未说明cluster_analysis_output下db文件如何打开分析 | 官方答复:cluster_analyse_instruct.md新增交付件分析指导——集群分析产出的cluster_analysis_output下db文件用MindStudio Insight打开即可可视化分析推理性能(推断关联PR !84,2026-03-25合并,早于关闭32分钟)。要点:msprof-analyze的db交付件标准消费方式是导入msinsight。 |
| #17 | 文档引用的support.huawei.com环境变量链接失效,advisor规则仍指向旧地址 | PR !95(master)与!97(26.0.0)将security_statement及advisor规则cn/en YAML中的失效链接,统一替换为issue建议的hiascend CANN 8.5.0环境变量文档地址(逐字采用建议方案),双分支同日合入,验证通过后关闭。 |
| #19 | 文件属主校验打断流程;连DB改权限;–force不透传;DB限8GB偏小 | 修复:PR !114(2026-04-20合并,body与issue四点逐条对应):1)属主/他人可写校验改为警告日志不打断;2)仅新建DB时赋权,连已有DB不改权限;3)recipe子进程经initializer初始化全局单例使–force生效;4)DB上限8GB放宽到20GB;5)部分校验移至click.Path内置项。 |
| #20 | 性能对比工具自研位图LCS性能低,大数据量下极慢 | 根因:compare对齐用自研位图实现的最长公共子序列,大JSON下耗时失控。修复:PR !118(2026-04-20合并)改用Python标准库difflib替代自研算法,单函数实测提速几千倍;用两个约3GB的GPU trace JSON对比验证,从7小时跑不完降到50分钟。要点:通用算法优先复用标准库成熟实现。 |
| #21 | whl误打包misc/test目录,site-packages里的misc遮蔽源码目录致模块找不到 | 根因:打包不规范,misc/test进whl,安装后site-packages多出misc目录,import from misc.*命中它而非工作目录(部分子目录缺__init__.py未入包)。PR !122(master)/!123(26.0.0)规范打包,2026-04-21合入;临时解法:删site-packages下misc目录。04-23验证通过。 |
| #36 | msprof-analyze命令行入口缺少单元测试 | 修复:PR !155(2026-06-04合并,issue关闭前61秒合入,时序铁证)补充命令行入口UT覆盖率。后续同系列UT补充PR:!145 slow_link、!147 cluster display、!151 comparison checker、!146 summary export、!156外部贡献者UT。要点:CLI入口是用户第一触点,click命令层需UT看护。 |
| #37 | 软链接/长路径/特殊字符校验直接抛异常打断程序,影响易用性 | PR !162(msprof-analyze安全策略精简,2026-06-09合入)将软链接、长路径、特殊字符校验由抛异常改为打印告警日志;仅保留必然出错项(文件不存在/不可读)中断程序。开发者评论阐明新口径。与#42(os.chmod移除)同属安全规范精简整改族。 |
| #41 | 依赖声明numpy<=1.26.4、pandas<=2.3.2封顶限制,与主流生态组合易冲突 | 根因:昇腾三方依赖整改规则禁止运行时/构建依赖用==、<=、<、~=封顶。PR !170(去掉numpy和pandas的最高版本限制,2026-06-17合入)改为开放>=约束,兼容PyTorch/vLLM/SGLang/Triton/Megatron-LM/verl生态;CI数据目录同步调整。当日’代修改已合入’。 |
| #42 | 工具建文件后os.chmod设权限(0o640等),破坏共享目录与容器多用户协作 | 根因:安全扫描指出8处os.chmod会覆盖用户/管理员权限策略,容器UID不一致时设权限失败,违反’信任OS/不篡改权限’原则。PR !174(2026-06-17合入)完全移除os.chmod调用,权限交OS管理;复验622版本0处调用。与#37同属安全规范精简族。 |
| #44 | 资料易用性专项发现5处问题:结构/章节/描述等 | 修复:PR !177(2026-06-27合并,body显式引用本issue)整改docs目录结构、README按新模板重构、补A5 CCU场景不支持通信矩阵数据分析的说明(advanced_features/README、advisor_instruct、cluster_analyse_instruct三处);!178为分支同步。作为资料易用性整改族代表,同族#79/#55/#11等。 |
| #48 | 26.1.0资料多处链接跳master分支,版本跳转错误 | 根因:文档内链接硬编码指向master分支,版本发布后读者被带到未发布内容。修复:PR !195(2026-07-13合并,body显式引用本issue)更新26.1.0分支链接、删misc/autofuse README的PyTorch约束、补install_guide的Python版本约束;!194为分支同步PR。要点:版本分支文档链接须指向对应tag/分支而非master。 |
| #49 | 26.0.0英文资料多张配图为中文,涉及设计说明书与quick_start等4个文档 | 维护者逐图核查后,PR !197批量替换docs/en/design下image_2~7共6张英文配图,!209再清除image_2残留中文字符;更早的!179英文翻译批次已覆盖quick_start等其余文件。报告者7-20验证通过后关闭。 |
| #53 | 需密钥泄露防护:开发者硬编码AK/SK、Token,期望pre-commit离线拦截 | PR !196新增.pre-commit-config.yaml的gitleaks-offline-scan local hook,用本地gitleaks二进制在pre-commit阶段扫描暂存文件;新增.gitleaks.toml继承官方全套规则(useDefault=true),支持自定义规则/白名单/行内屏蔽;2026-07-14合并。与msmonitor#28同主题。 |
| #65 | Pytorch Profiler数据采集参考链接失效,位于advanced_features文档 | PR !227更新文档中全部失效的Profiler参考链接并区分中英文版本,亲验覆盖issue指名的advanced_features/README.md及advisor、cluster_analyse等9个文件;当日维护者标记resolved关闭。 |
| #72 | 命令行–version/–help内容不符合统一规范需整改 | 修复:PR !235(2026-08-18合并,推断关联:issue与PR同引MindStudio工具链命令行统一规范化设计方案,合入20分钟后issue标resolved)——–version改为构建时(python setup.py bdist_wheel)将版本信息写入文件、运行时读取;–help因子命令众多做分层精简。要点:版本号从构建产物注入而非硬编码。 |
| #80 | DevContainer中Run Unit Tests报错,单测跑不通 | 根因:devcontainer跑test的指令使用了local参数,直接执行test时找不到依赖包。修复:PR !241(2026-08-31合并,body显式引用本issue URL)去除test指令中的local参数。要点:容器化开发环境里安装依赖与运行测试的路径解析不同于本地,–local模式会让UT找不到已装依赖。 |
msmonitor(采集监控库)
基于 msPTI 的 npu_monitor 采集接口:marker/npu_trace 采集与 dynolog 通信链
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #6 | monitor.save() 传入合法但不存在的路径时不自动创建目录,保存失败 | 根因:save 接口落盘只创建文件、未递归创建所在目录。修复 PR !47(eejiechu,merged 2026-02-27):调整创建文件逻辑,增加创建文件夹流程,自验合法但缺失的路径可正常落盘。关联为推断:PR 修改原因与评论根因描述逐字一致,时序衔接(issue 09:09→PR 09:48→合入 11:18→根因评论 11:43)。 |
| #7 | 社区cann包场景npu_trace采集host侧数据失败,LD_PRELOAD后全卡复现 | 根因:蓝区构建的cann包内profiler plugin机制未适配mspti等工具,msmonitor(后端mspti)采集异常。修复:cann/runtime !623(merged 2026-03-05,跨仓)合并cann与atls两plugin,atls中msmonitor相关能力同步至cann plugin;用户2026-03-11验证通过。 |
| #9 | monitor接口采集数据大概率卡死(A2/CANN 26.0.0) | 根因:先调用mspti接口再setDevice场景下,enableActivity跨so循环请求同一device_mtx锁致死锁,msmonitor卡住。修复:Ascend/mspti !39(merged 2026-03-23,跨仓)调整锁获取路径;用户替换修复后mspti包验证通过。要点:mspti使能与setDevice的锁序是跨so采集卡死高发点。 |
| #11 | monitor采集marker偶现缺失部分device数据 | 根因:mspti monitor在两线程分别调用msptiSubscribe与msptiActivityEnable,偶现Enable先于Subscribe执行致采集失败。修复:msmonitor !57(merged 2026-03-27)将msptiSubscribe与msptiActivityRegisterCallbacks移入主线程,保证先于Enable执行;新版回归数据完整。 |
| #13 | 安装编译失败无法成功;快速入门要求执行sh文件但未说明该文件位置 | 复核推翻初判:PR !84/!85在quick_start的bash run_ai_task.sh步骤上方补充“为用户脚本示例,请以实际情况为准”说明,逐字解答sh文件位置困惑;同窗!81重写安装指南(软件包清单表、源码编译安装)。issue于5-11关闭。 |
| #16 | 离线安装 mindstudio_monitor whl 缺 xlsxwriter 等三方依赖,装不上 | 根因:whl 未内置三方依赖且文档未说明,离线环境无法联网补装。处理:2026-06-11 官方评论答复已在产品安装文档与 FAQ 中添加三方依赖说明(附文档截图);推断关联文档 PR !102(merged 2026-06-10,body 含补充 FAQ)。属文档补充而非打包整改。 |
| #17 | 处理 mspti 采集数据时 const char* 直接转 std::string,空指针异常退出 | 根因:C 风格字符串构造 std::string 前未判空,mspti 数据含 nullptr 时崩溃。修复 PR !103(eejiechu,merged 2026-06-08):新增 SafeCstrToString 校验转换方法,统一排查替换全部 char*→string 场景(UT/ST 用例后续 PR 补充)。注意时序:issue 建于合入次日,属先修复后补录。 |
| #21 | duration参数状态残留:首次设定后,后续不带参数仍按旧值停止采集 | 根因:npu_monitor按DURATION自动停止后未清除duration值,下次开启不设置即复用上一次配置(日志见DURATION=0仍按时停)。修复:msmonitor !109(merged 2026-06-22)停止时增加清除duration逻辑;2026-06-24标记resolved。要点:RPC下发配置类参数须在任务结束复位。 |
| #23 | README图标/团队描述不规范;示例API名dynamic_profiler错误 | 修复(eejiechu评论答复2026-06-25):图标与团队说明按统一模板整改;文档中torch_npu.dynamic_profiler.step统一更正为torch_npu.profiler.dynamic_profile.step(KG双源证实:op-plugin动态采集文档+msmonitor FAQ均用后者)。用户2026-06-27验证通过。文档族代表之二。 |
| #26 | 26.1.0资料多处跳转链接错误(指向master而非对应版本) | 修复:msmonitor !124(merged 2026-07-15)删除release_note链接改发行版链接、PyTorch资料更名TorchNPU、26.1.0分支链接适配与低错优化;PR正文URL显式关联本issue,用户2026-07-17验证。要点:跨仓文档链接须锁定版本分支防漂移(文档族代表之一)。 |
| #28 | 仓库缺本地离线密钥扫描,硬编码 AK/SK/Token 易进入 Git 历史 | 修复 PR !122(yu_liangbin,merged 2026-07-13):.pre-commit-config.yaml 新增 gitleaks-offline-scan local hook,本地 gitleaks 二进制对暂存文件执行 protect 扫描;新增 .gitleaks.toml 配置。离线不依赖外部服务,提交前从源头拦截凭证入库;标题作者一致,关闭距合入 19 分钟。 |
| #30 | 仓内缺少.clang-format文件,C++格式检查配置缺失 | PR !128以单文件方式新增.clang-format(亲验变更文件仅此一项,与issue标题逐字对应),合入7分钟后issue关闭;一周后!129又在pre-commit集成clang-tidy,补齐C++静态检查配套。 |
| #31 | pre-commit 缺 clang-tidy 步骤,本地提交前无 C++ 静态检查 | 修复 PR !129(eejiechu,merged 2026-07-23):添加 clang-tidy 检查配置文件,并在 pre-commit 规则中增加 clang-tidy 步骤,本地提交前自动执行检测;issue 关闭距合入 4 分钟,标题作者一致。与 #30(.clang-format)同族,本条含完整检查执行链更具工程价值。 |
| #32 | 诉求:为msmonitor建devcontainer统一开发环境,一键构建/UT/调试 | 落地:msmonitor !132(merged 2026-08-12)新增.devcontainer(json+post-create.sh幂等初始化)、Release/Debug/UT/清理4个Task、debugpy调试模板、clangd编译数据库、pre-commit自动挂载;issue finished_at与PR merged_at秒级一致(Fixes自动关闭铁证)。 |
| #38 | DevContainer Build: Debug Mode 编译报错(26.2.0) | 根因:devcontainer下debug版本编译缺少pybind11依赖与libmspti.so依赖。修复:msmonitor !142(merged 2026-08-31)补齐debug构建依赖;PR正文以URL显式关联本issue(https://gitcode.com/Ascend/msmonitor/issues/38),用户2026-09-02验证通过。 |
| #40 | 共享存储多机/容器共用 $HOME 时 dynolog daemon 与 plugin 通信异常 | 根因:UDS socket 路径固定于用户主目录,多机共用共享存储时串扰。修复 PR !147(eejiechu,merged 2026-09-07):新增 GetHostUid()(getifaddrs 收集非环回网卡 MAC,排序哈希生成主机标识),Endpoint 按 hostUid 隔离 socket 路径;finished_at 与 merged_at 秒级一致(自动关闭铁证)。 |
| #42 | 运行时报 UNIX Socket path 不存在或不可写,通信失败 | 根因:!147 将 IPC socket 路径按 hostUid 隔离后,ipcname 匹配规则未同步,找不到新路径。修复 PR !149(hhz0,merged 2026-09-08,body 显式引用本 issue URL):调整 ipcname 匹配规则使其正常匹配;finished_at 与 merged_at 秒级一致。与 #40 属同一 UDS 通信链路的先后两个修复。 |
| #43 | 文档未按产品支持情况打标,英文文档未同步更新 | PR !146完成文档产品支持情况打标与英文文档更新,标题与issue一致;其merged_at与issue的finished_at同为2026-09-10 15:53:45,秒级一致,属PR合入自动关闭的铁证。 |
组合解读:这 50 条里的共性规律
1. 编码与路径的地雷:Windows GBK、中文括号与校验告警化。
同一个 open() 不带 encoding 的坑在本仓踩了两次——读 JSON/文本文件未指定编码,Windows 按默认 GBK 解码 UTF-8 直接乱码或异常,file_manager.py 两处已补 encoding='utf-8'(mpa#35),compare 读 trace JSON 的同款问题由 !228 显式补编码修复(mpa#64)——跨平台 Python 读写文件永远显式指定编码;路径侧:含中文方括号【】的 profiling 路径被安全校验拦截致集群分析整体失败,!157 放行中文方括号、英文 [] 官方确认仍不支持(mpa#34);软链接/长路径/特殊字符校验则从抛异常改为告警日志、仅必然出错项中断(!162),与 #42 同属安全规范精简整改族(mpa#37)。
2. 打包与依赖工程:whl 遮蔽、封顶约束与版本语法。
whl 误打包 misc/test 目录,安装后 site-packages 里的 misc 遮蔽源码目录、import 全部错位——!122/!123 规范打包根治,临时解法删 site-packages/misc(mpa#21);依赖声明 numpy<=1.26.4/pandas<=2.3.2 封顶违反昇腾三方依赖整改规则,!170 改开放 >= 约束兼容 PyTorch/vLLM/SGLang 生态(mpa#41);calibrate_npu_gpu 用了 py3.9+ 的 dict|dict 语法而官方承诺支持 3.7.5+,!199/!204 改 {**d1,**d2} 兼容写法,KG 安装指南确证版本承诺(mpa#52);msmonitor 侧离线装 whl 缺 xlsxwriter 等三方依赖,官方在安装文档与 FAQ 补依赖说明(!102 推断关联)(msm#16)。
3. 安全与工程规范:chmod 移除、gitleaks 双仓同主题与 clang 家族。
安全扫描指出 8 处 os.chmod 覆盖用户权限策略、容器 UID 不一致时直接失败,!174 全部移除、权限交 OS 管理(mpa#42);密钥泄露防护在两仓同周落地同一方案——pre-commit 加 gitleaks-offline-scan local hook + .gitleaks.toml 继承官方规则(msprof-analyze !196 与 msmonitor !122,跨仓同主题)(mpa#53、msm#28);C++ 检查配套两步:!128 单文件新增 .clang-format(msm#30),!129 再在 pre-commit 集成 clang-tidy 补齐静态检查执行链(msm#31)。
4. 集群分析正确性深水区:统计整体丢弃与破坏性删除。
一个 PR 关两单的经典:通信时间与带宽统计任一类缺失时旧逻辑把另一类可用统计整体丢弃——950DT 自动解析缺数据(mpa#82)与缺带宽时两类结果均不落盘(mpa#81)同根因,!243 改为分别处理、缺带宽仍落盘 ClusterCommunicationTime;DB 格式集群通信分析每次整体删除输出目录,已有 cluster_analysis.db 被清、MFU 结果阻塞 Insight 连用,!240 改 DB 输入保留输出目录、text 输入才清理重建(mpa#78);torch profiler 未调 prof.step 则 db 无 STEP_TIME 表、cluster_time_summary 硬依赖即报错,!74 适配表缺失场景(step 置 -1 仍出交付件)、同类 !69 修 mstx_sum(mpa#6);口径澄清非 bug:存在 msprof_*.db 时 -m all 输出 cluster_analysis.db,内容覆盖 cluster_communication.json,标准消费方式是导入 MindStudio Insight(mpa#57)。
5. 数据接入与格式适配:命名约定、新格式与空值容错。
单卡数据文件名无 rank 后缀(ascend_pytorch_profiler.db),mfu recipe 按多卡命名约定匹配致单卡失败,!212 适配并顺带修 --help(mpa#56);msprof_tx 打点改 JSON 结构后带反斜杠转义且 streamId 关联失配,!237(分支名显式 fix/issue-73)规范化通信 JSON 兼容转义/未转义、按 connectionId 或 JSON 内 streamId 关联 TASK(mpa#73);A5 上集群分析+advisor 联用聚合修复五项:关 stdout 致进度条写已关流出错、SlowLinkExport 缺抽象方法、int 转 shape 空字符串、多输出 memory 漏算等(!164,官方注明均为公共问题)(mpa#39);PYTORCH_API 表 name 为空时 advisor 直接抛错,!182 容错(mpa#46)。
6. msmonitor 采集时序与死锁:跨 so 锁序、线程倒挂与状态残留。
采集卡死三连各有根因:先调 mspti 接口再 setDevice 时 enableActivity 跨 so 循环请求同一 device_mtx 死锁,修复在 Ascend/mspti !39(跨仓)调整锁获取路径(msm#9);msptiSubscribe 与 msptiActivityEnable 分居两线程、偶现 Enable 先于 Subscribe 执行致 marker 缺 device 数据,!57 把 Subscribe 与回调注册移入主线程保证先于 Enable(msm#11);社区 cann 包场景 npu_trace host 侧采集失败是蓝区构建的 profiler plugin 机制未适配 mspti,cann/runtime !623(跨仓)合并 cann 与 atls 两 plugin 解决(msm#7)。状态与输入校验三条:DURATION 自动停止后未清值、下次不带参数仍按旧值停采,!109 停止时清除(RPC 下发配置类参数须任务结束复位)(msm#21);save() 传合法但不存在路径不建目录,!47 增加创建文件夹流程(msm#6);mspti 数据 char* 直接转 std::string 遇 nullptr 崩溃,!103 新增 SafeCstrToString 并全量替换(时序倒挂:issue 建于合入次日,先修复后补录)(msm#17)。
7. 通信链与开发环境:UDS 隔离、修复引出的回归与 devcontainer。
共享存储多机共用 $HOME 时 dynolog daemon 与 plugin 的 UDS socket 串扰,!147 新增 GetHostUid()(非环回网卡 MAC 排序哈希)按主机隔离 socket 路径(msm#40);次日即出现 UNIX Socket path 找不到——!147 改路径后 ipcname 匹配规则未同步,!149 调整匹配规则,是修复引出的回归、两条须成对理解(msm#42)。devcontainer 三连:msmonitor !132 落地统一开发环境(4 个 Task+debugpy+clangd,秒级自动关闭铁证)(msm#32)、!142 补 Debug 构建的 pybind11 与 libmspti.so 依赖(msm#38);msprof-analyze 侧 DevContainer 跑 UT 报错是指令带 local 参数致依赖找不到,!241 去除(mpa#80);CLI 体验整改:–version 改构建时注入版本文件、运行时读取,–help 分层精简(!235)(mpa#72)。
8. 性能与易用性:标准库替代自研、校验松绑与 CLI 补齐。
compare 对齐用自研位图 LCS 大 JSON 下 7 小时跑不完,!118 换 Python 标准库 difflib 后 3GB trace 对比降到 50 分钟——通用算法优先复用标准库(mpa#20);校验整改四连:属主校验改警告、仅新建 DB 赋权、–force 经 initializer 透传、DB 上限 8→20GB(!114 body 与 issue 四点逐条对应)(mpa#19);CLI 命令行入口补 UT(!155 关闭前 61 秒合入、时序铁证,后续 !145/!147/!151/!146/!156 系列跟进)(mpa#36);advisor all 子命令缺 --torch_version/-tv 选项致 No such option '-t',!176 补齐与其它子命令一致(mpa#38)。
9. 文档整改族对账:链接漂移、双语图与 API 名考古。
两仓同期的文档整改潮,最值得记的是三类硬伤:链接硬编码 master 致版本读者被带向未发布内容(msprof-analyze !195、msmonitor !124 均为 body/URL 显式关联)(mpa#48、msm#26);26.0.0 英文资料配图为中文,!197 批量替换 docs/en/design 六张图、!209 清残留(mpa#49);示例 API 名写错——torch_npu.dynamic_profiler.step 更正为 torch_npu.profiler.dynamic_profile.step(KG 双源证实)(msm#23)。patch 级铁证范式:advisor 规则 YAML 中失效的 support.huawei.com 链接被 !95/!97 逐字替换为 issue 建议的 hiascend 地址(mpa#17);Profiler 参考链接批量更新(!227 覆盖指名 9 文件)(mpa#65);资料专项代表条 !177(目录重构+补 A5 CCU 不支持通信矩阵说明)(mpa#44);文档重构 !84 新增「数据要求」章节与交付件指导(#14 合入 34 分钟后关闭、#15 关闭晚于合入 32 分钟、#12 PR 作者与关闭评论同人同日,各自闭环)(mpa#14、mpa#15、mpa#12);msmonitor 快速入门补「用户脚本示例」说明与安装指南重写(!84/!85+!81,初判 closed≠fixed 后全量复核翻案)(msm#13);支持打标(!146 秒级自动关闭铁证)(msm#43)。
排错指引(从这批 issue 提炼)
| 症状 | 第一优先动作 | 本篇相关案例 |
|---|---|---|
| Windows 中文乱码/GBK 解码失败 | open() 显式 encoding=‘utf-8’ | mpa#35、#64 |
| 中文/特殊字符路径被拦 | 校验已告警化;【】已放行、英文[]仍不支持 | mpa#34、#37 |
| whl 装后 import 错乱/装不上 | 查 site-packages 遮蔽;离线补三方依赖;封顶约束改开放 | mpa#21、msm#16、mpa#41 |
| 集群分析缺数据/结果被删 | 统计分别落盘;DB 输入保留输出目录 | mpa#82、#81、#78 |
| db 输出怎么消费 | 导入 MindStudio Insight 可视化 | mpa#57、#15 |
| 单卡/新格式数据不识别 | 文件名无 rank 后缀;JSON 转义与 streamId 关联 | mpa#56、#73 |
| 采集卡死/marker 缺数据 | mspti 锁序与线程时序;社区 cann 包用合并后 plugin | msm#9、#11、#7 |
| 采集参数行为怪 | duration 类配置须任务结束复位 | msm#21 |
| 共享存储通信串扰/socket 找不到 | UDS 按 hostUid 隔离 + ipcname 匹配成对升级 | msm#40、#42 |
| DevContainer UT/编译失败 | 去 local 参数;补 Debug 依赖 | mpa#80、msm#38 |
| 对比工具极慢 | 标准库 difflib 替代自研 LCS | mpa#20 |
| 文档链接带偏版本 | 锁定版本分支,勿硬编码 master | mpa#48、msm#26 |
涉及具体 API 语义与配置口径的核对,用了昇腾知识图谱(ascend.wiki)的官方文档节点(如 msprof-analyze 安装指南 Python 3.7.5+ 承诺、cluster_analyse_instruct 数据要求与 db 输出口径、torch_npu.profiler.dynamic_profile.step API 名双源证实、dynolog UDS 链路 FAQ、msptiActivityEnable 语义等);各条解答中 KG 核实过的部分不再单独标注,评论与 PR 均无依据的信息一律未收录。本篇行内 PR 合并状态一律经 pulls API 以 state=merged+merged_at 判定。考据披露:两仓 PR 正文几乎不写 #N 引用(msprof-analyze 254 个 PR、msmonitor 154 个 PR,显式引用各仅数条且多为完整 URL 形态)——本篇关联依据按强度分层:秒级 finished_at==merged_at 自动关闭铁证(msm#32/#40/#42/#43、mpa#36 关闭前 61 秒);分钟级时序+作者+标题三元(「代码已合入」评论距 merge 1-4 分钟);PR 分支名显式含 issue-73(mpa#73);patch 级逐字比对(mpa#17 的 !95/!97 逐字采用 issue 建议地址、msm#13 的 !84/!85 补说明);其余推断关联均已在行内标注(mpa#34/#39/#72/#78/#81/#82/#12/#15、msm#16 等)。跨仓修复 2 条(msm#7→cann/runtime !623、msm#9→Ascend/mspti !39),另有跨仓同主题 1 组(mpa#53 与 msm#28 同周同方案)。时序陷阱实录:msm#17 先修复后补录、mpa#78 的 PR 早于 issue(内部补登记)、mpa#6 的 !64 早于 issue 近一个月。closed≠fixed 弃收(mpa#32 升级后仍报错无下文);msm#13 初判 closed≠fixed、全量重扫 PR 后翻案收录;同族择优弃收(mpa#16→#17、msm#19/#18 批量整改、mpa#85 打标低价值;msm#30 初筛曾按同族弃、回填批验 !128 实据后收录)。68 条候选 4+1 批 worker 深析恰留 50 无储备。接入昇腾知识图谱 https://gitcode.com/agent0/kg-tools
系列下一篇:Ascend 精选(十四)—— 长尾仓收官巡礼(MindCluster-AscendNPUBurn / MEF / ATK / mindcluster-deploy / OMSDK / ModelZoo-PyTorch 等),或转 mindspore 组织新篇,欢迎留言点仓。
更多推荐


所有评论(0)