LLM multi-GPU con llama.cpp: tensor-split 2× RTX 3090
Una RTX 4090 da 24 GB non basta per eseguire i migliori modelli del 2026 in Q8 a piena qualità con un contesto di 256k token. Due 3090 usate (48 GB) svolgono il compito a un costo inferiore. Ma bisogna saper suddividere il modello tra le schede, scegliere tra split layer e tensor parallel e configurare l’hardware affinché regga nel tempo. Questa guida copre i tre strumenti comuni (llama.cpp, Ollama, vLLM) e le insidie.
Stai scegliendo un computer? Le nostre scelte per budget →
Buon rapporto qualità/prezzo per l'IA locale: un GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395).
Un mini-PC è una macchina completa: verifica la memoria disponibile e la compatibilità del motore. Non sostituisce macOS/MLX o CUDA.
Perché questa scelta? La nostra scheda completa su GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395) →
Confronta tutte le opzioni per budget, da 800 a 3 500 € →
Budget ridotto: RTX 5060 · Modelli grandi: RTX 5090 · Mac Studio.
In mobilità: quale portatile per l'IA locale →
Link affiliati — possibile commissione senza costi aggiuntivi per te. In qualità di Partner Amazon, QualeLLM realizza un profitto sugli acquisti idonei.
#Perché multi-GPU
- Modelli > VRAM di una singola scheda
- Qwen3-Coder 30B-A3B in Q8 = 32 GB, e con un contesto di 256k la cache KV porta il fabbisogno di memoria ben oltre. Nessuna singola GPU consumer riesce a contenerlo, tranne una RTX 5090 (32 GB) — e anche in quel caso, senza margine per un contesto ampio.
- Throughput per il team
- Due schede con parallelismo tensor in vLLM possono servire 2 volte più utenti in parallelo.
- Ridondanza
- Una scheda si guasta, l'altra continua in modalità degradata (modello più piccolo).
- Fine-tuning
- Un LoRA su un 24B richiede 30 GB tra modello + ottimizzatore + gradienti. Due schede da 24 GB offrono un buon margine.
#Due strategie: split layer vs tensor parallel
- Split per strati (layer parallelism)
- I livelli 1-40 sulla GPU 0, i livelli 41-80 sulla GPU 1. Il passaggio da un livello all'altro copia un vettore di attivazione. Latenza leggermente più elevata. Supportato da llama.cpp e Ollama.
- Parallelismo tensoriale
- Ogni layer viene suddiviso in parti distribuite sulle GPU in parallelo. Richiede una comunicazione rapida tra le schede. Più performante ma complesso. Supportato da vLLM e ExLlamaV2.
#Hardware: attenzione ai dettagli
- PCIe
- Ogni GPU deve utilizzare almeno un collegamento PCIe x8. Una scheda madre con 2× slot PCIe 5.0 x16 collegati direttamente alla CPU, non x16 + x4 tramite il chipset.
- Alimentazione
- 2× 3090 = 700 W per le sole GPU. Aggiungendo CPU, RAM e SSD: punta a 1200-1600 W (80+ Gold o Platinum).
- Spaziatura
- Le RTX 3090/4090 occupano 3 slot. Su una scheda madre con 7 slot, le due schede si toccano. Riser PCIe o raffreddamento a liquido per mantenere il controllo.
- Ventilazione
- Con 2 schede sotto carico, un case mal ventilato raggiunge gli 85-90 °C. Thermal throttling = -30 % di prestazioni.
#1. Multi-GPU con llama.cpp
--tensor-split indica la proporzione di strati per GPU. Per 2 schede identiche: 0.5,0.5. Per una 3090 24 GB + una 4070 12 GB: 0.67,0.33 (la 3090 prende due terzi).
#2. Multi-GPU con Ollama
Ollama rileva automaticamente più GPU e distribuisce il carico su tutte quelle disponibili. Poche impostazioni disponibili, ma funziona subito senza configurazioni.
#3. Parallelismo tensoriale con vLLM
vLLM distribuisce ogni layer sulle 2 GPU in parallelo. Il throughput aggregato è quasi raddoppiato rispetto a 1 GPU, con un overhead di comunicazione di circa il 10%.
#NVLink: utile o no?
NVLink permette una connessione tra GPU ad alta banda passante (112 GB/s su 3090). Alcune RTX 3090 hanno un connettore NVLink; le 4090 non lo hanno più; le RTX Quadro / A-series lo hanno tutte.
- Impatto llama.cpp split-layer
- Molto basso. I trasferimenti tra livelli sono piccoli.
- Impatto sul parallelismo tensoriale di vLLM
- Più significativo: un aumento del throughput dal 5 al 15% con NVLink attivato.
- Impatto del fine-tuning
- Notevole: lo scambio dei gradienti è intenso. NVLink è consigliato se prevedi di fare fine-tuning su più GPU.
#Performance attese
Su 2× RTX 3090, Qwen3-Coder 30B-A3B Q8_0, llama.cpp con split layer:
- Prompt singolo
- ~55 tok/s. Una sola 3090 non avrebbe memoria sufficiente per contenere il modello in Q8 (32 GB). La velocità resta elevata: si tratta di un MoE con 3B di parametri attivi.
- Latenza del primo token
- ~200 ms (vs ~80 ms con un modello piccolo su una singola GPU).
- Stesse schede con vLLM tensor parallel
- ~65 tok/s con una singola richiesta, ma ~400 tok/s complessivi con 10 richieste parallele.
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.