← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· TUTORIAL
Eseguire LLMs su Apple Silicon: Memoria Unificata e Cosa Ci Sta
Apple Silicon è eccezionalmente adatto all'esecuzione di LLMs perché la sua memoria unificata è condivisa, ad alta larghezza di banda e ampia — un Mac da 64 GB può eseguire un modello da 70B. Questa guida spiega cosa rientra in ogni livello di RAM, MLX versus llama.cpp, l'unica vera debolezza (l'elaborazione dei prompt) e gli strumenti disponibili.
Perché la memoria unificata è il vantaggio chiave
Apple Silicon condivide un unico pool di memoria ad alta larghezza di banda tra CPU, GPU e Neural Engine — non c'è VRAM separata né copie lente attraverso un bus PCIe. Ecco perché un Mac da 64 GB può caricare un modello che non entra in una GPU discreta da 24 GB: l'intero pool è disponibile per la GPU.
Questo è importante perché la generazione di token in un LLM è [limitata dalla larghezza di banda della memoria](/articles/running-llms-on-cpu) — ogni token richiede la lettura del modello dalla memoria — e la larghezza di banda unificata di Apple è abbastanza elevata da essere genuinamente competitiva nel decode. La larghezza di banda, non la potenza di calcolo grezza, è la specifica che determina la velocità di generazione qui.
Cosa ci sta, per livello di memoria
La memoria unificata è il vincolo determinante, quindi dimensiona il modello in base al tuo Mac (valori con quantizzazione a 4 bit):
- 16 GB: modelli 7B–8B comodamente.
- 32 GB: fino a circa 30B.
- 64 GB: un modello 70B diventa fattibile (un 70B in Q4 occupa circa 40 GB), anche se il margine per il contesto è ristretto — questo è il punto di ingresso pratico per il 70B.
- 128 GB: un 70B a precisione più alta (Q5/Q8) con spazio per contesti ampi.
- Livello Ultra (192 GB+): 70B ad alta precisione, modelli molto grandi o più modelli residenti contemporaneamente.
Regola empirica: calcola circa 0,5–0,6 GB per miliardo di parametri per i pesi a Q4, poi lascia spazio per la cache KV, che cresce con la lunghezza del contesto e spesso è ciò che decide se si riesce ad avere un contesto da 16K o 32K.
MLX vs llama.cpp
Due runtime dominano su Mac. Il backend Metal di llama.cpp traduce il calcolo GPU in shader Metal e utilizza il formato multipiattaforma GGUF con la più grande libreria di modelli. MLX è il framework proprietario di Apple, costruito da zero per la memoria unificata — generalmente più veloce sui modelli più piccoli (spesso in modo significativo sotto ~14B), con il divario che si riduce sopra ~27B dove entrambi raggiungono il tetto della larghezza di banda.
MLX ha slancio: Apple lo ha posizionato come il framework preferito per Apple Silicon, i runtime più popolari hanno aggiunto backend MLX e brilla sui modelli mixture-of-experts. La conclusione pragmatica: MLX per la velocità massima su modelli più piccoli e MoE, llama.cpp/GGUF per la più ampia selezione di modelli e la coerenza multipiattaforma.
La vera debolezza: l'elaborazione dei prompt
Il limite onesto di Apple Silicon non riguarda la generazione — riguarda l'elaborazione dei prompt (tempo al primo token). Il prefill è limitato dal calcolo, coinvolge grandi moltiplicazioni di matrici, e le GPU di Apple mancano dei tensor core dedicati che rendono NVIDIA veloce in questo ambito. Quindi anche quando la generazione di token è competitiva, il modello può essere notevolmente lento a iniziare a rispondere su un prompt lungo, il che domina la sensazione reale del lavoro con contesti lunghi.
L'altra limitazione è l'ecosistema: la maggior parte degli strumenti punta a CUDA, ci sono meno modelli MLX pre-quantizzati rispetto ai GGUF, e una GPU NVIDIA di fascia alta ha ancora diverse volte più larghezza di banda grezza. Per l'uso locale interattivo da singolo utente, Apple Silicon è eccellente; per contesti lunghi o servizi ad alto throughput, questi gap contano.
Strumenti e quantizzazione
L'ecosistema di strumenti per Mac è maturo: Ollama (CLI più un'API compatibile con OpenAI, il modo più semplice per iniziare), LM Studio (la migliore interfaccia grafica), MLX-LM (prestazioni massime e fine-tuning, tramite Python) e app offline focalizzate sulla privacy. GGUF è il formato di quantizzazione dominante tra gli strumenti; il formato MLX è nativo Apple e più veloce ma ha una libreria più piccola.
Come ovunque, la [quantizzazione](/articles/llm-quantization-explained-gguf) è ciò che rende tutto questo possibile — scendere a 4 bit riduce un modello di circa quattro volte (un 70B da ~140 GB a ~40 GB) con una modesta perdita di qualità, e Q4_K_M è solitamente il punto di equilibrio ottimale. Passa a Q5 o Q8 se la tua memoria unificata lo consente.
Apple Silicon in osFoundry
osFoundry esegue l'inferenza locale su Apple Silicon attraverso i percorsi Metal e MLX, così il modello viene eseguito interamente sulla GPU del tuo Mac usando la sua memoria unificata — nessun dato lascia il dispositivo e non c'è penalità di copia PCIe. Poiché il vincolo è semplicemente quanta memoria unificata hai, osFoundry ti aiuta a scegliere un modello dimensionato per il tuo Mac — un modello 7B–8B su una macchina da 16 GB, fino a un 70B su una da 64 GB o più — e seleziona la quantizzazione per adattare il modello alla memoria disponibile preservando la massima qualità possibile, così non devi ragionare manualmente sui formati GGUF o sui compromessi Q4/Q5/Q8. Il risultato è un'inferenza locale completamente privata e utilizzabile offline, sintonizzata sul livello di memoria di ogni Mac — e lo stesso modello può scalare verso un endpoint GPU dedicato quando hai bisogno di un'elaborazione dei prompt più veloce o di un maggiore throughput. (Per la storia sottostante della larghezza di banda, consulta la nostra [guida all'inferenza CPU](/articles/running-llms-on-cpu).)
Frequently asked questions
- Un Mac può eseguire grandi modelli linguistici localmente senza una GPU dedicata?
- Sì — questa è la forza di Apple Silicon. La sua memoria unificata è condivisa tra CPU e GPU con alta larghezza di banda, quindi la GPU può utilizzare l'intero pool di memoria. Un Mac da 64 GB può eseguire un modello 70B a 4 bit, qualcosa che una GPU discreta da 24 GB non può contenere, e i modelli più piccoli girano velocemente. Non è necessaria una GPU separata.
- Quanta memoria unificata serve per eseguire un modello da 7B, 30B o 70B?
- Con quantizzazione a 4 bit: circa 16 GB per un modello 7B–8B, 32 GB per fino a circa 30B, e 64 GB per un 70B (che occupa circa 40 GB di pesi, lasciando poco margine per il contesto). Con 128 GB puoi eseguire un 70B a precisione più alta con spazio per contesti ampi. Lascia sempre margine per la cache KV, che cresce con la lunghezza del contesto.
- MLX è più veloce di llama.cpp su Apple Silicon?
- Spesso, sui modelli più piccoli — MLX è il framework di Apple costruito per la memoria unificata ed è significativamente più veloce sotto circa 14B, e brilla sui modelli mixture-of-experts. Sopra circa 27B i due convergono perché entrambi diventano limitati dalla larghezza di banda. Il vantaggio di llama.cpp è la più grande libreria di modelli GGUF e la coerenza multipiattaforma. Usa MLX per la velocità massima sui modelli più piccoli e MoE.
- Perché il mio Mac è lento a iniziare a rispondere su prompt lunghi?
- Perché l'elaborazione dei prompt (tempo al primo token) è il punto debole di Apple Silicon. Il prefill è limitato dal calcolo e le GPU di Apple mancano dei tensor core dedicati che NVIDIA utilizza per questo, quindi un prompt lungo richiede del tempo prima che appaia il primo token — anche quando la generazione di token successiva è veloce. È la principale limitazione specifica di Apple per il lavoro con contesti lunghi.
- Qual è lo strumento più veloce per eseguire LLMs su Mac?
- Per le prestazioni massime, MLX-LM (il framework di Apple), specialmente su modelli più piccoli e MoE. Per la facilità d'uso, Ollama (CLI più un'API compatibile con OpenAI) o LM Studio (la migliore interfaccia grafica) sono le scelte popolari, e molti ora utilizzano backend MLX su Apple Silicon. La scelta giusta dipende da se vuoi velocità massima o massima comodità.
- Posso eseguire un modello 70B su un MacBook Pro da 64 GB?
- Sì, a 4 bit — un 70B in Q4 occupa circa 40 GB, che rientra in 64 GB con spazio per il runtime e una finestra di contesto modesta. È il punto di ingresso pratico per il 70B su Mac; il margine di contesto è limitato, quindi per contesti ampi o precisione più alta avresti bisogno di 128 GB. Aspettati una buona velocità di generazione ma un tempo al primo token più lento su prompt lunghi.
- Apple Silicon o NVIDIA per LLMs locali?
- Apple Silicon è eccellente per l'inferenza locale privata da singolo utente — la grande memoria unificata consente a un Mac di eseguire modelli che richiederebbero più GPU discrete, con un consumo energetico inferiore. NVIDIA vince sulla larghezza di banda grezza (diverse volte superiore), sulla velocità di elaborazione dei prompt, sul servizio ad alta concorrenza e sull'ecosistema (CUDA). Scegli Apple per l'uso locale personale e i modelli grandi su una singola macchina; NVIDIA per il throughput e il servizio con contesti lunghi.
Sources