
# 查看训练作业资源占用情况
#### 场景描述
当前ModelArts训练作业模块在训练作业详情页的"监控"页签中提供了训练作业的资源使用情况监控，可以查看当前训练作业整体或单个节点占用的CPU、GPU或NPU资源使用情况。
#### 约束限制
支持查看整个训练周期内的监控数据，具体数据参见[表1]。
训练作业的资源占用情况系统会自动保存30天，过期会被清除。
#### 如何查看训练作业资源使用详情
1. 在[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)的左侧导航栏中选择"模型开发与训练 \> 模型训练"（旧版控制台："模型训练 \> 训练作业"）。
2. 在训练作业列表中，单击作业名称进入训练作业详情页面。
3. 在训练作业详情页面，单击"监控"页签查看训练作业的资源使用情况，支持以下维度的资源监控，具体的监控指标如[表1]所示。
   - 作业监控：监控当前训练作业整体的资源使用情况，监控周期可以选择最近15分钟、最近30分钟、最近1小时、最近6小时、最近12小时、最近24小时，也可以自定义时段。
   
   - 任务监控：监控训练作业运行的具体节点的资源使用情况，监控周期可以选择最近15分钟、最近30分钟、最近1小时、最近6小时、最近12小时、最近24小时，也可以自定义时段。
   
   - 作业状态为创建中、等待中和运行中的作业默认展示最近15分钟的监控数据。作业状态为异常、终止中、已终止和已完成的作业默认展示作业运行开始到结束的时间段的监控数据。
   
   
    表1训练作业监控指标 
   | 分类                                                     | 指标名称      | 指标参数                                                                                        | 指标含义                                                                                                                                                                                                 | 单位                                                                   | 取值范围   | 呈现形式 |
   |:---|:---|:---|:---|:---|:---|:---|
   | CPU                                                    | CPU使用率    | ma_container_cpu_util                  | 该指标用于统计测量对象的CPU使用率。                                                                                                                                                                                  | 百分比（Percent）                                                         | 0～100% | 折线图  |
   | CPU                                                    | CPU使用核数   | ma_container_cpu_used_core                                                                  | 该指标用于统计测量对象已经使用的CPU核个数                                                                                                                                                                               | 核（Core）                                                              | ≥0     | 柱状图  |
   | 内存使用                                                   | 物理内存使用率   | ma_container_memory_util                                                                    | 该指标用于统计测量对象已使用内存占申请物理内存总量的百分比。                                                                                                                                                                       | 百分比（Percent）                                                         | 0～100% | 折线图  |
   | 内存使用                                                   | 物理内存使用量   | ma_container_memory_used_meg                                                                | 该指标用于统计测量对象实际已经使用的物理内存，对应container_memory_working_set_bytes当前内存工作集（working set）使用量。 工作区内存使用量=活跃的匿名页和缓存，以及file-baked页\<=container_memory_usage_bytes。 | 兆字节（Megabytes）                                                       | ≥0     | 柱状图  |
   | GPU  | GPU使用率    | ma_container_gpu_util                                                                       | 该指标用于统计测量对象的GPU使用率。                                                                                                                                                                                  | 百分比（Percent）                                                         | 0～100% | 折线图  |
   | GPU  | GPU显存使用率  | ma_container_gpu_mem_util                                                                   | 该指标用于统计测量对象已使用的显存占显存容量的百分比。                                                                                                                                                                          | 百分比（Percent）                                                         | 0～100% | 折线图  |
   | GPU  | GPU显存使用量  | ma_container_gpu_mem_used_megabytes                                                         | 该指标用于统计测量对象已使用的显存。                                                                                                                                                                                   | 兆字节（Megabytes）                                                       | ≥0     | 柱状图  |
   | NPU                                                    | NPU使用率    | ma_container_npu_ai_core_util                                                               | 昇腾系列AI处理器AI Core利用率                                                                                                                                                                                  | 百分比（Percent）                                                         | 0～100% | 折线图  |
   | NPU                                                    | NPU显存使用率  | ma_container_npu_memory_util           | 该指标用于统计测量对象已使用的NPU显存占NPU存储容量的百分比。（即将废弃， Snt3系列替代指标为ma_container_npu_ddr_memory_util，Snt9系列替代指标为ma_container_npu_hbm_util）。                                                                           | 百分比（Percent）                                                         | 0～100% | 折线图  |
   | NPU                                                    | NPU显存使用量  | ma_container_npu_memory_used_megabytes  | 该指标用于统计测量对象已使用的NPU显存。（即将废弃， Snt3系列替代指标为ma_container_npu_ddr_memory_usage_bytes，Snt9系列替代指标为ma_container_npu_hbm_usage_bytes）。                                                                         | 兆字节（Megabytes）  | ≥0     | 柱状图  |
   | 网络                                                     | 网络IO-下行速率 | ma_container_network_receive_bytes                                                          | 网络接收数据速率，该指标用于统计测试对象的入方向网络流速。                                                                                                                                                                        | 字节/秒（Bytes/Second）                                                   | ≥0     | 折线图  |
   | 网络                                                     | 网络IO-上行速率 | ma_container_network_transmit_bytes                                                         | 网络发送数据速率，该指标用于统计测试对象的出方向网络流速。                                                                                                                                                                        | 字节/秒（Bytes/Second）                                                   | ≥0     | 折线图  |
   | 磁盘                                                     | 磁盘读取速率    | ma_container_disk_read_kilobytes                                                            | 该指标用于统计每秒从磁盘读出的数据量。                                                                                                                                                                                  | 千字节/秒（Kilobytes/Second）                                              | ≥0     | 折线图  |
   | 磁盘                                                     | 磁盘写入速率    | ma_container_disk_write_kilobytes                                                           | 该指标用于统计每秒写入磁盘的数据量。                                                                                                                                                                                   | 千字节/秒（Kilobytes/Second）                                              | ≥0     | 折线图  |
      
   更多指标查看请参见文档[查看训练作业监控指标](https://support.huaweicloud.com/develop-modelarts/develop-modelarts-1424.html)章节实现。
   
 
#### 如何判断训练作业资源利用率高低
在模型训练的训练作业列表页可以查看作业资源利用率情况。当作业worker-0实例的GPU/NPU的平均利用率低于50%时，在训练作业列表中会进行告警提示。
图1作业列表显示作业资源利用率情况   
![](https://support.huaweicloud.com/develop-modelarts/figure/zh-cn_image_0000002456342889.png "点击放大")
此处的作业资源利用率只涉及GPU和NPU资源。作业worker-0实例的GPU/NPU平均利用率计算方法：将作业worker-0实例的各个GPU/NPU加速卡每个时间点的利用率汇总取平均值。
#### 如何提高训练作业资源利用率
- 适当增大batch_size：增大batch_size提高GPU/NPU计算单元的利用率，但需根据实际场景选择batch_size，防止batch_size过大导致内存溢出。
- 提升数据读取的效率：如果读取一个batch数据的时间要长于GPU/NPU计算一个batch的时间，就有可能出现GPU/NPU利用率上下浮动的情况。建议优化数据读取和数据增强的性能，例如将数据读取并行化，或者使用NVIDIA Data Loading Library（DALI）等工具提高数据增强的速度。
- 模型保存不要太频繁：模型保存操作一般会阻塞训练，如果模型较大，并且较频繁地进行保存，就会影响GPU/NPU利用率。同理，其他非GPU/NPU操作尽量不要阻塞训练主进程太多的时间，如日志打印，保存训练指标信息等。
 
