Métricas de GPU do Dataflow

Esta página aborda as métricas de GPU com suporte no Dataflow. Use essas métricas para monitorar a integridade e o uso da GPU. A maioria das métricas tem suporte em todos os jobs do Dataflow, mas algumas exigem configuração adicional para muitos modelos de GPU.

Pré-requisitos

As métricas de GPU são coletadas apenas por jobs do Dataflow que solicitaram GPUs explicitamente. Para mais informações, consulte Suporte a GPU.

Visão geral

Embora o Dataflow informe muitas métricas de GPU, as principais são a memória total e usada, que são equivalentes às métricas de RAM, e a atividade e a ocupação do multiprocessador de streaming (SM), que são os equivalentes mais próximos das métricas de CPU do Dataflow. Mais métricas são abordadas em Métricas comuns e Métricas de GPM.

A memória total e usada de cada dispositivo de GPU no job é informada por padrão. Na interface de monitoramento do Dataflow, elas aparecem em "Uso básico de GPU". Essas métricas não são as mesmas que "Porcentagem de acesso à memória", que também está em métricas básicas de GPU, mas informa a porcentagem de tempo em que a memória do dispositivo de GPU estava sendo acessada.

A atividade e a ocupação do SM são métricas de GPM. Essas métricas não têm suporte em dispositivos P4 e P100 e têm suporte por padrão em dispositivos H100 e mais recentes. Para todos os outros dispositivos, como T4 e L4, é necessária uma configuração adicional. Para conferir as etapas para ativá-las, consulte Coleta de GPM. Se coletadas no job, essas métricas estão em "Uso de GPM da GPU" na interface de monitoramento do Dataflow.

Noções básicas sobre métricas de GPU do Dataflow

Todas as métricas de GPU são enviadas pelos workers do Dataflow ao Cloud Monitoring. As métricas por dispositivo podem ser encontradas em dataflow.googleapis.com/worker/accelerator/gpu. Todas essas métricas são agrupadas em categorias gerais, como utilização ou temperatura, e têm os seguintes rótulos:

  • device_uuid: identifica exclusivamente o dispositivo de GPU, independentemente do worker ou pipeline.
  • device_number: o número atribuído ao dispositivo no worker no intervalo de [0, N), em que N é o número de dispositivos de GPU no worker.
  • device_model: o modelo da GPU, como "Tesla T4".

Os device_uuid e device_model são independentes do worker e são sempre os mesmos para o mesmo dispositivo físico. O device_number está vinculado à forma como ele é identificado nesse worker.

Métricas comuns de GPU para Dataflow

As métricas comuns são informadas por todos os jobs do Dataflow com GPUs. No Monitoring, elas usam o seguinte formato:

dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME

A tabela a seguir mostra cada métrica e sua categoria, nome, unidade e finalidade.

