Aller au contenu

Traduction automatique

Cet article a été traduit automatiquement depuis la version originale en anglais.

LLM locaux sur macOS : Ollama, LM Studio, llama.cpp, MLX et Apple Silicon

Envoyer chaque prompt à une API tierce finit par lasser, surtout quand la moitié des prompts sont « réécris ce paragraphe » ou « quel est le schéma JSON pour ça ». Les LLM locaux ont réglé ça pour moi sur Apple Silicon plus vite que prévu. Un modèle 7B en quantification 4 bits tourne confortablement sur un MacBook 16 Go, et l’aller-retour s’arrête au clavier.

La vraie question ouverte, c’est donc avec quelle application le piloter. Ollama, LM Studio, llama.cpp, MLX et quelques autres s’appuient tous sur des moteurs d’inférence similaires et les mêmes fichiers GGUF. La différence tient au niveau de friction entre vous et le modèle : d’un côté, double-clic puis on tape ; de l’autre, compilation depuis les sources puis lecture de la page de manuel.

Concepts clés des LLM locaux sur macOS

  1. Inférence : exécuter le modèle pour générer du texte.
  2. Quantification (GGUF) : une technique pour réduire la taille du modèle avec une perte de qualité minimale. Vous verrez des noms de fichiers comme llama-3-8b-Q4_K_M.gguf. La partie Q4 signifie une quantification 4 bits, qui utilise beaucoup moins de RAM que les poids complets en 16 bits.
  3. Apple Silicon (Metal) : les puces Apple série M partagent la RAM entre CPU et GPU (Apple appelle cela la « mémoire unifiée »). C’est pourquoi un MacBook avec 32 Go ou 64 Go peut charger des modèles qui nécessiteraient un GPU dédié coûteux sur un PC.

Prérequis

  • Matériel : un Mac avec Apple Silicon (M1 à M4) est ce qu’il vous faut. Les Mac Intel fonctionnent, mais ils sont nettement plus lents.
  • RAM :
    • 8 Go : suffisant pour les petits modèles (Mistral 7B, Llama 3 8B).
    • 16 Go+ : confortable pour les modèles plus gros et le multitâche.
  • Espace disque : les modèles sont volumineux. Prévoyez environ 10 à 20 Go pour une bibliothèque de départ utile.

Architecture des LLM locaux


1. Ollama - L’option « ça marche, point »

Téléchargement : ollama.com

Voyez Ollama comme le « Docker des LLM ». Il encapsule le moteur llama.cpp dans un paquet natif macOS, télécharge les modèles à la demande et route automatiquement le travail vers Metal. Vous l’installez, vous lancez une commande, et vous discutez. C’est le chemin le plus simple si vous voulez juste un LLM fonctionnel et un endpoint HTTP vers lequel pointer votre code.

Exemple de workflow

# 1. Download and run Llama 3 (it auto-downloads if needed)
ollama run llama3

# 2. Use it in your code via the local API
curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Explain quantum computing to a 5-year-old",
  "stream": false
}'

Avantages / inconvénients

✅ Avantages ❌ Inconvénients
Configuration la plus simple (glisser-déposer .dmg) Application principale closed source
CLI propre (ollama list, ollama pull) Contrôle moins fin des paramètres de génération
Grande bibliothèque de modèles préconfigurés

2. LM Studio - L’explorateur visuel

Téléchargement : lmstudio.ai

LM Studio est l’option orientée GUI. Il propose un navigateur de type App Store pour rechercher directement sur HuggingFace, prend en charge le format MLX d’Apple en plus de GGUF (ce qui peut être plus rapide sur certains Mac), et expose un serveur local compatible OpenAI. Donc le code client existant qui parle déjà à OpenAI fonctionne en grande partie tel quel.

Exemple de workflow

Vous pouvez utiliser le SDK Python officiel, ou n’importe quel client compatible OpenAI pointé vers le serveur local :

# Using the official LM Studio SDK
from lmstudio import LMStudio

client = LMStudio()
response = client.complete(
    model="llama-3-8b",
    prompt="Write a haiku about debugging."
)
print(response.content)

Avantages / inconvénients

✅ Avantages ❌ Inconvénients
Interface soignée et facile à utiliser GUI closed source
Prise en charge native des modèles GGUF et MLX Téléchargement plus lourd (~750MB)
RAG intégré (discussion avec vos PDF)

