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 les plus gros modèles open-weight du moment — les MoE 30-35B en pleine précision, les modèles denses 27B multimodaux — 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 : faire tourner un modèle de 30-35B en FP16 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 les meilleurs MoE 2026 — Qwen 3.6 35B-A3B ou Qwen 3.8 27B — en pleine précision FP16, ou plusieurs modèles à la fois, 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. Les meilleurs MoE 2026 en Q8 sont confortables — Qwen3-Coder 30B-A3B (≈32 Go), Qwen 3.8 27B (≈30 Go), Qwen 3.6 35B-A3B (≈40 Go) qui passe juste — et Mistral Small 24B tient même en FP16 (≈48 Go).
- Mac M4 Max 128 Go
- Environ 96 Go pour le LLM. De la marge pour faire tourner les gros MoE en pleine précision FP16 (Qwen 3.6 35B-A3B, Qwen 3.8 27B, Granite 4.2 30B), garder plusieurs modèles chargés en parallèle, ou pousser le contexte à 256k tokens.
- 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 les gros MoE 30-35B en pleine précision 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.
- Qwen 3.6 35B-A3B Q8 (MLX)
- ≈40 Go en RAM. 42-50 tokens/s : le MoE n'active que 3B de paramètres, d'où le débit élevé malgré sa taille. La valeur sûre polyvalente sur ce Mac.
- Qwen 3.8 27B Q8 (MLX)
- ≈30 Go en RAM. 18-22 tokens/s (modèle dense). 262k de contexte et vision, le plus proche d'un Copilot local. Pensez à passer son réglage de raisonnement sur low, sinon il sur-réfléchit.
- Qwen3-Coder 30B-A3B Q8 (MLX)
- ≈32 Go en RAM. 44-52 tokens/s. MoE spécialisé code, 256k de contexte : idéal comme assistant de développement local.
- GLM 4.7 Flash Q8 (MLX)
- ≈32 Go en RAM (MoE 30B-A3B, licence MIT). 40-48 tokens/s. Excellent en agents et appels d'outils, très réactif.
- Granite 4.2 30B Q8 (MLX)
- ≈33 Go en RAM. 30-38 tokens/s. Orienté usage pro/entreprise, sobre en tokens et stable sur les longues sessions.
- Mistral Small 24B FP16 (MLX)
- ≈48 Go. 18-22 tokens/s. Modèle dense, excellente qualité FR, particulièrement bon en synthèse documentaire.
#Benchmarks détaillés : MLX vs Ollama vs llama.cpp
Sur le même modèle Qwen 3.8 27B en Q8, voici la dispersion observée entre les trois runtimes sur la même machine M4 Max 128 Go :
- MLX 8-bit (mlx-community)
- 20.5 tokens/s en moyenne, prompt eval ~410 tokens/s.
- Ollama Q8_0 (Metal)
- 15.2 tokens/s en moyenne, prompt eval ~300 tokens/s.
- llama.cpp pur Q8_0
- 15.6 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).
- Petits modèles ≤14B Q4 (Qwen 3.5 9B, gpt-oss 20B)
- 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 denses 24-30B Q4 (Mistral Small, Qwen 3.8 27B)
- RTX 4090 encore devant (30-40 tok/s vs 18-22 sur M4 Max), mais l'écart se resserre.
- Pleine précision Q8/FP16
- Le M4 Max passe devant en pratique : il fait tourner les meilleurs MoE 2026 (35B-A3B, 27B) en Q8 ou FP16 dans sa RAM, là où la RTX 4090 doit retomber en Q4 ou offloader sur le CPU (débit divisé par cinq).
- Gros MoE (Qwen 3.6 35B-A3B)
- M4 Max excellent grâce à la RAM massive : tout tient en mémoire, même en FP16. RTX 4090 doit offloader dès qu'on dépasse Q4.
- 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 un gros MoE 35B en Q8), 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. Qwen 3.6 35B-A3B passe d'environ 45 à 37 tokens/s.
- Autonomie batterie inférence
- MacBook Pro 16" M4 Max 100 Wh : ~3 h d'inférence continue sur un gros MoE 35B, ~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 les MoE 30-35B ne vous suffisent pas et que vous visez les plus gros modèles open-weight (100B à 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.