HomeRessources, Guides & Actualités – Actualités de l’intelligence artificielleMemoMarre des lenteurs sur Ollama ? Voici comment j’ai quadruplé mes tokens/seconde (mes retours d’XP et optimisations)

Marre des lenteurs sur Ollama ? Voici comment j’ai quadruplé mes tokens/seconde (mes retours d’XP et optimisations)

Salut à tous,

Franchement, au début, je ne comprenais pas. J’ai installé Ollama pour faire tourner des LLM en local, pensant que ma config allait tout arracher. Et là, douche froide : je me suis retrouvé face à un modèle qui générait du texte mot… par… mot… comme un escargot sous calmants.

Après des heures de bidouille, de lecture de logs et de benchmarks, j’ai enfin compris comment optimiser tout ça. Si votre Ollama rame, ne cherchez pas midi à quatorze heures : voici le guide complet de ce qui fonctionne vraiment, basé sur mes propres tests.


1. La règle d’or absolue : évitez le “Spillover” (le débordement en RAM)

C’est le point le plus critique. Un modèle d’IA est composé de dizaines de “couches” (layers). Quand vous le lancez, Ollama essaie de charger toutes ces couches dans la mémoire de votre carte graphique (la VRAM).

  • La VRAM (GPU) tourne à des vitesses folles (jusqu’à 1 000 Go/s).
  • La RAM système (CPU) tourne quant à elle entre 30 et 100 Go/s.

Si votre modèle pèse 9 Go mais que vous n’avez que 8 Go de VRAM, Ollama va mettre 8 Go sur le GPU et “déverser” le Go restant sur votre RAM système. C’est ce qu’on appelle le spillover. Le problème ? Votre GPU super rapide est obligé de se caler sur le rythme de tortue de votre RAM pour récupérer les données manquantes. Même un débordement de seulement 1 % peut diviser votre vitesse de génération par deux.

Comment vérifier si vous êtes victime de ce problème ?
Pendant que votre modèle génère une réponse, ouvrez un autre terminal et tapez :

ollama ps

Regardez la colonne Processor. Si vous voyez autre chose que “100% GPU” (par exemple, un partage 70% GPU / 30% CPU), c’est que le modèle est trop lourd pour votre carte graphique.

La solution ?

  • Passez sur de la quantification Q4 : Ne téléchargez pas les versions complètes ou Q8. Visez les versions quantifiées comme q4_K_M ou q5_K_M (par exemple qwen2.5:7b-instruct-q4_K_M). Pensez-y comme à la conversion d’un film 4K en Blu-ray 1080p : le fichier est deux fois plus léger, mais à l’œil nu, la différence de qualité est quasi invisible. Un modèle 8B non compressé demande environ 16 Go de VRAM ; en Q4, il n’en demande plus que 5,5 Go.
  • Réduisez la taille du modèle : Si un modèle 8B déborde sur votre CPU, n’insistez pas. Descendez sur un excellent modèle de 3B ou 1.5B (Llama 3.2 3B ou Qwen 2.5 1.5B). Ils sont ultra-rapides et très performants pour leur taille.

2. Configurez les variables d’environnement qui boostent le moteur

Vous pouvez modifier le comportement d’Ollama en arrière-plan en ajoutant des variables d’environnement à votre système. Voici celles qui ont tout changé pour moi :

  • OLLAMA_FLASH_ATTENTION=1 : Active les calculs matriciels optimisés sur le GPU. Sur les longues conversations, cela réduit l’empreinte VRAM et accélère le traitement de 20 % à 40 %.
  • OLLAMA_KEEP_ALIVE="-1" : Par défaut, Ollama décharge le modèle de la mémoire après 5 minutes d’inactivité pour libérer vos ressources. Résultat ? Quand vous relancez une question, vous vous tapez un “cold start” (temps de chargement) de 15 secondes le temps que le modèle soit rechargé depuis le disque. Avec -1, le modèle reste figé dans la VRAM indéfiniment. Vos réponses démarrent instantanément.
  • OLLAMA_NUM_PARALLEL=1 : Si vous êtes le seul utilisateur sur votre machine, forcez cette valeur à 1. Les valeurs supérieures partagent votre VRAM pour traiter plusieurs requêtes en même temps, ce qui ralentit considérablement la vitesse d’une requête unique.
  • Pour les utilisateurs de Mac M-Series (Apple Silicon) : Mettez à jour Ollama et configurez OLLAMA_MLX=1 avant de lancer le serveur pour forcer l’utilisation du framework d’Apple. Dans certains cas, cela double littéralement la vitesse de traitement.

(Pour appliquer ces variables : sous Windows, cherchez “Variables d’environnement” dans le menu Démarrer. Sous Linux/macOS, ajoutez des lignes export NOM_VARIABLE=valeur dans votre ~/.bashrc ou ~/.zshrc).


3. Réduisez la taille du contexte (Context Window)

Le contexte (num_ctx), c’est la mémoire à court terme du modèle (l’historique de la discussion). Plus vous lui donnez de contexte, plus la quantité de VRAM requise pour stocker cette mémoire augmente de manière quadratique.

Si vous laissez la valeur par défaut (souvent 8192 tokens), Ollama réserve une place immense en VRAM pour l’historique, ce qui pousse le modèle à déborder sur la RAM système.

