VRAM NVIDIA come swap su Linux per AI

Nuovo tool GitHub permette di usare VRAM GPU NVIDIA come spazio swap su Linux, utile per laptop con memoria saldata ed esecuzione di modelli AI più grandi in locale.

VRAM NVIDIA come swap su Linux per AI

nbd-vram trasforma la memoria video in spazio di swap

Un repository pubblicato su GitHub propone di usare la VRAM delle GPU NVIDIA come dispositivo di swap su Linux. Il progetto, chiamato nbd-vram, nasce per laptop con RAM saldata e senza possibilità di espansione. Alloca fino a 7 GB di VRAM tramite API CUDA e li espone come block device attraverso il protocollo NBD su socket Unix. Il risultato dichiarato è un aumento della memoria indirizzabile da 16 GB a circa 46 GB, combinando RAM, VRAM, zram e swap su SSD.

Come funziona tecnicamente il meccanismo

A conceptual 3D diagram showing data flow between a computer's CPU, system RAM, and a dedicated GPU via a glowing PCIe lane, with abstract data blocks moving into the GPU's VRAM, modern dark tech aesthetic with neon blue and green accents, no text or logos

Il demone alloca memoria sulla GPU con le chiamate cuMemcpyHtoD e cuMemcpyDtoH. Non richiede moduli kernel personalizzati né simboli NVIDIA. Il driver NBD integrato nel kernel collega il socket al device /dev/nbdX, che viene poi configurato come swap con priorità alta. L’ordine di riempimento è RAM, poi VRAM su PCIe, quindi zram e infine disco. Il codice evita l’API nvidia_p2p_get_pages_persistent perché su GPU GeForce consumer restituisce sempre EINVAL. La scelta del socket Unix riduce la latenza rispetto a connessioni di rete.

Vantaggi e limiti per chi sviluppa automazioni AI

Per carichi di inferenza o fine-tuning su laptop con GPU mobile, la soluzione permette di tenere in memoria dataset più grandi senza toccare subito lo SSD. Il progetto è stato testato su Pop!_OS con kernel 6.17 e driver 580.159.03, usando una RTX 3070 Laptop da 8 GB. Lo svantaggio principale è la latenza PCIe: il trasferimento tra host e VRAM è più lento dell’accesso diretto alla RAM. Inoltre, se la GPU è usata anche per rendering o calcolo simultaneo, la contesa sulla memoria video può ridurre le prestazioni complessive. Il repository

nbd-vramc0dejedi
Vedi su GitHub →
fornisce script di installazione e disinstallazione, ma richiede comunque una configurazione manuale del file di swap.

Configurazione e test pratici

A sleek modern laptop open on a desk with abstract glowing data streams and neural network nodes floating above the keyboard, symbolizing machine learning and system configuration, dark ambient lighting with purple and cyan hues, no text or logos

L’installazione prevede la compilazione del demone e l’avvio del servizio systemd. Una volta montato /dev/nbd0 come swap, si può verificare l’ordine con swapon --show. Gli script inclusi controllano anche lo stato di alimentazione della GPU per evitare allocazioni quando la scheda è spenta. Chi lavora con pipeline di machine learning può integrare questo swap in script di addestramento che superano i limiti della RAM fisica, ma deve monitorare la temperatura e il consumo della GPU durante sessioni prolungate.

FAQ

Funziona solo con schede RTX? Il codice è stato verificato su RTX 3070 Laptop, ma l’allocazione CUDA è supportata anche su altre architetture Turing e successive.

Serve ricompilare dopo aggiornamenti kernel? No. Il demone gira in user space e usa solo il driver NVIDIA e il modulo nbd già presente nel kernel.

La VRAM resta disponibile per CUDA durante l’uso come swap? Parte della VRAM viene riservata al demone, quindi la memoria libera per altri carichi CUDA diminuisce proporzionalmente.

---

📖 Leggi anche

Hai bisogno di una consulenza?

Aiuto aziende e startup a sviluppare software, automatizzare processi e integrare AI. Parliamone.

Scrivimi
← Torna al blog