Questo articolo contiene link di affiliazione. ServerDiCasa partecipa al Programma Affiliazione Amazon EU: se acquisti passando dai link presenti in questa pagina, il sito riceve una commissione senza costi aggiuntivi per te. Questo non influisce sulle valutazioni, che restano basate sui test descritti.
Venerdì ho scoperto che il processore non era il collo di bottiglia del mio homelab: girava alla frequenza piena, a 42 gradi, e la velocità di generazione si prevedeva con una divisione sulla banda di memoria.
La domanda successiva era ovvia: quanta RAM serve per IA locale, davvero?
La risposta ha due parti, e quasi tutte le guide che ho letto le confondono in una sola. Con un terzo elemento in fondo — quello che ho scoperto misurando — che non ho trovato scritto da nessuna parte.
La RAM decide due cose diverse, e vanno separate
Quando si chiede “quanta RAM serve per far girare un modello”, si stanno in realtà facendo due domande distinte.
La prima è una soglia. Il modello si carica o non si carica. È una risposta secca: sotto una certa quantità di memoria libera, Ollama non parte e basta. Qui la RAM decide cosa puoi fare.
La seconda è la velocità. Ed è dove sta l’equivoco: aggiungere RAM non fa andare il modello più veloce. La velocità dipende dalla banda di memoria, non dalla quantità. Sono due caratteristiche diverse dello stesso componente, come la capienza di un serbatoio e la portata del tubo che lo riempie.
Nell’articolo precedente avevo ricavato la formula dalle misure:
token/s ≈ 7,15 ÷ (dimensione del modello in GB)
Il 7,15 è la banda utile che il mio sistema riesce davvero a muovere. Non cambia se aggiungo un banco di RAM da 8 GB: cambierebbe solo se aggiungessi un banco che raddoppia la banda, cioè attivando il dual channel.
Da qui discende una conseguenza che vale la pena mettere in chiaro subito, perché è controintuitiva: più RAM ti permette di caricare modelli più grandi, che per quella stessa formula sono più lenti.
Quanto occupa davvero un modello
Il file che scarichi non è tutto quello che serve. Al modello vanno aggiunti il contesto e i buffer di calcolo, che crescono con la lunghezza del prompt.
Questi sono i tre modelli che ho misurato sul mio server:
| Modello | File su disco | Token al secondo |
|---|---|---|
| llama3.2:1b | 1,3 GB | 5,47 |
| llama3.2:3b | 2,0 GB | 3,47 |
| mistral:7b | 4,4 GB | 1,68 |
La regola pratica che ne ricavo: conta almeno la dimensione del file più mezzo giga per contesto e buffer, e altrettanto di margine per non mettere il sistema in difficoltà.
La soglia pratica: cosa entra in 8 GB
Il mio server ha 8 GB totali, ma non sono 8 GB disponibili. Sulla macchina girano sedici container di servizio — Jellyfin, Home Assistant, Pi-hole, la suite *arr, i backup — e quello che resta libero, a regime, sono circa 5,7 GB: 5740 MB nella misura che riporto più avanti.
È la differenza che spiega perché i requisiti dichiarati dai modelli non corrispondono mai alla realtà di un homelab: quei numeri presuppongono una macchina dedicata, e la tua non lo è.
Con 5,7 GB liberi:
- 1B e 3B: entrano larghi, nessun problema
- 7B: entra, ma occupa quasi tutto quello che c’è
- 13B e oltre: non se ne parla
Ed è proprio sul 7B che ho trovato la cosa più interessante.
Il costo nascosto: il 7B funziona, ma non è gratis
Mi aspettavo che il modello da 4,4 GB non fosse misurabile su questa macchina. Che andasse in swap, cioè che il sistema iniziasse a usare il disco come memoria, e che i numeri diventassero spazzatura.
Non è andata così. Il modello funziona, e in questa prova ha dato 1,66 – 1,66 – 1,66 token al secondo su tre esecuzioni consecutive: sempre lo stesso valore, in linea con gli 1,68 del benchmark riportato sopra. Quella regolarità è la prova che il modello non è finito su disco: se ci fosse finito, i tempi ballerebbero.
Ma guardando cosa succedeva alla memoria mentre girava, il quadro cambia:
| Momento | Swap in uso | Memoria disponibile |
|---|---|---|
| Prima del test | 743 MB | 5740 MB |
| Modello caricato | 1263 MB | 1347 MB |
| Durante le esecuzioni | fino a 1752 MB | — |
Lo swap è cresciuto di circa un giga. Ma non è il modello a esserci finito: sono gli altri servizi.
Per fare spazio ai 4,4 GB del modello, il sistema ha sfrattato su disco parte della memoria di Jellyfin, di Home Assistant e degli altri container. Restano tutti attivi e funzionanti — ma con una porzione delle loro pagine sull’HDD. Al prossimo accesso a Jellyfin, quelle pagine vanno rilette dal disco, e quel ritardo lo paghi tu.
Il 7B su 8 GB non è “non funziona”: è “funziona a spese di qualcos’altro”. Ed è una distinzione che cambia completamente la decisione, perché il costo non compare nel benchmark del modello — compare nella lentezza di un servizio che sembra non c’entrare niente.
Perché “non misurabile” sarebbe stata la risposta sbagliata
Prima di fare il test ero convinto di dover scrivere che il 7B su 8 GB non si può misurare. Sarebbe stata una conclusione comoda e sbagliata.
La lezione metodologica è semplice e vale ben oltre questo caso: controlla lo swap prima e dopo, non solo durante. Se lo swap non cresce, la misura è pulita. Se cresce ma i tempi restano stabili, il modello sta bene e a pagare è qualcos’altro. Se cresce e i tempi ballano, stai misurando il disco e il numero non vale niente.
Tre situazioni diverse che un benchmark superficiale riassumerebbe tutte come “gira” o “non gira”.
Quanta RAM comprare, allora
Dai numeri che ho raccolto, queste sono le fasce che consiglierei — con una premessa: valgono per una macchina che fa anche altro, che è la situazione normale di un homelab.
8 GB — modelli fino a 3B in scioltezza. Il 7B lo carichi, ma solo se accetti di rallentare il resto. È la mia configurazione attuale, e per compiti in background va benissimo.
16 GB — il 7B gira senza sfrattare nessuno, e ti resta margine per i servizi. È il salto che ha più senso in rapporto alla spesa: un secondo banco DDR3 da 8 GB costa circa 25 euro.
32 GB — puoi caricare modelli più grandi, ma ricordati la formula: un modello da 13 GB su questa banda darebbe mezzo token al secondo. Servono se fai girare più cose insieme, non se vuoi andare più veloce.
Una precisazione doverosa sul mio caso: sul mio server il secondo slot di RAM è guasto, quindi il passaggio a 16 GB non posso farlo e non ho potuto misurarlo. I 25,6 GB/s di banda del dual channel restano un valore teorico. Se il tuo slot funziona, prima di guardare i processori guarda quanti banchi hai montato — è il controllo più economico che esista.
Domande frequenti
Quanta RAM serve per far girare un LLM in locale?
Dipende da quale modello e da cosa fa già la macchina. Come regola pratica: la dimensione del file del modello, più mezzo giga per contesto e buffer, più il margine per i servizi che girano già. Su un homelab con qualche container attivo, 8 GB reggono modelli fino a 3B e 16 GB permettono di usare un 7B senza penalizzare il resto.
Aggiungere RAM fa andare più veloce un modello locale?
No, non di per sé. La velocità di generazione dipende dalla banda di memoria, non dalla quantità. Aggiungere un banco fa andare più veloce solo se attiva il dual channel, che raddoppia la banda. Aggiungere capacità senza aumentare la banda ti permette solo di caricare modelli più grandi — che, a parità di banda, sono più lenti.
Come faccio a sapere se il modello sta andando in swap?
Confronta free -h prima di caricare il modello e durante l’esecuzione. Se lo swap cresce ma i tempi di risposta restano stabili, non è il modello a essere finito su disco: sono gli altri processi. Se cresce e i tempi diventano irregolari, stai misurando l’HDD e quel dato va scartato.
Conclusione
Alla domanda su quanta RAM serve per IA locale la risposta è su tre livelli: la RAM decide cosa puoi caricare, la banda decide quanto va veloce, e i servizi che hai già acceso decidono quanto margine ti resta davvero.
Nel mio caso il risultato pratico è che il 3B è il punto di equilibrio: entra comodo, non disturba nessuno, e a 3,47 token al secondo va bene per tutto ciò che gira in background senza che io stia a guardare.
Resta però il capitolo che ho aperto venerdì e non ho ancora chiuso: dentro quel case c’è una GTX 750 Ti che non ho mai usato. E la VRAM di una scheda video è memoria che gli altri servizi non toccano — il che, su una macchina dove la RAM è la risorsa scarsa, cambia parecchio le carte in tavola.
Ne parlo nel prossimo articolo.
Nota: tutte le misure sono state raccolte sul mio homeserver con i servizi di produzione attivi, non su una macchina dedicata. I valori relativi al dual channel sono teorici, perché lo slot RAM libero della macchina è guasto.
Questo articolo fa parte di IA locale su hardware di recupero, la serie in cui provo a far girare modelli in locale su un PC del 2013 misurando tutto: cosa gira davvero, quanto costa tenerlo acceso, a cosa serve. Nell’indice ci sono tutti gli articoli in ordine.
