Aller au contenu principal

Infrastructure et GPU

Dimensionner votre infrastructure GPU

Choisir le bon GPU, la bonne quantité de mémoire et le bon outil d’orchestration est une étape critique du self-hosting. Cette leçon couvre les exigences matérielles des modèles Mistral, les techniques de quantization pour réduire les besoins mémoire, et les outils d’orchestration comme SkyPilot et Cerebrium.

Exigences GPU par modèle

Mémoire GPU requise (FP16, sans quantization)

ModèleParamètresVRAM minimaleGPU recommandé
Mistral 7B7B16 Go1x A10G / L4
Mistral Nemo12B24 Go1x A10G / RTX 4090
Mixtral 8x7B46.7B100 Go2x A100-80GB
Mixtral 8x22B141B300 Go4x A100-80GB
Mistral Large123B250 Go4x A100-80GB
Codestral22B48 Go1x A100-80GB

Règle d’estimation rapide

En FP16, comptez environ 2 Go de VRAM par milliard de paramètres. Pour un modèle de 7B paramètres : 7 x 2 = 14 Go minimum, plus l’overhead du KV cache et du moteur d’inférence.

Quantization : réduire les besoins mémoire

La quantization réduit la précision des poids du modèle pour diminuer la consommation mémoire, souvent avec un impact minimal sur la qualité.

FP8 (8 bits)

La quantization FP8 divise la mémoire par deux par rapport au FP16 :

# Servir un modèle en FP8 avec vLLM
vllm serve mistralai/Mistral-Nemo-Instruct-2407 \
    --tokenizer_mode mistral \
    --config_format mistral \
    --load_format mistral \
    --dtype float8_e4m3fn
ModèleFP16FP8Réduction
Mistral 7B14 Go7 Go-50%
Mistral Nemo24 Go12 Go-50%
Mixtral 8x7B100 Go50 Go-50%

INT4 (4 bits)

La quantization 4-bit réduit encore davantage la mémoire, mais avec un impact plus visible sur la qualité :

# AWQ quantization avec TGI
docker run --gpus all --shm-size 1g \
    -p 8080:80 \
    -e HUGGING_FACE_HUB_TOKEN=$HF_TOKEN \
    ghcr.io/huggingface/text-generation-inference:2.0.3 \
    --model-id mistralai/Mistral-7B-Instruct-v0.3 \
    --quantize awq

Impact sur la qualité

PrécisionMémoireQualitéVitesse
FP16RéférenceRéférenceRéférence
FP8-50%-1 à -2%+10-20%
INT4-75%-3 à -5%+30-50%

En pratique, le FP8 est recommandé pour la production — la perte de qualité est négligeable. L’INT4 convient pour le prototypage ou les environnements à mémoire très limitée.

SkyPilot : orchestration multi-cloud

SkyPilot est un framework open-source pour déployer des LLM sur n’importe quel cloud (AWS, GCP, Azure, Lambda Labs, etc.). Il gère automatiquement la sélection du GPU le moins cher et le provisionning.

Configurations prêtes à l’emploi

Mistral fournit des fichiers YAML pour SkyPilot :

# mistral-7b.yaml
resources:
  accelerators: A10G:1
  cloud: aws

setup: |
  pip install vllm

run: |
  vllm serve mistralai/Mistral-7B-Instruct-v0.3 \
      --tokenizer_mode mistral \
      --config_format mistral \
      --load_format mistral

Déploiement

# Installer SkyPilot
pip install "skypilot[aws,gcp,azure]"

# Lancer le cluster
sky launch -c mistral-7b mistral-7b.yaml --region us-east-1

# Vérifier le statut
sky status

# Arrêter (pour économiser)
sky stop mistral-7b

# Supprimer
sky down mistral-7b

Configurations GPU recommandées

ModèleConfig SkyPilotCloud estimé
Mistral 7BA10G:1~1$/h
Mixtral 8x7BA100-80GB:2~6$/h
Mixtral 8x22BA100-80GB:4~12$/h

Sécurité

SkyPilot crée des VM avec des ports ouverts par défaut. En production :

  • Restreignez le réseau avec des Security Groups / Firewall Rules
  • Ajoutez un load balancer avec authentification
  • Ne laissez pas le port 8000 ouvert sur Internet

Cerebrium : serverless GPU

Cerebrium est une plateforme serverless pour l’inférence GPU. Vous ne payez que le compute réellement utilisé, avec un auto-scaling automatique.

Installation et initialisation

pip install cerebrium
cerebrium login
cerebrium init mistral-vllm

Configuration

Le fichier cerebrium.toml contrôle le déploiement :

[cerebrium.deployment]
name = "mistral-nemo"
python_version = "3.11"

[cerebrium.hardware]
gpu = "AMPERE_A10"
cpu = 4
memory = 16

[cerebrium.scaling]
min_replicas = 0
max_replicas = 5
cooldown = 60

[cerebrium.dependencies.pip]
vllm = "latest"

Déploiement

cerebrium deploy

Cerebrium gère automatiquement :

  • Le provisionning GPU
  • L’auto-scaling (de 0 à N replicas)
  • Le load balancing
  • Le monitoring

Scaling en production

Horizontal scaling

Pour augmenter le débit, déployez plusieurs instances derrière un load balancer :

                    ┌─── vLLM instance 1 (GPU A)
Load Balancer ──────┼─── vLLM instance 2 (GPU B)
                    └─── vLLM instance 3 (GPU C)

Métriques à surveiller

  • Tokens/seconde — débit de génération
  • TTFB (Time To First Byte) — latence avant le premier token
  • Utilisation GPU — devrait être > 80% en charge
  • Mémoire GPU — surveillez les OOM (Out of Memory)
  • Queue depth — nombre de requêtes en attente
# Surveiller l'utilisation GPU
watch -n 1 nvidia-smi

Points clés à retenir

  • Comptez ~2 Go VRAM par milliard de paramètres en FP16
  • La quantization FP8 divise la mémoire par deux avec un impact négligeable sur la qualité
  • SkyPilot simplifie le déploiement multi-cloud avec des configs YAML prêtes à l’emploi
  • Cerebrium offre du serverless GPU avec auto-scaling (pay-per-compute)
  • En production, ajoutez un load balancer et surveillez les métriques GPU en continu