MindStudio-Monitor:基于dynolog和MSPTI的集群性能监控工具项目

MindStudio-Monitor(msmonitor)是MindStudio全流程工具链推出的一站式在线监控工具,提供用户在集群场景性能监控定位端到端能力。

分支9Tags61

MindStudio Monitor

简介

MindStudio Monitor(msMonitor,一站式在线监控工具)提供用户在集群场景性能监控定位端到端能力。

msMonitor基于dynolog开发,结合AI框架(Ascend PyTorch ProfilerMindSpore Profiler)的动态采集能力和MSPTI,为用户提供nputracenpu-monitor功能:

  • npu-monitor功能:轻量常驻后台,监控关键算子耗时。
  • nputrace功能:获取到框架、CANN以及device的详细性能数据。

msMonitor

如上图所示msMonitor分为三部分:

  1. Dynolog daemon:dynolog守护进程,每个节点只有一个守护进程,负责接收dyno CLI的RPC请求、触发nputrace和npu-monitor功能、上报数据的处理以及最终数据的展示,dynolog的详细介绍请参见dynolog
  2. Dyno CLI:dyno客户端,为用户提供nputrace和npu-monitor子命令,任意节点都可以安装,dyno的详细介绍请参见dyno
  3. MSPTI Monitor:基于MSPTI实现的监控子模块,通过调用MSPTI的API获取性能数据,并上报给Dynolog daemon。

目录结构

关键目录如下,详细目录介绍参见项目目录

├── docs                    # 项目文档目录
│   └── zh                  # 中文文档目录
├── dynolog_npu             # dynolog_npu模块代码目录
├── plugin                  # 插件模块代码目录
├── scripts                 # 构建、测试等脚本目录
│   ├── build.sh            # dynolog_npu构建脚本
│   ├── run_st.sh           # 系统测试脚本
│   └── run_ut.sh           # 单元测试脚本
├── test                    # 测试代码目录
│   ├── st                  # 系统测试用例
│   └── ut                  # 单元测试用例
├── third_party             # 第三方依赖库
└── README.md               # 项目说明文档

版本说明

msMonitor由三个文件组成,如下表所示。

其中dyno和dynolog可以被打包为deb包或者rpm包。目前msMonitor支持在PyTorch框架和MindSpore框架上运行。 最新的软件包见《版本配套说明》。

文件名 用途
dyno dyno客户端二进制文件
dynolog dynolog服务端二进制文件
msmonitor_plugin-{mindstudio_version}-cp{python_version}-cp{python_version}-linux_{system_architecture}.whl MSPTI Monitor、IPC等公共能力工具包,{mindstudio_version}表示mindstudio版本号,{python_version}表示python版本号,{system_architecture}表示CPU架构系统

版本配套说明

msMonitor详细版本配套关系及对应软件包下载链接如下:

msMonitor版本 发布日期 配套CANN版本 配套torch_npu版本 配套MindSpore版本 下载链接 校验码
8.3.0(aarch64) 2025-12-29 8.3.RC1及以上 v7.3.0及以上 2.7.2及以上 aarch64_8.3.0.zip 2c675ae346dfc1c70f5e9c7103d6f8c7e53be00dca28ed5f9cc577ac59e4bc44
8.3.0(x86) 2025-12-29 8.3.RC1及以上 v7.3.0及以上 2.7.2及以上 x86_8.3.0.zip 1a38cc141e67c50eb09ebdc757c1fd3ed54439f227459e71292b2d18bb78e7f0
8.1.0(aarch64) 2025-07-11 8.1.RC1及以上 v7.1.0及以上 2.7.0-rc1及以上 aarch64_8.1.0.zip ce136120c0288291cc0a7803b1efc8c8416c6105e9d54c17ccf2e2510869fada
8.1.0(x86) 2025-07-11 8.1.RC1及以上 v7.1.0及以上 2.7.0-rc1及以上 x86_8.1.0.zip 097d11c7994793b6389b19259269ceb3b6b7ac5ed77da3949b3f09da2103b7f2

环境部署

安装msMonitor工具。包括软件包安装和编译安装两种方式,具体请参见《msMonitor工具安装指南》。

