LM Studio, Ollama ou llamafile : trois façons de lancer un modèle en local

Trois commandes suffisent pour charger le même GGUF sur une Debian 13 (trixie) : ollama run gemma4, lms chat et ./modele.llamafile. Ollama 0.34.2, publiée le 15 septembre 2026, écoute sur le port 11434, LM Studio 0.4.23, publiée en août 2026, sur le port 1234, et llamafile 0.10.6, publiée le 15 septembre 2026, sur le port 8080. Les trois embarquent llama.cpp, aucun ne range ses modèles au même endroit, et le dernier ne demande qu’un fichier de 1,77 Go.
Sommaire
- Trois ports par défaut, deux licences libres, une application propriétaire
- Ollama 0.34.2 s’installe par script et range ses modèles hors du dossier personnel
- LM Studio 0.4.23 se pilote avec lms, le démon llmster remplace la fenêtre
- llamafile 0.10.6 : 1,77 Go, un chmod, aucun paquet installé
- Le piège GPU de llamafile : « version `GLIBCXX_3.4.32′ not found »
- Ollama 0.34.2 répond sur 4096 jetons, quelle que soit la fenêtre du modèle
- Entre llamafile 0.9 et 0.10, le moteur change et des fonctions disparaissent
- Questions fréquentes
Sur une Debian 13, le script d’Ollama crée un service systemd et place les poids dans /usr/share/ollama/.ollama/models, LM Studio s’installe comme application ou comme démon nommé llmster, et un llamafile préassemblé ne demande qu’un chmod +x. Les écarts portent sur des valeurs mesurables.
Trois ports par défaut, deux licences libres, une application propriétaire
Ollama écoute sur 11434, LM Studio sur 1234, llamafile sur 8080, et les trois se contentent de la boucle locale tant qu’aucune option ne les expose. Les licences divergent tout autant : Ollama est publié sous MIT, la CLI lms de LM Studio est sous MIT mais l’application reste propriétaire, gratuite y compris au travail, et llamafile est sous Apache 2.0 avec des modifications de llama.cpp sous MIT.
| Critère | Ollama 0.34.2 | LM Studio 0.4.23 | llamafile 0.10.6 |
|---|---|---|---|
| Date de publication | 15 septembre 2026 | août 2026 | 15 septembre 2026, moteur llama.cpp b10441 |
| Licence | MIT | application propriétaire, gratuite au travail ; CLI lms sous MIT | Apache 2.0 |
| Installation sur Debian 13 | script curl, service systemd ollama | script curl pour llmster, ou AppImage (Ubuntu 20.04 minimum) | aucune : fichier exécutable à télécharger |
| Interface | CLI, API, application de bureau | fenêtre graphique, CLI lms, démon sans écran | chat dans le terminal, serveur HTTP, pas d’application |
| Port HTTP par défaut | 11434 | 1234 | 8080 |
| Écoute réseau par défaut | 127.0.0.1, réglable par OLLAMA_HOST | 127.0.0.1, réglable par lms server start --bind |
localhost, réglable par –host |
| API exposée | OpenAI /v1 et API native | OpenAI /v1 et Anthropic /v1/messages | OpenAI /v1 et Anthropic Messages, via llama.cpp |
| Gestion des modèles | bibliothèque ollama.com, ollama pull | Hugging Face, lms get, dossier réglé dans l’application | fichiers GGUF ou llamafile préassemblé, aucun gestionnaire |
| Contexte par défaut | 4096 jetons, réglable par OLLAMA_CONTEXT_LENGTH | fixé au chargement par lms load --context-length |
options llama.cpp, dont –ctx-size |
| Libération de la mémoire | 5 minutes d’inactivité, ollama stop pour forcer | 60 minutes d’inactivité pour un modèle chargé par l’API, –ttl pour changer | à l’arrêt du processus, Ctrl-C |
| Accélération GPU | CUDA, ROCm, Metal, repli sur bibliothèques cpu_avx2 et cpu_avx | moteurs llama.cpp et MLX, AVX2 exigé sous Windows x64 | CUDA, ROCm, Vulkan, Metal, repli CPU silencieux |
| Limite connue | contexte coupé à 4096 jetons sans message | AppImage Linux testée surtout jusqu’à Ubuntu 22 | exécutables de plus de 4 Go refusés sous Windows |
Le choix du modèle lui-même est traité dans choisir une IA locale, dans la rubrique IA.
Ollama 0.34.2 s’installe par script et range ses modèles hors du dossier personnel
- Installer le binaire et le service :
curl -fsSL https://ollama.com/install.sh | sh
Le script installe le binaire et enregistre l’unité systemd
ollama.systemctl status ollamadoit répondre active (running). - Vérifier la version, puis lancer un modèle :
ollama -v ollama run gemma4
La première exécution télécharge les poids, la seconde ouvre l’invite de conversation.
- Contrôler ce qui occupe la mémoire :
ollama ps
La sortie documentée prend cette forme, la colonne PROCESSOR donnant la répartition CPU/GPU :
NAME ID SIZE PROCESSOR UNTIL llama3:70b bcfb190ca3a7 42 GB 100% GPU 4 minutes from now
- Lire les journaux du service :
journalctl -e -u ollama
La ligne
Dynamic LLM librariesliste les moteurs détectés, par exemple cpu, cpu_avx, cpu_avx2, cuda_v11, rocm_v5. ForcerOLLAMA_LLM_LIBRARY="cpu_avx2"contourne une détection ratée.
Le service tourne sous l’utilisateur système ollama, et les modèles atterrissent donc dans /usr/share/ollama/.ollama/models. Les déplacer suppose sudo chown -R ollama:ollama /chemin et OLLAMA_MODELS dans l’unité systemd, mécanique décrite avec les services et journaux systemd. La procédure complète est dans installer Ollama.
LM Studio 0.4.23 se pilote avec lms, le démon llmster remplace la fenêtre
La version 0.4.0 de LM Studio a introduit llmster, un démon sans interface graphique qui reprend le moteur de l’application. Sur un serveur Debian sans écran, lms devient la seule interface.
- Installer le démon :
curl -fsSL https://lmstudio.ai/install.sh | bash
- Démarrer le service :
lms daemon up
Lancé seul,
lmsaffiche ses commandes : chat, get, load, unload, ls, ps et import pour les modèles, server et log pour le service. - Télécharger un modèle :
lms get openai/gpt-oss-20b
lms lsliste ensuite les modèles présents sur le disque. - Charger le modèle et ouvrir le port 1234 :
lms load openai/gpt-oss-20b lms server start
lms psconfirme le chargement. Le serveur répond sur http://localhost:1234 en API compatible OpenAI et sur /v1/messages en API compatible Anthropic, ce qui permet de pointer Claude Code vers LM Studio avecANTHROPIC_BASE_URL=http://localhost:1234.
Un modèle appelé par l’API sans être chargé est monté à la demande, puis déchargé après 60 minutes d’inactivité ; lms load modele --ttl 3600 fixe une durée explicite et lms load modele --gpu 1.0 tente de tout déporter sur la carte graphique. Réserve documentée : l’application de bureau doit avoir été lancée une fois pour que lms réponde.
llamafile 0.10.6 : 1,77 Go, un chmod, aucun paquet installé
- Télécharger un llamafile préassemblé :
curl -LO https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile
Le fichier fait 1,77 Go et contient le moteur et les poids.
- Le rendre exécutable, puis le lancer :
chmod +x Qwen3.5-0.8B-Q8_0.llamafile ./Qwen3.5-0.8B-Q8_0.llamafile
Le mode par défaut démarre en même temps une conversation dans le terminal et un serveur sur http://localhost:8080.
Ctrl-Carrête les deux. - Ne garder que le serveur, ou passer des poids externes :
./llamafile -m gpt-oss-20b-Q5_K_S.gguf --server --host 0.0.0.0 --port 8081
--serversupprime le chat et lance le serveur llama.cpp,--host 0.0.0.0l’ouvre au réseau, ce qui n’est pas le cas par défaut. Sur un modèle conversationnel,--jinjaactive le gabarit de conversation et--ctx-size 64000fixe la fenêtre. - Vérifier l’API :
curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "LLaMA_CPP", "messages": [{"role": "user", "content": "Bonjour"}]}'La réponse contient un objet JSON avec les jetons produits et un bloc timings.
Le piège GPU de llamafile : « version `GLIBCXX_3.4.32′ not found »
Une bibliothèque CUDA précompilée plus récente que la libstdc++ de la distribution fait échouer le chargement avant la première question. Le message est littéral, cité comme bogue corrigé par la note de version 0.10.1 :
cuda: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found
Un llamafile 0.10.0 affiche cette ligne sur une Debian dont la libstdc++ est plus ancienne que celle des greffons ; le correctif tient dans la mise à jour de l’exécutable. À défaut, llamafile-thin ne contient aucune bibliothèque GPU précompilée et laisse construire ggml-cuda avec la boîte à outils locale.
Second piège, plus discret : llamafile retombe en silence sur le processeur quand aucun backend ne se charge, et rien à l’écran ne le signale. Passer --gpu nvidia, --gpu amd ou --gpu vulkan transforme ce repli muet en erreur explicite au démarrage. Sur une machine AMD, le message hipcc: Permission denied signifie que ROCm est détecté mais que la boîte à outils n’est pas exécutable par l’utilisateur. Dernière limite du paquet publié : la bibliothèque CUDA est allégée et laisse les couches quantifiées en IQ sur le processeur, sans fausser le résultat.
Ollama 0.34.2 répond sur 4096 jetons, quelle que soit la fenêtre du modèle
La FAQ d’Ollama fixe la valeur par défaut du contexte à 4096 jetons. Un modèle entraîné sur 131 072 jetons se fait donc couper sans message dès que la conversation dépasse cette taille, et la mémoire réservée grandit avec le produit OLLAMA_NUM_PARALLEL multiplié par OLLAMA_CONTEXT_LENGTH.
OLLAMA_CONTEXT_LENGTH=8192 ollama serve
Dans une session ollama run, la commande interne /set parameter num_ctx 8192 fait la même chose pour la session en cours. Par l’API OpenAI, ce réglage n’existe pas : il faut un Modelfile contenant PARAMETER num_ctx 8192, puis ollama create. Un modèle chargé reste cinq minutes en mémoire après la dernière requête, durée réglable par OLLAMA_KEEP_ALIVE ; ollama stop gemma4 libère immédiatement la place.
Entre llamafile 0.9 et 0.10, le moteur change et des fonctions disparaissent
llamafile 0.10.0, publiée le 19 mars 2026, remplace le système de compilation pour suivre llama.cpp de plus près. Les fichiers préassemblés indiquent la version du serveur qu’ils embarquent, 0.9 ou 0.10, et deux fichiers du même modèle peuvent donc se comporter différemment. Au moment de la 0.10.0, la liste des fonctions absentes publiée par le projet comprenait la génération d’images Stable Diffusion, l’outil de mesure localscore, le bac à sable pledge/SECCOMP et la prise en charge GPU sous Windows, revenue depuis.
La limite qui reste est celle de Windows : un exécutable de plus de 4 Go ne s’y lance pas, ce qui exclut les llamafiles embarquant un gros modèle. La parade documentée consiste à télécharger le binaire llamafile seul et à lui passer un GGUF externe avec -m, ou à travailler sous WSL. Côté GPU, la série 0.10 reste annoncée comme non testée sur toutes les plateformes, avec un support AMD et Windows qualifié de meilleur effort.
Questions fréquentes
Peut-on faire tourner les trois en même temps ?
Oui, les ports ne se chevauchent pas : 11434 pour Ollama, 1234 pour LM Studio, 8080 pour llamafile. La contrainte est la mémoire : chaque moteur charge sa propre copie des poids.
Les GGUF sont-ils interchangeables entre les trois ?
Le format est le même, les dossiers non. La documentation de llamafile donne les chemins : les modèles de LM Studio se trouvent sous ~/.cache/lm-studio/models/lmstudio-community/, et ceux d’Ollama sous ~/.ollama/models/blobs/, où chaque fichier porte le nom de son empreinte sha256. Un llamafile peut charger ces fichiers avec -m, avec une réserve : les GGUF produits par Ollama ne fonctionnent pas toujours avec llama.cpp.
Lequel choisir pour un serveur sans écran ?
Les trois tournent sans interface graphique : Ollama s’installe en service systemd, LM Studio fournit le démon llmster installé par script, llamafile s’exécute avec --server depuis n’importe quel dossier. Le critère décisif est ailleurs : Ollama gère une bibliothèque de modèles et ses mises à jour, llamafile ne laisse aucun fichier derrière lui.
Comment savoir si la carte graphique travaille ?
Ollama l’affiche dans la colonne PROCESSOR de ollama ps, avec des valeurs comme 100% GPU ou 48%/52% CPU/GPU. LM Studio répond avec lms ps. Pour llamafile, il faut forcer le backend avec --gpu nvidia ou lire les journaux de démarrage, puisque le repli sur le processeur ne produit aucun message.
Un GPU est-il obligatoire ?
Non. Les trois projets prévoient le calcul sur processeur : Ollama embarque les bibliothèques cpu, cpu_avx et cpu_avx2, llamafile refuse de démarrer sur un AMD64 sans AVX mais fonctionne sans carte graphique, et LM Studio exige AVX2 sur Windows x64. Pour un modèle 8B en Q4_K_M, comptez environ 5 Go de mémoire disponible.
Pour savoir lequel des trois écoute déjà sur la machine :
ss -tlnp | grep -E ':(11434|1234|8080)'