3. llama.cpp - L’outil des power users

Repo : github.com/ggml-org/llama.cpp

C’est le moteur qu’encapsulent presque tous les autres outils. Si vous voulez les meilleures performances, les dernières fonctionnalités dès leur sortie, ou intégrer un LLM dans votre propre application C++, c’est la source à regarder. C’est bare-metal et léger, mais en contrepartie vous gérez tout vous-même : téléchargements, formats et dizaines d’options CLI.

Exemple de workflow

# 1. Install via Homebrew
brew install llama.cpp

# 2. Download a model manually (e.g., from HuggingFace)
huggingface-cli download TheBloke/Llama-3-8B-Instruct-GGUF --local-dir .

# 3. Run inference with full control
llama-cli -m llama-3-8b-instruct.Q4_K_M.gguf \
  -p "Write a python script to sort a list" \
  -n 512 \
  --temp 0.7 \
  --ctx-size 4096

Avantages / inconvénients

✅ Avantages ❌ Inconvénients
Contrôle total sur chaque paramètre Courbe d’apprentissage raide (CLI uniquement)
Licence MIT (open source) Gestion manuelle des modèles
Très léger (<30MB)

4. GPT4All - Privacy-first & RAG

Téléchargement : gpt4all.io

GPT4All repose sur deux idées : la confidentialité et les documents. Sa fonctionnalité phare, LocalDocs, permet de pointer l’application vers un dossier de PDF, de notes ou de code et de dialoguer directement avec leur contenu. Tout tourne hors ligne, sans télémétrie. C’est la façon la plus simple d’obtenir une configuration RAG fonctionnelle sur votre machine sans écrire de code.

Avantages / inconvénients

✅ Avantages ❌ Inconvénients
Le RAG LocalDocs fonctionne bien prêt à l’emploi GUI uniquement (pas de mode headless)
Entièrement hors ligne et privé Utilisation de ressources plus lourde qu’Ollama
Multi-plateforme (Mac, Windows, Linux)

5. KoboldCPP - Pour les auteurs

Repo : github.com/LostRuins/koboldcpp

Un fork de llama.cpp orienté écriture créative et RPG de table. Il s’exécute comme une application web locale avec des outils pour la génération longue : « World Info », mémoire des personnages et divers hacks de cohérence narrative pour essayer de garder le modèle sur les rails sur des milliers de tokens. Le public visé, ce sont les auteurs et les personnes qui animent des RPG textuels ; si vous voulez surtout du chat ou du code, l’interface standard semblera étriquée.

Exemple de workflow

# 1. Download the single binary
wget https://github.com/LostRuins/koboldcpp/releases/latest/download/koboldcpp-mac.zip

# 2. Run it (launches a web server)
./koboldcpp --model llama-3-8b.gguf --port 5001 --smartcontext

Avantages / inconvénients

✅ Avantages ❌ Inconvénients
Bons outils pour l’écriture créative UI de niche (peu adaptée au code/chat)
Exécutable en fichier unique (sans installation) Licence AGPL (restrictive pour un usage commercial)

Mention honorable : MLX-LM

Si vous êtes développeur Python sur Apple Silicon, regardez MLX-LM d’Apple. C’est un framework optimisé pour les puces série M, et sur le bon matériel c’est souvent la façon la plus rapide d’exécuter un modèle en local. Le compromis, c’est qu’il est moins guidé qu’Ollama : plus de Python, moins de garde-fous.


Résumé : quel outil est fait pour vous ?

Un arbre de décision rapide :

Arbre de décision

Tableau comparatif rapide

Outil Interface Difficulté Meilleure fonctionnalité
Ollama CLI / barre de menu ⭐ (Facile) Expérience « ça marche, point »
LM Studio GUI ⭐ (Facile) Découverte de modèles & UI
GPT4All GUI ⭐ (Facile) Chat avec des documents locaux (RAG)
KoboldCPP Web UI ⭐⭐ (Moyen) Outils d’écriture créative
llama.cpp CLI ⭐⭐⭐ (Difficile) Performances brutes & contrôle

Que choisir, concrètement

  • Commencez avec Ollama si vous voulez juste quelque chose qui tourne aujourd’hui.
  • Choisissez LM Studio si vous préférez d’abord parcourir les modèles visuellement.
  • Passez à llama.cpp quand vous avez besoin d’un contrôle total sur l’inférence.