ITFabricLab ouvre bientôt : les labs, simulations et examens ne sont pas encore accessibles. Vous pouvez parcourir le catalogue et créer votre compte pour être prévenu de l'ouverture.

Service d'inférence qui échoue sous charge (mémoire GPU saturée)

```text
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.50 GiB (GPU 0; 23.65 GiB total capacity; 22.10 GiB already allocated)
```

Détecter

Le service de génération répond correctement à faible trafic, puis renvoie des 500 et redémarre lors des pics ; la latence p99 explose avant les erreurs.

Symptômes

Le service de génération répond correctement à faible trafic, puis renvoie des 500 et redémarre lors des pics ; la latence p99 explose avant les erreurs.

Environnement

Serveur d'inférence de LLM sur GPU 24 Go, déploiement Kubernetes, requêtes avec contextes longs.

Cause racine

La mémoire GPU est consommée par les poids et par le cache KV, proportionnel au nombre de requêtes simultanées × longueur de contexte. Sans limite de concurrence ni de longueur, un pic de requêtes longues sature la mémoire.

Diagnostic

  1. nvidia-smi / métriques DCGM : mémoire utilisée, utilisation.
  2. Corréler avec la concurrence et la longueur moyenne des prompts.
  3. Journaux du serveur d'inférence : taille de lot, préemptions.

Solution

  • Limiter la concurrence et la longueur maximale de contexte (paramètres du serveur, ex. max_num_seqs, max_model_len, gpu_memory_utilization).
  • File d'attente avec rejet contrôlé (429) plutôt que plantage.
  • Quantification ou GPU plus grand ; mise à l'échelle horizontale sur la longueur de file.

Commandes

nvidia-smi --query-gpu=memory.used,memory.total,utilization.gpu --format=csv -l 2
kubectl top pod -n inference

Prévention

Test de charge avec distribution réaliste de longueurs, alertes sur mémoire GPU et longueur de file, autoscaling sur métrique de file d'attente.