Avanzato 22 minPrestazione

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 →

Di Mohamed Meguedmi·Agg. 2026-08-27·Testato su Windows, macOS e Linux
Hardware consigliato

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.
i
Regola empirica
Per un solo utente e per la semplicità: suddivisione per livelli (llama.cpp/Ollama). Per servire più utenti e privilegiare il throughput: parallelismo tensoriale (vLLM).

#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

Split layer
./build/bin/llama-cli \
  -m ./models/qwen3-coder-30b-a3b-q8_0.gguf \
  -ngl 99 \
  --split-mode layer \
  --tensor-split 0.5,0.5 \
  -p "..."

--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).

Suddivisione per righe (a volte più veloce)
./build/bin/llama-cli \
  -m ./models/qwen3-coder-30b-a3b-q8_0.gguf \
  -ngl 99 \
  --split-mode row \
  ...

#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.

Variabili utili
# Limiter à certains GPU
export CUDA_VISIBLE_DEVICES=0,1

# Ou pour AMD
export ROCR_VISIBLE_DEVICES=0,1

systemctl restart ollama
Verifica la distribuzione
ollama ps
# Doit afficher le modèle réparti : PROCESSOR = 100% GPU,
# réparti sur les deux cartes vu par nvidia-smi

#3. Parallelismo tensoriale con vLLM

Avviare vLLM con 2 GPU
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen3-Coder-30B-A3B-Instruct \
  --tensor-parallel-size 2 \
  --quantization awq \
  --dtype auto \
  --port 8000

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%.

→
Schede identiche per vLLM
Il parallelismo tensoriale funziona al meglio con schede identiche. 2× RTX 3090 o 2× 4090: OK. Una 3090 + una 4070: vLLM prenderà la più lenta come riferimento, lasciando sottoutilizzata la più veloce.

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.
!
Bottleneck PCIe
Se una delle tue schede usa un collegamento PCIe x4 (ad esempio in uno slot secondario collegato al chipset), puoi perdere il 40% delle prestazioni in split layer e ancora di più in tensor parallel. Verifica con nvidia-smi o GPU-Z prima di dare la colpa al resto della configurazione.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.