Pular para o conteúdo principal

GPU node pools

GPUs são caras. Configure-as corretamente, escale para zero quando ociosas e use instâncias spot para jobs de treinamento que suportam checkpoint.

Famílias de VMs GPU

SérieGPUVRAMCaso de UsoOpinião
NC A100 v4A10080 GBMaioria das cargas ML/IAEscolha padrão para inference e fine-tuning
ND H100 v5H10080 GBTreinamento de modelos grandesQuando A100 não é suficiente (modelos com 100B+ parâmetros)
NC T4 v3T416 GBInference leve, dev/testOpção econômica, boa para testes
NV v3M608 GBApenas visualizaçãoNão serve para ML/IA
Opinião

Use Standard_NC24ads_A100_v4 para a maioria das cargas de trabalho ML/IA. Ela dá conta de inference, fine-tuning e treinamento moderado. Só migre para ND H100 para treinamento distribuído em larga escala. Use NC T4 para dev/test e inference leve onde custo importa mais que throughput.

Criando um GPU node pool

# Add GPU node pool with autoscaling (scales to 0 when idle)
az aks nodepool add \
--resource-group myrg \
--cluster-name myaks \
--name gpua100 \
--node-vm-size Standard_NC24ads_A100_v4 \
--node-count 0 \
--min-count 0 \
--max-count 4 \
--enable-cluster-autoscaler \
--node-taints "sku=gpu:NoSchedule" \
--labels workload=gpu \
--zones 1 2 3
aviso

Sempre aplique taint nos nodes GPU com NoSchedule. Sem taints, o scheduler vai colocar workloads regulares nos seus nodes GPU caros. O taint garante que apenas pods com tolerations correspondentes sejam alocados ali.

NVIDIA device plugin

O AKS instala automaticamente o NVIDIA device plugin nos nodes GPU. Você não precisa instalá-lo manualmente. Ele expõe nvidia.com/gpu como um recurso agendável.

Solicitando GPU na spec do pod

apiVersion: v1
kind: Pod
metadata:
name: gpu-inference
spec:
tolerations:
- key: "sku"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
containers:
- name: model-server
image: myacr.azurecr.io/inference-server:latest
resources:
limits:
nvidia.com/gpu: 1
env:
- name: NVIDIA_VISIBLE_DEVICES
value: "all"
nodeSelector:
workload: gpu
informação

GPUs não podem ser compartilhadas entre containers nativamente. Se você solicitar nvidia.com/gpu: 1, você recebe uma GPU inteira. Para compartilhamento, veja NVIDIA MIG (Multi-Instance GPU) ou time-slicing -- abordados em Inference Serving.

Instâncias Spot para GPU

Use spot para jobs de treinamento que suportam checkpoint. Nunca use spot para inference serving.

# Spot GPU pool -- saves 60-90% but can be evicted
az aks nodepool add \
--resource-group myrg \
--cluster-name myaks \
--name gpuspot \
--node-vm-size Standard_NC24ads_A100_v4 \
--priority Spot \
--eviction-policy Delete \
--spot-max-price -1 \
--min-count 0 \
--max-count 8 \
--enable-cluster-autoscaler \
--node-taints "kubernetes.azure.com/scalesetpriority=spot:NoSchedule" \
--labels workload=gpu-spot
Carga de TrabalhoUsar Spot?Por quê
Treinamento de modelo (com checkpointing)SimEconomiza 60-90%, reinicia do checkpoint em caso de eviction
Batch inference (não tempo-real)SimReenfileira batches que falharam
Inference serving em tempo realNãoEviction causa indisponibilidade para o usuário
Fine-tuning (horas de duração)Sim, com checkpointsEconomiza significativamente em jobs longos

Gestão de custos

GPUs são 5-10x mais caras que computação geral. Gerencie custos agressivamente:

  1. Escale para zero: Configure --min-count 0 nos pools GPU. O autoscaler remove nodes quando não há pods GPU pendentes.
  2. Use spot para treinamento: 60-90% mais barato para trabalhos interrompíveis.
  3. Dimensione corretamente os requests de GPU: Não solicite 4 GPUs quando 1 basta. Cada GPU ociosa desperdiça $2-10/hora.
  4. Agende treinamento fora do pico: A disponibilidade de spot é maior fora do horário de pico.
# Check current GPU utilization before adding capacity
kubectl top pods -l workload=gpu --containers

Erros comuns

  1. Não aplicar taint nos nodes GPU-- Pods regulares ocupam nodes GPU caros.
  2. Configurar min-count > 0 para cargas intermitentes -- Pagando por GPUs ociosas 24/7.
  3. Usar spot para inference em produção -- Usuários recebem erros quando nodes são despejados.
  4. Esquecer das zonas de disponibilidade -- SKUs de GPU têm disponibilidade limitada por zona. Verifique antes.

Recursos