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:
