GPU pour l'IA : Guide complet NVIDIA vs AMD en 2026
Les GPU (Graphics Processing Units) sont devenus le moteur principal de l’intelligence artificielle moderne. Alors que les CPU excellent dans le traitement séquentiel, les GPU sont conçus pour effectuer des milliers d’opérations en parallèle, ce qui les rend parfaitement adaptés aux calculs matriciels massifs requis par les modèles d’IA.
Ce guide vous aidera à choisir le GPU adapté à vos besoins en IA, que vous soyez développeur indépendant, chercheur, ou entreprise.

Pourquoi les GPU dominent l’IA ?
Architecture parallèle massive
Un GPU moderne contient des milliers de cœurs (jusqu’à 16 384 cœurs CUDA sur le H100), contre seulement 8-64 cœurs sur un CPU haut de gamme.
Comparaison CPU vs GPU :
| Caractéristique | CPU (Intel i9-13900K) | GPU (NVIDIA H100) |
|---|---|---|
| Cœurs | 24 cœurs | 16 384 cœurs CUDA |
| Fréquence | 3.0 - 5.8 GHz | 1.0 - 1.8 GHz |
| Architecture | Séquentielle | Parallèle massive |
| Performance IA | ~1 TFLOPS FP16 | 1 979 TFLOPS FP16 |
| Prix | 700€ | 35 000€ |
Pourquoi cette différence ?
Les opérations d’IA (multiplications matricielles) peuvent être décomposées en milliers de calculs indépendants :
# Multiplication de matrices A (1000×1000) × B (1000×1000)
# CPU : Calcule chaque élément séquentiellement
for i in range(1000):
for j in range(1000):
C[i][j] = sum(A[i][k] * B[k][j] for k in range(1000))
# Temps : ~5 secondes
# GPU : Calcule tous les éléments en parallèle
C = A @ B # PyTorch avec CUDA
# Temps : ~0.001 secondes (5000× plus rapide !)
Tensor Cores : Accélération spécialisée
À partir de la génération Volta (2017), NVIDIA a introduit les Tensor Cores : des unités spécialisées pour les opérations matricielles en précision mixte (FP16/BF16).
Impact des Tensor Cores :
- RTX 4090 : 82.6 TFLOPS FP32 → 660 TFLOPS FP16 avec Tensor Cores (8× plus rapide)
- H100 : 67 TFLOPS FP32 → 1 979 TFLOPS FP16 avec Tensor Cores (30× plus rapide)
Exemple concret :
import torch
import time
# Matrice 8192×8192 (simulation d'une couche de transformer)
A = torch.randn(8192, 8192, dtype=torch.float16, device='cuda')
B = torch.randn(8192, 8192, dtype=torch.float16, device='cuda')
# Sans Tensor Cores (FP32)
A_fp32 = A.to(torch.float32)
B_fp32 = B.to(torch.float32)
start = time.time()
C_fp32 = A_fp32 @ B_fp32
torch.cuda.synchronize()
print(f"FP32 : {time.time() - start:.3f}s")
# Avec Tensor Cores (FP16)
start = time.time()
C_fp16 = A @ B
torch.cuda.synchronize()
print(f"FP16 (Tensor Cores) : {time.time() - start:.3f}s")
# Résultat sur RTX 4090 :
# FP32 : 0.145s
# FP16 (Tensor Cores) : 0.018s
# Accélération : 8× plus rapide
NVIDIA : Le leader incontesté
Part de marché : 80-85% des GPU pour l’IA (source : Jon Peddie Research, Q4 2024)
NVIDIA domine grâce à trois avantages clés :
- CUDA : Écosystème logiciel mature (15+ ans)
- Tensor Cores : Performance exceptionnelle pour l’IA
- Support : Drivers optimisés, bibliothèques (cuDNN, cuBLAS), communauté massive
Gamme Consumer : Série GeForce RTX 40
Pour qui ? Développeurs indépendants, étudiants, prototypage, fine-tuning de petits modèles.
RTX 4060 Ti 16GB
| Spécification | Valeur |
|---|---|
| VRAM | 16 GB GDDR6 |
| Bande passante | 288 GB/s |
| TFLOPS FP16 | 22 |
| Tensor Cores | 136 (Gen 4) |
| TDP | 165W |
| Prix | 550€ |
Cas d’usage :
- ✅ Fine-tuning de modèles 3B-7B (Mistral 7B, Llama 3.2 8B)
- ✅ Inférence de modèles 13B en INT8
- ✅ Apprentissage sur petits datasets (<100k exemples)
- ❌ Modèles 13B+ en FP16
- ❌ Fine-tuning avec batch size confortables
Exemple : Fine-tuning Mistral 7B avec LoRA
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
import torch
# Charger le modèle en 4-bit (économise VRAM)
model = AutoModelForCausalLM.from_pretrained(
"mistralai/Mistral-7B-v0.1",
load_in_4bit=True,
device_map="auto"
)
# Configuration LoRA
lora_config = LoraConfig(
r=16, # Rang des matrices LoRA
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# Résultat : trainable params: 8.4M (0.12% du modèle)
# VRAM utilisée : ~12 GB (reste 4 GB pour batch)
RTX 4070 Ti 12GB
| Spécification | Valeur |
|---|---|
| VRAM | 12 GB GDDR6X |
| Bande passante | 504 GB/s |
| TFLOPS FP16 | 40 |
| Tensor Cores | 232 (Gen 4) |
| TDP | 285W |
| Prix | 900€ |
Cas d’usage :
- ✅ Inférence rapide de modèles 7B-13B
- ✅ Fine-tuning 7B avec LoRA + gradient checkpointing
- ✅ Développement et expérimentation quotidienne
- ⚠️ Modèles 13B en FP16 (juste à la limite)
Calcul VRAM pour LLaMA 2 7B :
Modèle : 7B paramètres
Précision : FP16 (2 bytes/param)
Overhead optimizer : 20%
VRAM = 7B × 2 bytes × 1.2 = 16.8 GB
Résultat : Impossible sur 12 GB sans optimisation
Solution : Quantization INT8
VRAM = 7B × 1 byte × 1.2 = 8.4 GB
Résultat : ✅ Fonctionne avec 12 GB (reste 3.6 GB pour batch)
RTX 4080 Super 16GB
| Spécification | Valeur |
|---|---|
| VRAM | 16 GB GDDR6X |
| Bande passante | 736 GB/s |
| TFLOPS FP16 | 52 |
| Tensor Cores | 320 (Gen 4) |
| TDP | 320W |
| Prix | 1100€ |
Cas d’usage :
- ✅ Fine-tuning confortable de modèles 7B
- ✅ Inférence de modèles 13B en INT8
- ✅ Multi-tâches (dev + inférence simultanée)
- ✅ Bon équilibre performance/prix
RTX 4090 24GB ⭐ (Recommandé)
| Spécification | Valeur |
|---|---|
| VRAM | 24 GB GDDR6X |
| Bande passante | 1008 GB/s |
| TFLOPS FP16 | 82.6 |
| Tensor Cores | 512 (Gen 4) |
| TDP | 450W |
| Prix | 1800€ |
Cas d’usage :
- ✅ Fine-tuning de modèles jusqu’à 13B (LLaMA 2 13B, Mistral 7B)
- ✅ Inférence rapide de modèles 34B en INT4
- ✅ Expérimentation avec batch sizes confortables
- ✅ Multi-GPU possible (2× RTX 4090 = 48 GB VRAM)
RTX 4090 : Le choix optimal : 24 GB VRAM pour 1800€ (75€/GB) vs A6000 48 GB à 5000€ (104€/GB). Performance : 82.6 TFLOPS FP16, proche de l’A100 40GB (77 TFLOPS). Le meilleur rapport VRAM/prix du marché pour l’IA, disponible immédiatement contrairement aux GPU datacenter.
Pourquoi c’est le GPU le plus populaire pour l’IA ?
- Meilleur rapport VRAM/Prix : 24 GB pour 1800€ (75€/GB) vs A6000 48 GB à 5000€ (104€/GB)
- Performance exceptionnelle : 82.6 TFLOPS FP16, proche de l’A100 40GB (77 TFLOPS)
- Disponibilité : Plus facile à acheter que les GPU datacenter
- Support : Drivers GeForce optimisés pour PyTorch/TensorFlow
Exemple : Fine-tuning LLaMA 2 13B
from transformers import AutoModelForCausalLM, TrainingArguments, Trainer
from peft import LoraConfig, get_peft_model
# Charger modèle en 16-bit
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-13b-hf",
torch_dtype=torch.float16,
device_map="auto"
)
# LoRA configuration
lora_config = LoraConfig(
r=64, # Rang plus élevé pour meilleure qualité
lora_alpha=128,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.1
)
model = get_peft_model(model, lora_config)
# Training arguments
training_args = TrainingArguments(
output_dir="./llama-2-13b-finetuned",
per_device_train_batch_size=4, # Possible avec 24 GB
gradient_accumulation_steps=4, # Batch effectif = 16
num_train_epochs=3,
learning_rate=2e-4,
fp16=True,
logging_steps=10,
save_steps=100
)
# VRAM utilisée :
# Modèle : 13B × 2 bytes = 26 GB (impossible sans optimisation)
# Avec LoRA : trainable params ~42M (0.3% du modèle)
# VRAM réelle : ~18 GB (reste 6 GB pour batch size 4)
Gamme Professional : Série RTX Ada
Pour qui ? Studios, entreprises, développement professionnel.
RTX 6000 Ada 48GB
| Spécification | Valeur |
|---|---|
| VRAM | 48 GB GDDR6 (ECC optionnel) |
| Bande passante | 960 GB/s |
| TFLOPS FP16 | 91 |
| Tensor Cores | 568 (Gen 4) |
| TDP | 300W |
| Prix | 7000€ |
Avantages vs RTX 4090 :
- ✅ 48 GB VRAM : Fine-tuning de modèles jusqu’à 34B
- ✅ ECC Memory : Détection d’erreurs (important pour production)
- ✅ Support professionnel : Drivers certifiés, assistance NVIDIA
- ✅ Meilleure stabilité : Refroidissement blower, conçu pour 24/7
Cas d’usage :
- ✅ Fine-tuning de modèles 13B-34B (CodeLlama 34B, Yi 34B)
- ✅ Serveur d’inférence multi-utilisateurs
- ✅ Environnements de production critiques
Calcul VRAM pour CodeLlama 34B :
Modèle : 34B paramètres
Précision : FP16
VRAM = 34B × 2 bytes × 1.2 = 81.6 GB
Résultat : ❌ Impossible sur 48 GB
Solution : Quantization INT8
VRAM = 34B × 1 byte × 1.2 = 40.8 GB
Résultat : ✅ Fonctionne sur 48 GB (reste 7 GB)
Ou multi-GPU : 2× RTX 6000 Ada = 96 GB VRAM
CodeLlama 34B en FP16 : ✅ Possible
Gamme Datacenter : Série Tesla/A/H
Pour qui ? Centres de données, laboratoires de recherche, training à grande échelle.
A100 40GB / 80GB
| Spécification | A100 40GB | A100 80GB |
|---|---|---|
| VRAM | 40 GB HBM2e | 80 GB HBM2e |
| Bande passante | 1 555 GB/s | 2 039 GB/s |
| TFLOPS FP16 | 77 | 77 |
| Tensor Cores | 432 (Gen 3) | 432 (Gen 3) |
| TDP | 400W | 400W |
| Prix | 12 000€ | 18 000€ |
Fonctionnalités clés :
- ✅ Multi-Instance GPU (MIG) : Diviser 1 GPU en 7 instances isolées
- ✅ NVLink : 600 GB/s entre GPUs (vs 64 GB/s PCIe 4.0)
- ✅ HBM2e : Mémoire haute bande passante (2× plus rapide que GDDR6)
- ✅ Support TF32 : Précision intermédiaire (19-bit) sans perte de qualité
Cas d’usage :
- ✅ Fine-tuning de modèles jusqu’à 70B (A100 80GB)
- ✅ Training distribué multi-GPU (jusqu’à 8× A100 en NVLink)
- ✅ Serveur d’inférence haute performance (MIG permet 7 utilisateurs isolés)
- ✅ Recherche académique et industrielle
Exemple : Training distribué avec DeepSpeed
# Configuration : 8× A100 80GB = 640 GB VRAM totale
# Objectif : Fine-tuner LLaMA 2 70B
import deepspeed
from transformers import AutoModelForCausalLM
# DeepSpeed ZeRO-3 : partitionne le modèle sur tous les GPUs
ds_config = {
"train_batch_size": 128,
"train_micro_batch_size_per_gpu": 2,
"gradient_accumulation_steps": 8,
"fp16": {
"enabled": True
},
"zero_optimization": {
"stage": 3, # Partitionne tout (params, gradients, optimizer)
"offload_optimizer": {
"device": "cpu" # Offload optimizer sur RAM CPU
},
"offload_param": {
"device": "nvme" # Offload params sur NVMe SSD
}
}
}
# Charger modèle
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-70b-hf")
# Initialiser DeepSpeed
model_engine, optimizer, _, _ = deepspeed.initialize(
model=model,
config=ds_config
)
# VRAM par GPU :
# Sans optimisation : 70B × 2 bytes = 140 GB → Impossible
# Avec ZeRO-3 + offload : ~35 GB par GPU → ✅ Fonctionne sur 80 GB
# Performance : 2.5 heures pour 1 epoch sur 50k exemples
H100 80GB ⭐ (Top Performance)
| Spécification | Valeur |
|---|---|
| VRAM | 80 GB HBM3 |
| Bande passante | 3 350 GB/s |
| TFLOPS FP16 | 1 979 |
| Tensor Cores | 528 (Gen 4) |
| TDP | 700W |
| Prix | 35 000€ |
Améliorations vs A100 :
- 3× plus rapide en FP16/BF16 (1979 vs 77 TFLOPS)
- 1.6× plus de bande passante (3350 vs 2039 GB/s)
- FP8 support : Nouvelle précision 8-bit avec Tensor Cores (jusqu’à 3958 TFLOPS)
- Transformer Engine : Optimisations automatiques pour architectures transformer
Cas d’usage :
- ✅ Training de modèles 100B-200B (GPT-3 175B, BLOOM 176B)
- ✅ Fine-tuning ultra-rapide (3× plus rapide que A100)
- ✅ Recherche de pointe (nouvelles architectures, scaling laws)
- ✅ Production haute performance (réduction du coût par inférence)
Benchmark : Fine-tuning LLaMA 2 70B
| Configuration | Temps/Epoch | Coût/Heure |
|---|---|---|
| 8× A100 80GB | 2.5 heures | 8 × 3€/h = 24€ |
| 8× H100 80GB | 0.8 heures | 8 × 8€/h = 64€ |
Analyse :
- H100 est 3× plus rapide (2.5h → 0.8h)
- Mais 2.7× plus cher par heure (24€ → 64€)
- Coût total similaire (60€ vs 51€) mais gain de temps massif
L40S 48GB (Alternative efficace)
| Spécification | Valeur |
|---|---|
| VRAM | 48 GB GDDR6 |
| Bande passante | 864 GB/s |
| TFLOPS FP16 | 91 |
| Tensor Cores | 568 (Gen 4) |
| TDP | 350W |
| Prix | 10 000€ |
Avantages :
- ✅ Moins cher que A100 40GB (10k€ vs 12k€)
- ✅ Plus de VRAM (48 GB vs 40 GB)
- ✅ TDP modéré (350W vs 400W) → refroidissement plus facile
- ⚠️ Pas de NVLink : Moins bon pour multi-GPU
Pour qui ? Entreprises cherchant un bon compromis performance/prix pour l’inférence.
AMD : L’alternative compétitive
Part de marché : 10-15% des GPU pour l’IA (source : Jon Peddie Research)
AMD propose des GPU compétitifs en performance brute, mais l’écosystème logiciel (ROCm) est moins mature que CUDA.
Série Radeon RX 7000 (Consumer)
RX 7900 XTX 24GB
| Spécification | Valeur |
|---|---|
| VRAM | 24 GB GDDR6 |
| Bande passante | 960 GB/s |
| TFLOPS FP16 | 123 |
| AI Accelerators | Oui (RDNA 3) |
| TDP | 355W |
| Prix | 1000€ |
Comparaison avec RTX 4090 :
| Critère | RX 7900 XTX | RTX 4090 |
|---|---|---|
| Prix | 1000€ | 1800€ |
| VRAM | 24 GB | 24 GB |
| TFLOPS FP16 | 123 | 82.6 |
| Perf réelle IA | ~60% | 100% |
| Écosystème | ROCm (en développement) | CUDA (mature) |
Verdict :
- ✅ Meilleur prix (1000€ vs 1800€)
- ✅ Plus de TFLOPS sur papier (123 vs 82.6)
- ❌ Performance IA réelle inférieure : PyTorch/ROCm moins optimisé
- ❌ Compatibilité : Certaines bibliothèques ne supportent que CUDA
Cas d’usage recommandés :
- ✅ Budget limité pour fine-tuning de modèles 7B-13B
- ✅ Projets open-source (support communautaire ROCm)
- ❌ Production critique (préférer NVIDIA pour stabilité)
Série Radeon Pro W7000 (Professional)
W7900 48GB
| Spécification | Valeur |
|---|---|
| VRAM | 48 GB GDDR6 (ECC) |
| Bande passante | 864 GB/s |
| TFLOPS FP16 | 61 |
| TDP | 295W |
| Prix | 4000€ |
Comparaison avec RTX 6000 Ada :
| Critère | W7900 | RTX 6000 Ada |
|---|---|---|
| Prix | 4000€ | 7000€ |
| VRAM | 48 GB | 48 GB |
| TFLOPS FP16 | 61 | 91 |
| Support | Bon | Excellent |
Verdict :
- ✅ 43% moins cher (4000€ vs 7000€)
- ⚠️ 33% moins performant (61 vs 91 TFLOPS)
- ✅ Bonne alternative si votre stack supporte ROCm
Série Instinct MI (Datacenter)
MI300X 192GB ⭐
| Spécification | Valeur |
|---|---|
| VRAM | 192 GB HBM3 |
| Bande passante | 5 300 GB/s |
| TFLOPS FP16 | 1 307 |
| TDP | 750W |
| Prix | ~15 000€ (estimé) |
Comparaison avec H100 80GB :
| Critère | MI300X | H100 80GB |
|---|---|---|
| VRAM | 192 GB | 80 GB |
| Bande passante | 5 300 GB/s | 3 350 GB/s |
| TFLOPS FP16 | 1 307 | 1 979 |
| Prix estimé | 15 000€ | 35 000€ |
AMD MI300X : Alternative 192 GB : 2.4× plus de VRAM que le H100 (192 GB vs 80 GB) à 2.3× moins cher (15k€ vs 35k€ estimé). Bande passante record : 5300 GB/s. Permet de charger Mixtral 8×7B (47B params, 94 GB en FP16) sur 1 seul GPU vs 2× H100 nécessaires (économie 55k€). Limitation : ROCm moins mature que CUDA, compatibilité à vérifier.
Avantages du MI300X :
- ✅ 2.4× plus de VRAM (192 GB vs 80 GB) → Modèles 400B+ sans multi-GPU
- ✅ 1.6× plus de bande passante (5300 vs 3350 GB/s)
- ✅ 2.3× moins cher (15k€ vs 35k€ estimé)
- ⚠️ Écosystème ROCm moins mature que CUDA
Cas d’usage :
- ✅ Training de très gros modèles (GPT-4 scale, 400B+ paramètres)
- ✅ Inférence de modèles mixture-of-experts (Mixtral 8×22B = 141B actifs)
- ✅ Réduction du nombre de GPUs nécessaires (économie infrastructure)
Exemple : Mixtral 8×7B (47B paramètres)
Sur H100 80GB :
Mixtral 8×7B en FP16 : 47B × 2 bytes = 94 GB
Résultat : ⚠️ Nécessite 2× H100 (70k€)
Sur MI300X 192GB :
Mixtral 8×7B en FP16 : 94 GB
Résultat : ✅ Tient sur 1× MI300X (15k€)
Économie : 55k€ (79%)
ROCm vs CUDA : Écosystème logiciel
CUDA (NVIDIA)
Avantages :
- ✅ Mature : 15+ ans de développement (depuis 2007)
- ✅ Support universel : PyTorch, TensorFlow, JAX, tous optimisés
- ✅ Bibliothèques optimisées : cuDNN, cuBLAS, NCCL, TensorRT
- ✅ Documentation : Excellente, nombreux tutoriels
- ✅ Communauté : Massive, résolution rapide des problèmes
Exemple : Installation PyTorch avec CUDA
# Installation en une ligne
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# Vérification
python -c "import torch; print(torch.cuda.is_available())"
# Output : True
# Test performance
python -c "
import torch
import time
A = torch.randn(10000, 10000, device='cuda')
start = time.time()
B = A @ A
torch.cuda.synchronize()
print(f'CUDA matmul : {time.time()-start:.3f}s')
"
# Output : CUDA matmul : 0.012s
ROCm (AMD)
Avantages :
- ✅ Open-source : Code source disponible sur GitHub
- ✅ Amélioration rapide : Support PyTorch/TensorFlow stable depuis 2023
- ✅ Prix : GPUs AMD généralement moins chers
Limitations :
- ⚠️ Support matériel limité : Seulement cartes MI/W/RX récentes
- ⚠️ Performance : Encore 20-40% derrière CUDA sur certains workloads
- ⚠️ Compatibilité : Certaines libs (Flash Attention, xFormers) CUDA-only
Exemple : Installation PyTorch avec ROCm
# Installation (ROCm 6.0)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0
# Vérification
python -c "import torch; print(torch.cuda.is_available())"
# Output : True (ROCm utilise l'API CUDA pour compatibilité)
# Test performance
python -c "
import torch
import time
A = torch.randn(10000, 10000, device='cuda')
start = time.time()
B = A @ A
torch.cuda.synchronize()
print(f'ROCm matmul : {time.time()-start:.3f}s')
"
# Output : ROCm matmul : 0.018s (1.5× plus lent que CUDA sur cet exemple)
Tableau de compatibilité
| Framework/Bibliothèque | CUDA | ROCm |
|---|---|---|
| PyTorch | ✅ Excellent | ✅ Bon |
| TensorFlow | ✅ Excellent | ✅ Bon |
| JAX | ✅ Excellent | ⚠️ Expérimental |
| Hugging Face Transformers | ✅ Excellent | ✅ Bon |
| DeepSpeed | ✅ Excellent | ✅ Bon (depuis 0.10) |
| Flash Attention | ✅ Oui | ❌ Non (CUDA-only) |
| xFormers | ✅ Oui | ❌ Non |
| vLLM | ✅ Oui | ✅ Oui (depuis 0.3) |
| TensorRT | ✅ Oui | ❌ Non (NVIDIA-only) |
Recommandation :
- Production critique : NVIDIA + CUDA (fiabilité maximale)
- Budget limité + stack supporté : AMD + ROCm (bon compromis)
- Recherche de pointe : NVIDIA (accès précoce aux nouvelles techniques)
Configurations recommandées par budget
Budget < 2 000€ : Développeur indépendant
Configuration recommandée :
| Composant | Modèle | Prix |
|---|---|---|
| GPU | RTX 4070 Ti 12GB | 900€ |
| CPU | AMD Ryzen 7 7700X | 350€ |
| RAM | 64 GB DDR5-5600 | 250€ |
| SSD | 2 TB NVMe Gen4 | 150€ |
| PSU | 850W 80+ Gold | 120€ |
| Boîtier + Refroidissement | 200€ | |
| Total | 1 970€ |
Capacités :
- ✅ Fine-tuning de modèles jusqu’à 7B (Mistral 7B, LLaMA 3.2 8B)
- ✅ Inférence rapide de modèles 13B en INT8
- ✅ Développement quotidien d’applications IA
Alternative AMD (1 570€) :
- GPU : RX 7900 XT 20GB (850€) → économie de 400€
- Limitation : Performance IA ~20% inférieure, ROCm moins mature
Budget 2 000€ - 5 000€ : Startup / Chercheur
Configuration recommandée :
| Composant | Modèle | Prix |
|---|---|---|
| GPU | RTX 4090 24GB | 1800€ |
| CPU | AMD Ryzen 9 7950X | 550€ |
| RAM | 128 GB DDR5-5600 | 500€ |
| SSD | 4 TB NVMe Gen4 | 300€ |
| PSU | 1000W 80+ Platinum | 180€ |
| Boîtier + Refroidissement | 300€ | |
| Total | 3 630€ |
Capacités :
- ✅ Fine-tuning de modèles jusqu’à 13B (LLaMA 2 13B, Vicuna 13B)
- ✅ Inférence de modèles 34B en INT4
- ✅ Batch sizes confortables pour expérimentation
Option multi-GPU (6 200€) :
- 2× RTX 4090 24GB (3600€) = 48 GB VRAM totale
- Capacités : Fine-tuning de modèles jusqu’à 34B (CodeLlama 34B, Yi 34B)
Budget 5 000€ - 15 000€ : PME / Labo de recherche
Configuration recommandée :
| Composant | Modèle | Prix |
|---|---|---|
| GPU | 2× RTX 6000 Ada 48GB | 14 000€ |
| CPU | AMD Threadripper PRO 5975WX | 2 500€ |
| RAM | 256 GB DDR4-3200 ECC | 1 200€ |
| SSD | 8 TB NVMe Gen4 (RAID 0) | 800€ |
| PSU | 1600W 80+ Titanium | 400€ |
| Boîtier Serveur | 500€ | |
| Total | 19 400€ |
Capacités :
- ✅ Fine-tuning de modèles jusqu’à 70B (2× 48GB = 96 GB VRAM)
- ✅ Serveur d’inférence multi-utilisateurs
- ✅ ECC RAM pour stabilité en production
Alternative datacenter (26 000€) :
- 2× A100 40GB (24 000€) avec NVLink
- Avantages : Bande passante inter-GPU 600 GB/s (vs 64 GB/s PCIe)
- Capacités : Training distribué optimisé (meilleur pour fine-tuning 70B)
Budget 15 000€ - 50 000€ : Entreprise / Recherche intensive
Configuration recommandée :
| Composant | Modèle | Prix |
|---|---|---|
| GPU | 4× A100 80GB SXM | 72 000€ |
| Serveur | NVIDIA DGX Station A100 | 100 000€ |
Ou configuration custom :
| Composant | Modèle | Prix |
|---|---|---|
| GPU | 4× A100 40GB PCIe | 48 000€ |
| CPU | AMD EPYC 7763 (64 cores) | 4 500€ |
| RAM | 512 GB DDR4-3200 ECC | 2 400€ |
| SSD | 16 TB NVMe Gen4 | 1 600€ |
| Carte mère | Supermicro H12DSi-NT6 | 1 200€ |
| PSU | 2× 2000W Redundant | 1 000€ |
| Boîtier 4U | 800€ | |
| Total | 59 500€ |
Capacités :
- ✅ Training de modèles jusqu’à 175B (GPT-3 scale)
- ✅ Fine-tuning rapide de modèles 70B
- ✅ Serveur d’inférence haute disponibilité (4 GPUs)
Budget > 50 000€ : Cloud / Datacenter
Configuration recommandée :
| Composant | Modèle | Prix |
|---|---|---|
| GPU | 8× H100 80GB SXM | 280 000€ |
| Serveur | NVIDIA DGX H100 | 350 000€ |
Capacités :
- ✅ Training de modèles 500B+ (GPT-4 scale)
- ✅ Fine-tuning ultra-rapide (3× plus rapide qu’A100)
- ✅ Recherche de pointe (nouvelles architectures)
Alternative AMD (120 000€) :
- 8× MI300X 192GB = 1.5 TB VRAM totale
- Capacités : Training de modèles 1T+ paramètres
- Économie : 160k€ (57% moins cher)
Calculer vos besoins en VRAM
Formule générale
VRAM = (Paramètres × Bytes_per_param × Overhead)
Où :
- Paramètres : nombre de paramètres du modèle (ex: 7B, 13B, 70B)
- Bytes_per_param : 4 (FP32), 2 (FP16/BF16), 1 (INT8), 0.5 (INT4)
- Overhead : 1.2 (inférence), 3-4 (fine-tuning avec gradients)
Exemples concrets
Inférence LLaMA 2 7B
# Précision FP16
Paramètres = 7B
Bytes = 2 (FP16)
Overhead = 1.2
VRAM = 7B × 2 × 1.2 = 16.8 GB
# GPU nécessaire : RTX 4090 (24 GB) ✅
Fine-tuning LLaMA 2 13B avec LoRA
# Modèle base en FP16
Base_VRAM = 13B × 2 × 1.2 = 31.2 GB
# LoRA ajoute seulement 1-2% de paramètres
LoRA_params = 13B × 0.015 = 195M
LoRA_VRAM = 195M × 2 × 4 = 1.56 GB (avec gradients)
# Overhead batch + activations
Batch_VRAM = 4 GB (pour batch_size=4)
Total_VRAM = 31.2 + 1.56 + 4 = 36.76 GB
# GPU nécessaire : A100 40GB ✅
# Ou : 2× RTX 4090 (48 GB total) ✅
Fine-tuning full LLaMA 2 70B
# Tous les paramètres entraînés
Paramètres = 70B
Bytes = 2 (FP16)
Overhead = 4 (modèle + gradients + optimizer states)
VRAM = 70B × 2 × 4 = 560 GB
# GPU nécessaire : 8× A100 80GB (640 GB) ✅
# Avec optimisations (DeepSpeed ZeRO-3) : 4× A100 80GB ✅
Tableau récapitulatif
| Modèle | Taille | FP16 Inférence | INT8 Inférence | FP16 LoRA Fine-tuning | FP16 Full Fine-tuning |
|---|---|---|---|---|---|
| Mistral 7B | 7B | 16.8 GB | 8.4 GB | 25 GB | 112 GB |
| LLaMA 2 13B | 13B | 31.2 GB | 15.6 GB | 40 GB | 208 GB |
| LLaMA 2 34B | 34B | 81.6 GB | 40.8 GB | 95 GB | 544 GB |
| LLaMA 2 70B | 70B | 168 GB | 84 GB | 190 GB | 1120 GB |
| Mixtral 8×7B | 47B | 112.8 GB | 56.4 GB | 130 GB | 752 GB |
Légende :
- Inférence : Overhead = 1.2
- LoRA Fine-tuning : Overhead = 1.5 (seulement adapters entraînés)
- Full Fine-tuning : Overhead = 4 (tous les paramètres entraînés)
Benchmarks de performance
Fine-tuning LLaMA 2 7B (1 epoch, 50k exemples)
| GPU | Batch Size | Temps | Coût GPU | Coût Total |
|---|---|---|---|---|
| RTX 4070 Ti 12GB | 2 | 8h 30min | 0€ (local) | 0€ |
| RTX 4090 24GB | 4 | 4h 15min | 0€ (local) | 0€ |
| RTX 6000 Ada 48GB | 8 | 3h 00min | 0€ (local) | 0€ |
| A100 40GB | 8 | 2h 30min | 2.5€/h × 2.5 = 6.25€ | 6.25€ |
| H100 80GB | 16 | 1h 00min | 8€/h × 1 = 8€ | 8€ |
Analyse :
- RTX 4090 : Meilleur rapport performance/prix pour usage local
- H100 : Plus rapide (4× vs RTX 4090) mais coût cloud plus élevé
- Recommandation : RTX 4090 si usage fréquent (ROI < 6 mois), sinon cloud A100
Inférence (tokens/seconde)
| GPU | LLaMA 7B FP16 | LLaMA 13B INT8 | LLaMA 70B INT4 |
|---|---|---|---|
| RTX 4070 Ti | 45 tok/s | 28 tok/s | - |
| RTX 4090 | 82 tok/s | 55 tok/s | 18 tok/s |
| A100 40GB | 95 tok/s | 68 tok/s | 25 tok/s |
| H100 80GB | 180 tok/s | 135 tok/s | 58 tok/s |
Exemple pratique :
# Génération de 500 tokens (réponse longue)
Sur RTX 4090 (82 tok/s) :
Temps = 500 / 82 = 6.1 secondes
Sur H100 (180 tok/s) :
Temps = 500 / 180 = 2.8 secondes
Différence : 2.2× plus rapide sur H100
Coût par million de tokens (inférence cloud)
| GPU | Coût/Heure | Tokens/Seconde | Tokens/Heure | Coût/1M Tokens |
|---|---|---|---|---|
| A100 40GB | 2.50€ | 95 | 342 000 | 7.31€ |
| H100 80GB | 8.00€ | 180 | 648 000 | 12.35€ |
| MI300X 192GB | 4.50€ (estimé) | 140 | 504 000 | 8.93€ |
Analyse :
- A100 reste le meilleur rapport coût/performance pour l’inférence
- H100 plus rapide mais 69% plus cher par token
- MI300X bon compromis (58% plus rapide que A100, +22% coût/token)
Optimisations pour maximiser l’utilisation GPU
Mixed Precision Training
from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
for batch in dataloader:
optimizer.zero_grad()
# Forward pass en FP16 (2× plus rapide)
with autocast():
outputs = model(batch)
loss = criterion(outputs, targets)
# Backward pass avec scaling (évite underflow)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
# Résultat : 2× plus rapide, même qualité
Gradient Accumulation
# Simuler batch_size=32 avec seulement 8 GB VRAM
accumulation_steps = 8 # 4 × 8 = 32 batch effectif
optimizer.zero_grad()
for i, batch in enumerate(dataloader):
outputs = model(batch)
loss = criterion(outputs, targets)
# Normaliser la loss
loss = loss / accumulation_steps
loss.backward()
# Optimizer step tous les 8 batches
if (i + 1) % accumulation_steps == 0:
optimizer.step()
optimizer.zero_grad()
# Résultat : Batch size 32 avec VRAM de batch size 4
Gradient Checkpointing
from torch.utils.checkpoint import checkpoint
class TransformerBlock(nn.Module):
def forward(self, x):
# Recalculer activations au lieu de les stocker
return checkpoint(self._forward, x)
def _forward(self, x):
# Couches du transformer
return self.attention(x) + self.ffn(x)
# Résultat : VRAM divisée par 2-3, temps +20%
# Exemple : LLaMA 13B passe de 31 GB à 12 GB
FlashAttention
from flash_attn import flash_attn_func
# Attention standard (O(n²) mémoire)
def standard_attention(Q, K, V):
scores = Q @ K.T / sqrt(d_k) # (seq_len, seq_len) → VRAM intensive
attn = softmax(scores)
return attn @ V
# FlashAttention (O(n) mémoire)
def flash_attention(Q, K, V):
# Calcul par blocs, évite de stocker la matrice d'attention
return flash_attn_func(Q, K, V)
# Résultat : 2-4× plus rapide, 5-10× moins de VRAM
# Exemple : Llama 13B avec seq_len=4096
# Standard : 28 GB VRAM, 450 tok/s
# Flash : 18 GB VRAM, 1200 tok/s
Quantization dynamique
import torch
# Modèle original (FP16)
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
print(f"VRAM : {torch.cuda.memory_allocated() / 1e9:.1f} GB")
# Output : VRAM : 13.5 GB
# Quantization INT8 (bitsandbytes)
from transformers import BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_8bit=True,
llm_int8_threshold=6.0
)
model_int8 = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
quantization_config=quantization_config,
device_map="auto"
)
print(f"VRAM : {torch.cuda.memory_allocated() / 1e9:.1f} GB")
# Output : VRAM : 6.8 GB (2× moins !)
# Perte de qualité : < 1% sur la plupart des benchmarks
Multi-GPU : Scaling horizontal
Stratégies de parallélisation
Data Parallelism (DP)
Principe : Répliquer le modèle sur chaque GPU, distribuer les batches.
import torch.nn as nn
from torch.nn.parallel import DataParallel
# Modèle sur GPU 0
model = MyModel()
# Répliquer sur 4 GPUs
model = DataParallel(model, device_ids=[0, 1, 2, 3])
# Training automatique sur 4 GPUs
for batch in dataloader:
# Batch divisé en 4 sous-batches automatiquement
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
# Avantages : Simple, transparent
# Limitations : Chaque GPU doit contenir le modèle complet
Cas d’usage : Modèles qui tiennent sur 1 GPU (< 24 GB)
Distributed Data Parallel (DDP)
Principe : Version optimisée de DP avec synchronisation efficace.
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
# Initialiser processus distribué
dist.init_process_group(backend='nccl')
local_rank = int(os.environ['LOCAL_RANK'])
# Modèle sur GPU local
model = MyModel().to(local_rank)
model = DDP(model, device_ids=[local_rank])
# Training
for batch in dataloader:
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
# Avantages : 2-3× plus rapide que DP, scaling efficace
# Limitations : Setup plus complexe
Lancement :
# 4 GPUs sur 1 machine
torchrun --nproc_per_node=4 train.py
# 16 GPUs sur 2 machines
torchrun --nproc_per_node=8 --nnodes=2 --node_rank=0 --master_addr="192.168.1.1" train.py
Model Parallelism (Pipeline)
Principe : Découper le modèle en couches sur différents GPUs.
# Exemple : GPT avec 48 couches sur 4 GPUs
class PipelinedGPT(nn.Module):
def __init__(self):
super().__init__()
# GPU 0 : Couches 0-11
self.layers_0_11 = nn.Sequential(*layers[:12]).to('cuda:0')
# GPU 1 : Couches 12-23
self.layers_12_23 = nn.Sequential(*layers[12:24]).to('cuda:1')
# GPU 2 : Couches 24-35
self.layers_24_35 = nn.Sequential(*layers[24:36]).to('cuda:2')
# GPU 3 : Couches 36-47
self.layers_36_47 = nn.Sequential(*layers[36:]).to('cuda:3')
def forward(self, x):
x = self.layers_0_11(x)
x = x.to('cuda:1')
x = self.layers_12_23(x)
x = x.to('cuda:2')
x = self.layers_24_35(x)
x = x.to('cuda:3')
x = self.layers_36_47(x)
return x
# Avantages : Permet de charger des modèles énormes
# Limitations : Pipeline bubbles (inefficacité), complexité
Cas d’usage : Modèles qui ne tiennent pas sur 1 GPU (> 80 GB)
DeepSpeed ZeRO
Principe : Partitionner optimizer states, gradients, et paramètres.
import deepspeed
# Configuration ZeRO Stage 3 (partitionne tout)
ds_config = {
"train_batch_size": 64,
"train_micro_batch_size_per_gpu": 2,
"gradient_accumulation_steps": 8,
"fp16": {"enabled": True},
"zero_optimization": {
"stage": 3,
"offload_optimizer": {"device": "cpu"},
"offload_param": {"device": "nvme"}
}
}
# Initialiser DeepSpeed
model_engine, optimizer, _, _ = deepspeed.initialize(
model=model,
config=ds_config
)
# Training
for batch in dataloader:
loss = model_engine(batch)
model_engine.backward(loss)
model_engine.step()
# Résultat : LLaMA 70B sur 4× A100 40GB (160 GB total)
# Sans ZeRO : Impossible (nécessite 280 GB)
# Avec ZeRO-3 : ✅ Fonctionne (~35 GB par GPU)
Interconnexion GPU
NVLink vs PCIe
| Caractéristique | PCIe 4.0 x16 | NVLink 3.0 (A100) | NVLink 4.0 (H100) |
|---|---|---|---|
| Bande passante | 64 GB/s | 600 GB/s | 900 GB/s |
| Latence | ~1 µs | ~0.1 µs | ~0.05 µs |
| Coût | Inclus | +30% | +40% |
Impact sur performance :
# Benchmark : Transfert de 10 GB entre 2 GPUs
# PCIe 4.0
Temps = 10 GB / 64 GB/s = 156 ms
# NVLink 3.0
Temps = 10 GB / 600 GB/s = 16.7 ms
# Accélération : 9.3× plus rapide avec NVLink
Recommandation :
- PCIe : Suffisant pour Data Parallelism (peu de communication inter-GPU)
- NVLink : Indispensable pour Model Parallelism et ZeRO (beaucoup de communication)
Checklist avant d’acheter
Questions à se poser
Quel type d’utilisation ?
- Inférence uniquement : Moins de VRAM nécessaire (précision INT8/INT4)
Recommandation : RTX 4090 (1800€), RX 7900 XTX (1000€)
- Fine-tuning régulier : Plus de VRAM + performance élevée
Recommandation : A100 40GB (12k€), 2× RTX 4090 (3.6k€)
- Training from scratch : Maximum VRAM + multi-GPU
Recommandation : 4-8× A100 80GB (72-144k€), AMD MI300X (15k€ × quantité)
Quels modèles ciblés ?
Utilisez le tableau VRAM précédent :
- 7B : 17 GB inférence → RTX 4090 (24 GB) ✅
- 13B : 31 GB inférence → A100 40GB ✅
- 70B : 168 GB inférence → 3× A100 80GB ✅
Quel budget ?
- < 2k€ : RTX 4070 Ti / RX 7900 XT
- 2-5k€ : RTX 4090 / 2× RTX 4090
- 5-15k€ : A100 40GB / 2× RTX 6000 Ada
- > 15k€ : Multi-A100 / H100
Local ou Cloud ?
Cloud (RunPod, Lambda Labs, AWS) :
- ✅ Pas d’investissement initial
- ✅ Scaling à la demande
- ❌ Coût récurrent (2-8€/heure)
- ❌ Dépendance externe
Local :
- ✅ Coût fixe (ROI 6-12 mois)
- ✅ Données privées (sécurité)
- ❌ Investissement initial important
- ❌ Maintenance requise
Calcul du ROI :
ROI = Prix GPU / (Coût cloud par heure × Heures d'utilisation par mois)
Exemple : RTX 4090 (1800€) vs A100 cloud (2.5€/h)
ROI = 1800€ / (2.5€ × 100h/mois) = 7.2 mois
Si utilisation > 100h/mois → Acheter GPU local
Si utilisation < 100h/mois → Utiliser cloud
Écosystème CUDA ou ROCm ?
Choisir CUDA si :
- ✅ Stack nécessite CUDA-only libraries (Flash Attention, TensorRT)
- ✅ Production critique (fiabilité maximale)
- ✅ Budget permet NVIDIA
Choisir ROCm si :
- ✅ Budget limité (AMD 40-50% moins cher)
- ✅ Stack compatible (PyTorch/TensorFlow standard)
- ✅ Open-source préféré
Monitoring et optimisation GPU
Outils de monitoring
nvidia-smi (NVIDIA)
# Monitoring en temps réel
watch -n 1 nvidia-smi
# Résultat :
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 |
# |-------------------------------+----------------------+----------------------+
# | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
# | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
# |===============================+======================+======================|
# | 0 NVIDIA RTX 4090 Off | 00000000:01:00.0 Off | Off |
# | 45% 68C P2 380W / 450W | 18432MiB / 24564MiB | 98% Default |
# +-------------------------------+----------------------+----------------------+
# Explication :
# - Temp : 68°C (bon, max recommandé 85°C)
# - Power : 380W / 450W (84% TDP)
# - Memory : 18.4 GB / 24.5 GB (75% utilisé)
# - GPU Util : 98% (excellent !)
rocm-smi (AMD)
# Monitoring AMD
watch -n 1 rocm-smi
# Résultat similaire à nvidia-smi
PyTorch Profiler
from torch.profiler import profile, ProfilerActivity
with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof:
for _ in range(10):
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
# Afficher résultats
print(prof.key_averages().table(sort_by="cuda_time_total", row_limit=10))
# Résultat :
# --------------------------------- ------------ ------------ ------------
# Name CPU total CUDA total CUDA memory
# --------------------------------- ------------ ------------ ------------
# model_inference 152.45ms 143.21ms 1.2 GB
# loss_backward 89.32ms 85.44ms 0.8 GB
# optimizer_step 12.45ms 10.23ms 0.1 GB
# --------------------------------- ------------ ------------ ------------
Métriques clés
GPU Utilization
Objectif : > 90% pendant training
import torch
import time
# Code inefficace (GPU util ~30%)
for batch in dataloader:
batch = batch.to('cuda') # Transfert CPU → GPU (bloque GPU)
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
# Code optimisé (GPU util ~95%)
for batch in dataloader:
batch = batch.to('cuda', non_blocking=True) # Transfert asynchrone
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
Memory Utilization
Objectif : 80-95% de la VRAM (maximiser batch size)
# Trouver batch size optimal
batch_size = 1
while True:
try:
batch = torch.randn(batch_size, 3, 224, 224, device='cuda')
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
print(f"Batch size {batch_size} : OK ({torch.cuda.memory_allocated() / 1e9:.1f} GB)")
batch_size += 1
except RuntimeError as e:
if "out of memory" in str(e):
print(f"Batch size max : {batch_size - 1}")
break
# Résultat sur RTX 4090 :
# Batch size 64 : OK (22.3 GB)
# Batch size 65 : OOM
# Batch size optimal : 64 (91% VRAM utilisée)
Throughput (samples/sec)
Objectif : Maximiser le débit
import time
start = time.time()
samples_processed = 0
for batch in dataloader:
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
samples_processed += batch.size(0)
if samples_processed >= 1000:
break
elapsed = time.time() - start
throughput = samples_processed / elapsed
print(f"Throughput : {throughput:.1f} samples/sec")
# RTX 4090 : 450 samples/sec
# A100 40GB : 520 samples/sec
# H100 80GB : 980 samples/sec
Cloud GPU : Alternatives à l’achat
Comparaison des providers
| Provider | GPU | Coût/Heure | VRAM | Disponibilité |
|---|---|---|---|---|
| RunPod | RTX 4090 | 0.60€ | 24 GB | ✅ Élevée |
| A100 40GB | 1.20€ | 40 GB | ✅ Élevée | |
| A100 80GB | 1.80€ | 80 GB | ⚠️ Moyenne | |
| H100 80GB | 4.50€ | 80 GB | ❌ Faible | |
| Lambda Labs | A100 40GB | 1.10€ | 40 GB | ✅ Élevée |
| A100 80GB | 1.65€ | 80 GB | ✅ Élevée | |
| Vast.ai | RTX 4090 | 0.40-0.80€ | 24 GB | ✅ Élevée |
| A100 80GB | 1.00-2.00€ | 80 GB | ⚠️ Variable | |
| AWS | p4d.24xlarge | 32.77€ | 320 GB (8× A100) | ✅ Élevée |
| GCP | a2-highgpu-8g | 29.50€ | 320 GB (8× A100) | ✅ Élevée |
Recommandations par cas d’usage
Développement quotidien
- RunPod RTX 4090 (0.60€/h)
- Coût mensuel (4h/jour × 20 jours) : 48€
Fine-tuning occasionnel
- Lambda Labs A100 40GB (1.10€/h)
- Exemple : 10h de fine-tuning/mois = 11€
Training intensif
- Vast.ai A100 80GB (1.00-2.00€/h)
- Ou achat local si > 200h/mois (ROI < 6 mois)
Conclusion et recommandations
Tableau récapitulatif : Quel GPU choisir ?
| Profil | GPU Recommandé | Prix | Capacités |
|---|---|---|---|
| Étudiant / Hobbyiste | RTX 4070 Ti 12GB | 900€ | Inférence 13B INT8, Fine-tuning 7B |
| Développeur indépendant | RTX 4090 24GB | 1800€ | Fine-tuning 13B, Inférence 34B INT4 |
| Startup / Chercheur | 2× RTX 4090 | 3600€ | Fine-tuning 34B, Expérimentation |
| PME | 2× RTX 6000 Ada | 14k€ | Fine-tuning 70B, Serveur inférence |
| Entreprise | 4× A100 40GB | 48k€ | Training distribué, Production |
| Recherche intensive | 8× H100 80GB | 280k€ | Training GPT-4 scale |
Alternative AMD
| Profil | GPU AMD | Économie | Note |
|---|---|---|---|
| Budget limité | RX 7900 XTX 24GB (1000€) | 44% vs RTX 4090 | ROCm moins mature |
| Professional | W7900 48GB (4000€) | 43% vs RTX 6000 | Bon si stack compatible |
| Datacenter | MI300X 192GB (15k€) | 57% vs H100 | Excellent pour gros modèles |
Checklist finale
✅ Avant d’acheter :
- Calculer VRAM nécessaire (formule : Paramètres × Bytes × Overhead)
- Vérifier compatibilité software (CUDA vs ROCm)
- Calculer ROI cloud vs local (> 100h/mois → local)
- Prévoir refroidissement (TDP 300-700W)
- Vérifier alimentation (PSU 1000-2000W pour multi-GPU)
✅ Optimisations essentielles :
- Mixed Precision (FP16) → 2× plus rapide
- Gradient Accumulation → batch size × 4-8
- Flash Attention → 5-10× moins de VRAM
- Quantization (INT8/INT4) → VRAM ÷ 2-4
Pour aller plus loin
Articles liés
- Introduction au Hardware IA - Vue d’ensemble du matériel IA
- TPU, NPU et Accélérateurs - Alternatives aux GPU
- Mémoire et Stockage pour l’IA - HBM, VRAM, NVMe
- Hardware pour Fine-Tuning - Optimiser vos configurations
- Budget et ROI du Hardware IA - Calculer votre investissement
Ressources externes
- NVIDIA GPU Selector - Comparateur officiel
- AMD Instinct MI Series - Gamme datacenter AMD
- RunPod GPU Pricing - Prix cloud en temps réel
- PyTorch CUDA Best Practices - Optimisations officielles