Aller au contenu principal
Leçon 13 sur 14 · Codestral et agents de code — de Devstral à Vibe Code

Héberger Devstral en Local

Leçon 13 sur 14 Mis à jour le 2 novembre 2026 Développeur
Sur cette page
  1. Pourquoi héberger Devstral localement ?
  2. Les modèles recommandés
  3. Prérequis matériels
  4. Déploiement avec vLLM
  5. Utiliser le serveur local
  6. Frameworks alternatifs
  7. Connecter Vibe au serveur local
  8. Points clés à retenir

Leçon mise à jour le 2 novembre 2026 d’après la page Using offline models de la documentation de Vibe : Devstral est retiré de l’API, mais Devstral Small 2 reste, avec Mistral Small 4, l’un des deux modèles ouverts recommandés pour un usage local. Les estimations de coût sans source ont été retirées, et la connexion de Vibe au serveur local suit désormais la syntaxe officielle de config.toml. Source : Using offline models.

Pourquoi héberger Devstral localement ?

Devstral Small 2 est publié en poids ouverts sous licence Apache 2.0 (Devstral 2, son grand frère de 123 milliards de paramètres, l’est sous licence MIT modifiée). Retiré de l’API Mistral depuis le 31 mars 2026, il n’a pas disparu pour autant : vous pouvez le déployer sur vos propres serveurs sans envoyer une seule ligne de votre code à une API externe, et la documentation de Vibe le recommande toujours pour cet usage.

Les motivations se recoupent souvent. La confidentialité vient en tête : votre code ne quitte jamais votre infrastructure, ce qui coupe court aux discussions sur les conditions d’usage d’un fournisseur. La latence suit, puisqu’aucun aller-retour réseau vers l’API Mistral ne s’intercale entre la frappe et la suggestion. Le coût change de nature : vous payez un GPU à prix fixe au lieu d’une facturation à l’usage, ce qui devient avantageux dès qu’une équipe entière sollicite le modèle toute la journée. Viennent enfin la conformité, exigée par certaines réglementations et par des secteurs comme la banque ou la défense, et la disponibilité, puisque plus aucun service tiers ne peut interrompre votre travail.

Les modèles recommandés

La documentation de Vibe recommande deux modèles ouverts pour un usage local :

  • Devstral Small 2 (mistralai/Devstral-Small-2-24B-Instruct-2512 sur Hugging Face) : 24 milliards de paramètres, dense, entraîné pour les tâches agentiques et le code, avec l’empreinte matérielle la plus légère ;
  • Mistral Small 4 : 119 milliards de paramètres en mélange d’experts, dont 6,5 milliards actifs, modèle hybride raisonnement et code avec 256 000 tokens de contexte, sous licence Apache 2.0.

Prérequis matériels

Pour des performances correctes sur de longs contextes, la documentation conseille un déploiement en FP8 avec un contexte d’environ 128 000 tokens :

ConfigurationMatérielPrécisionContexte
RecommandéeGPU H100 ou A100FP8environ 128 000 tokens
Poste de développementRTX 4090 ou tout GPU de 24 Go de VRAM4 bitsenviron 32 000 tokens
Sans GPUdélestage sur le processeur (CPU offload), avec assez de mémoire vive—— nettement plus lent

Ces chiffres valent pour Devstral Small 2. Mistral Small 4 demande beaucoup plus de mémoire vidéo pour charger ses poids : comptez au moins un H100 de 80 Go en FP8, davantage pour les longs contextes. Ajustez ensuite précision et longueur de contexte à votre matériel.

Déploiement avec vLLM

vLLM est le framework d’inférence que recommande la documentation de Vibe pour servir Devstral. Son installation ne demande qu’une commande.

pip install vllm

Le serveur se lance ensuite en une ligne, avec les deux options qui rendent le modèle utilisable en mode agent.

vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --port 8080

Trois variantes couvrent l’essentiel des situations réelles : répartir le modèle sur plusieurs GPU, réduire la précision quand la VRAM manque, ou rogner le contexte pour la même raison.

# Multi-GPU (si vous avez 2+ GPU)
vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --tensor-parallel-size 2 \
  --port 8080

# Précision réduite (pour GPU avec moins de VRAM)
vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --dtype float16 \
  --port 8080

# Contexte réduit (pour économiser la VRAM)
vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --max-model-len 32768 \
  --port 8080

