# DeepInfer : DeepSeek ouvre son moteur d'inférence pour DeepSeek-V4.1-Flash

> DeepSeek publie DeepInfer, le framework d'inférence qui fait tourner ses services de production, sous licence Apache 2.0. Il cible les GPU NVIDIA SM100 et les NPU Huawei Ascend 950.

- Auteur : Clément Reboul, ingénieur IA (https://clement-reboul.fr/about/)
- Publié le 2026-10-21, mis à jour le 2026-10-27
- Adresse canonique : https://clement-reboul.fr/blog/deepinfer-deepseek-ouvre-son-moteur-d-inference-pour-deepseek-v4-1-flash/
- Thèmes : Modèles et recherche, Matériel et infrastructure

---

## 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](https://github.com/deepseek-ai/DeepInfer) · github.com (via Hacker News)
