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:
