← Retour au cours
▶ Aperçu gratuit · Leçon offerte

Leçon 1 — Paysage LLM 2026 : APIs commerciales, open-source et déploiement (vLLM, TGI, Ollama)

⏱ 60 min · 🎬 Lecon · 🏆 20 XP
🎬
Vidéo en production
Notre équipe pédagogique tourne actuellement cette leçon avec un·e formateur·rice expert·e. Le contenu textuel ci-dessous est complet et utilisable dès maintenant.

Leçon 1 — Paysage LLM 2026 et déploiement

Comparatif APIs commerciales et modèles open-source, déploiement avec vLLM/TGI/Ollama, tokens et coûts.

Objectifs de la leçon

  • Comparer LLM closed-source (OpenAI, Anthropic, Google, Mistral) et open-source (Llama 3, Mixtral, Qwen, DeepSeek)
  • Comprendre tokens, context window, throughput, latency, coût
  • Déployer un modèle open-source avec vLLM (paged attention)
  • Choisir entre vLLM, Text Generation Inference (TGI), Ollama, llama.cpp
  • Architecturer une API d'inférence production-grade

1. Paysage 2026 — les acteurs

1.1 APIs closed-source

ModèleÉditeurContextPrix (in/out par M tokens)
GPT-5OpenAI400 KVariable, ~$5/$15
Claude Opus 4.5 / 4.7Anthropic200 K / 1 M~$15/$75
Claude Sonnet 4.5Anthropic200 K~$3/$15
Claude Haiku 4.5Anthropic200 K~$0,80/$4
Gemini 2.5 ProGoogle1-2 M~$1,25/$5
Mistral Large 2Mistral128 K~$3/$9

1.2 Open-source 2026

ModèleÉditeurTailleParticularité
Llama 3.3 70BMeta70BMultilingue, licence ouverte commerciale
Mixtral 8x22BMistral141B (MoE 39B actifs)Mixture-of-Experts, Apache 2.0
Qwen 2.5 72BAlibaba72BExcellent en multilingue, code
DeepSeek-V3DeepSeek671B (MoE 37B actifs)Open, performance frontière
Phi-4Microsoft14BSLM (small language model)
Gemma 2 27BGoogle27BLicence Google
Source 2026 : LMSYS Chatbot Arena — leaderboard ELO basé sur préférences humaines blind. Référence pour comparer la qualité.

2. Tokens et tokenization

Un LLM ne voit pas du texte mais des tokens (sous-mots via BPE / SentencePiece). En anglais ~ 4 caractères = 1 token. En français/chinois souvent plus de tokens par caractère.

ModèleTokenizerVocab
GPT-4 / 5tiktoken (cl100k_base)~100 K
ClaudeBPE custom~64 K
Llama 3tiktoken-based128 K
MistralSentencePiece32 K

Compter des tokens (tiktoken)

import tiktoken

enc = tiktoken.encoding_for_model("gpt-4o")
text = "Bonjour le monde, comment ça va ?"
tokens = enc.encode(text)
print(f"Tokens: {len(tokens)}")        # ~10 tokens
print(f"Decoded: {[enc.decode([t]) for t in tokens]}")

3. Quand utiliser quoi ?

ContexteRecommandation
Prototypage rapideAPI (Anthropic Claude Sonnet, GPT-5, Gemini Flash)
Production avec données sensibles (santé, finance, gouv.)Open-source self-hosted ou Azure OpenAI / AWS Bedrock
Très haut volume, coûts dominantsOpen-source self-hosted + quantization
Tâches simples (classification, extraction)SLM (Phi-4, Llama 3.2 3B) ou Haiku/Mini
Frontière de performance (reasoning, code)Claude Opus, GPT-5, Gemini 2.5 Pro
Latence ultra-faible (< 200 ms)Modèle 7-13B local + Groq / Cerebras API

4. vLLM — Le serveur d'inférence de référence

vLLM (UC Berkeley 2023) sert les LLMs open-source avec PagedAttention (analogue à OS paging pour la KV-cache) et continuous batching. Throughput 14-24× supérieur à HuggingFace TGI naïf.

Kwon W. et al., « Efficient Memory Management for Large Language Model Serving with PagedAttention », SOSP 2023, arXiv:2309.06180 · docs.vllm.ai

Servir Llama 3 8B avec vLLM

# Installation
pip install vllm

# Lancement serveur (OpenAI-compatible API)
vllm serve meta-llama/Meta-Llama-3-8B-Instruct \
  --host 0.0.0.0 --port 8000 \
  --max-model-len 8192 \
  --tensor-parallel-size 1 \
  --gpu-memory-utilization 0.92

Appel client (compatible OpenAI SDK)

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")
resp = client.chat.completions.create(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    messages=[
        {"role": "system", "content": "Tu es un assistant utile."},
        {"role": "user", "content": "Résume Apache Spark en 2 phrases."}
    ],
    max_tokens=200,
    temperature=0.3,
    stream=True
)
for chunk in resp:
    print(chunk.choices[0].delta.content, end="")

5. Alternatives de serving

OutilCibleParticularité
vLLMGPU serveurThroughput max, OpenAI-compatible
TGI (Hugging Face)GPU serveurProduction HF Inference Endpoints
OllamaLocal dev (Mac/Linux/Win)CLI ultra-simple, GGUF/llama.cpp
llama.cppCPU / Apple SiliconC++, GGUF quantizé
SGLangGPU serveurConstraint decoding, structured output
LMDeployGPU serveurNVIDIA-optimisé, TurboMind backend
Modal / Replicate / RunPodCloud GPU à la demandeSaaS, scale-to-zero

6. Quantization pour l'inférence

Un Llama 3 70B en FP16 = 140 GB → impossible sur 1×A100 80 GB. La quantization réduit drastiquement la mémoire :

MéthodeBitsMémoire (70B)Qualité
FP16 / BF16 (baseline)16140 GB100 %
FP8 (H100)870 GB~99 %
AWQ4~40 GB~98-99 %
GPTQ4~40 GB~97-99 %
Q4_K_M (GGUF)~4,5~42 GB~99 %
Q2_K (GGUF)~2,5~25 GBDégradée (perplexity +20 %)
Recommandation 2026 : AWQ ou Q4_K_M pour servir un 70B sur 1×A100 80 GB. FP8 sur H100 si disponible. Éviter Q2/Q3 sauf prototype.

7. Latence et throughput

  • Time To First Token (TTFT) : ~50-300 ms (prefill compute)
  • Inter-Token Latency (ITL) : ~10-30 ms par token (decode)
  • Throughput : tokens/s par GPU, jusqu'à 3 000+ sur Llama 8B sur H100
  • Output speed perception : streaming > 30 tok/s = fluide pour l'utilisateur

8. API d'inférence production

Wrapper FastAPI avec rate limiting, auth, logging

from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import APIKeyHeader
from pydantic import BaseModel
import httpx
from slowapi import Limiter
from slowapi.util import get_remote_address

app = FastAPI()
limiter = Limiter(key_func=get_remote_address)
api_key_header = APIKeyHeader(name="X-API-Key")

class ChatReq(BaseModel):
    messages: list[dict]
    max_tokens: int = 500
    temperature: float = 0.3

def auth(key: str = Depends(api_key_header)):
    if key not in VALID_KEYS:
        raise HTTPException(401, "Invalid API key")

@app.post("/chat")
@limiter.limit("30/minute")
async def chat(req: ChatReq, _=Depends(auth)):
    async with httpx.AsyncClient() as c:
        r = await c.post("http://vllm:8000/v1/chat/completions",
                         json=req.dict(), timeout=60)
    return r.json()

9. Coûts — règles d'orientation

VolumeAPI closed (Sonnet)Self-hosted 8B (H100)
1 M tokens / mois~$18$200+ (1 GPU minimum)
100 M tokens / mois~$1 800$1 000 (réservation)
1 B tokens / mois$18 000$3 000-5 000
10 B tokens / mois$180 000$10 000-20 000
Anti-pattern : self-hoster un LLM "pour les économies" en dessous de 100 M tokens/mois. L'API reste moins chère et nettement moins coûteuse en personnel SRE/MLOps.

10. Synthèse et points-clés

  • 2026 : Claude / GPT / Gemini dominent les API ; Llama 3.3, Mixtral, Qwen 2.5 dominent l'open-source
  • Tokens ~ 4 caractères en anglais. Mesurer avec tiktoken
  • vLLM = serveur de référence (PagedAttention, continuous batching)
  • AWQ / GPTQ / GGUF Q4_K_M = quantization recommandée 2026
  • Choisir API si < 100 M tokens/mois ou compliance non bloquante
  • Streaming > 30 tok/s = perception fluide
  • Wrapper FastAPI avec auth, rate-limit, observability obligatoire

Pour aller plus loin

Continuez le parcours 🚀

La leçon suivante est également gratuite. Découvrez-la sans inscription.

Leçon 2 — Continuer →
🍪 Nous utilisons des cookies essentiels et, avec ton accord, des cookies analytiques. En savoir plus

⚙️ Préférences cookies

Choisis quels cookies tu acceptes — modifiable à tout moment.

🔐 Essentiels (obligatoires)Authentification, session, sécurité. Toujours actifs.
📊 Analytics anonymesMesure d'audience anonymisée — aucune donnée personnelle.
📣 MarketingPublicités ITAG pertinentes sur d'autres sites.
💬 Contactez-nous sur WhatsApp