Métrica Categoria Nome Unidade Descrição
Porcentagem de execução do kernel utilização device_kernel_runtime Porcentagem A porcentagem de tempo em que pelo menos um kernel estava em execução na GPU. Isso só mostra que a GPU estava sendo usada, não se os recursos de processamento dela estão sendo usados de forma eficiente.
Porcentagem de acesso à memória utilização device_memory_access Porcentagem A porcentagem de tempo em que a memória do dispositivo estava sendo lida ou gravada. Isso só mostra que a memória estava sendo acessada, não a porcentagem de memória em uso.
Limite de memória memória device_limit MiB A quantidade de memória disponível na GPU.
Uso da memória memória device_usage MiB A quantidade de memória em uso pela GPU. Isso inclui a memória usada pelo job do Dataflow e a memória reservada para firmware. Portanto, algum uso é esperado mesmo que nenhuma memória tenha sido transferida para a GPU ainda.
Limite de energia power device_limit Watts A quantidade máxima de energia que o dispositivo está configurado para usar. O Dataflow não muda isso do padrão.
Uso de energia power device_usage Watts A quantidade de energia em uso pelo dispositivo.
Temperatura atual temperatura device_current Celsius A temperatura atual da GPU.
Temperatura máxima de funcionamento temperatura device_max_op Celsius A temperatura em que a GPU precisa permanecer. Se a temperatura atual exceder esse valor, os drivers da GPU vão tentar resfriá-la até que ela fique abaixo dessa temperatura. O Dataflow não controla isso.
Temperatura de desaceleração temperatura device_slowdown Celsius A temperatura em que a GPU vai começar a limitar. Se a temperatura atual exceder esse valor, você vai notar uma degradação de desempenho até que ela esfrie. O Dataflow não controla isso.
Temperatura de desligamento temperatura device_shutdown Celsius A temperatura em que a GPU será desligada. Se a temperatura atual exceder esse valor, o dispositivo ficará indisponível. O Dataflow não controla essa temperatura nem tenta recuperar ativamente GPUs que foram desligadas devido à temperatura excessivamente alta.
Relógio SM atual relógio device_sm_current MHz A velocidade atual do clock SM. Se a temperatura exceder o limite de desaceleração, isso poderá diminuir como parte da limitação relacionada ao resfriamento.
Clock SM máximo relógio device_sm_max MHz A velocidade máxima do clock SM.
Clock de memória atual relógio device_memory_current MHz A velocidade atual do clock de memória. Se a temperatura exceder o limite de desaceleração, isso poderá diminuir como parte da limitação relacionada ao resfriamento.
Clock de memória máximo relógio device_memory_max MHz A velocidade máxima do clock de memória.

Métricas de GPM para Dataflow

O Dataflow oferece suporte a algumas métricas de GPM. O nível de suporte depende do modelo da GPU e da configuração do acelerador. Por padrão, a maioria dos jobs do Dataflow com GPUs exige alguma configuração adicional.

As métricas de GPM seguem os mesmos princípios básicos das métricas comuns.

Métricas disponíveis

Semelhante às métricas comuns, os caminhos de métricas de GPM têm o seguinte formato:

dataflow.googleapis.com/worker/accelerator/gpu/CATEGORY/NAME

Algumas dessas métricas estão na mesma categoria que algumas métricas comuns.

Métrica Categoria Nome Unidade Descrição
Atividade do SM utilização device_sm_activity Porcentagem A porcentagem de tempo em que um warp estava ativo no SM, com média em todos os SMs no dispositivo. Isso é semelhante à porcentagem de execução do kernel, mas oferece uma imagem mais granular que mostra melhor se os recursos da GPU estão sendo usados de forma eficiente. A NVIDIA define o uso eficaz como 80% ou mais, com 50% ou menos sendo uso ineficaz.
Ocupação do SM utilização device_sm_occupancy Porcentagem A porcentagem de warps ativos no dispositivo em relação ao máximo. Os jobs com limite de memória precisam ter uma ocupação maior do que os jobs com limite de computação, e a métrica de porcentagem de acesso à memória pode fornecer insights sobre isso. Mais detalhes podem ser encontrados na documentação da NVIDIA sobre a ocupação alcançada.
Atividade do pipe do Tensor utilização device_tensor_pipe_activity Porcentagem A porcentagem de tempo em que o pipe do Tensor Core estava em uso. Valores mais altos indicam mais uso dos Tensor Cores da GPU, que são importantes para operações de matriz.
Atividade do pipe FP64 utilização device_fp64_pipe_activity Porcentagem A porcentagem de tempo em que o pipe do FP64 Core estava em uso. Valores mais altos indicam mais uso dos FP64 Cores da GPU, que processam operações escalares de valores de ponto flutuante de 64 bits.
Atividade do pipe FP32 utilização device_fp32_pipe_activity Porcentagem A porcentagem de tempo em que o pipe do FP32 Core estava em uso. Valores mais altos indicam mais uso dos FP32 Cores da GPU, que processam operações escalares de valores de ponto flutuante de 32 bits.
Atividade do pipe FP16 utilização device_fp16_pipe_activity Porcentagem A porcentagem de tempo em que o pipe FP16 estava em uso. Ao contrário do FP64 e do FP32, que estão associados aos núcleos CUDA de 64 e 32 bits, respectivamente, o FP16 está associado ao aproveitamento dos recursos de meia precisão dos núcleos Tensor.
Leitura de PCIe pcie device_read MiB/s A taxa de dados lidos pela GPU da VM do host pelo PCIe.
Transferência de PCIe pcie device_transfer MiB/s A taxa de transferência de dados da GPU para a VM do host pelo PCIe.
Leitura de NVLink nvlink device_read MiB/s A taxa de dados lidos pela GPU pelo NVLink. Como o NVLink só abrange a comunicação de GPU para GPU, isso é irrelevante se cada worker tiver apenas uma GPU.
Transferência de NVLink nvlink device_transfer MiB/s A taxa de transferência de dados da GPU pelo NVLink. Como o NVLink só abrange a comunicação de GPU para GPU, isso é irrelevante se cada worker tiver apenas uma GPU.

