keep_alive: -1 — garder un modèle Ollama en RAM entre les appels

2 min read2 mai 2026#ollama#performance#keep-alive#llm#nodejs

keep_alive: -1 — garder un modèle Ollama en RAM entre les appels

Par défaut, Ollama décharge un modèle de la RAM après 5 minutes d'inactivité.

La prochaine requête le recharge depuis le disque. Sur CPU, ça prend 10-15 secondes.

Pour un agent qui génère des messages à la demande, c'est un délai visible à chaque appel espacé de plus de 5 minutes.


Le fix

Passer keep_alive: -1 dans chaque appel.

await ollama.chat({
  model: "qwen2.5:7b",
  messages,
  stream: true,
  keep_alive: -1,          // garde le modèle en RAM indéfiniment
  options: { num_predict: 100 },
});

Le modèle reste chargé entre les appels. Plus de rechargement 13 secondes.


Quand ne pas l'utiliser

Si la machine a peu de RAM et que plusieurs modèles sont chargés en parallèle, keep_alive: -1 peut consommer inutilement de la mémoire.

La valeur par défaut de 5 minutes est raisonnable pour un usage interactif (questions ponctuelles). Elle devient pénalisante pour un agent qui génère des messages à des intervalles irréguliers — parfois 2 minutes, parfois 20 minutes.


Centraliser le client

Plutôt que de passer keep_alive à chaque appel dans chaque fichier, une seule instance Ollama partagée :

// src/ollama/manager.ts
export const ollamaClient = new Ollama({
  host: config.ollama.host,
  fetch: fetchWithTimeout(10 * 60 * 1000),
});

Et keep_alive: -1 dans chaque chat() call. Tous les modules importent ollamaClient au lieu d'instancier leur propre new Ollama().