Dataflow GPU 指标

本页介绍了 Dataflow 中支持的 GPU 指标。您可以使用这些指标来监控 GPU 的运行状况和使用情况。大多数指标都支持所有 Dataflow 作业,但对于许多 GPU 模型,某些指标需要进行额外配置。

前提条件

只有明确请求使用 GPU 的 Dataflow 作业才会收集 GPU 指标。如需了解详情,请参阅 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_uuiddevice_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,也会出现一些内存用量。
可更正的易失性 ECC 错误 memory/ecc/volatile device_correctable_total 计数 自上次重新加载驱动程序以来,可更正(单比特)的 ECC 错误的数量。对于 Dataflow,驱动程序重新加载仅在工作器启动时发生,因此这相当于工作器生命周期内的错误。
无法更正的易失性 ECC 错误 memory/ecc/volatile device_uncorrectable_total 计数 自上次重新加载驱动程序以来,不可更正(双位)ECC 错误的数量。对于 Dataflow,驱动程序重新加载仅在工作器启动时发生,因此这相当于工作器生命周期内的错误。
功率限制 power device_limit 设备设置使用的最大功率。Dataflow 不会更改此默认值。
耗电量 power device_usage 设备使用的电量。
当前温度 temperature device_current 摄氏度 GPU 的当前温度。
最高工作温度 temperature device_max_op 摄氏度 GPU 应保持的温度。如果当前温度超过此值,GPU 驱动程序将尝试冷却 GPU,直到温度低于此值。Dataflow 不会控制此行为。
降速温度 temperature device_slowdown 摄氏度 GPU 开始节流的温度。如果当前温度超过此值,您应该会看到性能下降,直到温度降下来为止。Dataflow 不会控制此情况。
关机温度 temperature 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 核心管道的使用时间百分比。值越高,表示 GPU 的 FP64 核心使用量越多,这些核心用于处理 64 位浮点值的标量运算。
FP32 流水线活动 利用率 device_fp32_pipe_activity 百分比 FP32 Core 管道的使用时间所占的百分比。值越高,表示 GPU 的 FP32 核心使用量越多,这些核心用于处理 32 位浮点值的标量运算。
FP16 管道活动 利用率 device_fp16_pipe_activity 百分比 FP16 管道的使用时间百分比。与分别与 64 位和 32 位 CUDA 核心相关联的 FP64 和 FP32 不同,FP16 与利用 Tensor 核心的半精度功能相关联。
PCIe 读取 pcie device_read MiB/s GPU 通过 PCIe 从宿主机虚拟机读取数据的速率。
PCIe 传输 pcie device_transfer MiB/s 通过 PCIe 从 GPU 到宿主机虚拟机的数据传输速率。
NVLink 读取 nvlink device_read MiB/s GPU 通过 NVLink 读取数据的速率。由于 NVLink 仅涵盖 GPU 间通信,因此如果每个工作器只有一个 GPU,则此设置无关紧要。
NVLink 传输 nvlink device_transfer MiB/s 通过 NVLink 从 GPU 传输数据的速率。由于 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_utilizationdataflow.googleapis.com/job/gpu_memory_utilization 的指标。这些指标分别类似于内核运行百分比内存访问百分比,但工作器会通过对工作器上的 GPU 求平均值来报告这些指标。我们建议使用每个设备的等效值,尤其是在工作器配置为具有多个 GPU 的情况下。

Dataflow 界面

如果 Dataflow 作业的工作器挂接了 GPU,则指标应显示在作业页面的“作业指标”标签页中,位于“Dataflow ML”类别下。此类别不会显示在没有 GPU 的作业中,并且需要几秒钟才能加载,因为它会先验证指标是否与作业相关。

“Dataflow ML”下会显示以下子类别:

子类别 指标 条件
基本 GPU 利用率 内核运行百分比
内存访问百分比
总内存/已用内存
所有 GPU 作业
GPU 性能 功耗/限制
温度读数/限制
当前/最大 SM 时钟
当前/最大内存时钟
可更正/不可更正的易失性 ECC 错误
所有 GPU 作业
GPU GPM 利用率 SM 活动
SM 占用率
CUDA/Tensor 流水线活动
已启用 GPM 指标
GPU GPM I/O PCIe 读取/传输
NVLink 读取/传输
已启用 GPM 指标
旧版 GPU 利用率 旧版指标 所有 GPU 作业

查看非旧版指标时,您可以按特定 worker 名称和 GPU 设备编号过滤图表。如果从 Compute Engine 中查看,工作器名称与虚拟机的名称相同。GPU 设备编号与指标标签中的编号相同。您可以使用此过滤功能来检查特定 GPU 设备上的指标,例如查看其功耗与限值之间的差距:

按设备过滤 GPU 指标的示例