Configurazione di NVLink su un VPS con configurazione multi-GPU

NVLink, l’interconnessione ad alta banda delle GPU di NVIDIA, rivoluziona i carichi di lavoro multi-GPU consentendo una rapida condivisione della memoria e il trasferimento dei dati, superando di gran lunga i limiti del PCIe. Per i data scientist, gli ingegneri di ML e gli utenti HPC, NVLink può accelerare attività come l’addestramento di modelli di deep learning o le simulazioni su larga scala. Ad esempio, è possibile utilizzare NVLink con due GPU A100 per addestrare più rapidamente un modello linguistico di grandi dimensioni mettendo in comune la memoria della GPU. Tuttavia, la configurazione di NVLink in un ambiente virtualizzato è complessa e richiede hardware e impostazioni specifiche. Questa guida spiega NVLink, i suoi limiti in un VPS e come configurarlo per ottenere prestazioni ottimali.

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.