MLX : LLM optimisés pour Apple Silicon (M1-M4)
Faire tourner un MLX Apple Silicon LLM sur un Mac récent, c'est tirer parti de la mémoire unifiée des puces M1 à M4 pour exécuter des modèles open-weights de 7 à 235 milliards de paramètres en local. Le framework MLX, publié par Apple Research fin 2023, exploite directement le Neural Engine et le GPU intégré via Metal, sans passer par CUDA. Ce guide détaille le fonctionnement de MLX, les modèles compatibles, les VRAM réalistes par quantification, les vitesses observées sur M3 Max et M4 Pro, les benchmarks de référence, ainsi que les cas d'usage les plus solides pour un déploiement self-hosted sur macOS.
Pourquoi MLX change la donne sur Mac
MLX est une bibliothèque d'array computing inspirée de NumPy et PyTorch, conçue spécifiquement pour la mémoire unifiée d'Apple Silicon. Contrairement à llama.cpp qui passe par Metal en backend optionnel, MLX traite la mémoire CPU et GPU comme un espace unique : aucune copie n'est nécessaire entre les deux. Le dépôt officiel ml-explore/mlx sur GitHub publie les sources sous licence MIT, et le projet associé mlx-examples fournit des implémentations prêtes à l'emploi pour Llama, Mistral, Phi et Qwen.
Points clés à retenir :
- Mémoire unifiée : un Mac Studio M3 Ultra avec 192 Go expose ces 192 Go au GPU. Un PC avec une RTX 4090 plafonne à 24 Go de VRAM GDDR6X.
- Quantification native : MLX supporte int4, int8 et bfloat16 via
mlx_lm.convert. - Lazy evaluation : les graphes de calcul ne sont matérialisés qu'au moment de l'appel
mx.eval(), ce qui réduit la consommation. - Compatibilité Hugging Face : les checkpoints
safetensorsstandards sont convertibles avec une commande.
Pour comparer les approches Mac et Linux, voir llama.cpp et GGUF ainsi que notre comparatif MLX vs llama.cpp.
VRAM requise et quantifications supportées
MLX expose plusieurs niveaux de quantification. Voici les ordres de grandeur, en partant des chiffres FP16 puis en appliquant les ratios usuels (Q8 ≈ 50 %, Q4 ≈ 25 %, Q3 ≈ 20 %).
Modèles confortables sur un MacBook Pro M3 Max 128 Go ou M4 Max 128 Go :
- gpt-oss 120B : VRAM Q4 ~70 GB, contexte 128k tokens, licence Apache 2.0. Voir gpt-oss 120B.
- Llama 3.3 70B Instruct : VRAM Q4 ~40 GB, contexte 128k. Référence pour les workflows agentiques sur Mac, détails sur Llama 3.3 70B.
- Qwen 2.5 72B Instruct : VRAM Q4 ~42 GB, contexte 131k. Fiche complète sur Qwen 2.5 72B.
- DeepSeek R1 Distill Llama 70B : VRAM Q4 ~40 GB. Le distillat raisonnant le plus connu, détails sur DeepSeek R1 Distill 70B.
Modèles plus larges réservés au Mac Studio M3 Ultra 192 Go ou 512 Go :
- Mixtral 8x22B Instruct : VRAM Q4 ~82 GB, contexte 64k, Apache 2.0. Voir Mixtral 8x22B.
- Mistral Small 4 (119B) : VRAM Q4 ~72 GB, contexte 256k. Fiche : Mistral Small 4.
- Qwen 3 235B-A22B : VRAM Q4 ~142 GB, contexte 131k. Architecture MoE qui n'active que 22B de paramètres, fiche Qwen 3 235B-A22B.
- Qwen 3.5 122B-A10B : VRAM Q4 ~73 GB, contexte 262k. Voir Qwen 3.5 122B-A10B.
À très grande échelle, DeepSeek V3 671B (VRAM Q4 ~400 GB, ctx 128k) reste hors de portée même d'un Mac Studio 512 Go en Q4, mais devient envisageable en Q2/Q3 avec un peu d'offload disque. Fiche complète sur DeepSeek V3 671B.
Performances mesurées : tokens par seconde
Les chiffres ci-dessous proviennent de la documentation officielle mlx-lm et d'observations communautaires reproductibles sur Hugging Face. Toutes les vitesses sont des estimations et dépendent du prompt, du contexte et du niveau de quantification.
- Llama 3.1 70B en 4-bit sur M3 Max 128 Go : ~10 à 12 tokens/sec en génération, prefill ~150 tokens/sec (estimé). Fiche : Llama 3.1 70B.
- Qwen 2.5 72B en 4-bit sur M4 Max : ~9 à 11 tokens/sec (à confirmer selon la révision du SoC).
- gpt-oss 120B en 4-bit sur M3 Ultra 192 Go : ~14 tokens/sec (estimé d'après les benchmarks Hugging Face).
- Mixtral 8x22B en 4-bit sur M3 Ultra : ~18 tokens/sec grâce à l'activation MoE.
- DeepSeek R1 Distill Llama 70B en 4-bit sur M3 Max : ~10 tokens/sec, traces de raisonnement comprises.
Les modèles MoE comme Qwen3-Coder-Next 80B-A3B (VRAM Q4 ~48 GB) bénéficient particulièrement de la mémoire unifiée : seuls 3B de paramètres actifs traversent les unités de calcul à chaque token, ce qui pousse la vitesse au-delà de 25 tokens/sec sur M4 Max selon les retours utilisateurs (à confirmer). Voir Qwen3-Coder-Next 80B-A3B.
Licences et compatibilité avec MLX
MLX n'impose aucune restriction au-delà de la licence du modèle d'origine. Quelques cas types :
- Apache 2.0 (Mixtral 8x22B, Mistral Small 4, gpt-oss 120B, Qwen 3 235B-A22B, Qwen 3.5 397B-A17B) : usage commercial sans contrainte.
- MIT (DeepSeek R1 671B, GLM-5.1, Ling 2.6 1T) : très permissive, attribution requise.
- Llama Community (Llama 3.1 70B, Llama 3.1 405B, Llama 4 Scout 109B) : autorise l'usage commercial sous le seuil de 700 M utilisateurs actifs mensuels.
- Qwen License (Qwen 2.5 72B, Qwen 2.5 VL 72B) : conditions spécifiques pour les grandes plateformes.
- CC-BY-NC 4.0 (Command R+ 104B) : non commercial uniquement.
Pour un usage en production, privilégiez Apache 2.0 ou MIT. Voir notre guide licences LLM open-weights pour le détail des clauses.
Benchmarks de référence sur modèles MLX-compatibles
Les scores reportés ici sont issus des fiches techniques officielles publiées sur Hugging Face et des cartes de modèle des éditeurs.
- MMLU : Llama 3.3 70B atteint ~86, Qwen 2.5 72B ~85, gpt-oss 120B ~88 (estimé).
- HumanEval : Qwen3-Coder-Next 80B-A3B vise >85 % pass@1, DeepSeek R1 Distill Llama 70B ~78 % (à confirmer).
- AIME 2024 : DeepSeek R1 671B atteint 79.8 % d'après le papier arXiv DeepSeek R1. Le distillat 70B obtient ~70 %.
- GPQA Diamond : DeepSeek R1 ~71 %, Llama 3.3 70B ~50 % (estimé).
Pour explorer en détail les modèles les plus performants en code, voir meilleur LLM pour le code et pour le raisonnement meilleur LLM raisonnement.
Installation et workflow concret
L'installation tient en trois commandes après avoir préparé un environnement Python 3.10+ :
pip install mlx mlx-lm
python -m mlx_lm.convert --hf-path meta-llama/Llama-3.3-70B-Instruct -q
python -m mlx_lm.generate --model ./mlx_model --prompt "Bonjour"
La conversion -q applique une quantification 4-bit par défaut. Les checkpoints convertis sont publiés directement sur Hugging Face mlx-community, ce qui évite l'étape de conversion locale pour les modèles populaires.
Les cas d'usage où MLX brille particulièrement :
- Développeurs Mac autonomes : un MacBook Pro M3 Max 64 Go suffit pour exécuter Llama 3.3 70B en Q3 ou Qwen 2.5 72B en Q3.
- Workflows RAG locaux : la mémoire unifiée permet de garder un contexte long (128k voire 256k tokens) sans swapper.
- Coding agents privés : Qwen3-Coder-Next 80B-A3B en MoE 4-bit reste fluide pour de la complétion IDE.
- Recherche académique : MLX intègre
mlx.optimizerspour faire du fine-tuning LoRA directement sur Apple Silicon (voir exemples LoRA mlx-examples).
Pour comparer MacBook Pro et Mac Studio selon le modèle visé, consultez LLM pour MacBook Pro.
FAQ
Q : Quel Mac choisir pour faire tourner Llama 3.3 70B en local ?
Un MacBook Pro M3 Max ou M4 Max 64 Go permet d'exécuter Llama 3.3 70B Instruct en quantification 4-bit (VRAM ~40 GB). Avec 48 Go, c'est tendu mais possible en Q3. Pour du contexte long ou des batchs, visez 128 Go. Le Mac Studio M3 Ultra 192 Go reste la cible la plus confortable pour ce modèle.
Q : MLX est-il plus rapide que llama.cpp sur Mac ?
MLX gagne généralement 10 à 30 % sur la génération longue grâce à la mémoire unifiée native et au compilateur de graphe. llama.cpp reste compétitif sur le prefill et offre un écosystème plus large (serveur OpenAI-compatible intégré, quantifications GGUF plus variées). Les deux peuvent cohabiter : MLX pour le développement, llama.cpp pour le déploiement headless.
Q : Peut-on faire du fine-tuning LoRA avec MLX ?
Oui. Le sous-projet mlx-examples/lora permet d'entraîner des adaptateurs LoRA et QLoRA sur Llama, Mistral et Qwen. Sur un M3 Max 64 Go, un fine-tuning LoRA de Mistral Small 4 en 4-bit reste hors de portée, mais des modèles 7B à 13B s'entraînent en quelques heures.
Q : MLX gère-t-il les modèles MoE comme Mixtral ou Qwen 3 235B ?
Oui. Mixtral 8x22B Instruct et Qwen 3 235B-A22B sont supportés via mlx-lm. L'architecture MoE est particulièrement adaptée à la mémoire unifiée : les experts inactifs résident en RAM sans pénaliser la latence. Sur Mac Studio M3 Ultra 192 Go, Qwen 3 235B-A22B en 4-bit reste utilisable avec un contexte raisonnable.
Q : Quels modèles ne sont pas viables sur Apple Silicon ?
Les modèles >500B en pleine précision restent hors de portée même du Mac Studio 512 Go : DeepSeek V4 Pro 1.6T (VRAM Q4 ~960 GB), MiMo V2.5 Pro (VRAM Q4 ~595 GB), Kimi K2.6 (VRAM Q4 ~600 GB). En Q2 ou Q3 agressifs avec offload disque, certains deviennent expérimentablement testables, mais la vitesse chute drastiquement.
Q : MLX supporte-t-il les modèles vision-langage ?
Oui, partiellement. Qwen 2.5 VL 72B et LLaVA-OneVision 72B disposent de portages MLX communautaires sur Hugging Face. La couverture est plus restreinte que pour les LLM texte purs, mais le projet mlx-vlm maintenu par la communauté comble l'écart sur les architectures multimodales courantes.
Conclusion
Un MLX Apple Silicon LLM transforme un Mac récent en station d'inférence sérieuse : Llama 3.3 70B, Qwen 2.5 72B ou gpt-oss 120B tournent en 4-bit sur un MacBook Pro 64-128 Go, et les MoE comme Qwen 3 235B-A22B deviennent accessibles sur Mac Studio 192 Go. Pour choisir le modèle adapté à votre configuration matérielle exacte, utilisez notre configurateur ou parcourez le catalogue complet des 249 modèles indexés.