← 返回总览

msmonitor_review_run

代表一个真实的文档体验场景。

总体结论

总体评分
58/100
走通状态
部分走通
评审分支
master
评审提交
0dbb833d716e19ee41caf1ae81e08a949b0f7c8c
审查时间
2026-03-24 14:33:44 UTC
体验环境
Linux msprof 5.15.0-119-generic #129-Ubuntu SMP Fri Aug 2 20:37:01 UTC 2024 aarch64 GNU/Linux
已具备环境
/usr/local/Ascend/ascend-toolkit/set_env.sh 可用;conda 环境 tmc_verl_vllm13_py311 可用
隔离策略
/tmp/msmonitor_review 独立克隆仓库;Python 构建与安装使用 conda activate tmc_verl_vllm13_py311;未做系统级安装,不修改宿主全局服务配置

文档结构完整、特性说明较全,但“新人按 README/安装指南直接上手”的主路径并不稳。mindstudio_monitor wheel 编译安装可以在给定环境中走通;但 dynolog/dyno 的源码编译路径被外网 GitHub 子模块依赖阻塞,快速入门要求的二进制前提未在仓内直接提供,导致核心命令无法在本次真实环境中继续验证。

关键风险

体验流程

选择路径

步骤 1:识别安装路径与依赖

OK
本步说明
目标:识别安装路径与依赖。这一环已按文档完成,可以作为后续步骤继续推进的可靠前提。
结果
成功梳理出软件包安装与编译安装两条路径
判断依据
文档结构清晰,入口明确
验证结果

步骤 2:验证 CANN 与 conda 环境

OK
本步说明
目标:验证 CANN 与 conda 环境。这一环已按文档完成,可以作为后续步骤继续推进的可靠前提。
文档依据
用户提供环境信息
结果
/usr/local/Ascend/ascend-toolkit/set_env.sh 存在;tmc_verl_vllm13_py311 可激活
判断依据
实机验证通过
源码构建

步骤 3:执行 ./plugin/build.sh 编译安装 wheel

OK
本步说明
目标:执行 ./plugin/build.sh 编译安装 wheel。这一环已按文档完成,可以作为后续步骤继续推进的可靠前提。
结果
真实构建出 mindstudio_monitor-26.0.0-cp311-cp311-linux_aarch64.whlpip install
判断依据
构建日志显示 wheel 生成成功,耗时约 0:07.98
源码构建

步骤 4:执行 bash scripts/build.sh 编译 dynolog/dyno

阻塞阻塞
本步说明
目标:执行 bash scripts/build.sh 编译 dynolog/dyno。这一环已经成为主流程中断点,如果不补齐前置条件或修正文档,后续步骤无法正常继续。 从审查优先级看,这也是一个需要优先修复的关键节点。
结果
构建在拉取 third_party/dynolog/third_party/tensorboard_logger 及其他 GitHub 子模块阶段卡住
判断依据
真实报错:Failed to connect to github.com port 443;220s 超时后仍未完成
启动服务

步骤 5:启动 dynolog daemon

阻塞阻塞
本步说明
目标:启动 dynolog daemon。这一环已经成为主流程中断点,如果不补齐前置条件或修正文档,后续步骤无法正常继续。 从审查优先级看,这也是一个需要优先修复的关键节点。
结果
dynolog 命令不存在
判断依据
上一步未拿到二进制;仓内也无现成 dynolog / dyno 文件
执行步骤

步骤 6:配置 LD_PRELOAD

偏差继续
本步说明
目标:配置 LD_PRELOAD。这一环需要带着执行偏差继续,说明文档对环境或路径存在隐含假设。 这一步虽然不一定立刻卡死,但会显著增加新手试错成本。
结果
两份文档给出不同路径风格
判断依据
实机存在 /usr/local/Ascend/ascend-toolkit/latest/lib64/libmspti.so,但子文档示例使用 /usr/local/Ascend/cann/lib64/libmspti.so
运行样例

步骤 7:启动训练任务

阻塞
本步说明
目标:启动训练任务。这一环已经成为主流程中断点,如果不补齐前置条件或修正文档,后续步骤无法正常继续。 这一步虽然不一定立刻卡死,但会显著增加新手试错成本。
结果
文档引用 run_ai_task.sh / train.sh,仓内未提供对应脚本
判断依据
新人无法直接执行最小验证
功能验证

步骤 8:执行 dyno ... npu-monitor / nputrace

未执行阻塞
本步说明
目标:执行 dyno ... npu-monitor / nputrace。这一环没有进入执行,通常是因为前序步骤已经阻塞。 从审查优先级看,这也是一个需要优先修复的关键节点。
结果
dyno 二进制未就绪无法继续
判断依据
前置条件未满足

问题概览

ID严重程度分类文档位置问题简述
ISSUE-01阻塞完整性 / 正确性源码编译 dynolog 依赖多个 GitHub 子模块,文档未提前声明网络前提与替代方案
ISSUE-02完整性快速入门直接要求运行 dynolog / dyno,但仓内无现成二进制,也未说明如何先获得它们
ISSUE-03正确性 / 可读性LD_PRELOAD 路径写法不一致,容易误导用户
ISSUE-04完整性 / 易用性示例依赖 run_ai_task.sh / train.sh,但仓库不提供最小可运行样例
ISSUE-05易用性 / 完整性证书目录使用 /home/server_certs/home/client_certs,缺少 “NO_CERTS” 直连示例闭环
ISSUE-06环境友好性文档默认 pip install 到当前环境,未提醒建议隔离环境;实际执行出现 root pip 警告
ISSUE-07正确性 / 完整性文档宣称安装成功输出固定字符串,但真实执行可能显示 “already installed” 而非示例文案

详细问题

ISSUE-01 dynolog 源码编译被 GitHub 子模块网络阻塞

阻塞
分类:完整性 / 正确性
原文摘录

bash scripts/build.sh;文档仅列出 gcc / rust / protobuf 等依赖,没有说明还需要稳定访问多个 GitHub 子模块

复现上下文

/tmp/msmonitor_review 按文档执行 timeout 220 bash scripts/build.sh

实际现象

真实输出先进入 git submodule update --init,随后在 Cloning into '/tmp/msmonitor_review/third_party/dynolog/third_party/tensorboard_logger'... 及其他 GitHub 子模块阶段卡住;错误摘要为 Failed to connect to github.com port 443 after 130188 ms: Connection timed out

影响分析

新人即使满足编译器、Rust、CANN 条件,也会因为文档没提前声明外网访问依赖而卡死在构建入口,无法拿到 dynolog/dyno

修改建议

编译并安装dynolog 前补一节“网络前提”,明确需要访问 github.com;同时提供国内镜像/离线包/关闭 TensorBoard 依赖的替代路径,或直接推荐优先使用软件包安装

ISSUE-02 快速入门缺少可执行前提闭环

分类:完整性
原文摘录

dynolog --enable-ipc-monitor --certs-dir /home/server_certsdyno --certs-dir /home/client_certs ...

复现上下文

真实检查 command -v dynologcommand -v dyno

实际现象

结果为 DYNLOG_NOT_INSTALLEDDYNO_NOT_INSTALLED

影响分析

README/快速入门像是“拿来即跑”,但新人从源码仓库开始时并不能直接得到这两个命令;如果没先下载 zip 包或成功编译,整个快速入门不可执行

修改建议

在快速入门开头明确写出“以下步骤要求已通过软件包安装或编译安装拿到 dynolog/dyno”;增加 which dynolog && which dyno 自检步骤和期望输出

ISSUE-03 LD_PRELOAD 路径说明前后不一致

分类:正确性 / 可读性
原文摘录

README 写 export LD_PRELOAD=<CANN toolkit安装路径>/ascend-toolkit/latest/lib64/libmspti.sonpumonitor_instruct.mdexport LD_PRELOAD=<CANN Toolkit安装路径>/cann/lib64/libmspti.so

复现上下文

实机检查发现 /usr/local/Ascend/ascend-toolkit/latest/lib64/libmspti.so 存在,且它链接到 /usr/local/Ascend/cann/tools/mspti/lib64/libmspti.so

实际现象

两份文档都可能在部分环境可用,但表达不统一,且第二种写法与本机真实软链位置并不完全一致

影响分析

新人很容易误以为两种路径都应直接存在,遇到软链或目录差异时不知该以哪份文档为准

修改建议

统一成一条推荐写法,并补充“可通过 ls -l $(python - <<<'') 不现实,建议直接 ls -l /usr/local/Ascend/ascend-toolkit/latest/lib64/libmspti.so 自检” 的说明;同时解释该软链可能指向 cann/tools/mspti/lib64/libmspti.so

ISSUE-04 文档依赖外部训练脚本但未提供最小可运行样例

分类:完整性 / 易用性
原文摘录

bash run_ai_task.shbash train.sh

复现上下文

检查仓库目录后未发现 run_ai_task.shtrain.sh 样例

实际现象

文档要求启动训练或推理任务,但没有给出最小 demo、环境变量注入方式、成功标志或参考仓库

影响分析

新手不知道要在哪个项目里启动任务,也不知道任务需要满足什么条件(PyTorch/torch_npu、优化器约束、step 概念来源等)

修改建议

补充一个最小 PyTorch 示例仓或脚本片段,至少说明“需在目标训练脚本所在 shell 中导出 MSMONITOR_USE_DAEMON / LD_PRELOAD 后再启动任务”,并给出 10~20 行可复现 demo

ISSUE-05 证书路径示例不闭环,缺少 NO_CERTS 主路径示例

分类:易用性 / 完整性
原文摘录

大量示例使用 /home/server_certs/home/client_certs;而 dyno_instruct.md 仅在参数表中提到 NO_CERTS

复现上下文

本次未生成 TLS 证书,按新手最小路径理应优先尝试免证书模式

实际现象

文档没有把“无证书快速验证”串成完整命令序列

影响分析

