Métricas de GPU do Dataflow

Esta página aborda as métricas de GPU compatíveis com o Dataflow. Use essas métricas para monitorar a integridade e o uso da GPU. A maioria das métricas é compatível com 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, na sigla em inglês), que são os equivalentes mais próximos às métricas de CPU do Dataflow. Outras 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, eles aparecem em "Utilização básica da 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 da GPU", mas informa a porcentagem de tempo em que a memória do dispositivo GPU estava sendo acessada.

Atividade e ocupação do SM são métricas do GPM. Essas métricas não são compatíveis com dispositivos P4 e P100, mas são compatíveis por padrão com dispositivos H100 e mais recentes. Para todos os outros dispositivos, como T4 e L4, é necessário fazer uma configuração adicional. Para saber como ativá-las, consulte Coleta de GPM. Se coletadas no job, essas métricas ficam em "Utilização de GPM da GPU" na interface de monitoramento do Dataflow.

Princípios básicos das métricas de GPU do Dataflow

Todas as métricas da GPU são enviadas pelos workers do Dataflow para o 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, independente do worker ou do pipeline.
  • device_number: o número atribuído ao dispositivo no worker no intervalo [0, N), em que N é o número de dispositivos de GPU no worker.
  • device_model: o modelo da GPU, como "Tesla T4".

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

Métricas comuns da GPU para o Dataflow

As métricas comuns são informadas por todos os jobs do Dataflow com GPUs. No Monitoring, todos 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 sendo executado 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 mostra apenas 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, é esperado algum uso, mesmo que nenhuma memória tenha sido transferida para a GPU ainda.
Erros de ECC voláteis corrigíveis memory/ecc/volatile device_correctable_total Contagem O número de erros de ECC corrigíveis (de bit único) desde a última recarga do driver. No Dataflow, a recarga do driver só acontece na inicialização do worker. Portanto, isso é equivalente a erros durante o ciclo de vida do worker.
Erros de ECC voláteis não corrigíveis memory/ecc/volatile device_uncorrectable_total Contagem O número de erros de ECC não corrigíveis (bit duplo) desde o último recarregamento do driver. No Dataflow, a recarga do driver só acontece na inicialização do worker. Portanto, isso é equivalente a erros durante o ciclo de vida do worker.
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 que a GPU precisa manter. 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 redução temperatura device_slowdown Celsius A temperatura em que a GPU vai começar a reduzir a velocidade. Se a temperatura atual exceder esse valor, você vai notar uma degradação de desempenho até que ele 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 GPUs que foram desligadas devido a temperaturas excessivamente altas.
Clock do SM atual relógio device_sm_current MHz A velocidade atual do clock do SM. Se a temperatura exceder o limite de redução, isso poderá diminuir como parte da limitação relacionada ao resfriamento.
Clock máximo do SM relógio device_sm_max MHz A velocidade máxima do clock do SM.
Clock de memória atual relógio device_memory_current MHz A velocidade atual do clock da memória. Se a temperatura exceder o limite de redução, isso poderá diminuir como parte da limitação relacionada ao resfriamento.
Clock máximo da memória relógio device_memory_max MHz A velocidade máxima do clock da memória.

Métricas de GPM para o Dataflow

O Dataflow oferece suporte a algumas métricas do 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 do GPM seguem os mesmos princípios básicos das métricas comuns.

Métricas disponíveis

Assim como as métricas comuns, os caminhos de métricas do GPM têm o seguinte formato:

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

Algumas dessas métricas estão na mesma categoria de 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 esteve ativo no SM, calculada com base na média de todos os SMs no dispositivo. É 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 maneira eficiente. A NVIDIA define o uso eficaz como 80% ou mais, e o uso ineficaz como 50% ou menos.
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 limitados pela memória têm uma ocupação maior do que os jobs limitados pela computação, e a métrica Porcentagem de acesso à memória pode fornecer insights sobre isso. Consulte mais detalhes na documentação da NVIDIA sobre ocupação alcançada.
Atividade do Tensor Pipe utilização device_tensor_pipe_activity Porcentagem A porcentagem de tempo em que o pipe do Tensor Core foi usado. 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 núcleo FP64 estava em uso. Valores mais altos indicam mais uso dos núcleos FP64 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 núcleo FP32 foi usado. Valores mais altos indicam mais uso dos núcleos FP32 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 foi usado. Ao contrário do FP64 e do FP32, que estão associados a núcleos CUDA de 64 bits e 32 bits, respectivamente, o FP16 está associado ao uso 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 host por PCIe.
Transferência PCIe pcie device_transfer MiB/s A taxa de transferência de dados da GPU para a VM host via PCIe.
Leitura do NVLink nvlink device_read MiB/s A taxa de dados lidos pela GPU pelo NVLink. Como o NVLink só abrange a comunicação entre GPUs, isso é irrelevante se cada worker tiver apenas uma GPU.
Transferência do 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 entre GPUs, isso é irrelevante se cada worker tiver apenas uma GPU.

Como coletar métricas de GPM

Qualquer job do Dataflow com GPUs que usam a arquitetura Hopper ou posterior (por exemplo, H100, H100 Mega) coleta métricas do GPM por padrão. Portanto, não é necessário fazer outras configurações. No entanto, 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"

Essa flag instala um equivalente gerenciado pelo GKE do NVIDIA DCGM-exporter. Os seguintes tipos são compatíveis com 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 do 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 entre as GPUs no worker. Recomendamos usar os equivalentes por dispositivo, principalmente 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" da 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 seguintes subcategorias aparecem em "ML do Dataflow":

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
Clock atual/máximo do SM
Clock atual/máximo da memória
Erros de ECC voláteis corrigíveis/não corrigíveis
Todos os jobs de GPU
Uso de GPM da GPU Atividade de SM
Ocupação de SM
Atividade de pipe do Tensor/CUDA
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 quando visualizado no Compute Engine. O número do dispositivo da GPU é o mesmo dos rótulos de métricas. Use essa filtragem para verificar métricas em um dispositivo de GPU específico, como a proximidade do uso de energia em relação ao limite:

Exemplo de filtragem de métricas de GPU por dispositivo