Docker Model Runner
Fonctionnalités clés
- Télécharger et pousser des modèles vers et depuis Docker Hub
- Empaqueter les fichiers GGUF comme artefacts OCI et les publier sur n'importe quel registre de conteneurs
- Exécuter et interagir avec des modèles IA directement depuis la ligne de commande ou depuis l'interface graphique de Docker Desktop
- Gérer les modèles locaux et afficher les logs
Comment ça fonctionne
Les modèles sont téléchargés depuis Docker Hub la première fois qu'ils sont utilisés et stockés localement. Ils sont chargés en mémoire uniquement à l'exécution quand une requête est faite, et déchargés quand ils ne sont pas utilisés pour optimiser les ressources. Étant donné que les modèles peuvent être volumineux, le téléchargement initial peut prendre du temps — mais après cela, ils sont mis en cache localement pour un accès plus rapide. Vous pouvez interagir avec le modèle en utilisant des API compatibles OpenAI.
TipVous utilisez Testcontainers ou Docker Compose ? Testcontainers pour Java et Go, et Docker Compose prennent maintenant en charge Docker Model Runner.
Activer Docker Model Runner
Activer DMR dans Docker Desktop
- Naviguez vers l'onglet Fonctionnalités bêta dans les paramètres.
- Cochez le paramètre Activer Docker Model Runner.
- Si vous êtes sur Windows avec un GPU NVIDIA pris en charge, vous devriez également voir et pouvoir cocher le paramètre Activer l'inférence accélérée par GPU.
Vous pouvez maintenant utiliser la commande docker model
dans la CLI et visualiser et interagir avec vos modèles locaux dans l'onglet Modèles du tableau de bord Docker Desktop.
ImportantPour les versions Docker Desktop 4.41 et antérieures, ce paramètre se trouvait sous l'onglet Fonctionnalités expérimentales sur la page Fonctionnalités en développement.
Activer DMR dans Docker Engine
-
Assurez-vous d'avoir installé Docker Engine.
-
DMR est disponible sous forme de package. Pour l'installer, exécutez :
$ sudo apt-get update $ sudo apt-get install docker-model-plugin
$ sudo dnf update $ sudo dnf install docker-model-plugin
-
Testez l'installation :
$ docker model version $ docker model run ai/smollm2
Télécharger un modèle
Les modèles sont mis en cache localement.
- Sélectionnez Modèles et sélectionnez l'onglet Docker Hub.
- Trouvez le modèle de votre choix et sélectionnez Télécharger.
Utilisez la
commande docker model pull
.
Exécuter un modèle
Sélectionnez Modèles et sélectionnez l'onglet Local et cliquez sur le bouton lecture. L'écran de chat interactif s'ouvre.
Utilisez la
commande docker model run
.
Dépannage
Pour dépanner les problèmes potentiels, affichez les logs :
Sélectionnez Modèles et sélectionnez l'onglet Logs.
Utilisez la
commande docker model log
.
Publier un modèle
NoteCela fonctionne pour tout registre de conteneurs prenant en charge les artefacts OCI, pas seulement Docker Hub.
Vous pouvez étiqueter des modèles existants avec un nouveau nom et les publier sous un espace de noms et un dépôt différents :
# Étiqueter un modèle téléchargé sous un nouveau nom
$ docker model tag ai/smollm2 myorg/smollm2
# Le pousser vers Docker Hub
$ docker model push myorg/smollm2
Pour plus de détails, voir la documentation des commandes
docker model tag
et
docker model push
.
Vous pouvez également empaqueter directement un fichier de modèle au format GGUF comme artefact OCI et le publier sur Docker Hub.
# Télécharger un fichier de modèle au format GGUF, par exemple depuis HuggingFace
$ curl -L -o model.gguf https://huggingface.co/TheBloke/Mistral-7B-v0.1-GGUF/resolve/main/mistral-7b-v0.1.Q4_K_M.gguf
# L'empaqueter comme artefact OCI et le pousser vers Docker Hub
$ docker model package --gguf "$(pwd)/model.gguf" --push myorg/mistral-7b-v0.1:Q4_K_M
Pour plus de détails, voir la documentation de la commande
docker model package
.
Exemple : Intégrer Docker Model Runner dans votre cycle de vie de développement logiciel
Vous pouvez maintenant commencer à construire votre application IA générative alimentée par Docker Model Runner.
Si vous voulez essayer une application GenAI existante, suivez ces instructions.
-
Configurez l'application exemple. Clonez et exécutez le dépôt suivant :
$ git clone https://github.com/docker/hello-genai.git
-
Dans votre terminal, naviguez vers le répertoire
hello-genai
. -
Exécutez
run.sh
pour télécharger le modèle choisi et exécuter la/les application(s) : -
Ouvrez votre application dans le navigateur aux adresses spécifiées dans le README du dépôt.
Vous verrez l'interface de l'application GenAI où vous pouvez commencer à taper vos invites.
Vous pouvez maintenant interagir avec votre propre application GenAI, alimentée par un modèle local. Essayez quelques invites et remarquez à quel point les réponses sont rapides — tout s'exécute sur votre machine avec Docker.
FAQ
Quels modèles sont disponibles ?
Tous les modèles disponibles sont hébergés dans l'espace de noms public Docker Hub ai
.
Quelles commandes CLI sont disponibles ?
Voir la documentation de référence.
Quels points de terminaison API sont disponibles ?
Une fois la fonctionnalité activée, de nouveaux points de terminaison API sont disponibles sous les URL de base suivantes :
- Depuis les conteneurs :
http://model-runner.docker.internal/
- Depuis les processus hôte :
http://localhost:12434/
, en supposant que l'accès TCP hôte est activé sur le port par défaut (12434).
- Depuis les conteneurs :
http://172.17.0.1:12434/
(avec172.17.0.1
représentant l'adresse de passerelle hôte) - Depuis les processus hôte :
http://localhost:12434/
NoteL'interface
172.17.0.1
peut ne pas être disponible par défaut pour les conteneurs dans un projet Compose. Dans ce cas, ajoutez une directiveextra_hosts
à votre YAML de service Compose :extra_hosts: - "model-runner.docker.internal:host-gateway"
Ensuite, vous pouvez accéder aux API Docker Model Runner à http://model-runner.docker.internal:12434/
Points de terminaison de gestion de modèles Docker :
POST /models/create
GET /models
GET /models/{namespace}/{name}
DELETE /models/{namespace}/{name}
Points de terminaison OpenAI :
GET /engines/llama.cpp/v1/models
GET /engines/llama.cpp/v1/models/{namespace}/{name}
POST /engines/llama.cpp/v1/chat/completions
POST /engines/llama.cpp/v1/completions
POST /engines/llama.cpp/v1/embeddings
Pour appeler ces points de terminaison via un socket Unix (/var/run/docker.sock
), préfixez leur chemin avec
/exp/vDD4.40
.
NoteVous pouvez omettre
llama.cpp
du chemin. Par exemple :POST /engines/v1/chat/completions
.
Comment interagir via l'API OpenAI ?
Depuis un conteneur
Pour appeler le point de terminaison OpenAI chat/completions
depuis un autre conteneur en utilisant curl
:
#!/bin/sh
curl http://model-runner.docker.internal/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/smollm2",
"messages": [
{
"role": "system",
"content": "Vous êtes un assistant utile."
},
{
"role": "user",
"content": "Veuillez écrire 500 mots sur la chute de Rome."
}
]
}'
Depuis l'hôte via TCP
Pour appeler le point de terminaison OpenAI chat/completions
depuis l'hôte via TCP :
-
Activez le support TCP côté hôte depuis l'interface graphique Docker Desktop, ou via la CLI Docker Desktop. Par exemple :
docker desktop enable model-runner --tcp <port>
.Si vous êtes sur Windows, activez également l'inférence accélérée par GPU. Voir Activer Docker Model Runner.
-
Interagissez avec comme documenté dans la section précédente en utilisant
localhost
et le port correct.
#!/bin/sh
curl http://localhost:12434/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/smollm2",
"messages": [
{
"role": "system",
"content": "Vous êtes un assistant utile."
},
{
"role": "user",
"content": "Veuillez écrire 500 mots sur la chute de Rome."
}
]
}'
Depuis l'hôte via un socket Unix
Pour appeler le point de terminaison OpenAI chat/completions
via le socket Docker depuis l'hôte en utilisant curl
:
#!/bin/sh
curl --unix-socket $HOME/.docker/run/docker.sock \
localhost/exp/vDD4.40/engines/llama.cpp/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai/smollm2",
"messages": [
{
"role": "system",
"content": "Vous êtes un assistant utile."
},
{
"role": "user",
"content": "Veuillez écrire 500 mots sur la chute de Rome."
}
]
}'
Problèmes connus
docker model
n'est pas reconnu
Si vous exécutez une commande Docker Model Runner et voyez :
docker: 'model' is not a docker command
Cela signifie que Docker ne peut pas trouver le plugin car il n'est pas dans le répertoire de plugins CLI attendu.
Pour corriger cela, créez un lien symbolique pour que Docker puisse le détecter :
$ ln -s /Applications/Docker.app/Contents/Resources/cli-plugins/docker-model ~/.docker/cli-plugins/docker-model
Une fois lié, relancez la commande.
Aucune protection pour l'exécution de modèles surdimensionnés
Actuellement, Docker Model Runner n'inclut pas de protections pour vous empêcher de lancer des modèles qui dépassent les ressources disponibles de votre système. Tenter d' exécuter un modèle trop volumineux pour la machine hôte peut entraîner des ralentissements sévères ou peut rendre le système temporairement inutilisable. Ce problème est particulièrement courant lors de l'exécution de LLM sans suffisamment de mémoire GPU ou de RAM système.
Aucun support de condensé cohérent dans la CLI Model
La CLI Docker Model manque actuellement de support cohérent pour spécifier des modèles par condensé d'image. Comme solution de contournement temporaire, vous devriez référencer les modèles par nom au lieu de condensé.
Partager des commentaires
Merci d'essayer Docker Model Runner. Donnez des commentaires ou signalez tout bug que vous pourriez trouver via le lien Donner des commentaires à côté du paramètre Activer Docker Model Runner.