Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Dynamic Batching

ia

Définition

Le Dynamic Batching (batching dynamique) est une technique d'optimisation du serving LLM qui regroupe automatiquement plusieurs requetes clients arrivant independamment en batches pour l'inference GPU, maximisant l'utilisation des tensor cores. Contrairement au Static Batching (batch de taille fixe), le Dynamic Batching adapte la taille du batch en fonction des requetes en attente dans la file. Le principe : les GPU sont optimises pour les operations matricielles paralleles. Une inference sur un batch de 32 sequences est presque aussi rapide qu'une inference sur 1 sequence (si toutes rentrent en VRAM), car les GPU executent les operations en parallele. Le Dynamic Batching capitalise sur ce parallelisme en regroupant les requetes de differents clients qui arrivent dans un fenetre de temps courte. Continuous Batching (ou Iteration-level scheduling, vLLM) est la variante la plus avancee du Dynamic Batching pour les LLMs auto-regressifs : au lieu d'attendre que toutes les sequences d'un batch soient terminees, de nouvelles sequences sont ajoutees au batch des qu'une sequence se termine. Cela elimine le 'padding overhead' (sequences courtes qui attendent les longues) et maximise l'utilisation GPU. Les gains du Continuous Batching vs Static Batching : 2-4x de throughput superieur avec la meme latence mediane pour les workloads de generation LLM heterogenes (sequences de longueurs variees). vLLM, TGI (HuggingFace Text Generation Inference), LMDeploy et Triton + TRT-LLM implementent le Continuous Batching. Les parametres de configuration du Dynamic Batching : max_batch_size (taille maximale du batch), max_queue_delay (temps maximum d'attente avant envoi d'un batch partiel), preferred_batch_sizes (tailles de batch optimales pour le hardware). Ces parametres sont disponibles dans Triton, vLLM et TGI.

Continuous Batching dans vLLM

from vllm import AsyncLLMEngine, AsyncEngineArgs
import asyncio

engine_args = AsyncEngineArgs(
    model='meta-llama/Meta-Llama-3.1-8B-Instruct',
    max_num_seqs=256,          # Max sequences en parallele
    max_num_batched_tokens=4096,  # Max tokens par batch
    gpu_memory_utilization=0.90
)

engine = AsyncLLMEngine.from_engine_args(engine_args)

# Les requetes sont automatiquement batchees par le moteur
async def generate(prompt):
    async for output in engine.generate(prompt, sampling_params, request_id=str(id(prompt))):
        if output.finished:
            return output.outputs[0].text

Gain throughput Continuous Batching

Pour un service avec 100 requetes/seconde de longueurs variees (100-1000 tokens) :

  • Static Batching (batch=8, padding) : 8 req/s de throughput GPU effectif
  • Dynamic Batching (batch adaptatif) : 20-25 req/s
  • Continuous Batching : 50-70 req/s (2-3x vs dynamic)

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis