L'essentiel
DeepSeek a mis en ligne DeepInfer, le framework d'inférence haute performance qui alimente ses services de production à grande échelle. La publication est open source sous licence Apache 2.0 et couvre l'inférence hors ligne avec les fonctions nécessaires pour servir un modèle en production.
Un seul modèle est pris en charge pour l'instant : DeepSeek-V4.1-Flash. Le framework tourne sur les GPU NVIDIA SM100 et sur les NPU Huawei Ascend 950.
Les détails
Ce que contient la publication
DeepInfer embarque des noyaux optimisés (FlashMLA, DeepGEMM, DeepEP, TileKernels, DeepSelect et des noyaux TileLang sur mesure) ainsi que le runtime du modèle et de l'échantillonneur. Côté parallélisme, la source cite l'attention DP avec CP équilibré et le MoE EP avec EPLB.
Le décodage s'appuie sur DSpark et une vérification planifiée par la confiance : des jetons brouillon accélèrent la génération et des estimations de confiance décident quand vérifier. La variable DEEPINFER_ENABLE_MTP_VARLEN=1 active ce mécanisme et DEEPINFER_USE_NEXTN_DECODE fixe la longueur maximale des brouillons (5 par défaut).
Le rejeu borné du décodeur SWA réduit le travail de prefill en ne rejouant qu'un suffixe limité. Pour les réglages V4.1 par défaut, la source indique DEEPINFER_YOCO_PREFILL_TRUNCATION_MODE=compact et DEEPINFER_YOCO_PREFILL_KEEP_TOKENS=140, avec un suffixe conservé qui doit couvrir la fenêtre SWA plus la longueur maximale de retour arrière.
L'ordonnancement asynchrone, activé par défaut, fait chevaucher la planification des lots sur CPU et l'exécution sur l'accélérateur. L'inférence invariante au lot garde des résultats identiques quelles que soient les compositions de lots, via DEEPINFER_BATCH_INVARIANT=1 (NVIDIA uniquement). L'échantillonnage déterministe produit les mêmes sorties pour les mêmes jetons d'entrée et les mêmes paramètres, en combinant DEEPINFER_BATCH_INVARIANT=1 et DEEPINFER_ENABLE_MTP_VARLEN=0 avec une graine fixe passée à SamplingParams (NVIDIA uniquement). Les sorties structurées contraignent la génération à une expression régulière, un schéma JSON ou une grammaire EBNF, via so_args dans SamplingParams.
Ce qui manque encore
La publication ne suffit pas à monter un service complet. Il faut y ajouter un système de cache KV, la désagrégation VE/Prefill/Decode (dont l'essentiel du moteur est déjà implémenté selon la source), et l'équilibrage de charge entre réplicas data-parallel pour le prefill comme pour le decode.
Prérequis et mise en route
L'environnement doit être sous Linux, avec GCC 13.0 ou plus, Python 3.12, CUDA 13 côté NVIDIA et CANN 9.2 côté Ascend. La compilation se lance avec ./build.sh après avoir exporté DEEPINFER_ACCELERATOR=nvidia (ou ascend). Le point de contrôle par défaut, deepseek-ai/DeepSeek-V4.1-Flash-1017, se télécharge dans le cache Hugging Face au premier lancement. Pour partir d'une copie locale, la source mentionne la variable DEEPINFER_HF_MODEL_DIR pointant vers le répertoire du modèle. Un exemple d'inférence hors ligne est fourni dans examples/offline_inference.py.
Les mesures citées portent sur 4 GPU SM100 pour le prefill et 64 pour le decode, chaque ensemble restant dans un même domaine de mise à l'échelle. Le script run_sweep.sh permet de reproduire les benchmarks.
DeepInfer a d'abord été construit principalement sur vLLM, avec des emprunts à SGLang et TensorRT-LLM, que la source remercie.
Pourquoi c'est important
DeepSeek ne se contente plus de publier des poids de modèles : il ouvre le moteur qui les sert en production. Pour une équipe qui veut faire tourner DeepSeek-V4.1-Flash sur ses propres machines, cela donne accès aux mêmes optimisations que le fournisseur, sans avoir à réécrire un serveur d'inférence. Les noyaux et les mécanismes de décodage spéculatif sont exactement ceux qui font la différence de débit à grande échelle.
Le point à surveiller est le périmètre volontairement partiel. Cache KV, désagrégation et équilibrage de charge restent à la charge de l'exploitant. Mon hypothèse est que DeepSeek garde ces briques pour son infrastructure interne et laisse la communauté assembler le reste. Cela suggère aussi que la prise en charge d'Ascend 950 n'est pas anecdotique : le framework est pensé pour tourner sur du matériel non NVIDIA, ce qui compte pour les équipes soumises à des contraintes d'approvisionnement.
Les options d'invariance au lot et d'échantillonnage déterministe méritent une lecture attentive. Elles répondent à un problème concret des pipelines de test et d'évaluation, où deux exécutions du même prompt doivent donner le même résultat. Le fait que ces modes soient réservés à NVIDIA limite toutefois leur intérêt sur Ascend.
Source
- DeepInfer: High-performance inference framework for DeepSeek models · github.com (via Hacker News)