新人会先被 /home/server_certs/home/client_certs 卡住,不知道这些目录如何创建、内容从哪来、是否可以跳过

修改建议

在 README 和 quick start 直接增加一套 --certs-dir NO_CERTS 的最小验证命令;把 TLS 证书模式下沉到进阶章节

ISSUE-06 文档缺少隔离环境建议,实际执行出现 root pip 风险提示

分类:环境友好性
原文摘录

./plugin/build.sh -> pip install ${files}

复现上下文

在用户指定 conda 环境中执行 plugin/build.sh

实际现象

pip 输出 WARNING: Running pip as the 'root' user can result in broken permissions...

影响分析

共享机器或 root 环境下,新人可能污染环境或误把宿主环境问题当作文档问题

修改建议

在安装章节前增加建议:优先 conda activate <env>python -m venv;同时脚本和文档都建议使用 python -m pip install,并显式提示不要在未隔离的 root 基础环境中执行

ISSUE-07 成功判定示例过于理想化,与真实输出不完全一致

分类:正确性 / 完整性
原文摘录

Successfully installed mindstudio_monitor-<version> pybind11-<version>

复现上下文

重复执行 plugin/build.sh

实际现象

真实输出为 mindstudio-monitor is already installed with the same version as the provided wheel. Use --force-reinstall to force an installation of the wheel.,随后只安装了 xlsxwriter

影响分析

用户可能以为安装失败,因为输出与文档示例不一样

修改建议

在成功判定中补充“若已安装相同版本,可能出现 already installed 提示,属于可预期现象;如需覆盖安装请加 --force-reinstall

小白用户视角

优先修复建议

  1. 先修复阻塞主流程的问题:在 docs/zh/install_guide.md 明确 dynolog 编译的网络前提,并提供国内镜像、离线依赖或关闭 TensorBoard 依赖的构建方式。
  2. 再补齐前置条件和验证步骤:在 README / quick start 增加 dynologdyno 是否就绪、NO_CERTS 免证书模式、LD_PRELOAD 自检命令。
  3. 再提供最小样例:补一个可直接运行的 PyTorch demo 或至少给出训练脚本模板。
  4. 统一路径和术语:统一 LD_PRELOAD 示例,统一 mindstudio_monitor / msmonitor_plugin 命名,减少歧义。
  5. 最后优化环境友好性:明确推荐在 conda/venv 中安装,补充“重复安装”和“already installed”属于什么状态。

文档依据

点击正文中的文档位置会跳到下方对应摘录。为避免正文过长,这部分默认折叠。

查看文档依据摘录

文档依据摘录

点击报告中的文档位置可直接跳转到这里,查看本地源码中的对应行内容。

README.md:132README.md
132: 1. 启动dynolog daemon进程。
README.md:137README.md
137:    # 命令行方式开启dynolog daemon
README.md:150README.md
150: 3. 设置LD_PRELOAD启动MSPTI(启动npu-monitor功能设置)。
README.md:152README.md
152:    ```bash
README.md:157README.md
157: 4. 启动训练或推理任务。
README.md:163README.md
163: 5. 使用dyno命令行触发npu-monitor监控关键算子耗时。
README.md:173README.md
173: 6. 使用dyno命令行触发nputrace采集详细trace数据(需要关闭npu-monitor功能才能触发nputrace功能)。
README.md:63README.md
63: ## 环境部署
docs/zh/dyno_instruct.md:14docs/zh/dyno_instruct.md
14: | --port      | i32      | dynolog daemon进程监听的端口号,默认值1778。                 |    N     |
docs/zh/dynolog_instruct.md:31docs/zh/dynolog_instruct.md
31: # 方法2:命令行执行
docs/zh/install_guide.md:158docs/zh/install_guide.md
158: ### 编译并安装dynolog
docs/zh/install_guide.md:164docs/zh/install_guide.md
164:    ```bash
docs/zh/install_guide.md:191docs/zh/install_guide.md
191: ### 编译并安装mindstudio_monitor
docs/zh/install_guide.md:195docs/zh/install_guide.md
195: #### shell脚本一键安装
docs/zh/install_guide.md:202docs/zh/install_guide.md
202: 安装成功打印如下信息:
docs/zh/install_guide.md:65docs/zh/install_guide.md
65: ## 编译安装
docs/zh/install_guide.md:67docs/zh/install_guide.md
67: ### 安装依赖
docs/zh/npumonitor_instruct.md:72docs/zh/npumonitor_instruct.md
72: 4. 设置LD_PRELOAD使能MSPTI。
docs/zh/npumonitor_instruct.md:74docs/zh/npumonitor_instruct.md
74:    ```bash
docs/zh/nputrace_instruct.md:77docs/zh/nputrace_instruct.md
77: 
docs/zh/quick_start.md:13docs/zh/quick_start.md
13: 
docs/zh/quick_start.md:14docs/zh/quick_start.md
14: 1. 启动dynolog daemon进程。
docs/zh/quick_start.md:39docs/zh/quick_start.md
39: 4. 启动训练或推理任务。