Aller au contenu principal
Leçon 13 sur 14 · Mistral Vibe Avancé — Agents, Skills et Mode Local

Déployer Devstral en local avec vLLM

Leçon 13 sur 14 Mis à jour le 2 novembre 2026 Avancé
Sur cette page
  1. Préparer le déploiement
  2. Ce que votre matériel autorise
  3. Installer vLLM
  4. Lancer le serveur
  5. Adapter la commande à votre machine
  6. Brancher Vibe et vérifier
  7. Les trois problèmes que vous rencontrerez
  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 Mistral, mais ses poids restent publiés : Devstral Small 2 et Mistral Small 4 sont les deux modèles ouverts recommandés pour un usage local. Vibe n’embarque pas de modèle local : on le branche sur un serveur compatible OpenAI par un préréglage dans config.toml, puis on bascule avec /model. Source : Using offline models.

Préparer le déploiement

Déployer Devstral en local revient à lancer sur votre machine un serveur d’inférence qui expose une API compatible OpenAI. Vibe s’y connecte ensuite exactement comme s’il parlait au cloud Mistral : c’est cette compatibilité d’interface qui rend la bascule indolore, votre outillage n’ayant aucune raison de savoir d’où viennent les réponses. Le framework recommandé pour ce rôle est vLLM, un moteur d’inférence haute performance développé par la communauté open-source.

Ce que votre matériel autorise

Avant toute installation, regardez votre GPU : c’est lui qui détermine la précision utilisable et, par conséquent, la taille de la fenêtre de contexte dont vous disposerez.

Configuration GPU VRAM Précision Contexte
Recommandée NVIDIA H100 / A100 80 Go FP8 ~128K tokens
Alternative RTX 4090 / RTX 6000 24-48 Go 4-bit (quantifié) ~32K tokens
CPU-only Aucun GPU 64+ Go RAM - Lent (non recommandé)

Note importante : la configuration CPU-only est fonctionnelle mais extrêmement lente pour un modèle 24B. Elle convient uniquement pour des tests, pas pour un usage quotidien. Autrement dit, elle vous permettra de vérifier que la chaîne fonctionne, pas de travailler avec.

Installer vLLM

Le prérequis logiciel est mince : Python 3.10 ou supérieur, puis un pip install.

# Python 3.10+ requis
python3 --version

# Installer vLLM
pip install vllm

Vérifiez ensuite que les drivers NVIDIA et CUDA sont installés et opérationnels. Cette commande est le meilleur test de bout en bout : si elle affiche votre GPU et une version de CUDA, la couche basse est saine et les erreurs ultérieures viendront d’ailleurs.

nvidia-smi
# Doit afficher votre GPU et la version CUDA

Lancer le serveur

La commande de démarrage tient en quatre arguments, dont deux sont indispensables au fonctionnement avec Vibe.

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

Décortiquons les flags :

  • mistralai/Devstral-Small-2-24B-Instruct-2512 : le modèle Hugging Face à charger
  • --tool-call-parser mistral : active le parsing des appels d’outils au format Mistral
  • --enable-auto-tool-choice : permet au modèle de choisir automatiquement ses outils
  • --port 8080 : le port d’écoute du serveur

Les deux flags relatifs aux outils méritent qu’on s’y arrête. Sans eux, le serveur répondrait bien à vos questions, mais le modèle ne pourrait plus lire un fichier ni lancer une commande : Vibe deviendrait un simple chat, ce qui n’est pas l’objet.

Adapter la commande à votre machine

Si vous disposez de plusieurs GPU, le parallélisme tensoriel répartit le modèle sur l’ensemble des cartes. La VRAM combinée autorise alors une fenêtre de contexte plus large.

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

Sur une configuration plus modeste, c’est la précision qu’il faut abaisser. Une H100 ou une A100 encaissent le FP8 ; une RTX 4090 passera par une quantification 4-bit avec AWQ, au prix d’une légère perte de qualité largement compensée par le fait que le modèle tienne enfin en mémoire.

# FP8 sur H100/A100
vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --dtype float16 \
  --port 8080

# 4-bit sur RTX 4090
vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --quantization awq \
  --port 8080

Dernier levier quand la VRAM reste insuffisante : réduire la longueur de contexte maximale. Le cache d’attention consomme de la mémoire proportionnellement au contexte, et descendre à 16 384 tokens libère souvent ce qui manquait pour démarrer.

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

Brancher Vibe et vérifier

Le serveur tourne ; il reste à dire à Vibe de l’utiliser. Vibe n’embarque pas de modèle local : déclarez un fournisseur et un préréglage de modèle dans config.toml.

# ~/.vibe/config.toml
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"

Gardez active_model au-dessus du premier tableau [[...]], sinon TOML le rattache à ce tableau. Renseignez max_context_length dans le préréglage pour indiquer le contexte de votre serveur, qui doit aussi renvoyer l’usage en tokens dans les réponses en streaming (stream_options.include_usage). Variante plus courte : Vibe fournit un fournisseur prédéfini, llamacpp, qui pointe vers http://127.0.0.1:8080/v1 sans clé ; écrivez alors provider = "llamacpp" dans le préréglage, sans bloc [[providers]]. En session, /model bascule entre le modèle local et les modèles hébergés.

Testez la chaîne à deux niveaux : d’abord l’API brute, qui vous confirme que le modèle est bien chargé, puis une vraie requête dans Vibe pour valider que les appels d’outils fonctionnent.

# Test direct de l'API
curl http://localhost:8080/v1/models

# Test dans Vibe (l'agent ask demande avant chaque outil)
vibe --agent ask
> Liste les fichiers du répertoire courant

Pour un usage quotidien, relancer la commande à la main devient vite pénible. Un service systemd démarre le serveur au boot et le relance en cas de crash.

# Créer un service systemd
sudo tee /etc/systemd/system/vllm-devstral.service << EOF
[Unit]
Description=vLLM Devstral Server
After=network.target

[Service]
Type=simple
User=$USER
ExecStart=/usr/local/bin/vllm serve mistralai/Devstral-Small-2-24B-Instruct-2512 --tool-call-parser mistral --enable-auto-tool-choice --port 8080
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable --now vllm-devstral

Les trois problèmes que vous rencontrerez

Une erreur CUDA out of memory signifie que le modèle ne tient pas : réduisez --max-model-len ou passez en quantification 4-bit. Une lenteur au tout premier lancement est normale et non un symptôme — le démarrage initial télécharge et charge le modèle, environ 14 Go, et les lancements suivants profitent du cache. Enfin, si Vibe ne trouve pas le serveur local, vérifiez simplement que le port 8080 écoute avant de chercher plus loin.

curl http://localhost:8080/health

Points clés à retenir

  • vLLM est le framework recommandé pour servir Devstral en local
  • Les flags --tool-call-parser mistral et --enable-auto-tool-choice sont obligatoires
  • Un H100/A100 offre FP8 et 128K de contexte, une RTX 4090 offre 4-bit et 32K
  • Réduisez --max-model-len si la VRAM est insuffisante
  • Connectez Vibe par un fournisseur et un préréglage de modèle dans config.toml (ou le fournisseur prédéfini llamacpp), puis /model
  • Lancez vLLM comme service systemd pour un usage quotidien