Come configurare NVLink su un VPS con configurazione multi-GPU

NVLink è l’interconnessione ad alta larghezza di banda ed efficienza energetica di NVIDIA per il collegamento di più GPU, che offre una larghezza di banda di comunicazione significativamente superiore rispetto al PCIe tradizionale. Per gli scienziati dei dati, gli ingegneri del ML e gli utenti del calcolo ad alte prestazioni (HPC), NVLink offre una condivisione della memoria delle GPU senza soluzione di continuità, riducendo i colli di bottiglia e consentendo una formazione e un’inferenza più rapide.

Ma è possibile utilizzare NVLink in un VPS? La risposta è , ma con importanti avvertenze. Analizziamo cos’è NVLink, come configurarlo e cosa è necessario per farlo funzionare in un ambiente server virtualizzato.

Limitazioni e avvertenze

  • Non tutti i fornitori di VPS supportano le configurazioni NVLink.

  • Solo le VPS basate su bare-metal o le macchine virtuali con GPU dedicate con passthrough diretto consentono il funzionamento di NVLink.

  • Non è possibile supportare NVLink in ambienti containerizzati come Docker, a meno che non venga eseguito direttamente sull’host.

Che cos’è NVLink?

NVLink permette a due o più GPU NVIDIA compatibili di:

  • Condividere la memoria tra le GPU per i dataset di grandi dimensioni

  • Scambiare dati con una banda passante totale fino a 600 GB/s

  • Eseguire allenamenti multi-GPU più rapidi senza coinvolgere la CPU

Supportato da GPU come:

  • NVIDIA A100, V100, RTX 3090, 4090, A6000, ecc.

  • Di solito richiede un ponte NVLink fisico

NVLink in VPS: prerequisiti

Prima di tentare di configurare NVLink su un VPS, è necessario verificare quanto segue:

Hardware dell’host

  • Il server fisico deve avere:

    • Almeno due GPU compatibili con NVLink

    • Bridge NVLink installato

    • BIOS e firmware che supportino NVLink

  • Le configurazioni compatibili più comuni includono due A100 o RTX 3090 con bridge NVLink.

Configurazione del VPS

  • Il VPS deve essere fornito con un hypervisor abilitato al GPU Passthrough, come ad esempio:

    • KVM/QEMU con VFIO (PCI passthrough)

    • VMware ESXi con DirectPath I/O

    • Proxmox VE con GPU passthrough

⚠️ Nota: NVLink non funziona tra i dispositivi virtualizzati a meno che entrambe le GPU non vengano passate come dispositivi PCIe completi alla stessa VM.

Passo dopo passo: come configurare NVLink su un VPS

Passo 1: Assicurare il passaggio delle GPU

L’host deve passare entrambe le GPU fisiche direttamente al VPS.

Per KVM/QEMU con VFIO:

# Esempio di assegnazione di due GPU tramite vfio-pci
echo "vendor_id device_id" > /sys/bus/pci/devices/0000:65:00.0/driver/unbind
echo "vendor_id device_id" > /sys/bus/pci/devices/0000:66:00.0/driver/unbind
echo "vendor_id device_id" > /sys/bus/pci/drivers/vfio-pci/new_id

Aggiornare libvirt o qemu XML per far passare entrambe le GPU.

Passo 2: installare i driver NVIDIA

All’interno del VPS (sistema operativo guest), installare il driver NVIDIA più recente:

sudo apt update
sudo apt install -y nvidia-driver-535

Riavviare dopo l’installazione.

Passo 3: verifica della topologia NVLink

Una volta all’interno del sistema operativo guest:

nvidia-smi topo -m

Si dovrebbe vedere:

GPU0GPU1Affinità della CPU
GPU0XNV10-15
GPU1NV1X0-15

Dove NV1 significa che NVLink è attivo tra GPU0 e GPU1.

Passo 4: Abilitare l’accesso Peer-to-Peer (facoltativo ma consigliato)

nvidia-smi p2p

Assicurarsi che Peer-to-Peer e Accesso siano entrambi contrassegnati come abilitati.

Considerazioni sulla sicurezza

  • Accesso isolato: Assicuratevi che il vostro VPS non sia oversubscribed o co-hosted con altri quando usate il passthrough completo della GPU.

  • Nessuna perdita di memoria condivisa: NVLink crea uno spazio di memoria condivisa che limita l’accesso agli ambienti affidabili.

  • Controllare l’accesso ai dispositivi /dev/nvidia*.

Risoluzione dei problemi di NVLink

SintomoPossibile causaCorrezione
NVLink non viene visualizzato in nvidia-smiLe GPU non sono collegate correttamente al bridgeSpegnere l’host e reinstallare il bridge NVLink fisico
Solo una GPU visibileConfigurazione errata del passthroughControllare le impostazioni XML della macchina virtuale/device passthrough
Peer-to-peer disabilitatoErrore nel driver o nelle impostazioni del BIOSAggiornare il driver, controllare il BIOS per il supporto NVLink
Bassa larghezza di bandaCorsie NVLink sottoutilizzateUsare nvidia-smi nvlink –status per verificare le corsie

NVLink è una svolta per i carichi di lavoro ad alta intensità di GPU e offre immensi vantaggi in termini di prestazioni quando viene configurato correttamente, anche negli ambienti virtuali. Con il passthrough diretto della GPU e un’attenta configurazione, è possibile sfruttare la potenza delle interconnessioni multi-GPU su un VPS, trasformandolo in un nodo di elaborazione ad alte prestazioni per le applicazioni più esigenti.