Radar · 04/08/2026 · modelli

Soup: fine-tunare Llama-3.1-8B su una GPU laptop da 4 GB con il layer streaming

Soup è un tool open source che permette di fine-tunare un modello da 8 miliardi di parametri su una GPU laptop da 4 GB. Llama-3.1-8B-Instruct su RTX 3050, 3,32 GB di VRAM di picco, 119,6 token al secondo. I numeri sono dichiarati dagli autori sul repository GitHub.

La tecnica si chiama layer streaming. Invece di caricare tutto il modello in memoria video (che su 4 GB non starebbe), Soup tiene il modello base fuori dalla VRAM e lo alimenta alla GPU un layer di decoder alla volta. Il risultato, dicono gli autori, è bit-exact rispetto a un run normale con il modello residente in memoria.

Per chi vuole adattare un modello ai propri dati senza mandarli su un cloud, il punto è diretto. Il fine-tuning richiedeva GPU dedicate, spesso in affitto a ore. Se un laptop qualunque può fare il lavoro, il salto fra «uso un modello generico» e «addestro un modello mio» diventa più corto. È lo stesso filone dell’inferenza locale nel browser: l’AI utile si avvicina all’hardware che hai già, solo che qui si parla di addestrare, non solo di eseguire.

Il tool è in beta. Il layer streaming è opt-in (stream_layers: true). I numeri sono misurati su un solo hardware (RTX 3050 Laptop 4 GB) e non ancora replicati indipendentemente. La versione 0.72.4 ha aggiunto il supporto a DPO, ORPO, SimPO e KTO, sempre via layer streaming, con il modello di riferimento di DPO ottenuto gratis riusando lo stesso stream di base.

Licenza Apache-2.0, disponibile su GitHub.

Nel dettaglio

Il fine-tuning di un LLM ha un collo di bottiglia semplice: la memoria video. Un modello da 8 miliardi di parametri in precisione NF4 (4 bit per parametro) occupa circa 4 GB solo per i pesi. Su una GPU da 4 GB come la RTX 3050 Laptop, non resta spazio per i gradienti, l’ottimizzatore e il batch di input. Il modello non ci sta.

Layer streaming aggira il problema in modo diretto. Il modello base resta congelato (non viene aggiornato) e caricato in memoria CPU o su disco. Soup lo alimenta alla GPU un decoder layer alla volta: carica il layer, calcola l’attivazione, lo scarica, passa al successivo. La GPU vede solo un layer alla volta, non l’intero modello. Quello che resta in VRAM sono i parametri dell’adattatore LoRA (piccoli, qualche decina di milioni) e il batch corrente.

Gli autori dichiarano 3,32 GB di picco su RTX 3050 4 GB con Llama-3.1-8B-Instruct quantizzato NF4, LoRA, batch 1, sequenza 512 token, a 119,6 token al secondo. Il claim più forte è che il risultato è bit-exact rispetto a un run con il modello residente in VRAM: stessi output, zero differenza. Se confermato, significa che il layer streaming non introduce approssimazioni, solo un riordino di quando i dati transitano in GPU.

La versione 0.72.4 ha esteso il layer streaming ai metodi di preference learning (DPO, ORPO, SimPO, KTO). Il punto interessante è il modello di riferimento di DPO. DPO normalmente richiede due copie del modello: quella che addestri e una di riferimento congelata per il confronto. Due copie su 4 GB sono impossibili. Soup riusa lo stesso stream di base con gli adapter LoRA disattivati: un solo set di pesi, un solo stream. Il costo si paga interamente in tempo di calcolo, senza pesare sulla memoria: DPO legge lo stack di layer 1,52 volte più spesso per step rispetto al supervised fine-tuning. Il picco di VRAM per DPO streammato è 0,914 volte quello del SFT, sempre nei limiti dei 4 GB.

Gli autori sono onesti su cosa non funziona. GRPO e PPO restano esclusi: la generazione di token richiede di rileggere ogni layer, e il layer streaming diventa proibitivo in termini di tempo. KTO, spesso descritto come reference-free, in realtà usa lo stesso schema di riferimento di DPO, e Soup lo tratta di conseguenza.

I limiti sono chiari. I numeri vengono da un solo hardware, misurati dagli autori stessi. Il layer streaming è marcato BETA e opt-in. La velocità di 119,6 tok/s è per batch 1 e sequenza 512: su dati reali, con sequenze più lunghe o batch più grandi, le prestazioni cambiano. Il repo ha 186 star su GitHub e 60 issue aperte, segnale di adozione ancora precoce e attrito reale nell’uso quotidiano.

Il segnale, però, è interessante. Se il layer streaming mantiene la promessa del bit-exact, il fine-tuning locale su consumer GPU smette di essere un esperimento e diventa un’opzione pratica. Per chi ha dati sensibili che non vuole mandare su un cloud, o chi vuole iterare velocemente senza pagare ore di GPU, la differenza conta.

Scrivi per cercare fra corso, playbook, skill, paper…