查看训练作业监控指标
在训练作业运行过程中,如果用户能在模型训练出问题(例如loss值异常)的情况下能收到告警并及时处理,可以节省大量时间和资源,避免无效运行作业导致的浪费。同时通过指标监控可以实时掌握训练作业的进度,了解模型在不同阶段的训练状态。
当前ModelArts Standard训练作业模块在训练作业详情页的“监控”页签中提供了训练作业占用的CPU、GPU或NPU资源使用情况,具体参见支持在ModelArts控制台上直接查看的监控指标。
除了在ModelArts管理控制台训练作业详情页可以查看训练作业的指标外,更多指标可以登录到AOM控制台查看,具体参见在AOM控制台查看ModelArts所有监控指标。
- 使用SDK上报自定义监控指标到AOM:通过在代码中集成SDK,手动上传指标数据到AOM。
- 适合需要高度定制化指标,例如自定义维度或复杂计算的用户。
- 适用于复杂的业务逻辑,需要在代码层面控制指标上报的场景。
- 适合已经使用华为云SDK,熟悉云服务的用户。
支持在ModelArts控制台上直接查看的监控指标
支持在ModelArts管理控制台训练作业详情页中直接查看的监控指标请参见表1。
支持在ModelArts管理控制台总览页中查看的训练相关监控指标请参见表1。
指标 |
说明 |
查看方式 |
---|---|---|
训练作业资源利用率 |
每个训练作业的CPU、GPU或NPU资源利用率。 |
在ModelArts管理控制台总览页的“训练作业资源利用情况”版块查看。 |
卡时 |
每个训练作业运行时长和占用卡数。 |
在ModelArts管理控制台总览页的“训练作业资源利用情况”版块查看。 |
使用SDK上报自定义监控指标到AOM
通过在代码中集成SDK,手动上传指标数据到AOM。
该方案适用于监控高度定制化的指标,例如自定义维度或复杂计算,需要在代码层面直接控制指标的上报,适合复杂的业务逻辑。
- 准备训练代码,在训练代码中增加指标监控的代码。具体代码示例如下。准备训练代码的其它要求请参见准备模型训练代码。
代码中倒数第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)
- 在训练代码中加入命令,用于加载对应的依赖包。如果使用的是自定义镜像,也可以在制作镜像时安装以下依赖,具体参见开发用于自定义镜像训练的代码。
pip install huaweicloudsdkaom pip install huaweicloudsdkcore
- 创建训练作业并运行,具体参考创建生产训练作业章节。
- 登录AOM控制台,在“指标浏览”页面,通过指定“指标”查看上报的指标数据。
- 参考告警上报配置方法章节设置AOM告警和通知机制。