MLX: LLM ottimizzati per Apple Silicon (M1-M4)
Eseguire un MLX Apple Silicon LLM su un Mac recente significa sfruttare la memoria unificata dei chip da M1 a M4 per eseguire modelli open-weights da 7 a 235 miliardi di parametri in locale. Il framework MLX, pubblicato da Apple Research alla fine del 2023, sfrutta direttamente il Neural Engine e la GPU integrata tramite Metal, senza passare per CUDA. Questa guida illustra il funzionamento di MLX, i modelli compatibili, i quantitativi realistici di VRAM per ciascuna quantizzazione, le velocità osservate su M3 Max e M4 Pro, i benchmark di riferimento e i casi d'uso più solidi per un deployment self-hosted su macOS.
Perché MLX cambia le carte in tavola su Mac
MLX è una libreria di calcolo su array ispirata a NumPy e PyTorch, progettata specificamente per la memoria unificata di Apple Silicon. A differenza di llama.cpp che usa Metal come backend opzionale, MLX tratta la memoria della CPU e della GPU come un unico spazio: non è necessaria alcuna copia tra le due. Il repository ufficiale ml-explore/mlx su GitHub pubblica il codice sorgente sotto licenza MIT e il progetto associato mlx-examples fornisce implementazioni pronte all'uso per Llama, Mistral, Phi e Qwen.
Punti chiave da ricordare:
- Memoria unificata : un Mac Studio M3 Ultra con 192 GB rende questi 192 GB accessibili alla GPU. Un PC con una RTX 4090 arriva a un massimo di 24 GB di VRAM GDDR6X.
- Quantizzazione nativa : MLX supporta int4, int8 e bfloat16 tramite
mlx_lm.convert. - Valutazione lazy : i grafi di calcolo vengono materializzati solo al momento della chiamata
mx.eval(), il che riduce il consumo. - Compatibilità con Hugging Face : i checkpoint
safetensorsstandard sono convertibili con un comando.
Per confrontare gli approcci Mac e Linux, vedi llama.cpp e GGUF insieme al nostro confronto MLX vs llama.cpp.
VRAM richiesta e quantizzazioni supportate
MLX offre diversi livelli di quantizzazione. Ecco gli ordini di grandezza, partendo dai valori FP16 e applicando i rapporti usuali (Q8 ≈ 50 %, Q4 ≈ 25 %, Q3 ≈ 20 %).
Modelli che girano senza difficoltà su un MacBook Pro M3 Max 128 GB o M4 Max 128 GB:
- gpt-oss 120B : VRAM Q4 ~70 GB, contesto 128k token, licenza Apache 2.0. Vedi gpt-oss 120B.
- Llama 3.3 70B Instruct : VRAM Q4 ~40 GB, contesto 128k. Riferimento per i workflow agentici su Mac, dettagli su Llama 3.3 70B.
- Qwen 2.5 72B Instruct : VRAM Q4 ~42 GB, contesto 131k. Dettagli completi su Qwen 2.5 72B.
- DeepSeek R1 Distill Llama 70B : VRAM Q4 ~40 GB. Il modello distillato con capacità di ragionamento più noto, dettagli su DeepSeek R1 Distill 70B.
Modelli più grandi riservati al Mac Studio M3 Ultra con 192 GB o 512 GB:
- Mixtral 8x22B Instruct : VRAM Q4 ~82 GB, contesto 64k, Apache 2.0. Vedi Mixtral 8x22B.
- Mistral Small 4 (119B): VRAM Q4 ~72 GB, contesto 256k. Scheda: Mistral Small 4.
- Qwen 3 235B-A22B : VRAM Q4 ~142 GB, contesto 131k. Architettura MoE che attiva solo 22B di parametri, scheda Qwen 3 235B-A22B.
- Qwen 3.5 122B-A10B : VRAM Q4 ~73 GB, contesto 262k. Vedi Qwen 3.5 122B-A10B.
Su larghissima scala, DeepSeek V3 671B (VRAM Q4 ~400 GB, ctx 128k) resta fuori portata anche per un Mac Studio da 512 GB in Q4, ma si può prendere in considerazione in Q2/Q3 con un po' di offload su disco. Scheda completa su DeepSeek V3 671B.
Performance misurate: token al secondo
I numeri qui sotto provengono dalla documentazione ufficiale mlx-lm e di osservazioni riproducibili della comunità su Hugging Face. Tutte le velocità sono stime e dipendono dal prompt, dal contesto e dal livello di quantizzazione.
- Llama 3.1 70B a 4 bit su M3 Max con 128 GB: circa 10-12 token/sec in generazione, prefill circa 150 token/sec (stima). Scheda: Llama 3.1 70B.
- Qwen 2.5 72B a 4 bit su M4 Max: circa 9–11 token/sec (da confermare in base alla revisione del SoC).
- gpt-oss 120B a 4 bit su M3 Ultra con 192 GB: ~14 token/sec (stima basata sui benchmark Hugging Face).
- Mixtral 8x22B a 4 bit su M3 Ultra: ~18 token/sec grazie all'attivazione MoE.
- DeepSeek R1 Distill Llama 70B in 4 bit su M3 Max: ~10 token/sec, compresi i tracciati di ragionamento.
I modelli MoE come Qwen3-Coder-Next 80B-A3B (VRAM Q4 ~48 GB) beneficiano particolarmente della memoria unificata: solo 3B di parametri attivi attraversano le unità di calcolo per ogni token, il che spinge la velocità oltre i 25 token/sec sul M4 Max secondo i feedback degli utenti (da confermare). Vedi Qwen3-Coder-Next 80B-A3B.
Licenze e compatibilità con MLX
MLX non impone alcuna restrizione oltre a quelle previste dalla licenza del modello originale. Alcuni casi tipici:
- Apache 2.0 (Mixtral 8x22B, Mistral Small 4, gpt-oss 120B, Qwen 3 235B-A22B, Qwen 3.5 397B-A17B) : uso commerciale senza restrizioni.
- MIT (DeepSeek R1 671B, GLM-5.1, Ling 2.6 1T): molto permissiva, attribuzione obbligatoria.
- Llama Community (Llama 3.1 70B, Llama 3.1 405B, Llama 4 Scout 109B): consente l'uso commerciale al di sotto della soglia di 700 milioni di utenti attivi mensili.
- Qwen License (Qwen 2.5 72B, Qwen 2.5 VL 72B) : condizioni specifiche per le grandi piattaforme.
- CC-BY-NC 4.0 (Command R+ 104B): solo per uso non commerciale.
Per un uso in produzione, preferisci Apache 2.0 o MIT. Consultare la nostra guida sulle licenze LLM open-weights per i dettagli delle clausole.
Benchmark di riferimento su modelli compatibili con MLX
I punteggi riportati qui provengono dalle schede tecniche ufficiali pubblicate su Hugging Face e dalle schede dei modelli pubblicate dai produttori.
- MMLU : Llama 3.3 70B raggiunge ~86, Qwen 2.5 72B ~85, gpt-oss 120B ~88 (stimato).
- HumanEval : Qwen3-Coder-Next 80B-A3B punta a >85 % pass@1, DeepSeek R1 Distill Llama 70B ~78 % (da confermare).
- AIME 2024 : DeepSeek R1 671B raggiunge il 79,8 % secondo il paper arXiv DeepSeek R1. Il modello distillato da 70B ottiene circa il 70%.
- GPQA Diamond : DeepSeek R1 ~71 %, Llama 3.3 70B ~50 % (stimato).
Per esplorare in dettaglio i modelli più performanti nella programmazione, vedere Migliore LLM per il codice e per il ragionamento miglior LLM per il ragionamento.
Installazione e flusso di lavoro concreto
L'installazione si riduce a tre comandi dopo aver preparato un ambiente 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 conversione -q applica di default una quantizzazione 4-bit. I checkpoint convertiti vengono pubblicati direttamente su Hugging Face mlx-community, evitando così la fase di conversione locale per i modelli popolari.
I casi d'uso in cui MLX si distingue particolarmente:
- Sviluppatori Mac autonomi : un MacBook Pro M3 Max 64 GB basta per eseguire Llama 3.3 70B in Q3 o Qwen 2.5 72B in Q3.
- Workflow RAG locali : la memoria unificata permette di mantenere un contesto lungo (128k o persino 256k token) senza ricorrere allo swap.
- Agenti di coding privati : Qwen3-Coder-Next 80B-A3B in MoE a 4 bit rimane fluido per il completamento del codice nell'IDE.
- Ricerca accademica : MLX integra
mlx.optimizersper eseguire un fine-tuning LoRA direttamente su Apple Silicon (vedi esempi LoRA mlx-examples).
Per confrontare MacBook Pro e Mac Studio in base al modello che vuoi usare, consulta LLM per MacBook Pro.
FAQ
Q: Qual Mac scegliere per eseguire Llama 3.3 70B localmente?
Un MacBook Pro M3 Max o M4 Max con 64 GB permette di eseguire Llama 3.3 70B Instruct con quantizzazione a 4 bit (VRAM ~40 GB). Con 48 GB si è al limite, ma è possibile in Q3. Per contesti lunghi o batch, punta a 128 GB. Il Mac Studio M3 Ultra da 192 GB resta la scelta più comoda per questo modello.
Q: MLX è più veloce di llama.cpp su Mac?
MLX ottiene generalmente un miglioramento dal 10 al 30% nella generazione di testi lunghi grazie alla memoria unificata nativa e al compilatore di grafi. llama.cpp rimane competitivo sul prefill e offre un ecosistema più ampio (server integrato compatibile con OpenAI, quantizzazioni GGUF più varie). I due possono coesistere: MLX per lo sviluppo, llama.cpp per il deploy headless.
Q: È possibile fare fine-tuning LoRA con MLX?
Sì. Il sottoprogetto mlx-examples/lora permette di addestrare adattatori LoRA e QLoRA su Llama, Mistral e Qwen. Su un M3 Max con 64 GB, un fine-tuning LoRA di Mistral Small 4 a 4 bit resta fuori portata, ma i modelli da 7B a 13B si addestrano in poche ore.
Q: MLX gestisce i modelli MoE come Mixtral o Qwen 3 235B?
Sì. Mixtral 8x22B Instruct et Qwen 3 235B-A22B sono supportati tramite mlx-lm. L'architettura MoE è particolarmente adatta alla memoria unificata: gli esperti inattivi risiedono in RAM senza penalizzare la latenza. Su Mac Studio M3 Ultra 192 GB, Qwen 3 235B-A22B in 4-bit rimane utilizzabile con un contesto ragionevole.
Q: Quali modelli non sono utilizzabili su Apple Silicon?
I modelli >500B a piena precisione restano fuori portata persino per il Mac Studio da 512 GB: DeepSeek V4 Pro 1.6T (VRAM Q4 ~960 GB), MiMo V2.5 Pro (VRAM Q4 ~595 GB), Kimi K2.6 (VRAM Q4 ~600 GB). Con quantizzazioni aggressive Q2 o Q3 e offload su disco, alcuni diventano testabili in via sperimentale, ma la velocità cala drasticamente.
Q: MLX supporta i modelli vision-language?
Sì, parzialmente. Qwen 2.5 VL 72B et LLaVA-OneVision 72B dispongono di porting MLX realizzati dalla comunità su Hugging Face. La copertura è più limitata rispetto agli LLM esclusivamente testuali, ma il progetto mlx-vlm mantenuto dalla comunità colma il divario sulle architetture multimodali più comuni.
Conclusione
Un MLX Apple Silicon LLM trasforma un Mac recente in una seria workstation per l'inferenza: Llama 3.3 70B, Qwen 2.5 72B o gpt-oss 120B funzionano a 4 bit su un MacBook Pro con 64-128 GB, e i modelli MoE come Qwen 3 235B-A22B diventano accessibili su Mac Studio con 192 GB. Per scegliere il modello adatto alla tua configurazione hardware esatta, usa il nostro configuratore o sfoglia il catalogo completo dei 249 modelli indicizzati.