Como coletar métricas de GPM

Qualquer job do Dataflow com GPUs que use a arquitetura Hopper ou mais recente (por exemplo, H100, H100 Mega) coleta métricas de GPM por padrão. Portanto, nenhuma configuração adicional é necessária. No entanto, os jobs que usam a arquitetura Pascal ou anterior (como P4 e P100) não oferecem suporte a essas métricas.

Para todos os outros modelos, a coleta dessas métricas exige a adição de install-gke-dcgm-exporter à configuração do acelerador de worker. Exemplo:

--experiment="worker_accelerator=type:TYPE;count:COUNT;install-nvidia-driver;install-gke-dcgm-exporter"

Esse flag instala um equivalente gerenciado pelo GKE do NVIDIA DCGM-exporter. Os seguintes tipos oferecem suporte a essa opção:

  • nvidia-l4
  • nvidia-tesla-a100
  • nvidia-a100-80gb
  • nvidia-tesla-t4
  • nvidia-tesla-v100

Se outro tipo for fornecido, o serviço Dataflow vai retornar um erro na criação do job. Essa verificação ajuda a evitar a execução do contêiner em jobs em que ele não ajuda na coleta de métricas.

Métricas legadas

No Monitoring, você pode encontrar duas métricas chamadas dataflow.googleapis.com/job/gpu_utilization e dataflow.googleapis.com/job/gpu_memory_utilization. Essas métricas são semelhantes a porcentagem de execução do kernel e porcentagem de acesso à memória respectivamente, mas os workers as informam fazendo a média das GPUs no worker. Recomendamos o uso dos equivalentes por dispositivo, especialmente se os workers estiverem configurados para ter mais de uma GPU.

Interface do Dataflow

Se o job do Dataflow tiver GPUs anexadas aos workers, as métricas vão aparecer na guia "Métricas do job" na página do job, na categoria "Dataflow ML". Essa categoria não aparece em jobs sem GPUs e leva alguns segundos para carregar, porque primeiro verifica se as métricas são relevantes para o job.

As subcategorias a seguir aparecem em "Dataflow ML":

Subcategoria Métricas Condições
Uso básico de GPU Porcentagem de execução do kernel
Porcentagem de acesso à memória
Memória total/usada
Todos os jobs de GPU
Performance da GPU Consumo/limite de energia
Leitura/limites de temperatura
Todos os jobs de GPU
Uso de GPM da GPU Atividade do SM
Ocupação do SM
Atividade do pipe CUDA/Tensor
Métricas de GPM ativadas
E/S de GPM da GPU Leitura/transferência de PCIe
Leitura/transferência de NVLink
Métricas de GPM ativadas
Uso da GPU legada Métricas legadas Todos os jobs de GPU

Ao visualizar métricas não legadas, é possível filtrar os gráficos para um nome de worker e número de dispositivo de GPU específicos. O nome do worker é o mesmo da VM se visualizado no Compute Engine. O número do dispositivo de GPU é o mesmo dos rótulos de métrica. É possível usar essa filtragem para verificar as métricas em um dispositivo de GPU específico, como verificar a proximidade do uso de energia em relação ao limite:

Exemplo de filtragem de métricas de GPU por dispositivo