La solution consiste à limiter ce contexte à vos besoins réels (par exemple, 4096 tokens). Pour cela, créez un fichier texte nommé Modelfile et écrivez :

FROM llama3.2

# Limiter le contexte à 4096 pour libérer de la VRAM
PARAMETER num_ctx 4096

# Empêcher le modèle de trop s'égarer
PARAMETER temperature 0.7

Ensuite, compilez ce modèle optimisé dans votre terminal :

ollama create modele-rapide -f ./Modelfile
ollama run modele-rapide

4. Ajustements système, Docker et OS

  • Évitez absolument Docker sur macOS : Docker sur Mac ne gère pas correctement le passthrough GPU natif pour ce genre d’application. Ollama va tourner entièrement sur votre CPU. Utilisez plutôt l’application macOS native.
  • Docker sur Linux : Si vous utilisez Docker sous Linux, n’oubliez pas de passer le paramètre --gpus=all dans votre commande de lancement, sinon votre carte graphique sera superbement ignorée.
  • Le choix de l’OS : Si vous avez un dual-boot Windows / Linux, sachez que d’après mes tests, l’inférence sur Linux est environ 25 % plus rapide que sur Windows 11 sur la même machine, grâce à une bien meilleure gestion de l’allocation mémoire.
  • Si vous avez un GPU AMD (Linux) : Gardez vos pilotes ROCm à jour. Si Ollama bascule sur le CPU, forcez l’architecture en définissant la variable HSA_OVERRIDE_GFX_VERSION=10.3.0 (ou la version correspondant précisément à votre carte).
  • Si vous êtes sur Mac : Comme le processeur et le GPU partagent la même mémoire unifiée, évitez de laisser tourner des applications lourdes en arrière-plan (premiere, photoshop, ou un navigateur avec 80 onglets ouverts) pendant que vous faites tourner de l’inférence. Cela sature la bande passante de la mémoire système.

5. Comment mesurer vos gains de performance ?

Pour savoir si vos ajustements fonctionnent, vous devez mesurer la vitesse.

Méthode 1 : Le test d’évaluation intégré

Lancez simplement votre modèle avec l’option --verbose :

ollama run llama3.2 --verbose

Après avoir répondu à votre question, Ollama affichera des statistiques précises tout en bas :

  • prompt eval rate : La vitesse à laquelle votre GPU a analysé votre texte de départ.
  • eval rate : Votre vitesse réelle de génération de texte en tokens par seconde (tokens/s).

Grille d’évaluation des performances :

  • > 50 tokens/s : Vitesse extrême. Le modèle tient entièrement dans une VRAM haut de gamme ou dans la mémoire unifiée d’un Mac puissant.
  • 30 à 50 tokens/s : Vitesse très fluide. C’est ce qu’on obtient généralement sur une carte grand public de type RTX 3060/4060 avec un modèle 8B bien optimisé.
  • 15 à 30 tokens/s : Utilisable, mais on sent un léger décalage (généralement dû à un début de saturation de la VRAM ou à une carte un peu ancienne).
  • < 8 tokens/s : Vitesse d’escargot. Votre modèle a débordé sur la RAM et utilise votre CPU.

Méthode 2 : Les outils de benchmark

  • En ligne de commande (Python) : Vous pouvez installer un outil dédié pour simuler des boucles de questions et mesurer la latence :
  pip install llm-benchmark
  llm-benchmark run
  • En interface visuelle : Utilisez Snappy LLM Speed Test. C’est une application web locale qui va pousser Ollama dans ses retranchements en testant quatre niveaux de difficulté (“Easy” à “Extreme”) pour voir à quel point la vitesse s’effondre lorsque la taille de vos invites augmente.

6. Résoudre les problèmes de “Cold Start” et de latence au premier mot

Si Ollama met 20 secondes à afficher le premier mot mais génère la suite très rapidement, vous faites face à un problème de chargement initial.

  1. La lenteur du disque dur : Ollama doit copier un fichier de plusieurs gigaoctets depuis votre stockage vers votre RAM/VRAM. Si vos modèles sont stockés sur un vieux disque dur mécanique ou un SSD externe un peu lent, déplacez le répertoire d’Ollama sur votre SSD NVMe le plus rapide.
  2. Le préchargement actif : Vous pouvez forcer Ollama à charger un modèle en tâche de fond avant même de lui envoyer votre première vraie question. Il suffit d’envoyer une requête vide via le terminal :
   ollama run llama3.2 ""

Ou via une requête API (si vous développez un outil tiers) :

   curl http://localhost:11434/api/generate -d '{"model": "llama3.2"}'

Le serveur va immédiatement renvoyer une réponse vide mais aura tranquillement transféré les couches du modèle dans votre VRAM. Couplé avec la variable OLLAMA_KEEP_ALIVE="-1", vous n’aurez plus jamais à subir de temps d’attente au premier prompt.

Voilà, en appliquant ces étapes méthodiquement (en commençant par surveiller votre ollama ps), vous devriez retrouver des vitesses de génération tout à fait acceptables pour travailler confortablement en local. N’hésitez pas si vous avez des questions sur un point précis !

Leave a Reply

Your email address will not be published. Required fields are marked *