本页面介绍了 Dataflow 中支持的 GPU 指标。您可以使用这些指标来监控 GPU 的运行状况和使用情况。大多数指标都受所有 Dataflow 作业支持,但有些指标需要针对许多 GPU 模型进行额外配置。
前提条件
GPU 指标仅由明确请求使用 GPU 的 Dataflow 作业收集。如需了解详情,请参阅 GPU 支持。
概览
虽然 Dataflow 会报告许多 GPU 指标,但主要指标是总内存和已用内存(相当于 RAM 指标),以及流式多处理器 (SM) 活动和 SM 占用率(最接近 Dataflow CPU 指标)。如需了解更多指标,请参阅 常见指标和 GPM 指标。
默认情况下,系统会报告作业中每个 GPU 设备的总内存和已用内存。在 Dataflow 监控界面中,这些指标会显示在“基本 GPU 利用率”下。这些指标与“内存访问百分比”不同,后者也位于基本 GPU 指标下,但报告的是 GPU 设备内存被访问的时间所占的百分比。
SM 活动和 SM 占用率是 GPM 指标。这些指标在 P4 和 P100 设备上不受支持,但在 H100 设备及更高版本上默认受支持。对于所有其他设备(例如 T4 和 L4 设备),则需要进行额外设置。 如需了解启用这些指标的步骤,请参阅 GPM 收集。如果作业收集了这些指标,它们会显示在 Dataflow 监控界面中的“GPU GPM 利用率”下。
Dataflow GPU 指标基础知识
所有 GPU 指标都由 Dataflow 工作器发送到 Cloud Monitoring。您可以在 dataflow.googleapis.com/worker/accelerator/gpu 下找到每个设备的指标。所有这些指标都分为一般类别(例如利用率或温度),并且都具有以下标签:
- device_uuid:唯一标识 GPU 设备,无论工作器或 流水线如何。
- device_number:在工作器上分配给设备的编号,范围为 [0, N),其中 N 是工作器上的 GPU 设备数量。
- device_model:GPU 的型号,例如“Tesla T4”。
device_uuid 和 device_model 都独立于工作器,并且对于同一实体设备始终相同。device_number 与在该工作器上的标识方式相关联。
Dataflow 的常见 GPU 指标
每个使用 GPU 的 Dataflow 作业都会报告常见指标。 在 Monitoring 中,它们都使用以下格式:
dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME
下表显示了每个指标及其类别、名称、单位和用途。
| 指标 | 类别 | 名称 | 单位 | 说明 |
|---|---|---|---|---|
| 内核运行百分比 | 利用率 | device_kernel_runtime | 百分比 | 至少一个内核在 GPU 上运行的时间所占的百分比。这仅表明 GPU 正在使用,而不是其处理资源是否得到有效利用。 |
| 内存访问百分比 | 利用率 | device_memory_access | 百分比 | 设备内存被读取或写入的时间所占的百分比。这仅表明内存正在被访问,而不是正在使用的内存所占的百分比。 |
| 内存限制 | 内存 | device_limit | MiB | GPU 上可用的内存量。 |
| 内存用量 | 内存 | device_usage | MiB | GPU 正在使用的内存量。这包括 Dataflow 作业使用的内存和为固件预留的内存,因此即使尚未将任何内存传输到 GPU,也可能会出现一些用量。 |
| 电源限制 | 电源 | device_limit | 瓦 | 设备设置为使用的最大电量。Dataflow 不会更改此默认值。 |
| 电源用量 | 电源 | device_usage | 瓦 | 设备正在使用的电量。 |
| 当前温度 | 温度 | device_current | 摄氏度 | GPU 的当前温度。 |
| 最高工作温度 | 温度 | device_max_op | 摄氏度 | GPU 应保持的温度。如果当前温度超过此温度,GPU 驱动程序将尝试冷却 GPU,直到其低于此温度。Dataflow 不会控制此温度。 |
| 降速温度 | 温度 | device_slowdown | 摄氏度 | GPU 将开始限制速度的温度。如果当前温度超过此温度,您应该会看到性能下降,直到温度降下来。Dataflow 不会控制此温度。 |
| 关机温度 | 温度 | device_shutdown | 摄氏度 | GPU 将关闭的温度。如果当前温度超过此温度,设备将变得不可用。Dataflow 不会控制此温度,也不会主动尝试恢复因温度过高而关闭的 GPU。 |
| 当前 SM 时钟 | 时钟 | device_sm_current | MHz | SM 时钟的当前速度。如果温度超过降速阈值,则此速度可能会降低,这是与冷却相关的限制的一部分。 |
| 最高 SM 时钟 | 时钟 | device_sm_max | MHz | SM 时钟的最大速度。 |
| 当前内存时钟 | 时钟 | device_memory_current | MHz | 内存时钟的当前速度。如果温度超过降速阈值,则此速度可能会降低,这是与冷却相关的限制的一部分。 |
| 最高内存时钟 | 时钟 | device_memory_max | MHz | 内存时钟的最大速度。 |
Dataflow 的 GPM 指标
Dataflow 提供对 GPM 指标的一些支持。支持级别取决于 GPU 模型和加速器配置。默认情况下,大多数使用 GPU 的 Dataflow 作业都需要进行一些额外配置。
GPM 指标遵循与常见指标相同的 基础知识。
支持的指标
与常见指标类似,GPM 指标路径具有以下 格式:
dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME
其中一些指标与某些常见指标属于同一类别。
| 指标 | 类别 | 名称 | 单位 | 说明 |
|---|---|---|---|---|
| SM 活动 | 利用率 | device_sm_activity | 百分比 | warp 在 SM 上处于活跃状态的时间所占的百分比,对设备上的所有 SM 取平均值。这与 内核运行百分比类似,但它提供了更精细的视图,可以更好地显示 GPU 的资源是否得到有效利用。NVIDIA 将有效利用定义为 80% 或更高,而 50% 或更低则为无效利用。 |
| SM 占用率 | 利用率 | device_sm_occupancy | 百分比 | 设备上活跃 warp 数占 warp 数上限的百分比。内存受限的作业的占用率应高于计算受限的作业,而内存访问百分比指标可以提供这方面的洞见。如需了解详情,请参阅 NVIDIA 文档中的已实现占用率。 |
| Tensor 管道活动 | 利用率 | device_tensor_pipe_activity | 百分比 | Tensor Core 管道被使用的时间所占的百分比。值越高,表示 GPU 的 Tensor Core 的使用量越多,这对于矩阵运算非常重要。 |
| FP64 管道活动 | 利用率 | device_fp64_pipe_activity | 百分比 | FP64 Core 管道被使用的时间所占的百分比。值越高,表示 GPU 的 FP64 Core 的使用量越多,后者处理 64 位浮点值的标量运算。 |
| FP32 管道活动 | 利用率 | device_fp32_pipe_activity | 百分比 | FP32 Core 管道被使用的时间所占的百分比。值越高,表示 GPU 的 FP32 Core 的使用量越多,后者处理 32 位浮点值的标量运算。 |
| FP16 管道活动 | 利用率 | device_fp16_pipe_activity | 百分比 | FP16 管道被使用的时间所占的百分比。与分别与 64 位和 32 位 CUDA Core 关联的 FP64 和 FP32 不同,FP16 与利用 Tensor Core 的半精度功能相关联。 |
| PCIe 读取 | pcie | device_read | MiB/s | GPU 通过 PCIe 从主机虚拟机读取数据的速率。 |
| PCIe 传输 | pcie | device_transfer | MiB/s | GPU 通过 PCIe 向主机虚拟机传输数据的速率。 |
| NVLink 读取 | nvlink | device_read | MiB/s | GPU 通过 NVLink 读取数据的速率。由于 NVLink 仅涵盖 GPU 间通信,因此如果每个工作器只有一个 GPU,则此指标无关紧要。 |
| NVLink 传输 | nvlink | device_transfer | MiB/s | GPU 通过 NVLink 传输数据的速率。由于 NVLink 仅涵盖 GPU 间通信,因此如果每个工作器只有一个 GPU,则此指标无关紧要。 |
收集 GPM 指标
任何使用 Hopper 架构或更高版本(例如 H100、H100 Mega)的 GPU 的 Dataflow 作业默认都会收集 GPM 指标,因此无需进行额外配置。但是,使用 Pascal 架构或更早版本(例如 P4 和 P100)的作业不支持这些指标。
对于所有其他模型,收集这些指标需要将 install-gke-dcgm-exporter 添加到工作器加速器配置中。例如:
--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"
此标志会安装一个由 GKE 管理的 NVIDIA DCGM-exporter等效项。 以下类型支持此选项:
- nvidia-l4
- nvidia-tesla-a100
- nvidia-a100-80gb
- nvidia-tesla-t4
- nvidia-tesla-v100
如果提供了其他类型,Dataflow 服务会在作业创建时返回错误。此检查有助于您避免在对指标收集没有帮助的作业上运行容器。
旧版指标
在 Monitoring 中,您可能会看到两个名为 dataflow.googleapis.com/job/gpu_utilization 和 dataflow.googleapis.com/job/gpu_memory_utilization 的指标。这些指标分别类似于
内核运行百分比和内存访问百分比
,但工作器通过对工作器上的 GPU 取平均值来报告这些指标。我们建议使用每个设备的等效指标,尤其是在工作器配置为具有多个 GPU 的情况下。
Dataflow 界面
如果 Dataflow 作业的工作器挂接了 GPU,则指标应显示在作业页面的“作业指标”标签页中的“Dataflow ML”类别下。此类别不会显示在没有 GPU 的作业上,并且需要几秒钟才能加载,因为它首先会验证指标是否与作业相关。
“Dataflow ML”下会显示以下子类别:
| 子类别 | 指标 | 条件 |
|---|---|---|
| 基本 GPU 利用率 | 内核运行百分比 内存访问百分比 总内存/已用内存 |
所有 GPU 作业 |
| GPU 性能 | 功耗/限制 温度读数/限制 |
所有 GPU 作业 |
| GPU GPM 利用率 | SM 活动 SM 占用率 CUDA/Tensor 管道活动 |
已启用 GPM 指标 |
| GPU GPM I/O | PCIe 读取/传输 NVLink 读取/传输 |
已启用 GPM 指标 |
| 旧版 GPU 利用率 | 旧版指标 | 所有 GPU 作业 |
查看非旧版指标时,您可以将图表过滤到特定的工作器名称和 GPU 设备编号。如果是在 Compute Engine 下查看,工作器名称与虚拟机名称相同。GPU 设备编号与指标标签中的编号相同。您可以使用此过滤功能来检查特定 GPU 设备上的指标,例如查看其功耗相对于限制的接近程度:
