Esta página mostra como executar e otimizar as suas cargas de trabalho com grande exigência computacional, como inteligência artificial (IA) e processamento de gráficos, anexando e usando aceleradores de hardware da unidade de processamento de gráficos (GPU) NVIDIA® nos nós dos clusters Standard do Google Kubernetes Engine (GKE). Se estiver a usar pods do Autopilot, consulte o artigo Implemente cargas de trabalho de GPU no Autopilot.
Se quiser implementar clusters com GPUs NVIDIA B200 ou NVIDIA H200 de 141 GB, consulte os seguintes recursos:
- Para criar clusters do GKE, consulte o artigo Crie um cluster do Google Kubernetes Engine otimizado para IA com a configuração predefinida.
- Para criar clusters Slurm, consulte o artigo Crie um cluster Slurm otimizado para IA.
Vista geral
Com o GKE, pode criar grupos de nós equipados com GPUs. As GPUs oferecem capacidade de computação para executar tarefas de aprendizagem profunda, como reconhecimento de imagens, processamento de linguagem natural, bem como outras tarefas que exigem muita computação, como transcodificação de vídeo e processamento de imagens. No modo padrão do GKE, pode anexar hardware de GPU a nós nos seus clusters e, em seguida, atribuir recursos de GPU a cargas de trabalho em contentores em execução nesses nós.
Para saber mais sobre exemplos de utilização de GPUs, consulte a página GPUs. Google CloudPara mais informações sobre as GPUs no GKE e as diferenças entre o modo Standard e o modo Autopilot, consulte o artigo Acerca das GPUs no GKE.
Também pode usar GPUs com VMs Spot se as suas cargas de trabalho puderem tolerar interrupções frequentes de nós. A utilização de VMs do Spot reduz o preço de execução de GPUs. Para saber mais, consulte o artigo Usar VMs Spot com pools de nós de GPU.
A partir da versão 1.29.2-gke.1108000, já pode criar node pools de GPU no GKE Sandbox. Para mais informações, consulte os artigos GKE Sandbox e Configuração do GKE Sandbox.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
Requisitos para GPUs no GKE
As GPUs no GKE têm os seguintes requisitos:
Versão do Kubernetes: as versões disponíveis dependem da imagem do nó que as GPUs estão a usar:
- SO otimizado para contentores: GKE versão 1.9 ou superior
- Ubuntu: versão 1.11.3 ou superior do GKE
Quota de GPU: tem de ter quota de GPU do Compute Engine na zona selecionada antes de poder criar nós de GPU. Para garantir que tem quota de GPU suficiente no seu projeto, consulte Quotas na Google Cloud consola.
Se precisar de uma quota de GPU adicional, tem de pedir uma quota de GPU na Google Cloud consola. Se tiver uma conta de faturação estabelecida, o seu projeto recebe automaticamente a quota depois de enviar o pedido de quota.
Por predefinição, as contas de avaliação gratuita não recebem quota de GPU.
Controladores de GPU NVIDIA: quando cria um cluster ou um conjunto de nós, pode indicar ao GKE para instalar automaticamente uma versão do controlador com base na sua versão do GKE. Se não indicar ao GKE que instale automaticamente os controladores de GPU, tem de instalar os controladores manualmente.
Série de máquinas: o tipo de GPU que pode usar depende da série de máquinas, da seguinte forma:
- Série de máquinas A4X: GPUs GB200.
- Série de máquinas A4: GPUs B200.
- Série de máquinas A3: GPUs H200 (A3 Ultra) e GPUs H100 (A3 Mega, High e Edge).
- Série de máquinas A2: GPUs A100.
- Série de máquinas G2: GPUs L4.
- Série de máquinas N1: GPUs NVIDIA T4, GPUs NVIDIA V100, GPUs NVIDIA P100 ou GPUs NVIDIA P4.
Deve garantir que tem quota suficiente no seu projeto para a série de máquinas que corresponde ao tipo e à quantidade de GPUs selecionados.
GPUs em nós Ubuntu: se usar GPUs com nós Ubuntu, aplicam-se os seguintes requisitos:
Compatibilidade com o controlador:
GPUs L4 e GPUs H100: versão 535 ou posterior do controlador da NVIDIA
GPUs H200: versão 550 ou posterior do controlador da NVIDIA
GPUs B200: versão 570 ou posterior do controlador da NVIDIA
Se uma versão do controlador necessária ou uma versão posterior não for a versão predefinida na sua versão do GKE, tem de instalar manualmente um controlador suportado nos seus nós.
Compatibilidade de versões:
Quando usa a série de máquinas A4 em pools de nós do Ubuntu, tem de usar uma versão do GKE que inclua a imagem
ubuntu-gke-2404-1-32-amd64-v20250730
ou uma versão posterior da imagem do nó. As versões mínimas do GKE são as seguintes:- 1.32.7-gke.1067000 ou posterior para a versão 1.32 do GKE
- 1.33.3-gke.1247000 ou posterior para a versão 1.33 do GKE
Use o SO otimizado para contentores para nós de GPU. O SO otimizado para contentores inclui os controladores necessários para suportar a versão específica do GKE para nós de GPU.
Limitações da utilização de GPUs no GKE
Antes de usar GPUs no GKE, tenha em atenção as seguintes limitações:
- Não pode adicionar GPUs a pools de nós existentes.
- Não é possível migrar em direto nós de GPU durante eventos de manutenção.
- As GPUs não são suportadas em pools de nós do Windows Server.
- Os clusters padrão do GKE que executam a versão 1.28.2-gke.1098000 ou anterior não suportam o aprovisionamento automático de nós, o que impede a criação de conjuntos de nós com GPUs L4. No entanto, os clusters que executam versões anteriores suportam o dimensionamento do redimensionador automático de clusters dos conjuntos de nós existentes.
Disponibilidade de GPUs por regiões e zonas
As GPUs estão disponíveis em regiões e zonas específicas. Quando solicitar quota de GPUs, considere as regiões nas quais pretende executar os seus clusters.
Para ver uma lista completa das regiões e zonas aplicáveis, consulte o artigo GPUs no Compute Engine.
Também pode ver as GPUs disponíveis na sua zona através da Google Cloud CLI. Para ver uma lista de todos os tipos de aceleradores de GPU suportados em cada zona, execute o seguinte comando:
gcloud compute accelerator-types list
Preços
Para informações sobre os preços das GPUs, consulte a tabela de preços na Google Cloud página da GPU.
Certifique-se de que tem quota de GPU suficiente
A sua quota de GPUs é o número total de GPUs que podem ser executadas no seu Google Cloud projeto. Para criar clusters com GPUs, o seu projeto tem de ter uma quota de GPUs suficiente.
A sua quota de GPUs deve ser, pelo menos, equivalente ao número total de GPUs que pretende executar no cluster. Se ativar o dimensionamento automático do cluster, deve pedir uma quota de GPUs, pelo menos, equivalente ao número de GPUs por nó multiplicado pelo número máximo de nós do cluster.
Por exemplo, se criar um cluster com três nós que execute duas GPUs por nó, o seu projeto requer, pelo menos, uma quota de seis GPUs.
Pedir quota de GPU
Para pedir uma quota de GPU, use a Google Cloud consola. Para mais informações sobre como pedir quotas, consulte o artigo Quotas de GPUs na documentação do Compute Engine.
Para pesquisar a quota de GPU e enviar um pedido de quota, use a Google Cloud consola:
Aceda à página Quotas de IAM e administração na Google Cloud consola.
Na caixa Filtrar, faça o seguinte:
- Selecione a propriedade Quota, introduza o nome do modelo de GPU e prima Enter.
- (Opcional) Para aplicar filtros mais avançados para restringir os resultados, selecione a propriedade Dimensões (por exemplo, localizações), adicione o nome da região ou zona que está a usar e prima Enter.
Na lista de quotas de GPU, selecione a quota que quer alterar.
Clique em Editar quotas. É aberto um formulário de solicitação.
Preencha o campo Novo limite de quota para cada pedido de quota.
Preencha o campo Descrição do pedido com detalhes sobre o seu pedido.
Clicar em Seguinte.
Na caixa de diálogo Confirmação da substituição, clique em Confirmar.
No ecrã Detalhes de contacto, introduza o seu nome e um número de telefone que os aprovadores possam usar para concluir o seu pedido de alteração da quota.
Clique em Enviar pedido.
Recebe um email de confirmação para acompanhar a alteração da quota.
Executar GPUs em clusters padrão do GKE
Para executar GPUs em clusters padrão do GKE, crie um conjunto de nós com GPUs anexadas.
Para melhorar a rentabilidade, a fiabilidade e a disponibilidade das GPUs no GKE, execute as seguintes ações:
- Crie node pools de GPU separados. Para cada conjunto de nós, limite a localização dos nós às zonas onde as GPUs que quer estão disponíveis.
- Ative a escala automática em cada node pool.
- Use clusters regionais para melhorar a disponibilidade replicando o plano de controlo do Kubernetes em várias zonas da região.
- Configure o GKE para instalar automaticamente os controladores de GPU predefinidos ou mais recentes nos conjuntos de nós, para que não tenha de instalar e gerir manualmente as versões dos controladores.
Conforme descrito nas secções seguintes, o GKE usa taints e tolerâncias de nós para garantir que os pods não são agendados em nós inadequados.
Aplique uma mancha a um node pool de GPU para evitar agendá-lo de forma inadequada
Uma marca de contaminação de nó permite-lhe marcar um nó para que o programador evite ou impeça a sua utilização para determinados pods. Com base nos seguintes cenários, o GKE adiciona automaticamente taints ou pode adicioná-los manualmente:
Quando adiciona um pool de nós de GPU a um cluster existente que já executa um pool de nós sem GPU, o GKE contamina automaticamente os nós de GPU com a seguinte contaminação de nós:
- Chave:
nvidia.com/gpu
- Efeito:
NoSchedule
O GKE só adiciona esta mancha se existir, pelo menos, um conjunto de nós sem GPU no cluster.
- Chave:
Quando adiciona um node pool de GPU a um cluster que tem apenas node pools de GPU ou se criar um novo cluster em que o node pool predefinido tem GPUs anexadas, pode definir manualmente contaminações para o novo node pool com os seguintes valores:
- Chave:
nvidia.com/gpu
- Efeito:
NoSchedule
- Chave:
Quando adicionar um conjunto de nós sem GPU ao cluster no futuro, o GKE não aplica retroativamente esta restrição aos nós de GPU existentes. Tem de definir manualmente as restrições para o novo conjunto de nós.
Restringir automaticamente o agendamento com uma tolerância
As tolerâncias permitem-lhe designar pods que podem ser usados em nós "contaminados". O GKE aplica automaticamente uma tolerância para que apenas os pods que pedem GPUs sejam agendados em nós com GPUs. Isto permite o dimensionamento automático mais eficiente, uma vez que os nós de GPU podem ser rapidamente reduzidos se não houver Pods suficientes a pedir GPUs. Para o fazer, o GKE executa o controlador de admissão ExtendedResourceToleration.
Crie um node pool de GPU
Para criar um conjunto de nós de GPU separado num cluster existente, pode usar a Google Cloud consola ou a CLI Google Cloud. Também pode usar o Terraform para aprovisionar os seus clusters do GKE e o conjunto de nós de GPU.
O GKE suporta a instalação automática de controladores NVIDIA nos seguintes cenários:
- Para clusters do GKE com a versão do plano de controlo 1.32.2-gke.1297000 e posterior, o GKE instala automaticamente a versão do controlador NVIDIA predefinida para todos os nós de GPU, incluindo os criados com o aprovisionamento automático de nós.
- Para clusters do GKE com a versão do plano de controlo 1.30.1-gke.1156000 a 1.32.2-gke.1297000, o GKE instala automaticamente a versão predefinida do controlador da NVIDIA para nós não criados com o aprovisionamento automático de nós.
- Opcionalmente, pode escolher a versão do controlador mais recente disponível ou desativar explicitamente a instalação automática de controladores. Nas versões anteriores a 1.30.1-gke.1156000, o GKE não instala um controlador por predefinição se não especificar uma versão do controlador quando criar ou atualizar o conjunto de nós.
gcloud
Para criar um conjunto de nós com GPUs num cluster, execute o seguinte comando:
gcloud container node-pools create POOL_NAME \
--accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
--machine-type MACHINE_TYPE \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1[,COMPUTE_ZONE2] \
[--sandbox=type=gvisor]
[--enable-autoscaling \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES] \
[--scopes=SCOPES] \
[--service-account=SERVICE_ACCOUNT] \
[--reservation-affinity=specific --reservation=RESERVATION_NAME]
Substitua o seguinte:
POOL_NAME
: o nome que escolher para o node pool.GPU_TYPE
: o tipo de acelerador de GPU que usa. Por exemplo,nvidia-tesla-t4
.AMOUNT
: o número de GPUs a associar aos nós no node pool.DRIVER_VERSION
: a versão do controlador NVIDIA a instalar. Pode ser uma das seguintes opções:default
: instale a versão do controlador predefinida para a versão do GKE do seu nó. Na versão 1.30.1-gke.1156000 e posteriores do GKE, se omitir a flaggpu-driver-version
, esta é a opção predefinida. Nas versões anteriores, o GKE não instala um controlador se omitir esta flag.latest
: instale a versão do controlador mais recente disponível para a sua versão do GKE. Disponível apenas para nós que usam o SO otimizado para contentores.disabled
: ignorar a instalação automática de controladores. Tem de instalar manualmente um controlador depois de criar o conjunto de nós. Nas versões do GKE anteriores a 1.30.1-gke.1156000, esta é a opção predefinida.
A opção
gpu-driver-version
só está disponível para o GKE versão 1.27.2-gke.1200 e posteriores. Nas versões anteriores, omita esta flag e instale manualmente um controlador depois de criar o conjunto de nós. Se atualizar um cluster ou um conjunto de nós existente para esta versão ou posterior, o GKE instala automaticamente a versão do controlador predefinida que corresponde à versão do GKE, a menos que especifique o contrário quando iniciar a atualização.MACHINE_TYPE
: o tipo de máquina do Compute Engine para os nós. Obrigatório para os seguintes tipos de GPU:- GPUs NVIDIA B200 (correspondentes ao
nvidia-b200
tipo de acelerador e à série de máquinas A4) - GPUs NVIDIA H200 de 141 GB (correspondentes ao
nvidia-h200-141gb
tipo de acelerador e ao tipo de máquina A3 Ultra), GPUs NVIDIA H100 de 80 GB (correspondentes aonvidia-h100-80gb
tipo de acelerador e ao tipo de máquina A3 High) ou GPUs NVIDIA H100 de 80 GB Mega (correspondentes aonvidia-h100-mega-80gb
tipo de acelerador e ao tipo de máquina A3 Mega). Para mais informações, consulte a série de máquinas A3 na documentação do Compute Engine. - GPUs NVIDIA A100 de 40 GB (correspondentes ao
nvidia-tesla-a100
tipo de acelerador e ao tipo de máquina A2 Standard) ou GPUs NVIDIA A100 de 80 GB (correspondentes aonvidia-a100-80gb
tipo de acelerador e ao tipo de máquina A2 Ultra). Para mais informações, consulte a série de máquinas A2 na documentação do Compute Engine. - GPUs NVIDIA L4 (correspondentes ao
nvidia-l4
tipo de acelerador e à série de máquinas G2).
Para todas as outras GPUs, esta flag é opcional.
- GPUs NVIDIA B200 (correspondentes ao
CLUSTER_NAME
: o nome do cluster no qual criar o node pool.CONTROL_PLANE_LOCATION
: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.COMPUTE_ZONE1,COMPUTE_ZONE2,[...]
: as zonas específicas onde o GKE cria os nós de GPU. As zonas têm de estar na mesma região que o cluster, especificada pela flag--location
. Os tipos de GPU que definir têm de estar disponíveis em cada zona selecionada. Se usar uma reserva, tem de especificar as zonas onde a reserva tem capacidade. Recomendamos que use sempre a flag--node-locations
ao criar o conjunto de nós para especificar a zona ou as zonas que contêm as GPUs pedidas.Opcionalmente, pode criar pools de nós para executar cargas de trabalho em sandbox com o gVisor. Para saber mais, consulte o artigo GKE Sandbox para ver detalhes.
MIN_NODES
: o número mínimo de nós para cada zona no node pool em qualquer altura. Este valor só é relevante se for usada a flag--enable-autoscaling
.MAX_NODES
: o número máximo de nós para cada zona no node pool em qualquer altura. Este valor só é relevante se for usada a flag--enable-autoscaling
.Opcionalmente, pode criar o conjunto de nós da GPU com uma conta de serviço personalizada anexando as seguintes flags. Se for omitida, o conjunto de nós usa a conta de serviço predefinida do Compute Engine:
SERVICE_ACCOUNT
: o nome da conta de serviço de IAM que os seus nós usam.SCOPES
: uma lista separada por vírgulas de âmbitos de acesso a conceder. Certifique-se de que um dos âmbitos éstorage-ro
ouhttps://www.googleapis.com/auth/devstorage.read_only
. Para saber mais sobre os âmbitos, consulte o artigo Definir âmbitos de acesso. Se omitir a flag scope, a criação do conjunto de nós da GPU falha com um erro AccessDenied failed to download gpu_driver_versions.bin from GCS bucket.
RESERVATION_NAME
: o nome da reserva de GPU a usar. Especifique a flag--reservation
com--reservation-affinity=specific
para usar a capacidade da GPU de uma reserva específica. Para mais informações, consulte o artigo Usar uma reserva de projeto único específica.
Por exemplo, o comando seguinte cria um conjunto de nós de escalamento automático de alta disponibilidade, p100
, com duas GPUs P100 para cada nó, no cluster regional p100-cluster
.
O GKE instala automaticamente os controladores predefinidos nesses nós.
gcloud container node-pools create p100 \
--accelerator type=nvidia-tesla-p100,count=2,gpu-driver-version=default \
--cluster p100-cluster \
--location us-central1 \
--node-locations us-central1-c \
--min-nodes 0 --max-nodes 5 --enable-autoscaling
Consola
Para criar um node pool com GPUs:
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Na lista de clusters, clique no nome do cluster que quer modificar.
Clique em add_box Adicionar conjunto de nós.
Opcionalmente, na página Detalhes do conjunto de nós, selecione a caixa de verificação Ativar o dimensionamento automático.
Configure o node pool como quiser.
No painel de navegação, selecione Nodes.
Em Configuração da máquina, clique em GPU.
Selecione um tipo de GPU e o número de GPUs a executar em cada nó.
Leia o aviso e selecione Compreendo as limitações.
Na secção Instalação do controlador da GPU, selecione um dos seguintes métodos:
- Gerido pela Google: o GKE instala automaticamente um controlador.
Se selecionar esta opção, escolha uma das seguintes opções no menu pendente Versão:
- Predefinição: instale a versão do controlador predefinida.
- Mais recente: instale a versão do controlador mais recente disponível.
- Gerido pelo cliente: o GKE não instala um controlador. Tem de instalar manualmente um controlador compatível através das instruções em Instalar controladores de dispositivos de GPU NVIDIA.
- Gerido pela Google: o GKE instala automaticamente um controlador.
Se selecionar esta opção, escolha uma das seguintes opções no menu pendente Versão:
Clique em Criar.
Terraform
Pode criar um cluster regional com o Terraform com GPUs através de um módulo Terraform.
Defina as variáveis do Terraform incluindo o seguinte bloco no ficheiro
variables.tf
:variable "project_id" { default = PROJECT_ID description = "the gcp_name_short project where GKE creates the cluster" } variable "region" { default = CLUSTER_REGION description = "the gcp_name_short region where GKE creates the cluster" } variable "zone" { default = "COMPUTE_ZONE" description = "the GPU nodes zone" } variable "cluster_name" { default = "CLUSTER_NAME" description = "the name of the cluster" } variable "gpu_type" { default = "GPU_TYPE" description = "the GPU accelerator type" } variable "gpu_driver_version" { default = "DRIVER_VERSION" description = "the NVIDIA driver version to install" } variable "machine_type" { default = "MACHINE_TYPE" description = "The Compute Engine machine type for the VM" }
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.CLUSTER_NAME
: o nome do cluster do GKE.CLUSTER_REGION
: a região de computação do cluster.COMPUTE_ZONE
: a zona específica onde o GKE cria os nós da GPU. A zona tem de estar na mesma região especificada pela variávelregion
. Estas zonas têm de ter os tipos de GPU definidos disponíveis. Para mais informações, consulte o artigo Disponibilidade de GPUs por regiões e zonas.GPU_TYPE
: o tipo de acelerador de GPU que usa. Por exemplo,nvidia-tesla-t4
.DRIVER_VERSION
: a versão do controlador da GPU para o GKE instalar automaticamente. Este campo é opcional. Os seguintes valores são suportados:INSTALLATION_DISABLED
: desative a instalação automática de controladores da GPU. Tem de instalar manualmente os controladores para executar as GPUs. Nas versões do GKE anteriores a 1.30.1-gke.1156000, esta é a opção predefinida se omitir este campo.DEFAULT
: instale automaticamente a versão do controlador predefinida para a versão do sistema operativo do nó. Na versão 1.30.1-gke.1156000 e posteriores do GKE, se omitir este campo, esta é a opção predefinida. Nas versões anteriores, o GKE não instala um controlador se omitir este campo.LATEST
: instale automaticamente a versão mais recente do controlador disponível para a versão do SO do nó. Disponível apenas para nós que usam o SO otimizado para contentores.
Se omitir este campo, o GKE não instala automaticamente um controlador. Este campo não é suportado em pools de nós que usam o aprovisionamento automático de nós. Para instalar manualmente um controlador, consulte o artigo Instale manualmente os controladores de GPU NVIDIA neste documento.
MACHINE_TYPE
: o tipo de máquina do Compute Engine para os nós. Obrigatório para os seguintes tipos de GPU:- GPUs NVIDIA B200 (correspondentes ao
nvidia-b200
tipo de acelerador e à série de máquinas A4) - GPUs NVIDIA H200 de 141 GB (correspondentes ao tipo de acelerador
nvidia-h200-141gb
e ao tipo de máquina A3 Ultra), ou GPUs NVIDIA H100 de 80 GB (correspondentes ao tipo de aceleradornvidia-h100-80gb
e ao tipo de máquina A3 High), ou GPUs NVIDIA H100 de 80 GB Mega (correspondentes ao tipo de aceleradornvidia-h100-mega-80gb
e ao tipo de máquina A3 Mega). Para mais informações, consulte a série de máquinas A3 na documentação do Compute Engine. - GPUs NVIDIA A100 de 40 GB (correspondentes ao
nvidia-tesla-a100
tipo de acelerador e ao tipo de máquina A2 Standard) ou GPUs NVIDIA A100 de 80 GB (correspondentes aonvidia-a100-80gb
tipo de acelerador e ao tipo de máquina A2 Ultra). Para mais informações, consulte a série de máquinas A2 na documentação do Compute Engine. - GPUs NVIDIA L4 (correspondentes ao
nvidia-l4
tipo de acelerador e à série de máquinas G2).
Para todas as outras GPUs, esta flag é opcional.
- GPUs NVIDIA B200 (correspondentes ao
Adicione o seguinte bloco à configuração do Terraform:
provider "google" { project = var.project_id region = var.region } resource "google_container_cluster" "ml_cluster" { name = var.cluster_name location = var.region initial_node_count = 1 } resource "google_container_node_pool" "gpu_pool" { name = google_container_cluster.ml_cluster.name location = var.region node_locations = [var.zones] cluster = google_container_cluster.ml_cluster.name node_count = 3 autoscaling { total_min_node_count = "1" total_max_node_count = "5" } management { auto_repair = "true" auto_upgrade = "true" } node_config { oauth_scopes = [ "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/trace.append", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", ] labels = { env = var.project_id } guest_accelerator { type = var.gpu_type count = 1 gpu_driver_installation_config { gpu_driver_version = var.gpu_driver_version } } image_type = "cos_containerd" machine_type = var.machine_type tags = ["gke-node", "${var.project_id}-gke"] disk_size_gb = "30" disk_type = "pd-standard" metadata = { disable-legacy-endpoints = "true" } } }
O Terraform chama as APIs Google Cloud para definir a criação de um novo cluster com um grupo de nós que usa GPUs. Inicialmente, o conjunto de nós tem três nós e a escalabilidade automática está ativada. Para saber mais sobre o Terraform, consulte a especificação de recursos google_container_node_pool
em terraform.io.
Para evitar custos adicionais, remova todos os recursos definidos no ficheiro de configuração através do comando terraform destroy
.
Prática recomendada:
Também pode criar um novo cluster com GPUs e especificar zonas através da flag
--node-locations
. No entanto, recomendamos que crie um conjunto de nós de GPU separado num cluster existente, conforme mostrado nesta secção.
Instale manualmente os controladores da GPU NVIDIA
Pode instalar manualmente os controladores da GPU NVIDIA nos seus nós implementando um DaemonSet de instalação nesses nós. Use a instalação manual nas seguintes situações:
- Optou por desativar a instalação automática de controladores de dispositivos quando criou um conjunto de nós da GPU.
- Está a usar uma versão do GKE anterior à versão mínima suportada para instalação automática.
- A sua carga de trabalho requer uma versão específica do controlador NVIDIA que não está disponível como o controlador predefinido ou mais recente com instalação automática. Por exemplo, usar GPUs com Confidential GKE Nodes.
Use a instalação automática de controladores sempre que possível.
Para o fazer, especifique a opção gpu-driver-version
na flag --accelerator
quando
criar o cluster padrão. Se usou o DaemonSet de instalação a 25 de janeiro de 2023 ou antes para instalar manualmente os controladores da GPU, pode ter de voltar a aplicar o DaemonSet para obter uma versão que ignore os nós que usam a instalação automática de controladores.
Para executar o DaemonSet de instalação, o conjunto de nós da GPU requer o âmbito https://www.googleapis.com/auth/devstorage.read_only
para comunicar com o Cloud Storage.
Sem este âmbito, a transferência do manifesto DaemonSet de instalação falha.
Este âmbito é um dos âmbitos predefinidos, que é normalmente adicionado quando cria o cluster.
As instruções seguintes mostram como instalar os controladores em nós do SO otimizado para contentores (COS) e do Ubuntu, e através do Terraform.
COS
Para implementar o DaemonSet de instalação e instalar a versão predefinida do controlador de GPU, execute o seguinte comando:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
Para instalar uma versão mais recente do controlador da GPU a partir da tabela de versões do controlador nesta secção, execute o seguinte comando:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded-latest.yaml
Para instalar uma versão do controlador da GPU que suporte a execução de cargas de trabalho da GPU em nós do GKE confidenciais, execute o seguinte comando:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nvidia-driver-installer/cos/daemonset-confidential.yaml
A instalação demora vários segundos a ser concluída. Após a conclusão da instalação, o plug-in do dispositivo de GPU NVIDIA usa a API Kubernetes para disponibilizar a capacidade da GPU NVIDIA.
Cada versão do SO otimizado para contentores tem, pelo menos, uma versão do controlador da GPU NVIDIA suportada. Para mais informações sobre o mapeamento da versão do controlador da GPU para a versão do GKE, pode fazer qualquer uma das seguintes ações:
- Mapeie a versão do GKE e a versão da imagem do nó do SO otimizado para contentores para a versão do controlador da GPU.
- Use a tabela seguinte, que lista as versões de controladores de GPU disponíveis em cada versão do GKE:
Versões do controlador NVIDIA do GKE | |
---|---|
1,33 | R535 (predefinição), R570, R575 ou R580 |
1,32 | R535 (predefinição), R570, R575 ou R580 |
1.31 | R535 (predefinição), R570, R575 ou R580 |
1,30 | R535 (predefinição) ou R550 |
1,29 | R535 (predefinição) ou R550 |
1,28 | R535 (predefinição) ou R550 |
1.27 | R470 (predefinição), R525, R535 ou R550 |
1,26 | R470 (predefinição), R525, R535 ou R550 |
Ubuntu
O DaemonSet de instalação que implementa depende do tipo de GPU e da versão do nó do GKE da seguinte forma:
Para todas as GPUs, exceto as GPUs NVIDIA H200, execute o seguinte comando:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml
Para GPUs NVIDIA H200, instale o controlador
R550
:kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R550.yaml
A instalação demora vários segundos a ser concluída. Após a instalação, o plug-in do dispositivo de GPU da NVIDIA usa a API Kubernetes para disponibilizar a capacidade da GPU da NVIDIA.
A tabela seguinte indica as versões de controladores disponíveis em cada versão do GKE:
Controladores de GPU do Ubuntu e versões do GKE | ||
---|---|---|
1,33 | R535 (predefinição) | |
1,32 | R535 (predefinição) | |
1.31 | R535 (predefinição) | |
1,30 | R470 ou R535 | |
1,29 | R470 ou R535 | |
1,28 | R470 ou R535 | |
1.27 | R470 ou R535 | |
1,26 | R470 ou R535 |
Terraform
Pode usar o Terraform para instalar a versão predefinida do controlador da GPU com base no tipo de nós. Em ambos os casos, tem de configurar o
kubectl_manifest
tipo de recurso do Terraform.
Para instalar o DaemonSet no COS, adicione o seguinte bloco na configuração do Terraform:
data "http" "nvidia_driver_installer_manifest" { url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml" } resource "kubectl_manifest" "nvidia_driver_installer" { yaml_body = data.http.nvidia_driver_installer_manifest.body }
Para instalar o DaemonSet no Ubuntu, adicione o seguinte bloco na sua configuração do Terraform:
data "http" "nvidia_driver_installer_manifest" { url = "https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml" } resource "kubectl_manifest" "nvidia_driver_installer" { yaml_body = data.http.nvidia_driver_installer_manifest.body }
Mapeie a versão do GKE e a versão da imagem do nó do SO otimizado para contentores para a versão do controlador da GPU
Para encontrar as versões dos controladores da GPU mapeadas com as versões do GKE e as versões das imagens dos nós do SO otimizado para contentores, siga estes passos:- Mapeie as versões de imagens de nós do Container-Optimized OS para as versões de patches do GKE para a versão específica do GKE onde quer encontrar a versão do controlador da GPU. Por exemplo, 1.33.0-gke.1552000 usa cos-121-18867-90-4.
- Escolha a etapa da versão da imagem do nó do SO otimizado para contentores nas notas de lançamento do SO otimizado para contentores. Por exemplo, escolha o marco 121 para cos-121-18867-90-4.
- Na página de notas de lançamento da etapa específica, encontre a nota de lançamento correspondente à versão específica da imagem do nó do SO otimizado para contentores. Por exemplo, em Notas de lançamento do SO otimizado para contentores: marco 121, consulte cos-121-18867-90-4. Na tabela na coluna Drivers de GPU, clique em Ver lista para ver as informações da versão do driver de GPU.
Instalar controladores através do aprovisionamento automático de nós com GPUs
Quando usa o aprovisionamento automático de nós com GPUs, por predefinição, os conjuntos de nós aprovisionados automaticamente não têm âmbitos suficientes para instalar os controladores. Para conceder os âmbitos necessários, modifique os âmbitos predefinidos para o aprovisionamento automático de nós para adicionar logging.write
, monitoring
, devstorage.read_only
e compute
, como no exemplo seguinte.
gcloud container clusters update CLUSTER_NAME --enable-autoprovisioning \
--min-cpu=1 --max-cpu=10 --min-memory=1 --max-memory=32 \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/compute
Para clusters que executam a versão 1.32.2-gke.1297000 e posterior do GKE, o GKE instala automaticamente a versão predefinida do controlador da NVIDIA para todos os nós de GPU, incluindo os criados com o aprovisionamento automático de nós. Pode ignorar as seguintes instruções para clusters que executam a versão 1.32.2-gke.1297000 e posterior do GKE.
Na versão 1.29.2-gke.1108000 e posteriores do GKE, pode selecionar uma versão do controlador de GPU para o GKE instalar automaticamente em nós de GPU aprovisionados automaticamente. Adicione o seguinte campo ao manifesto:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
Substitua DRIVER_VERSION
por um dos seguintes valores:
default
: o controlador estável predefinido para a versão do GKE do seu nó.latest
: a versão do controlador mais recente disponível para a versão do GKE do seu nó.disabled
: desative a instalação automática do controlador da GPU. Com este valor selecionado, tem de instalar manualmente os controladores para executar as suas GPUs. Nas versões do GKE anteriores à 1.32.2-gke.1297000, esta é a opção predefinida se omitir o seletor de nós.
Para saber mais sobre o aprovisionamento automático, consulte o artigo Usar o aprovisionamento automático de nós.
Configurar pods para consumir GPUs
Usa um limite de recursos para configurar os pods de modo a consumirem GPUs. Especifica um limite de recursos numa especificação de pod através do seguinte par de chave-valor
- Chave:
nvidia.com/gpu
- Valor: número de GPUs a consumir
O alpha.kubernetes.io/nvidia-gpu
não é suportado como nome de recurso no GKE. Em alternativa, use nvidia.com/gpu
como o nome do recurso.
O manifesto seguinte é um exemplo de uma especificação de pod que consome GPUs:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
# Optional: Use GKE Sandbox
# runtimeClassName: gvisor
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: 2
Consumir vários tipos de GPUs
Se quiser usar vários tipos de aceleradores de GPU por cluster, tem de criar vários conjuntos de nós, cada um com o seu próprio tipo de acelerador. O GKE anexa um seletor de nós exclusivo aos nós de GPU para ajudar a colocar cargas de trabalho de GPU em nós com tipos de GPU específicos:
- Chave:
cloud.google.com/gke-accelerator
- Valor: o tipo de acelerador de GPU que usa.
Por exemplo,
nvidia-tesla-t4
.
Pode segmentar tipos de GPU específicos adicionando este seletor de nós à especificação do pod de carga de trabalho. Por exemplo:
apiVersion: v1
kind: Pod
metadata:
name: my-gpu-pod
spec:
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
limits:
nvidia.com/gpu: 2
nodeSelector:
cloud.google.com/gke-accelerator: nvidia-tesla-t4
Atualize node pools com aceleradores (GPUs e TPUs)
O GKE atualiza automaticamente os clusters padrão, incluindo os conjuntos de nós. Também pode atualizar manualmente os conjuntos de nós se quiser que os seus nós tenham uma versão mais recente mais cedo. Para controlar o funcionamento das atualizações para o seu cluster, use canais de lançamento, janelas de manutenção e exclusões e sequenciação da implementação.
Também pode configurar uma estratégia de atualização de nós para o seu conjunto de nós, como atualizações rápidas, atualizações azul-verde ou atualizações de curta duração. Ao configurar estas estratégias, pode garantir que os conjuntos de nós são atualizados de forma a alcançar o equilíbrio ideal entre velocidade e interrupção para o seu ambiente. Para pools de nós de fatias de TPU com vários anfitriões, em vez de usar a estratégia de atualização de nós configurada, o GKE recria atomicamente todo o pool de nós num único passo. Para saber mais, consulte a definição de atomicidade na terminologia relacionada com a TPU no GKE.
A utilização de uma estratégia de atualização de nós requer temporariamente que o GKE faculte recursos adicionais, consoante a configuração. Se o Google Cloud tiver capacidade limitada para os recursos do seu conjunto de nós, por exemplo, se vir erros de disponibilidade de recursos ao tentar criar mais nós com GPUs ou TPUs, consulte o artigo Atualize num ambiente com restrições de recursos.
Acerca das bibliotecas NVIDIA CUDA-X
CUDA
é a plataforma de computação paralela e o modelo de programação da NVIDIA para GPUs. Para usar aplicações CUDA, a imagem que usa tem de ter as bibliotecas. Para adicionar as bibliotecas NVIDIA CUDA-X, pode criar e usar a sua própria imagem incluindo os seguintes valores na variável de ambiente LD_LIBRARY_PATH
na especificação do contentor:
/usr/local/nvidia/lib64
: a localização dos controladores de dispositivos NVIDIA./usr/local/cuda-CUDA_VERSION/lib64
: a localização das bibliotecas NVIDIA CUDA-X no nó.Substitua
CUDA_VERSION
pela versão da imagem CUDA-X que usou. Algumas versões também contêm utilitários de depuração em/usr/local/nvidia/bin
. Para obter detalhes, consulte a imagem NVIDIA CUDA no DockerHub.Para verificar a versão mínima do controlador da GPU necessária para a sua versão do CUDA, consulte CUDA Toolkit and Compatible Driver Versions (Kit de ferramentas CUDA e versões de controladores compatíveis).
Monitorize o desempenho da carga de trabalho do nó da GPU
Se o seu cluster do GKE tiver as métricas do sistema ativadas, as seguintes métricas estão disponíveis no Cloud Monitoring para monitorizar o desempenho da carga de trabalho da GPU:
- Ciclo de trabalho (
container/accelerator/duty_cycle
): percentagem de tempo durante o período de amostragem anterior (10 segundos) durante o qual o acelerador estava a processar ativamente. Entre 1 e 100. - Utilização de memória (
container/accelerator/memory_used
): Quantidade de memória do acelerador atribuída em bytes. - Capacidade da memória (
container/accelerator/memory_total
): total de memória do acelerador em bytes.
Estas métricas aplicam-se ao nível do contentor (container/accelerator
) e não são recolhidas para contentores agendados numa GPU que usa a partilha de tempo da GPU ou o NVIDIA MPS.
Pode usar painéis de controlo predefinidos para monitorizar os seus clusters com nós de GPU. Para mais informações, consulte o artigo Veja as métricas de observabilidade. Para ver informações gerais sobre a monitorização dos seus clusters e respetivos recursos, consulte a Observabilidade para o GKE.
Veja as métricas de utilização das cargas de trabalho
Pode ver as métricas de utilização da GPU da carga de trabalho no painel de controlo Cargas de trabalho na consola Google Cloud .
Para ver a utilização da GPU da carga de trabalho, siga estes passos:
Aceda à página Workloads na Google Cloud consola.
Aceda a Cargas de trabalho- Selecione uma carga de trabalho.
O painel de controlo Workloads apresenta gráficos para a utilização e a capacidade da memória da GPU, bem como o ciclo de atividade da GPU.
Veja as métricas do NVIDIA Data Center GPU Manager (DCGM)
Pode recolher e visualizar métricas do NVIDIA DCGM através do Google Cloud Managed Service for Prometheus. Para os clusters do Autopilot, o GKE instala os controladores. Para clusters padrão, tem de instalar os controladores da NVIDIA.
Para instruções sobre como implementar o pacote DCGM gerido pelo GKE, consulte o artigo Recolha e veja métricas do NVIDIA Data Center GPU Manager (DCGM).
Configure o encerramento elegante dos nós de GPU
Nos clusters do GKE com o plano de controlo a executar a versão 1.29.1-gke.1425000 ou posterior, os nós da GPU suportam sinais SIGTERM
que alertam o nó para um encerramento iminente. A notificação de encerramento iminente é configurável até 60 minutos
nos nós da GPU.
Para configurar o GKE de modo a terminar as suas cargas de trabalho normalmente dentro deste período de notificação, siga os passos em Gerir a interrupção de nós do GKE para GPUs e TPUs.
O que se segue?
- Saiba mais sobre os conjuntos de nós.
- Saiba como usar uma plataforma de CPU mínima para os seus nós.
- Saiba como criar e configurar um contentor de aprendizagem profunda local com o Docker.
- Saiba como usar nós GKE confidenciais nos seus conjuntos de nós de GPU (pré-visualização).
- Saiba mais sobre o sandbox de cargas de trabalho de GPU com o GKE Sandbox