ollama run llama3 et vous servez déjà. Sous le capot, il enveloppe llama.cpp (et MLX sur Apple Silicon), et expose quelques variables d’environnement et paramètres de modèle qui contrôlent l’utilisation de votre matériel. Les valeurs par défaut fonctionnent pour un usage occasionnel mais laissent des performances significatives sur la table. Ce guide couvre chaque paramètre important et comment le régler pour votre charge de travail.
Dernière vérification : 2026-10-14 — Ollama v0.33.2.
Apple Silicon utilise MLX. À partir d’Ollama 0.19, le backend par défaut sur Apple Silicon est le framework MLX d’Apple plutôt que llama.cpp. MLX offre une inférence sensiblement plus rapide sur les puces M-série (voir Optimisation Apple Silicon et MLX). La plupart des variables d’environnement de ce guide s’appliquent aux deux backends ; lorsque le comportement diffère, c’est signalé explicitement.
Réglage de la fenêtre de contexte
La fenêtre de contexte (num_ctx) contrôle le nombre de tokens que le modèle peut traiter en une seule requête — votre invite plus la réponse générée combinées. C’est le plus gros facteur d’utilisation de la mémoire après les poids du modèle eux-mêmes.
Comment augmenter la fenêtre de contexte d’Ollama
Ollama utilise par défaut une fenêtre de contexte de 2048 tokens. La plupart des modèles modernes prennent en charge 8K, 32K ou même 128K tokens, mais Ollama n’utilise pas le maximum du modèle par défaut — il utilise 2048 pour garder l’utilisation de la mémoire prévisible. Définissez-la de 3 manières, de la plus spécifique à la plus globale : Par requête (API) :Windows
macOS
Coût mémoire de la fenêtre de contexte
Le cache KV croît linéairement avec la longueur du contexte. La formule :Flash attention
La flash attention est ce qui se rapproche le plus d’une amélioration de performance gratuite offerte par Ollama. Elle restructure la façon dont le modèle calcule l’attention entre les tokens — au lieu de matérialiser la matrice d’attention complète en mémoire, elle calcule l’attention par morceaux en tuiles qui tiennent dans la SRAM rapide. Le résultat :- 30-50% d’utilisation mémoire en moins pour le cache KV — le plus gros gain aux longueurs de contexte élevées.
- Inférence plus rapide — surtout sur GPU, où le calcul par tuiles correspond bien aux tensor cores.
- Même qualité de sortie — la flash attention est mathématiquement équivalente à l’attention standard, pas une approximation.
Comment activer la flash attention dans Ollama
Définissez la variable d’environnement :Windows
macOS
Sur Apple Silicon avec le backend MLX, la flash attention est activée par défaut et la variable
OLLAMA_FLASH_ATTENTION n’a aucun effet — MLX utilise toujours des noyaux d’attention optimisés.Stratégie de délestage GPU
Ollama délègue automatiquement les couches du modèle à votre GPU. Quand le modèle complet tient dans la VRAM, chaque couche s’exécute sur le GPU pour une vitesse maximale. Quand la VRAM est limitée, Ollama répartit les couches entre GPU et CPU — le GPU exécute ce qu’il peut, et le reste revient à la RAM système.Comment Ollama décide des couches GPU
La planification GPU d’Ollama fonctionne dans cet ordre :- Délestage complet — si les poids du modèle + le cache KV tiennent dans la VRAM, toutes les couches vont au GPU. C’est la configuration la plus rapide.
- Délestage partiel — si le modèle ne tient pas entièrement, Ollama place autant de couches que possible sur le GPU et exécute le reste sur CPU. Les performances se dégradent car chaque passe avant doit traverser le bus PCIe pour les couches résidant sur CPU.
- CPU uniquement — si aucun GPU n’est disponible ou si la VRAM est trop petite même pour quelques couches, le modèle entier s’exécute sur CPU.
Contrôler les couches GPU avec num_gpu
Le paramètre num_gpu définit le nombre de couches à délester sur le GPU. Définissez-le dans un Modelfile ou par requête :
Modelfile
API
Budgétisation de la VRAM
Chaque couche délestée consomme de la VRAM pour les poids et le cache KV. Une estimation approximative :
Laissez 1-2 Go de marge de VRAM pour le contexte CUDA et la surcharge.
Précision du cache KV
Le cache KV stocke les tenseurs de clés et valeurs pour chaque token dans chaque séquence active. Par défaut, Ollama utilisef16 (16-bit floating point). Vous pouvez passer à une précision quantifiée pour réduire l’utilisation de la mémoire avec un léger coût en qualité.
Définissez le type de cache avec la variable d’environnement OLLAMA_KV_CACHE_TYPE :
Configuration des threads
Le paramètrenum_thread contrôle le nombre de threads CPU qu’Ollama utilise pour l’inférence. La bonne valeur dépend de la quantité de travail que le CPU effectue réellement.
Définissez-le dans un Modelfile ou par requête :
Modelfile
API
OLLAMA_NUM_THREADS :
Sur Apple Silicon, le réglage des threads importe moins car le GPU et le CPU partagent une mémoire unifiée et le backend MLX gère la planification. La valeur par défaut fonctionne généralement bien.
Réglage de la taille de lot
Le paramètrenum_batch contrôle le nombre de tokens qu’Ollama traite à la fois pendant la phase de prefill (ingestion de l’invite). La valeur par défaut est 512.
Modelfile
Requêtes parallèles
OLLAMA_NUM_PARALLEL contrôle le nombre de requêtes qu’un seul modèle traite simultanément. La valeur par défaut est 1 — Ollama gère une requête à la fois par modèle chargé.
La RAM et la VRAM évoluent avec
OLLAMA_NUM_PARALLEL. Chaque requête parallèle a besoin de son propre cache KV. Si vous servez 4 requêtes parallèles avec num_ctx 8192, vous avez besoin de 4× la mémoire de cache KV par rapport à une seule requête.Quand augmenter les requêtes parallèles
AugmentezOLLAMA_NUM_PARALLEL quand :
- Vous servez plusieurs utilisateurs ou agents depuis le même modèle.
- Vous exécutez des charges de travail par lots où le débit total compte plus que la latence de chaque requête.
- Vous avez de la marge de VRAM et le GPU est sous-utilisé avec des requêtes simples.
- Vous servez un seul utilisateur ou agent.
- Vous privilégiez une faible latence au débit.
- La VRAM est limitée.
Gestion de la mémoire des modèles
Garder les modèles chargés avec OLLAMA_KEEP_ALIVE
Par défaut, Ollama décharge un modèle de la mémoire après 5 minutes d’inactivité. La requête suivante doit recharger le modèle depuis le disque, ce qui prend de quelques secondes à quelques minutes selon la taille du modèle et la vitesse du disque.
Définissez OLLAMA_KEEP_ALIVE pour contrôler la durée de chargement des modèles :
Limiter les modèles chargés avec OLLAMA_MAX_LOADED_MODELS
Ollama peut garder plusieurs modèles chargés simultanément. La valeur par défaut est 3 × (nombre de GPUs) ou 3 pour CPU uniquement. Si vous servez de nombreux modèles et voulez limiter l’utilisation de la mémoire, réduisez cette valeur :
Optimisation Apple Silicon et MLX
À partir d’Ollama 0.19, le backend par défaut sur Apple Silicon est le framework MLX d’Apple. MLX est optimisé pour l’architecture de mémoire unifiée d’Apple et offre une inférence sensiblement plus rapide que llama.cpp sur les puces M-série.Gains de performance
Benchmarks de la mise à jour d’optimisation MLX de juin 2026 d’Ollama :
MLX prend également en charge la quantification NVFP4 sur Apple Silicon, qui offre une qualité proche de BF16 avec une empreinte mémoire de 4 bits — la moitié de la perte de qualité de la quantification Q4.
Conseils d’optimisation Apple Silicon
- Utilisez des modèles optimisés MLX. Quand vous téléchargez un modèle sur Apple Silicon, Ollama utilise automatiquement le backend MLX. Aucune configuration nécessaire.
- La flash attention est toujours active. MLX utilise des noyaux d’attention optimisés par défaut. La variable
OLLAMA_FLASH_ATTENTIONn’a aucun effet. - La mémoire unifiée signifie un délestage GPU complet. Le GPU d’Apple Silicon peut accéder à l’ensemble du pool de RAM, donc
-ngl 999(toutes les couches sur GPU) fonctionne tant que le modèle et le cache KV tiennent dans la mémoire unifiée. - Utilisez
OLLAMA_KV_CACHE_TYPE=q8_0pour étendre votre budget mémoire. Réduire de moitié le cache KV vous permet d’exécuter des modèles plus grands ou des contextes plus longs. - Définissez
OLLAMA_KEEP_ALIVE=-1pour une inférence toujours active. Les modèles restent en mémoire unifiée sans pénalité de rechargement.
Si vous avez besoin de portabilité multi-plateforme ou voulez exécuter la même configuration sur GPU NVIDIA et Mac, vous pouvez forcer Ollama à utiliser le backend llama.cpp sur Apple Silicon. Contactez le support Ollama ou consultez leur documentation pour la variable d’environnement permettant de remplacer la sélection du backend.
Configurations exemples
Mac Studio M2 Ultra — 128 GB unified memory
Modelfile
NVIDIA RTX 4090 — 24 GB VRAM
Modelfile
Serveur multi-GPU — 4× RTX 4090 (96 GB total VRAM)
Modelfile
Serveur CPU uniquement — 64 GB RAM, pas de GPU
Modelfile
Traitement par lots à haut débit — RTX 4090
Modelfile
Service interactif à faible latence — RTX 4090
Modelfile
Erreurs courantes et comment les éviter
Erreur 1 : Définir num_ctx trop haut
Problème : Vous avez défininum_ctx 128000 « au cas où », mais vos invites font moins de 2K tokens. Vous venez de gaspiller 64 Go de mémoire de cache KV.
Solution : Définissez num_ctx pour correspondre à votre charge de travail réelle. Si vos invites font moins de 4K tokens, utilisez num_ctx 4096 ou num_ctx 8192. Vous pouvez toujours l’augmenter plus tard pour des requêtes spécifiques via l’API.
Erreur 2 : Oublier la flash attention
Problème : Vous utilisez 30-50% de VRAM en plus par rapport au nécessaire car la flash attention n’est pas activée. Solution : Définissez toujoursOLLAMA_FLASH_ATTENTION=1. Il n’y a aucun inconvénient sur le matériel pris en charge.
Erreur 3 : Ne pas contrôler le déchargement du modèle
Problème : Vous relancez votre requête après une pause de 10 minutes, et la première requête prend 30 secondes car Ollama a rechargé le modèle depuis le disque. Solution : DéfinissezOLLAMA_KEEP_ALIVE=-1 pour une inférence toujours active. Le modèle reste en mémoire et chaque requête obtient une réponse instantanée.
Erreur 4 : Utiliser trop de threads sur GPU
Problème : Vous avez défininum_thread 32 sur un CPU à 32 threads, mais toutes les couches sont sur le GPU. Les threads supplémentaires se font concurrence pour le cache et ralentissent l’orchestration.
Solution : Quand toutes les couches sont sur le GPU, utilisez num_thread 2 à num_thread 4. Le CPU gère uniquement l’orchestration et la tokenisation, pas le calcul d’inférence.
Erreur 5 : Ignorer la précision du cache KV
Problème : Vous manquez de VRAM et Ollama délègue des couches au CPU, mais vous n’avez pas considéré que le cache KV utilise 2× plus de mémoire que nécessaire. Solution : DéfinissezOLLAMA_KV_CACHE_TYPE=q8_0 pour réduire de moitié la mémoire du cache KV. C’est le meilleur équilibre entre qualité et économies de mémoire.
Erreur 6 : Définir OLLAMA_NUM_PARALLEL trop haut
Problème : Vous avez définiOLLAMA_NUM_PARALLEL=16 sur un GPU de 24 Go, et maintenant chaque requête n’a que 1.5 Go de cache KV. Les requêtes échouent ou la qualité se dégrade.
Solution : Calculez votre budget de cache KV : (VRAM - model_weights) / num_parallel. S’il reste moins de 1 Go par requête, réduisez num_parallel ou baissez num_ctx.
Dépannage
Ollama est lent après le démarrage
Cause : Le modèle a été déchargé et a dû être rechargé depuis le disque. Solution : DéfinissezOLLAMA_KEEP_ALIVE=-1 pour garder le modèle chargé indéfiniment.
Erreurs de mémoire insuffisante
Cause : Le modèle + le cache KV dépasse la VRAM ou la RAM disponible. Solution : Réduiseznum_ctx, activez OLLAMA_FLASH_ATTENTION=1, définissez OLLAMA_KV_CACHE_TYPE=q8_0, ou utilisez une quantification plus petite.
Le GPU n’est pas utilisé
Cause : Ollama n’a pas détecté le GPU, ou la VRAM est trop petite même pour quelques couches. Solution : Vérifiezollama ps pour voir si les couches sont sur le GPU. Pour les GPUs NVIDIA, assurez-vous que les pilotes NVIDIA et le toolkit CUDA sont installés. Pour les GPUs AMD, assurez-vous que ROCm est installé.
Inférence CPU lente
Cause : Trop de threads, ou des couches réparties entre GPU et CPU. Solution : Définisseznum_thread au nombre de cœurs physiques. Si possible, délestez plus de couches sur le GPU avec num_gpu. Utilisez une quantification plus petite (Q4_K_M ou Q5_K_M) pour faire tenir plus de couches sur le GPU.
Prochaines étapes
Ollama remote access
Exposez votre modèle Ollama à vos coéquipiers et agents via Tokios — sans ouvrir de ports ni définir OLLAMA_HOST=0.0.0.0.
Hardware reference
Comparez les plateformes matérielles pour l’inférence LLM locale — spécifications, capacité de modèles et recommandations.
Model fit finder
Trouvez quels modèles fonctionnent sur votre matériel, ou quel matériel peut exécuter votre modèle cible.
Test your deployment
Mesurez la latence et le débit après réglage pour confirmer l’amélioration.
Foire aux questions
What is the best Ollama configuration for fast inference?
What is the best Ollama configuration for fast inference?
Activez la flash attention (
OLLAMA_FLASH_ATTENTION=1), définissez la fenêtre de contexte selon les besoins réels de votre tâche (pas le maximum du modèle), utilisez un cache KV quantifié (OLLAMA_KV_CACHE_TYPE=q8_0 ou q4_0) pour les contextes longs, et assurez-vous que votre modèle est entièrement délesté sur GPU. Voir les sections ci-dessus pour les commandes exactes.How do I reduce Ollama memory usage?
How do I reduce Ollama memory usage?
Les 3 plus gros leviers : (1) baissez
num_ctx — la mémoire évolue linéairement avec la longueur du contexte, (2) quantifiez le cache KV avec OLLAMA_KV_CACHE_TYPE=q4_0 pour jusqu’à 75% d’économie de cache KV, (3) utilisez une quantification plus petite des poids du modèle (par exemple, Q4_0 au lieu de Q8_0). La flash attention économise aussi 30-50% sur la mémoire d’attention.Does Ollama use MLX on Mac?
Does Ollama use MLX on Mac?
Oui — à partir d’Ollama 0.19, le backend par défaut sur Apple Silicon est le framework MLX d’Apple, pas llama.cpp. MLX offre une inférence sensiblement plus rapide sur les puces M-série (55-80 tok/s sur M2 Ultra vs 25-40 tok/s avec llama.cpp). La variable
OLLAMA_FLASH_ATTENTION n’a aucun effet sur MLX car MLX utilise toujours des noyaux d’attention optimisés.How many parallel requests can Ollama handle?
How many parallel requests can Ollama handle?
Définissez
OLLAMA_NUM_PARALLEL (par défaut 1). Chaque emplacement parallèle ajoute environ 20-30% de surcharge mémoire pour le cache KV. Pour un modèle 7B en Q4 avec un contexte de 8K, 4 emplacements parallèles tiennent confortablement dans 8 Go de VRAM. Pour des modèles plus grands ou des contextes plus longs, commencez avec 2 et mesurez.Why is Ollama slow to load my model?
Why is Ollama slow to load my model?
Le temps de chargement du modèle est dominé par la lecture des poids depuis le disque et leur transfert vers le GPU. Utilisez un SSD NVMe (pas un HDD), définissez
OLLAMA_KEEP_ALIVE pour garder le modèle chaud entre les requêtes, et définissez OLLAMA_MAX_LOADED_MODELS pour éviter l’éviction et le rechargement. Sur Apple Silicon, les modèles NVFP4 se chargent plus vite car les poids sont plus petits.What GPU offload settings should I use?
What GPU offload settings should I use?
Par défaut, Ollama sélectionne automatiquement le nombre de couches à délester sur le GPU. Pour une vitesse maximale, définissez
num_gpu au nombre total de couches du modèle (délestage complet). Si vous manquez de VRAM, réduisez num_ctx avant de réduire num_gpu — garder le modèle entièrement sur GPU est presque toujours plus rapide qu’un délestage partiel.Sources
- Ollama FAQ — documentation officielle sur les variables d’environnement et la configuration
- Ollama Modelfile reference — syntaxe des paramètres et valeurs valides
- Ollama MLX performance update — benchmarks et optimisations de juin 2026 pour Apple Silicon
- Ollama GPU scheduling deep dive — gestion de la VRAM et comportement multi-GPU
- Ollama performance tuning: batching, KV cache, and OOM — benchmarks num_batch et calculs de mémoire
- Ollama environment variables: complete reference — vérifié par rapport à la source v0.32.5
Après avoir modifié la configuration d’Ollama, ré-enregistrez votre déploiement Tokios pour que le connecteur récupère le nouveau point de terminaison upstream. Voir Register Model.