Voici ce que chaque flag contrôle :

  • --tool-call-parser mistral — active le parsing des appels d’outils au format Mistral
  • --enable-auto-tool-choice — permet au modèle de décider quand appeler un outil
  • --tensor-parallel-size — répartit le modèle sur plusieurs GPU
  • --dtype — contrôle la précision (float16, bfloat16, float32)
  • --max-model-len — limite la taille du contexte pour économiser la VRAM

Les deux premiers méritent une attention particulière : les omettre donne un serveur qui fonctionne parfaitement en conversation et qui échoue silencieusement dès qu’un agent tente d’appeler un outil. C’est la cause la plus fréquente d’un déploiement local jugé « décevant ».

Utiliser le serveur local

Une fois vLLM lancé, le port 8080 expose une API compatible OpenAI. Le SDK Mistral s’y branche en changeant simplement l’URL du serveur, la clé n’ayant plus d’utilité.

from mistralai.client import Mistral

# Pointer vers le serveur local
client = Mistral(
    api_key="dummy",  # Pas de clé nécessaire en local
    server_url="http://localhost:8080",
)

response = client.chat.complete(
    model="mistralai/Devstral-Small-2-24B-Instruct-2512",
    messages=[
        {"role": "user", "content": "Analyse ce code et propose des améliorations."}
    ],
)

Le SDK OpenAI fonctionne tout aussi bien, ce qui vous permet de basculer un code existant vers Devstral local sans le réécrire.

from openai import OpenAI

client = OpenAI(
    api_key="dummy",
    base_url="http://localhost:8080/v1",
)

response = client.chat.completions.create(
    model="mistralai/Devstral-Small-2-24B-Instruct-2512",
    messages=[
        {"role": "user", "content": "Explique ce code."}
    ],
)

Frameworks alternatifs

vLLM n’est pas la seule voie : Devstral fonctionne avec tout framework d’inférence qui expose une API compatible OpenAI. La documentation de Vibe cite llama.cpp, adapté aux configurations à faible mémoire vidéo grâce à ses modèles quantifiés au format GGUF, LM Studio, qui offre une interface graphique sans ligne de commande, et Ollama. Vérifiez dans chaque outil le nom exact du modèle et sa quantification avant de comparer les résultats.

Connecter Vibe au serveur local

Vibe n’embarque pas de modèle local : une fois votre serveur lancé, vous déclarez un fournisseur et un préréglage de modèle dans config.toml. Pour un serveur compatible OpenAI sur le port 8080 :

active_model = "devstral-local"

[[providers]]
name = "local"
api_base = "http://localhost:8080/v1"
api_style = "openai"
backend = "generic"

[[models]]
name = "mistralai/Devstral-Small-2-24B-Instruct-2512"
provider = "local"
alias = "devstral-local"

Trois précautions issues de la documentation : gardez active_model au-dessus du premier tableau [[...]], sans quoi TOML le rattache à ce tableau ; renseignez max_context_length dans le préréglage pour indiquer le contexte de votre serveur ; et vérifiez que celui-ci renvoie l’usage en tokens dans les réponses en streaming (stream_options.include_usage). Vibe fournit aussi un fournisseur prédéfini, llamacpp, qui pointe vers http://127.0.0.1:8080/v1 sans clé : il suffit alors d’écrire provider = "llamacpp" dans le préréglage. La commande /model bascule ensuite entre le modèle local et les modèles hébergés.

Pour un fonctionnement entièrement hors ligne, coupez aussi la télémétrie et la vérification des mises à jour :

enable_telemetry = false
enable_update_checks = false

Avec ces réglages et un fournisseur local, la CLI ne contacte plus mistral.ai. Les skills, serveurs MCP et connecteurs qui joignent des systèmes externes doivent être désactivés séparément.

Points clés à retenir

  • Devstral est retiré de l’API, mais Devstral Small 2 (24B, Apache 2.0) reste recommandé pour un usage local, avec Mistral Small 4
  • vLLM est le framework recommandé ; --tool-call-parser mistral et --enable-auto-tool-choice sont indispensables pour un agent
  • H100 ou A100 en FP8 avec environ 128k de contexte ; un GPU de 24 Go en 4 bits avec environ 32k
  • Le serveur expose une API compatible OpenAI, utilisable avec le SDK Mistral ou le SDK OpenAI
  • Vibe se branche sur le serveur par un préréglage dans config.toml (ou le fournisseur llamacpp) ; coupez télémétrie et mises à jour pour un usage hors ligne