更新时间:2025-08-07 GMT+08:00

查看训练作业监控指标

在训练作业运行过程中,如果用户能在模型训练出问题(例如loss值异常)的情况下能收到告警并及时处理,可以节省大量时间和资源,避免无效运行作业导致的浪费。同时通过指标监控可以实时掌握训练作业的进度,了解模型在不同阶段的训练状态。

当前ModelArts Standard训练作业模块在训练作业详情页的“监控”页签中提供了训练作业占用的CPU、GPU或NPU资源使用情况,具体参见支持在ModelArts控制台上直接查看的监控指标

除了在ModelArts管理控制台训练作业详情页可以查看训练作业的指标外,更多指标可以登录到AOM控制台查看,具体参见在AOM控制台查看ModelArts所有监控指标

除此外,ModelArts还支持自定义一些指标信息采集上报到AOM系统,比如训练日志常见打印loss值、step耗时、gpu throughput等指标信息,方便观察指标变化趋势,或对比不同训练作业指标情况。
  • 使用SDK上报自定义监控指标到AOM:通过在代码中集成SDK,手动上传指标数据到AOM。
    • 适合需要高度定制化指标,例如自定义维度或复杂计算的用户。
    • 适用于复杂的业务逻辑,需要在代码层面控制指标上报的场景。
    • 适合已经使用华为云SDK,熟悉云服务的用户。

支持在ModelArts控制台上直接查看的监控指标

支持在ModelArts管理控制台训练作业详情页中直接查看的监控指标请参见表1

支持在ModelArts管理控制台总览页中查看的训练相关监控指标请参见表1

表1 训练作业任务级的指标说明

指标

说明

查看方式

训练作业资源利用率

每个训练作业的CPU、GPU或NPU资源利用率。

ModelArts管理控制台总览页的“训练作业资源利用情况”版块查看。

卡时

每个训练作业运行时长和占用卡数。

ModelArts管理控制台总览页的“训练作业资源利用情况”版块查看。

使用SDK上报自定义监控指标到AOM

通过在代码中集成SDK,手动上传指标数据到AOM。

该方案适用于监控高度定制化的指标,例如自定义维度或复杂计算,需要在代码层面直接控制指标的上报,适合复杂的业务逻辑。

  1. 准备训练代码,在训练代码中增加指标监控的代码。具体代码示例如下。准备训练代码的其它要求请参见准备模型训练代码

    代码中倒数第2行的region = "cn-southwest-2"参数值请替换成实际region值,region取值可以参考终端节点

    代码中增加监控指标数据,具体参数解释参考AOM文档

    # coding: utf-8
    import os
    
    from huaweicloudsdkaom.v2 import *
    from huaweicloudsdkaom.v2.region.aom_region import AomRegion
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkcore.exceptions import exceptions
    from moxing.framework import cloud_utils
    
    
    def report2Aom(request,region):
        auth = cloud_utils.get_auth() #AK、SK和临时TOKEN值,系统会自动获取无需在代码中填写。
    
        ak = auth.AK
        sk = auth.SK
        securityToken = auth.TOKEN
    
        projectId = os.environ.get("MA_IAM_PROJECT_ID")
        credentials = BasicCredentials(ak, sk, projectId).with_security_token(securityToken)
        client = AomClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(AomRegion.value_of(region)) \
            .build()
        try:
            response = client.add_metric_data(request)
            print(response)
        except Exception as e:
            print(e)
    if __name__ == "__main__":
    
        request = AddMetricDataRequest()
        listValuesBody = [
            #下面填上对应的指标名称、类型、单位、数值,比如step_time、loss值等
            ValueData(
                metric_name="step_time", #监控指标名称,例如step_time
                type="float",  #指标的数据类型,取值范围只能是"int"或"float"。
                unit="ms",     #数据的单位。长度不超过32个字符,此处举例为ms
                value=135.572  #指标数据的值。取值范围有效的数值类型。最小值0
            ),
            ValueData(
                metric_name="loss",
                type="float",
                value=0.6932
            )
        ]
        listDimensionsMetric = [
            #下面填上想查看的指标维度,比如线程、host等等
            Dimension2(
                name="cluster_name",#此处仅为举例示意,请替换为实际需要查看的指标维度
                value="fab2c5cf438b4f0c851fdcdf"# 此处仅为举例示意,请替换为实际参数值
            ),
            Dimension2(
                name="user_name",
                value="modelarts_02" # 此处仅为举例示意,请替换为实际参数值
            ),
            Dimension2(
                name="user_id",
                value="04f258c8fb00d42a1f6xxx" # 此处仅为举例示意,请替换为实际参数值
            )
        ]
        metricBody = MetricItemInfo(
            dimensions=listDimensionsMetric,
            namespace="NOPAAS.ESC"  #保持默认值即可,无需修改
        )
        listBodybody = [
            MetricDataItem(
                collect_time=int(round(time.time()*1000)),  #监控指标数据收集时间,为最新的时间戳,ms为单位
                metric=metricBody,
                values=listValuesBody
            )
        ]
        request.body = listBodybody
        region = "cn-southwest-2"  #请根据实际region替换
        response = report2Aom(request,region)
    
  2. 在训练代码中加入命令,用于加载对应的依赖包。如果使用的是自定义镜像,也可以在制作镜像时安装以下依赖,具体参见开发用于自定义镜像训练的代码
    pip install huaweicloudsdkaom
    pip install huaweicloudsdkcore
  3. 创建训练作业并运行,具体参考创建生产训练作业章节。
  4. 登录AOM控制台,在“指标浏览”页面,通过指定“指标”查看上报的指标数据。
  5. 参考告警上报配置方法章节设置AOM告警和通知机制。