À l'intérieur de vLLM : Anatomie d'un système d'inférence LLM à haut débit

vLLM est l'un des moteurs d'inférence open-source les plus utilisés pour les LLM, et le récent article d'Aleksa Gordić fournit une présentation technique solide de ses internes. Il s'adresse aux développeurs curieux de savoir comment sont construits les moteurs LLM modernes, ou à ceux qui envisagent de contribuer à vLLM, SGLang et des projets similaires. L'analyse est basée sur le commit 42172ad (9 août 2025) et se concentre sur le nouveau moteur V1 (V0 est obsolète).
Composants principaux du moteur
L'article commence par la configuration synchrone hors ligne, en utilisant un simple objet LLM. Le constructeur du moteur est décomposé en plusieurs parties clés :
- Configuration vLLM – Tous les paramètres pour le modèle, le cache, le parallélisme, etc.
- Processeur – Convertit les entrées brutes en requêtes du moteur central via validation et tokenisation.
- Client du moteur central – Dans l'exemple, il s'agit d'un
InprocClientqui s'exécute dans le processus ; pour la production, vous passeriez à un client multi-processus commeDPLBAsyncMPClient. - Processeur de sortie – Convertit les sorties du moteur central en sorties de requêtes destinées à l'utilisateur.
Le moteur central lui-même contient l'exécuteur de modèle (dirigeant les passages avant), un gestionnaire de sorties structurées (pour le décodage guidé), et un planificateur avec des files d'attente en attente et en cours. Le planificateur utilise une politique (FCFS ou priorité) et inclut le gestionnaire de cache KV.
Attention paginée et cache KV
Le gestionnaire de cache KV est le cœur de l'attention paginée. Il maintient une free_block_queue de blocs disponibles, souvent des centaines de milliers selon la VRAM et la taille des blocs. La taille de bloc pour un transformateur standard (non-MLA) est calculée comme suit :
2 * block_size * num_kv_heads * head_size * dtype_num_bytes
ce qui, pour les paramètres par défaut, donne une taille de bloc pratique. Ce mécanisme de pagination permet une gestion efficace de la mémoire et un débit élevé.
Fonctionnalités avancées
L'article ne s'arrête pas aux bases. Il décrit les fonctionnalités avancées qui rendent vLLM prêt pour la production :
- Préremplissage par morceaux – Divise les longs prompts en morceaux pour les entrelacer avec la génération.
- Cache de préfixes – Réutilise le cache KV pour les préfixes partagés.
- Décodage guidé – Contraint la sortie à un schéma ou une grammaire.
- Décodage spéculatif – Utilise un modèle draft pour accélérer la génération.
- P/D désagrégé – Sépare le préremplissage et le décodage sur différents GPU.
Il couvre également la mise à l'échelle vers des configurations multi-GPU et multi-nœuds, ainsi que la couche de service pour gérer le trafic web concurrent. Des benchmarks et l'auto-tuning sont mentionnés pour mesurer la latence et le débit.
Pour les développeurs qui construisent ou étendent des systèmes d'inférence LLM, cela donne un modèle mental clair de la façon dont vLLM orchestre la planification, la mémoire et l'exécution. C'est le premier d'une série, donc attendez-vous à des plongées plus approfondies dans les sous-systèmes individuels plus tard.
📖 Lire la source complète : HN LLM Tools
👀 See Also

Deux mois avec Spec-Kit de GitHub et Claude Code : ce qui fonctionne, ce qui ne fonctionne pas
Un développeur partage des notes pratiques sur l'utilisation de la boîte à outils Spec-Driven Development de GitHub avec Claude Code, couvrant le flux de travail en cinq phases, les problèmes de dérive, les compromis de surcharge et les conseils de configuration.

ClawCall : Compétence OpenClaw pour les appels téléphoniques IA avec mode pont
ClawCall est une compétence OpenClaw qui permet aux agents IA de passer de véritables appels téléphoniques, de naviguer dans les menus, de patienter en attente et de mener des conversations. Elle inclut un mode pont qui vous met en ligne lorsqu'un humain décroche.

AutoSkillUpdate : Un Plugin Claude Code qui Détecte les Compétences Obsolètes
AutoSkillUpdate est un plugin open-source pour Claude Code qui analyse votre base de code, la compare aux compétences existantes et identifie les dérives. Il fournit des rapports de dérive avec les chemins de fichiers et les références de lignes, puis propose de réécrire les compétences obsolètes après confirmation de l'utilisateur.

Rivet Actors ajoute le stockage SQLite : une base de données par agent, locataire ou document
Rivet Actors prend désormais en charge le stockage SQLite où chaque acteur obtient sa propre base de données SQLite, permettant des millions de bases de données indépendantes pour les agents IA, les SaaS multi-locataires, les documents collaboratifs ou l'isolation par utilisateur.