Chapitre 1 : Déploiement des LLM à grande échelle
Cadres de déploiement des LLM
| Framework | Idéal pour | Principales caractéristiques |
|---|---|---|
| vLLM | Haut débit | PagedAttention, batch continu |
| TGI | Modèles HuggingFace | Flash attention, parallélisme de tenseur |
| Triton | Multi-framework | Batching, ensemble de modèles |
| Ollama | Déploiement local | Installation facile, nombreux modèles |
Déploiement de vLLM
# Démarrer le serveur vLLM
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-2-7b-chat-hf",
tensor_parallel_size=2, # Utiliser 2 GPU
gpu_memory_utilization=0.9,
)
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.95,
max_tokens=512
)
# Inférence par lot
prompts = ["Qu'est-ce que MLOps ?", "Expliquez LLMOps"]
outputs = llm.generate(prompts, sampling_params)
Réponses en streaming
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
@app.post("/chat/stream")
async def stream_chat(request: ChatRequest):
async def generate():
async for token in llm.stream(request.message):
yield f"data: {token}\n\n"
yield "data: [DONE]\n\n"
return StreamingResponse(generate(), media_type="text/event-stream")
Suivant : Chapitre 2 : Optimisation de l'inférence