npumonitor特性

npumonitor通过dyno CLI中的npumonitor子命令开启:

dyno --certs-dir <CERT_DIR> npu-monitor [SUBCOMMANDS]

说明

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

查看npumonitor支持的命令和帮助

dyno npu-monitor --help

npu-monitor的SUBCOMMANDS(子命令)选项如下:

子命令 参数类型 说明 PyTorch支持 MindSpore支持 是否必选
--npu-monitor-start action 开启性能监控,设置参数后生效,默认不生效 Y Y N
--npu-monitor-stop action 停止性能监控,设置参数后生效,默认不生效 Y Y N
--report-interval-s int 性能监控数据上报周期,单位s,需要在启动时设置。默认值60 Y Y N
--mspti-activity-kind String 性能监控数据上报数据类型,可以设置单个或多个,多个类型以逗号分隔,每次设置时刷新全局上报类型。可选值范围[Marker, Kernel, API, Hccl, Memory, MemSet, MemCpy, Communication] , 默认值Marker Y Y N
--log-file String 性能数据采集落盘的路径,当前仅支持mspti-activity-kind设置为MarkerKernelAPICommunication,4种类型数据的导出,落盘数据格式为db,落盘文件名为msmonitor_{process_id}_{timestamp}_{rank_id}.db,db内容说明请参考msprof导出db格式数据说明,db数据可以使用MindStudio Insight工具进行可视化呈现(MindStudio Insight暂不支持呈现单进程多卡场景采集的msmonitor.db数据),默认值为空,表示不落盘 Y Y N

npu-monitor使用方法

Step 1: 拉起dynolog daemon进程,详细介绍请参考dynolog介绍

  • 示例
# 命令行方式开启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

Step 2:在训练/推理任务拉起窗口使能dynolog环境变量

export MSMONITOR_USE_DAEMON=1

Step 3:配置Msmonitor日志路径(可选,默认路径为当前目录下的msmonitor_log)

export MSMONITOR_LOG_PATH=<LOG PATH>
# 示例:
export MSMONITOR_LOG_PATH=/tmp/msmonitor_log

Step 4:设置LD_PRELOAD使能MSPTI

# 示例:export LD_PRELOAD=/usr/local/Ascend/ascend-toolkit/latest/lib64/libmspti.so
export LD_PRELOAD=<CANN toolkit安装路径>/ascend-toolkit/latest/lib64/libmspti.so

Step 5:拉起训练/推理任务

# 训练任务中需要使用pytorch的优化器/继承原生优化器
bash train.sh

Step 6:使用dyno CLI使能npu-monitor

# 示例1:开启性能监控,使用默认配置
dyno --certs-dir /home/client_certs npu-monitor --npu-monitor-start

# 示例2:暂停性能监控
dyno --certs-dir /home/client_certs npu-monitor --npu-monitor-stop

# 示例3:性能监控过程中修改配置
# 上报周期30s, 上报数据类型Marker和Kernel
dyno --certs-dir /home/client_certs npu-monitor --report-interval-s 30 --mspti-activity-kind Marker,Kernel

# 示例4:性能监控开启时修改配置
# 上报周期30s, 上报数据类型Marker和Kernel
dyno --certs-dir /home/client_certs npu-monitor --npu-monitor-start --report-interval-s 30 --mspti-activity-kind Marker,Kernel

# 示例5:性能监控开启时修改配置,开启数据采集落盘
# 数据落盘路径为/tmp/msmonitor_db,落盘周期为30s,采集数据类型为Marker,Kernel,Communication
dyno --certs-dir /home/client_certs npu-monitor --npu-monitor-start --report-interval-s 30 --mspti-activity-kind Marker,Kernel,Communication --log-file /tmp/msmonitor_db

# 示例6:多机场景下性能监控开启时修改配置
# 多机场景下向特定机器x.x.x.x发送参数信息,参数表示上报周期30s, 上报数据类型Marker和Kernel
dyno --certs-dir /home/client_certs --hostname x.x.x.x npu-monitor --npu-monitor-start --report-interval-s 30 --mspti-activity-kind Marker,Kernel

Step 7:(可选)观测Tensorboard上报数据

# 请确保安装了Tensorboard:
pip install tensorboard

# 然后运行:
tensorboard --logdir={metric_log_dir} # metric_log_dir为Step1中dynolog命令行中--metric_log_dir参数指定的路径

# 打开浏览器访问http://localhost:6006即可看到对应可视化图表, 其中localhost为服务器的ip地址,6006为tensorboard默认端口

tensorboard 具体使用参数见https://github.com/tensorflow/tensorboard