推荐使用软件包安装,步骤如下:

  1. 根据版本配套说明选择对应软件包并下载到Linux安装环境。

  2. 校验包完整性。

    进入zip包所在目录,执行如下命令。

    sha256sum {name}.zip
    

    {name}为zip包名称。

    若回显呈现对应版本zip包一致的校验码,则表示下载了正确的性能工具zip安装包。示例如下:

    sha256sum aarch64_8.1.0.zip
    
  3. 安装whl包。

    # 解压压缩包
    mkdir x86
    unzip x86_8.1.0.zip -d x86
    
    # 进入解压后的目录
    cd x86
    
    # 安装whl包,须选择与当前环境Python版本一致的whl包
    pip install msmonitor_plugin-{mindstudio_version}-cp{python_version}-cp{python_version}-linux_{system_architecture}.whl
    
  4. 安装dynolog。

  5. 有以下三种安装方式可供选择,根据用户服务器系统自行选择:

    • 方式一:使用deb软件包安装(适用于Debian/Ubuntu等系统)。

      dpkg -i --force-overwrite dynolog*.deb
      
    • 方式二:使用rpm软件包安装(适用于RedHat/Fedora/openSUSE等系统)。

      rpm -ivh dynolog-*.rpm --nodeps
      
    • 方式三:直接复制bin文件夹到系统中。

快速入门

npu-monitor和nputrace功能详细说明请参见特性介绍章节,下面介绍msMonitor常见的使用场景:

  1. 先使用npu-monitor功能获取关键算子耗时。
  2. 当发现监控到关键算子耗时劣化,使用nputrace功能采集详细性能数据做分析。

操作步骤

  1. 启动dynolog daemon进程。

    命令示例如下:

    # 命令行方式开启dynolog daemon
    dynolog --enable-ipc-monitor --certs-dir /home/server_certs
    
    # 如需使用Tensorboard展示数据,传入参数--metric_log_dir用于指定Tensorboard文件落盘路径
    dynolog --enable-ipc-monitor --certs-dir /home/server_certs --metric_log_dir /tmp/metric_log_dir    # dynolog daemon的日志路径为:/var/log/dynolog.log
    
  2. 配置msMonitor环境变量。

    export MSMONITOR_USE_DAEMON=1
    
  3. 设置LD_PRELOAD启动MSPTI(启动npu-monitor功能设置)。

    # 默认路径示例:export LD_PRELOAD=/usr/local/Ascend/ascend-toolkit/latest/lib64/libmspti.so
    export LD_PRELOAD=<CANN toolkit安装路径>/ascend-toolkit/latest/lib64/libmspti.so
    
  4. 启动训练或推理任务。

    bash run_ai_task.sh
    
  5. 使用dyno命令行触发npu-monitor监控关键算子耗时。

    # 开启npu-monitor,上报周期30s, 上报数据类型为Kernel
    dyno --certs-dir /home/client_certs npu-monitor --npu-monitor-start --report-interval-s 30 --mspti-activity-kind Kernel
    
    # 关闭npu-monitor
    dyno --certs-dir /home/client_certs npu-monitor --npu-monitor-stop
    
  6. 使用dyno命令行触发nputrace采集详细trace数据(需要关闭npu-monitor功能才能触发nputrace功能)。

    # 从第10个step开始采集,采集2个step,采集框架、CANN和device数据,同时采集完后自动解析以及解析完成不做数据精简,落盘路径为/tmp/profile_data
    dyno --certs-dir /home/client_certs nputrace --start-step 10 --iterations 2 --activities CPU,NPU --analyse --data-simplification false --log-file /tmp/profile_data
    

特性介绍

Note

由于底层资源限制,npu-monitor功能和nputrace不能同时开启。

执行nputrace或者npu-monitor命令后,响应结果里有一个response的json字符串。该字符串中的commandStatus字段用于标识命令是否生效:effective表示命令会生效,ineffective表示命令无效。其他字段均为dynolog的原生字段(仅状态为effective时存在)。

status状态查询

dyno --certs-dir <CERT_DIR> status  # dyno和dynolog中--certs-dir传入参数值须保持一致;<CERT_DIR>可传入证书路径,如果不使用TLS证书密钥,设置为NO_CERTS。

输入以上命令后,会打印一个json字符串,例如:{"current_step":1,"npumonitor":"Idle","nputrace":"Ready","start_step":5,"stop_step":10}。

状态说明:

  • Uninitialized:程序未启动或者dynolog init之前。
  • Idle:没有下发命令。
  • Ready:命令已下发,暂未到达指定step。
  • Running:正在采集数据。

