msMonitor工具快速入门
下面通过msMonitor常见的使用场景介绍msMonitor工具快速入门:
- 先使用npu-monitor功能获取关键算子耗时。
- 当发现监测到关键算子耗时劣化,使用nputrace功能采集详细性能数据做分析。
前置条件
完成msMonitor工具安装,具体请参见《msMonitor工具安装指南》。
操作步骤
-
启动dynolog daemon进程。
命令示例如下:
# 命令行方式开启dynolog daemon dynolog --certs-dir NO_CERTS --enable-ipc-monitor # 如需使用TensorBoard展示数据,传入参数--metric_log_dir用于指定TensorBoard文件落盘路径 dynolog --certs-dir NO_CERTS --enable-ipc-monitor --metric_log_dir /tmp/metric_log_dir # dynolog daemon的日志路径为:/var/log/dynolog.logNote
--certs-dir NO_CERTS表示不使用证书验证,仅用于测试环境,后文同理。在生产环境中,建议使用证书验证,以确保数据传输的安全性。详情请参见 dynolog_instruct。 -
配置msMonitor环境变量。
export MSMONITOR_USE_DAEMON=1 -
设置LD_PRELOAD环境变量使能msPTI(启动npu-monitor功能设置)。
# export LD_PRELOAD=<CANN Toolkit安装路径>/cann/lib64/libmspti.so # 默认路径示例: export LD_PRELOAD=/usr/local/Ascend/cann/lib64/libmspti.so -
启动训练任务。
以下
train.py是一个完整的 PyTorch 训练脚本示例,使用随机生成的数据,无需外部数据集即可运行。将脚本保存为train.py并执行:import torch import torch.nn as nn # 定义一个简单的全连接网络 class SimpleModel(nn.Module): def __init__(self): super(SimpleModel, self).__init__() self.net = nn.Sequential( nn.Linear(64, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU(), nn.Linear(64, 10) ) def forward(self, x): return self.net(x) # 随机生成训练数据,无需外部数据集 batch_size = 32 num_steps = 100 input_size = 64 num_classes = 10 device = torch.device("npu:0" if torch.npu.is_available() else "cpu") model = SimpleModel().to(device) criterion = nn.CrossEntropyLoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.01) for step in range(num_steps): # 使用 torch.randn 随机生成输入和标签 inputs = torch.randn(batch_size, input_size, device=device) labels = torch.randint(0, num_classes, (batch_size,), device=device) outputs = model(inputs) loss = criterion(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() if step % 10 == 0: print(f"Step {step}, Loss: {loss.item():.4f}")执行训练脚本:
python train.py若使用 PyTorch 原生优化器(如
torch.optim.SGD、torch.optim.Adam),msMonitor 可自动识别训练迭代边界,无需额外修改代码。 -
使用dyno命令行触发npu-monitor监测关键算子耗时。
# 开启npu-monitor,上报周期30s, 上报数据类型为Kernel dyno --certs-dir NO_CERTS npu-monitor --npu-monitor-start --report-interval-s 30 --mspti-activity-kind Kernel # 关闭npu-monitor dyno --certs-dir NO_CERTS npu-monitor --npu-monitor-stopnpu-monitor 功能详细介绍和采集结果说明请参见 npumonitor_instruct。
-
使用dyno命令行触发nputrace采集详细trace数据(需要关闭npu-monitor功能才能触发nputrace功能)。
# 从第10个step开始采集,采集2个step,采集框架、CANN和device数据,同时采集完后自动解析以及解析完成不做数据精简,落盘路径为/tmp/profile_data dyno --certs-dir NO_CERTS nputrace --start-step 10 --iterations 2 --activities CPU,NPU --analyse --data-simplification false --log-file /tmp/profile_datanputrace 功能详细介绍和采集结果说明请参见 nputrace_instruct。