Avancé 10 minllama.cpp

Compiler llama.cpp avec Metal

Sur Mac Apple Silicon, Metal est l'API GPU native — l'équivalent de CUDA pour le monde Apple. Compiler llama.cpp avec Metal donne accès aux dernières optimisations (KV cache quantifié, Flash Attention Metal) qu'Ollama met parfois 3-4 semaines à intégrer. Ce guide est court parce que sur Mac, c'est quasi immédiat.

Par Mohamed Meguedmi·Màj 2026-02-20·Testé sur macOS 14+

#Metal : spécifique Apple

Sur macOS, le GPU n'est pas exposé via CUDA ou Vulkan (enfin, Vulkan arrive via MoltenVK mais c'est une couche de traduction). Le chemin direct, c'est Metal. llama.cpp a un backend Metal mature depuis 2023, qui exploite le GPU de la puce M ET la mémoire unifiée.

Vous avez déjà tout
macOS inclut Clang, Metal et les headers. Pas de "Toolkit" à installer comme pour CUDA. Le build est trivial.

#Prérequis

Mac Apple Silicon
M1, M2, M3, M4. Les Intel ne sont pas concernés par ce guide (Metal ne sert à rien sur Intel pour les LLM).
macOS 13+
Sonoma (14) ou Sequoia (15) recommandés pour les optimisations récentes.
Xcode Command Line Tools
xcode-select --install. 2 Go environ.
Homebrew (optionnel)
Pour installer cmake facilement.
Installer ce qui manque
xcode-select --install
brew install cmake git

#1. Build

Terminal
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# Metal est activé par défaut sur macOS Apple Silicon
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j $(sysctl -n hw.ncpu)

Le build prend 2 à 5 minutes. Les binaires apparaissent dans build/bin/.

i
Métal vs MPS
MPS (Metal Performance Shaders) est l'abstraction utilisée par PyTorch. llama.cpp parle Metal directement. C'est pourquoi llama.cpp est plus rapide que llama-cpp-python + PyTorch sur Mac.

#2. Tester

Charger et tester
./build/bin/llama-cli \
  -m ~/.ollama/models/manifests/... (ou un .gguf téléchargé) \
  -p "Bonjour" -n 128 -ngl 99

Le flag -ngl 99 demande de charger toutes les couches sur GPU. Sur Mac Apple Silicon, c'est gratuit — il n'y a pas de transfert CPU↔GPU à faire, la RAM est unifiée.

#3. Gérer la mémoire unifiée

macOS applique une limite par défaut sur la mémoire allouable au GPU : environ 67 % de la RAM totale. Pour les modèles qui dépassent :

Relever la limite
# Remplacez 57344 par la valeur en MB souhaitée
# (ex : 57344 = 56 Go, pour un MBP 64 Go)
sudo sysctl iogpu.wired_limit_mb=57344

# Revenir au défaut :
sudo sysctl iogpu.wired_limit_mb=0
!
Non persistant
Cette valeur est remise à zéro à chaque reboot. Ajoutez la commande dans /etc/sysctl.conf pour la rendre permanente.

#4. Flags qui comptent

-fa
Flash Attention. Activez toujours. Meilleure perf, moins de mémoire contexte.
-ngl 99
Toutes les couches sur GPU. Sur Mac, rien à y perdre.
-ctk q8_0 -ctv q8_0
KV cache quantifié en Q8. -50 % de VRAM pour le contexte, impact négligeable sur la qualité.
-t 4
Nombre de threads CPU pour le prompt processing. 4 est optimal sur M-series (les P-cores).

#5. Performance par puce (Mistral 7B Q4_K_M)

M1 / M2 8 Go
~20 tok/s. OK pour tester, limite pour un usage quotidien.
M1 / M2 16 Go
~25-30 tok/s. Usage confortable en 7B.
M1 Pro / M2 Pro
~40 tok/s. Sweet spot pour dev portable.
M3 Max / M4 Max 64 Go
~80 tok/s en 7B, ~25 tok/s en 70B. Quasiment une workstation.
M3 Ultra / M4 Ultra
~110 tok/s en 7B. Peut tourner Llama 3.1 70B Q6 confortablement.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.