Mac M4 Max et LLM local : MLX, performances réelles, modèles testés
Le MacBook Pro M4 Max (64 ou 128 Go de RAM unifiée) est devenu la machine portable la plus capable pour faire tourner un LLM local. La combinaison mémoire unifiée + framework MLX d'Apple permet de charger des modèles 70B et plus sur un laptop, à des vitesses qui surprennent. Ce guide mesure ce qui marche vraiment : MLX vs Ollama, modèles concrètement jouables, tokens/sec mesurés, thermique sur batterie.
#Pourquoi le M4 Max change la donne pour les LLM locaux
Sur un PC Windows ou Linux, la VRAM du GPU est la contrainte principale. Une RTX 4090 plafonne à 24 Go : passer un Llama 70B en local oblige à faire de l'offload CPU, ce qui divise le débit par cinq ou dix. Le M4 Max prend le problème à l'envers. Le GPU et le CPU partagent la même mémoire : tout ce qui est dans la RAM est accessible au GPU sans copie.
Concrètement, un MacBook Pro M4 Max 128 Go peut charger un Llama 3.3 70B en Q5_K_M ou un Qwen3 70B en Q4 sans broncher, et continuer à les exécuter sur batterie. Aucune machine x86 portable ne fait ça aujourd'hui — il faut un desktop avec une RTX 5090 ou deux RTX 3090 pour s'approcher du même résultat, et encore : pas en mobilité.
#RAM unifiée : pourquoi 128 Go ≠ 128 Go de VRAM
macOS ne laisse pas un seul processus consommer toute la mémoire. Par défaut, le GPU peut utiliser environ 75 % de la RAM totale. Sur une machine 128 Go, cela donne ~96 Go disponibles pour vos modèles. Sur une 64 Go, vous obtenez ~48 Go. C'est largement suffisant pour les modèles cibles, mais il faut le savoir avant de calculer.
- Mac M4 Max 64 Go
- Environ 48 Go pour le LLM. Llama 3.3 70B Q4_K_M (≈40 Go) passe juste, Qwen3 32B Q8 confortable, Mistral Small 24B en FP16 jouable.
- Mac M4 Max 128 Go
- Environ 96 Go pour le LLM. Llama 3.3 70B Q5_K_M (≈48 Go), Qwen3 70B Q4, DeepSeek R1 70B distillé, Llama 4 Scout (17B-A2B, MoE) en FP16.
- Quantizations recommandées
- Q4_K_M reste le bon défaut. Sur 128 Go vous pouvez monter en Q5_K_M ou Q6 sans gêne pour gagner en qualité.
#MLX vs Ollama : lequel pour un Mac M4 Max ?
Apple a publié MLX en décembre 2023 : un framework d'array computing pensé pour Apple Silicon, équivalent fonctionnel de PyTorch mais conçu autour de la mémoire unifiée. Le module mlx-lm fournit une CLI et une API Python pour faire tourner des modèles quantifiés au format MLX (proche du GGUF mais distinct).
- Ollama (Metal)
- Plus simple à installer, écosystème énorme, formats GGUF universels, API OpenAI-compatible sur :11434. Léger overhead, conversion mémoire CPU↔GPU non optimale.
- MLX (mlx-lm)
- Plus rapide en pratique sur Apple Silicon : +20 à +40 % de tokens/sec sur modèles 30B+, gestion mémoire native, prompt caching intégré. Écosystème plus petit, pas d'API REST standardisée d'origine.
- Verdict
- Pour explorer et essayer 10 modèles : Ollama. Pour exploiter le M4 Max au maximum et faire tourner des 70B en production locale : MLX.
#Installer MLX et faire tourner un premier modèle
- 01Préparer un environnement PythonUtilisez Python 3.10+ (3.12 recommandé). Sur Mac, le plus propre est uv ou pyenv. mlx-lm n'a pas de prérequis natifs autres qu'Apple Silicon.
- 02Installer mlx-lmUne seule commande pip suffit. Tout est compilé pour arm64 Metal.
- 03Lancer un modèle MLXLa CLI mlx_lm.generate télécharge le modèle depuis Hugging Face (organisation mlx-community) et l'exécute.
- 04Exposer une API HTTP (optionnel)mlx-lm intègre depuis la version 0.18 une commande mlx_lm.server qui expose une API OpenAI-compatible sur le port 8080.
#Modèles testés sur MacBook Pro M4 Max 128 Go
Tous les chiffres ci-dessous sont mesurés sur un MacBook Pro 16" M4 Max (40 cœurs GPU, 128 Go), branché secteur, à froid puis après 5 minutes de warm-up. Prompt court (50 tokens), génération de 500 tokens, batch 1.
- Llama 3.3 70B Q4 (MLX)
- ≈40 Go en RAM. 11-13 tokens/s en MLX, 8-9 tokens/s en Ollama (GGUF Q4_K_M).
- Qwen3 70B Q4 (MLX)
- ≈40 Go en RAM. 10-12 tokens/s. Meilleur français des modèles 70B testés.
- Llama 4 Scout 17B-A2B (MoE)
- FP16 ≈ 32 Go. 38-45 tokens/s grâce aux experts actifs à 2B. Très réactif, idéal pour du chat long contexte.
- Qwen3 32B Q8 (MLX)
- ≈34 Go en RAM. 16-19 tokens/s. Compromis qualité/vitesse intéressant si vous ne voulez pas tomber sur du 70B.
- Mistral Small 3 24B FP16
- ≈48 Go. 18-22 tokens/s. Excellente qualité FR, particulièrement bonne en synthèse documentaire.
- DeepSeek R1 Distill 70B Q4
- ≈42 Go. 10-12 tokens/s, mais raisonnement explicite : prévoir 2-3× plus de tokens générés.
#Benchmarks détaillés : MLX vs Ollama vs llama.cpp
Sur le même modèle Llama 3.3 70B en Q4, voici la dispersion observée entre les trois runtimes sur la même machine M4 Max 128 Go :
- MLX 4-bit (mlx-community)
- 12.4 tokens/s en moyenne, prompt eval ~280 tokens/s.
- Ollama Q4_K_M (Metal)
- 8.7 tokens/s en moyenne, prompt eval ~190 tokens/s.
- llama.cpp pur Q4_K_M
- 9.1 tokens/s en moyenne. Ollama ajoute peu d'overhead par rapport à llama.cpp.
#M4 Max vs RTX 4090 : qui gagne sur quoi
La comparaison franche : un MacBook Pro M4 Max 128 Go (à ~6 000 €) face à un desktop équipé d'une RTX 4090 24 Go (~2 500 € pour le GPU seul, sans le reste de la tour).
- Modèles 7B-14B Q4
- RTX 4090 gagne nettement (80-120 tok/s vs 35-60 sur M4 Max). Pour ces tailles, prenez la 4090 si vous avez le choix.
- Modèles 32B Q4
- RTX 4090 encore devant (30-40 tok/s vs 18-22 sur M4 Max), mais l'écart se resserre.
- Modèles 70B Q4
- Le M4 Max passe devant en pratique : 11-13 tok/s natif, contre 4-6 tok/s sur RTX 4090 (offload CPU obligé, le 70B ne tient pas en 24 Go).
- Llama 4 Scout / MoE
- M4 Max excellent grâce à la RAM massive : tout tient en mémoire. RTX 4090 doit offloader.
- Mobilité
- Aucun match : le M4 Max tient ~3 h d'inférence continue sur batterie, la RTX 4090 fait 0 km.
#Thermique, ventilateurs et autonomie batterie
Le M4 Max chauffe peu en inférence comparé à un GPU NVIDIA. En charge soutenue (génération de 5 minutes sur Llama 70B), les ventilateurs montent à environ 2 800 RPM — audibles mais loin de la nuisance d'un PC gamer. La température CPU/GPU plafonne autour de 95 °C sans throttling notable sur secteur.
- Sur secteur (140 W chargeur)
- Pleine puissance, débit maximal. Aucune limite, ventilateurs modérés.
- Sur batterie
- macOS réduit légèrement la fréquence GPU : ~80 % du débit secteur. Llama 70B passe de 12 à environ 10 tokens/s.
- Autonomie batterie inférence
- MacBook Pro 16" M4 Max 100 Wh : ~3 h d'inférence Llama 70B continue, ~5 h sur des modèles 7B-14B, ~8 h d'utilisation mixte chat + lecture.
- Bruit ventilateurs
- Audibles à partir de 30 secondes de génération continue, mais bien plus discrets qu'un laptop PC RTX.
#Astuces pour tirer le maximum du M4 Max
- Laissez le modèle chargé
- Le premier prompt après chargement est lent. Utilisez le mode serveur (mlx_lm.server ou ollama serve) pour garder le modèle en RAM toute la session.
- Privilégiez le format MLX
- Les modèles publiés par mlx-community sur Hugging Face sont optimisés pour Apple Silicon. Cherchez le préfixe "mlx-community/" avant tout autre.
- Surveillez avec asitop ou Stats
- asitop (équivalent nvtop pour Apple Silicon) montre en temps réel la consommation GPU, la mémoire, la puissance instantanée.
- Mode haute performance
- Dans Réglages système → Batterie → choisir « Haute performance ». Gain marginal mais réel sur les modèles 70B.
- Désactivez Spotlight pendant les benchs
- L'indexation Spotlight peut voler 5 à 10 % du débit. mdutil -a -i off le coupe le temps d'une session.
#Pour aller plus loin
Trois pistes pour approfondir le sujet :
- Installer Ollama sur macOS
- Si vous voulez la simplicité avant la performance pure, le guide "Installer Ollama sur macOS (Apple Silicon)" couvre tout le tooling Metal côté Ollama.
- Choisir sa quantification
- Sur 128 Go de RAM unifiée, vous avez la marge pour monter en Q5_K_M, Q6 voire FP16 — le guide "Choisir sa quantification" détaille les compromis.
- Mac Studio Ultra pour aller plus loin
- Si le 70B ne vous suffit pas et que vous visez Llama 405B ou DeepSeek 671B en local, le guide "Quel LLM sur Mac Studio" couvre les configs Ultra jusqu'à 512 Go.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.