Exécuter un modèle de raisonnement sur sa propre machine n’a jamais été aussi simple : deux commandes, et tu discutes avec un modèle qui ne sort pas de ton disque. Ce qui a changé depuis le tutoriel de 2025, c’est le nombre de variantes disponibles et les options de contexte — deux sujets qui expliquent l’essentiel des déceptions.

Installer Ollama

  • macOS — l’installeur .dmg signale « Requires macOS 14 Sonoma or later », et l’application se met à jour toute seule (téléchargement).
  • Windows — l’installeur .exe ou la commande PowerShell irm https://ollama.com/install.ps1 | iex, à partir de Windows 10 (téléchargement).
  • Linux — le script officiel, curl -fsSL https://ollama.com/install.sh | sh, qui met aussi en place un service systemd (doc Linux).

Le serveur écoute sur 127.0.0.1:11434 par défaut, et OLLAMA_HOST change cette adresse. Sur Linux, si le service tourne déjà, ollama serve échoue avec un message d’erreur : c’est normal, le serveur est lancé (quickstart).

Télécharger et lancer le modèle

ollama run deepseek-r1     # télécharge la variante « latest » et ouvre le chat
ollama list                # vérifie ce qui est installé et disponible
ollama ps                  # modèles chargés en mémoire, et sur GPU ou CPU

La page officielle publie toute la gamme (ollama.com/library/deepseek-r1) :

Balise Taille publiée Ce que c’est
deepseek-r1:1.5b 1,1 Go distillation Qwen, essai
deepseek-r1:7b 4,7 Go distillation Qwen
deepseek-r1:8b = latest 5,2 Go distillation Qwen, le compromis courant
deepseek-r1:14b 9,0 Go distillation Qwen
deepseek-r1:32b 20 Go distillation Qwen
deepseek-r1:70b 43 Go distillation Llama
deepseek-r1:671b 404 Go le modèle R1 complet

Deux précisions que le nom « DeepSeek R1 » laisse croire à tort : ollama run deepseek-r1 charge la variante 8b, et la plupart des balises sont des distillations d’autres familles — seul le 671b est le R1 complet. Les licences suivent d’ailleurs cette diversité : poids sous MIT, distillations Qwen sous Apache 2.0, distillations Llama sous licence llama. Côté mémoire, seules les tailles de fichiers sont publiées : Ollama n’annonce ni VRAM minimale, ni débit en tokens par seconde — méfie-toi des tableaux qui prétendent le contraire.

Interroger le modèle par l’API locale

Le serveur expose deux API. L’API native d’abord (doc) :

curl http://localhost:11434/api/chat -d '{
  "model": "deepseek-r1",
  "messages": [{"role": "user", "content": "Explique-moi une closure en JS"}]
}'

/api/generate prend un prompt simple, /api/chat prend une liste de messages au format rôle/contenu ; en local, aucune en-tête d’autorisation n’est nécessaire. L’API compatible OpenAI ensuite, sur http://localhost:11434/v1 — utile pour réutiliser un client existant (compatibilité) :

from openai import OpenAI
client = OpenAI(base_url='http://localhost:11434/v1/', api_key='ollama')  # clé requise mais ignorée

Attention, c’est un sous-ensemble de l’API OpenAI, pas un clone : tool_choice, logit_bias, user et n ne sont pas supportés, et une URL d’image distante non plus — seule l’image en base64 passe. La clé api_key est obligatoire pour le client Python, même si elle est ignorée : ollama.

Le réglage qui règle 90 % des problèmes : le contexte

C’est le point sur lequel les tutoriels passent en trois secondes et que la documentation traite sur plusieurs pages. La fenêtre de contexte est tronquée silencieusement si elle est trop petite : Ollama coupe le début du prompt, et le modèle répond à côté.

Trois façons de la fixer :

# 1. dans un Modelfile, puis ollama create
PARAMETER num_ctx 32768

# 2. au niveau du serveur
OLLAMA_CONTEXT_LENGTH=64000 ollama serve

# 3. à la volée, en session interactive
/set parameter num_ctx 4096

Un avertissement honnête : les pages officielles ne donnent pas le même défaut. La FAQ annonce 4096, la référence du Modelfile indique num_ctx à 2048, et la page « Context length » décrit un choix automatique selon la VRAM — sous 24 GiB, 4k de contexte ; entre 24 et 48 GiB, 32k ; au-delà de 48 GiB, 256k (context length). La conclusion pratique est simple : fixe la valeur toi-même. La même page recommande au moins 64 000 tokens pour les agents, les outils de code et la recherche web.

À ne pas confondre non plus : la fenêtre annoncée par un modèle (128K pour les variantes 1.5b à 70b) est une capacité maximale, pas l’allocation réelle de ta machine — l’intégration VS Code le dit explicitement.

Le brancher dans une interface

Dans VS Code, l’extension Ollama expose les modèles locaux au chat de l’éditeur : elle découvre ce qui est disponible sur 127.0.0.1:11434, demande VS Code 1.127 ou plus récent, et se diagnostique avec les commandes « Ollama: Refresh Models » et « Ollama: Diagnose Models » (intégration). C’est aussi ce chemin qu’utilisent les agents de code : côté Cline, tu choisis simplement le fournisseur Ollama.

Dans une interface de chat, Open WebUI se lance en une commande Docker et détecte Ollama automatiquement. Un piège documenté : son réglage num_ctx est désactivé par défaut et, si tu l’actives, il est prérempli à 2048 et écrase OLLAMA_CONTEXT_LENGTH — de quoi tronquer tes prompts sans comprendre pourquoi.

Ce qu’il faut savoir avant de s’installer

  • Le matériel n’a pas de formule magique. Seules les tailles de fichiers sont publiées ; le reste est une question de VRAM et de patience. Utilise ollama ps pour voir si le modèle tourne à 100 % GPU, 100 % CPU, ou un mélange des deux.
  • Le cloud n’est pas le local. Les modèles suffixés :cloud et la recherche web passent par un service distant qui exige un compte : OLLAMA_NO_CLOUD=1 les coupe.
  • Un modèle local reste un petit modèle. Une variante 8b rend des services sur des tâches courtes et décroche sur les longues — j’ai mis en regard ce que les modèles locaux savent faire dans un éditeur, et quel matériel et quel budget ça demande.

Dans la vidéo, je montre l’installation complète, le premier prompt et l’utilisation par l’API locale, pas à pas.