其他说明:

  • nputrace字段有Uninitialized、Idle、Running、Ready四种状态,npumonitor字段有Uninitialized、Idle、Running三种状态。
  • start_step、stop_step表示采集step的范围。PyTorch框架下有效采集范围为[start_step, stop_step),即包含start_step,但不包含stop_step。MindSpore框架下有效采集范围为[start_step, stop_step],包含stop_step。
  • nputrace为Running或者Ready状态时,才会打印start_step和stop_step。
  • current_step默认值为-1。
  • MindSpore框架下nputrace没有Ready状态。

npu-monitor特性

npu-monitor特性为用户提供轻量化监控关键指标的能力,npu-monitor基于MSPTI开发,用户可以通过npu-monitor查看模型运行时的计算、通信算子执行耗时。 具体使用方式请参见npu-monitor,MindSpore框架下使用方式请参见MindSpore框架下msMonitor的使用方法

nputrace特性

nputrace特性为用户提供动态触发AI框架(Ascend PyTorch ProfilerMindSpore Profiler)采集解析的能力,即实现模型拉起后不需要中断模型运行,可多次触发不同配置Profiler采集解析。采集的性能数据可以使用MindStudio Insight进行可视化,效果图如下。 具体使用方式请参见nputrace,MindSpore框架下使用方式请参见MindSpore框架下msMonitor的使用方法MindStudio Insight TimeLine可视化效果图

FAQ

FAQ汇总了在使用msMonitor工具过程中可能遇到的问题,具体请参见FAQ

安全声明

MindStudio Monitor产品的安全加固信息、公网地址信息等内容,具体请参见《安全声明》。

免责声明

  • 本工具仅供调试和开发使用,使用者需自行承担使用风险,并理解以下内容:
    • 数据处理及删除:用户在使用本工具过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防不必要的信息泄露。
    • 数据保密与传播:使用者了解并同意不得将通过本工具产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本工具及其开发者概不负责。
    • 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本工具及其开发者概不负责。
  • 免责声明范围:本免责声明适用于所有使用本工具的个人或实体。使用本工具即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本工具。
  • 在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本工具所产生的任何问题或疑问,请及时联系开发者。

License

MindStudio Monitor产品的使用许可证,具体请参见LICENSE文件。

介绍msMonitor工具docs目录下的文档适用CC-BY 4.0许可证,具体请参见LICENSE文件。

贡献声明

  1. 提交错误报告:如果您在msMonitor中发现了一个不存在安全问题的漏洞,请在msMonitor仓库中的Issues中搜索,以防该漏洞被重复提交,如果找不到漏洞可以创建一个新的Issues。如果发现了一个安全问题请不要将其公开,请参阅安全问题处理方式。提交错误报告时应该包含完整信息。
  2. 安全问题处理:本项目中对安全问题处理的形式,请通过邮箱通知项目核心人员确认编辑。
  3. 解决现有问题:通过查看仓库的Issues列表可以发现需要处理的问题信息,可以尝试解决其中的某个问题。
  4. 如何提出新功能:请使用Issues的Feature标签进行标记,我们会定期处理和确认开发。
  5. 开始贡献:
    1. Fork本项目的仓库。
    2. Clone到本地。
    3. 创建开发分支。
    4. 本地测试:提交前请通过所有的单元测试,包括新增的测试用例。
    5. 提交代码。
    6. 新建Pull Request。
    7. 代码检视:您需要根据评审意见修改代码,并重新提交更新。此流程可能涉及多轮迭代。
    8. 当您的PR获得足够数量的检视者批准后,Committer会进行最终审核。
    9. 审核和测试通过后,CI会将您的PR合并入到项目的主干分支。

建议与交流

欢迎大家为社区做贡献。如果有任何疑问或建议,请提交Issues,我们会尽快回复。感谢您的支持。

致谢

msMonitor由华为公司的下列部门联合贡献 :

华为公司:

  • 昇腾计算MindStudio开发部

感谢来自社区的每一个PR,欢迎贡献msMonitor!

项目介绍

MindStudio-Monitor(msmonitor)是MindStudio全流程工具链推出的一站式在线监控工具,提供用户在集群场景性能监控定位端到端能力。

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

C++70.44%
Python10.09%
Rust9.38%
Shell6.06%
CMake4.02%