跳转到主要内容
Python SDK 提供指标查询能力,适用于在脚本中分析训练任务、Pod 或节点的资源使用情况。使用本文示例前,请先完成 安装并初始化。

查询训练任务指标

查询前准备

  • 如需查询平台内置指标,无需额外配置。平台默认采集 GPU、CPU、内存、网络、存储和节点侧异常等指标。
  • 如需获取自定义指标列表,需要在创建训练任务时配置指标采集端点。详情请参见 接入训练任务自定义指标。

了解指标类型

训练任务指标分为平台内置指标和自定义指标。SDK 支持查询平台内置指标数据,也支持获取任务自定义指标列表;自定义指标数据需在控制台查看。

获取训练任务指标列表

获取平台内置指标列表

使用 client.tasks.metrics_catalog() 获取平台内置指标列表。dimension 用于指定查询维度,支持 task、pod、node、all_pods 和 all_nodes。

获取内置指标列表示例

以下示例展示如何获取 task 维度支持的内置指标列表。
可用维度如下: 返回结果中:
  • metric 是查询接口使用的指标名。
  • name 和 unit 用于展示指标名称和单位。
  • 不同维度支持的指标范围不同,完整可查询范围以 client.tasks.metrics_catalog() 返回为准。

内置指标示例

以下仅列出部分内置指标示例。完整可查询范围以 client.tasks.metrics_catalog() 返回结果为准。

获取任务自定义指标列表

如果训练任务开启了自定义指标采集,可使用 client.tasks.metrics_catalog_full() 获取平台内置指标和该任务暴露的自定义指标列表。

获取自定义指标列表示例

以下示例展示如何获取一个正在运行的训练任务暴露的自定义指标列表。
返回字段说明如下: catalog.custom 仅提供自定义指标列表及样本信息,不能将其中的指标名传入 client.tasks.metrics()、Pod 或节点指标查询接口来查询时间序列数据。查看自定义指标数据请参见 查看训练任务监控。
  • 自定义指标列表根据已采集的样本生成,不要求任务仍在运行;没有可用样本时可能返回空列表。
  • 平台按 5 分钟采样步长发现自定义指标,查询范围为任务开始到结束的时间;运行中的任务查询到当前时间,尚未开始的任务查询过去 1 小时。此步长不表示列表每 5 分钟刷新一次。

查询训练任务指标数据

查询平台内置指标数据

获取内置指标名后,使用训练任务指标接口查询时间序列数据。metrics 单次请求最多传入 60 个指标。

查询内置指标数据示例

以下示例展示如何查询一个训练任务的 GPU 使用率和请求内存使用量。

按查询目标选择接口

根据要查看的对象选择对应接口:
  • 查询一个 Pod 的指标
  • 查询 Pod 所在节点的指标
  • 对比同一任务下多个 Pod 的单项指标
  • 对比同一任务相关节点的单项指标

理解返回结果

训练任务指标查询接口返回 TaskMetricsResponse。常用字段如下:

按场景分析训练任务指标

识别掉队 Pod

定位可疑 GPU

判断节点侧资源压力

可同时查看 Pod 相对申请资源的使用比例,以及 Pod 所在节点的整体资源压力,判断问题是否可能与节点侧资源竞争有关。

补充:按资源类型查询指标

推荐优先使用训练任务指标接口查询训练任务相关指标。仅当已知 Pod 或节点名称,并需要绕过训练任务对象、按资源类型直接查询时,可使用通用资源指标接口。查询较长时间范围时,建议先获取推荐步长。 以下示例展示如何获取推荐步长,并按 Pod 名称查询 GPU 利用率。
也可以导入模块级函数获取推荐步长:
查询时需要同时指定 resource_type 和 metric_type。当 resource_type="Pod" 时,传入 pod;当 resource_type="Node" 时,传入 node。

相关文档