IA locale · Tutoriel

Docker Model Runner : lancer un modèle local et l'appeler par API en quatre commandes

Si Docker est déjà installé sur vos postes ou vos serveurs, vous avez sous la main un moteur pour faire tourner des modèles de langage. Voici les commandes de la documentation officielle pour l'activer, charger un modèle et l'interroger, ainsi que ce qu'apporte la version 1.2.9.

Par Kayzen AI · · 3 min de lecture

Photo d'illustration : Shipping container - Eimskip - Port of Rotterdam - 2017 - 2
Image : Shipping container - Eimskip - Port of Rotterdam - 2017 - 2 — AgainErick, CC BY-SA 4.0, via Wikimedia Commons

Docker Model Runner (DMR) est la brique de Docker qui télécharge des modèles d'IA, les garde en cache sur la machine et les expose par une API. Son intérêt pour une petite équipe est simple : pas d'outil supplémentaire à apprendre si Docker est déjà en place. Les commandes ci-dessous viennent de la documentation officielle ; nous ne les avons pas exécutées nous-mêmes.

Étape 1 : activer Model Runner

Sur Docker Desktop, ouvrez les réglages, onglet « AI », et cochez « Enable Docker Model Runner ». Pour appeler le modèle depuis la machine elle-même, cochez aussi « Enable host-side TCP support » et choisissez un port : cet accès est désactivé par défaut.

Sur un serveur Linux avec Docker Engine, installez le greffon. Sous Ubuntu ou Debian :

sudo apt-get update
sudo apt-get install docker-model-plugin

Sur les distributions à paquets RPM, la documentation donne sudo dnf install docker-model-plugin. Ici, l'accès TCP est actif d'origine sur le port 12434.

Étape 2 : vérifier et lancer un modèle

docker model version
docker model run ai/smollm2

La seconde commande lance le petit modèle utilisé en exemple dans la documentation. Pour télécharger une variante précise, ou un fichier GGUF hébergé sur Hugging Face :

docker model pull ai/smollm2:360M-Q4_K_M
docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF

Étape 3 : appeler le modèle

L'API reprend le format d'OpenAI. Depuis la machine hôte, en adaptant l'exemple de la documentation :

curl http://localhost:12434/engines/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
      "model": "ai/smollm2",
      "messages": [
          { "role": "user", "content": "Bonjour" }
      ]
  }'

Pour un outil qui utilise un kit de développement OpenAI, l'adresse de base à renseigner est http://localhost:12434/engines/v1. Depuis un conteneur, sous Docker Desktop, l'adresse est http://model-runner.docker.internal. Des chemins compatibles avec les API d'Anthropic et d'Ollama existent aussi.

En cas de souci, docker model logs affiche les journaux.

Ce qu'apporte la version 1.2.9

Publiée le 22 octobre, c'est une version d'entretien :

  • l'option de raisonnement de llama.cpp, le moteur sous-jacent, est désormais autorisée parmi les réglages d'exécution ;
  • les téléchargements depuis Docker Hub à travers un proxy fonctionnent sans résolution DNS locale, un point utile derrière un réseau d'entreprise ;
  • les appels d'outils transmis en flux sont correctement reconstitués ;
  • llama.cpp est mis à jour à plusieurs reprises.

Sur Docker Engine, la documentation indique cette commande de mise à jour, qui conserve les modèles déjà téléchargés :

docker model uninstall-runner --images && docker model install-runner

Les limites à connaître

  • Aucune clé n'est demandée. La documentation précise que l'en-tête d'autorisation est ignoré. N'exposez donc jamais le port 12434 au-delà de la machine ou d'un réseau de confiance.
  • L'accélération graphique : dans Docker Desktop, l'option « Enable GPU-backed inference » est décrite pour Windows avec une carte NVIDIA prise en charge. La page de démarrage ne détaille pas les autres cas.
  • La génération d'images exige une carte NVIDIA avec CUDA et ne tourne que sous Linux.
  • Le nom complet du modèle, espace de noms compris (ai/smollm2), doit figurer dans chaque requête.

Notre lecture

DMR ne remplace pas un serveur d'inférence taillé pour la charge. Il convient bien à deux usages : donner à chaque développeur un modèle local identique à celui de ses collègues, et intégrer un petit modèle dans une application déjà décrite avec Docker Compose. Commencez par le petit modèle d'exemple pour valider l'installation, puis passez à un modèle adapté à votre mémoire disponible. Et traitez le port de l'API comme un service interne non protégé, car c'est ce qu'il est.

Sources

  1. Docker — docker/model-runner, notes de version (GitHub) — source primaire
  2. Docker Docs — Get started with DMR
  3. Docker Docs — DMR REST API