Comment configurer NVLink sur un VPS avec une configuration multi-GPU

NVLink est l’interconnexion haute bande passante et économe en énergie de NVIDIA pour relier plusieurs GPU, fournissant une bande passante de communication nettement plus élevée que le PCIe traditionnel. Pour les data scientists, les ingénieurs ML et les utilisateurs de calcul haute performance (HPC), NVLink offre un partage transparent de la mémoire des GPU, réduisant les goulots d’étranglement et permettant un entraînement et une inférence plus rapides.

Mais pouvez-vous utiliser NVLink dans un VPS ? La réponse est oui, mais avec d’importantes mises en garde. Voyons ce qu’est NVLink, comment le configurer et ce qui est nécessaire pour qu’il fonctionne dans un environnement de serveur virtualisé.

Limites et mises en garde

  • Tous les fournisseurs de SDV ne prennent pas en charge les configurations NVLink.

  • Seules les machines virtuelles basées sur le bare-metal ou les machines virtuelles dédiées au GPU avec un passage direct permettent à NVLink de fonctionner.

  • NVLink n’est pas pris en charge dans les environnements conteneurisés tels que Docker, sauf s’ils sont exécutés directement sur l’hôte.

Qu’est-ce que NVLink ?

NVLink permet à deux ou plusieurs GPU NVIDIA compatibles de :

  • Partager la mémoire entre les GPU pour les grands ensembles de données

  • Échanger des données avec une bande passante totale pouvant atteindre 600 Go/s

  • Effectuer un entraînement multi-GPU plus rapide sans intervention du CPU

Pris en charge sur des GPU tels que :

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

  • Nécessite généralement un pont NVLink physique

NVLink dans un SPV : conditions préalables

Avant d’essayer de configurer NVLink sur un VPS, vérifiez les points suivants :

Matériel hôte

  • Le serveur physique doit avoir

    • Au moins deux GPU compatibles NVLink

    • Un ou plusieurs ponts NVLink installés

    • Un BIOS et un firmware qui prennent en charge NVLink

  • Les configurations compatibles les plus courantes comprennent un double A100 ou une RTX 3090 avec un pont NVLink.

Configuration du VPS

  • Le VPS doit être provisionné sur un hyperviseur compatible avec le GPU passthrough, comme :

    • KVM/QEMU avec VFIO (PCI passthrough)

    • VMware ESXi avec DirectPath I/O

    • Proxmox VE avec GPU passthrough

⚠️ Remarque : NVLink ne fonctionne pas sur les périphériques virtualisés à moins que les deux GPU ne soient transmis en tant que périphériques PCIe complets à la même VM.

Étape par étape : Comment configurer NVLink sur un VPS

Étape 1 : Assurer le passage des GPU

L’hôte doit transmettre les deux GPU physiques directement à votre VPS.

Pour KVM/QEMU avec VFIO :

# Exemple d’assignation de deux GPU via 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

Mettez à jour libvirt ou qemu XML pour faire passer les deux GPU.

Etape 2 : Installer les pilotes NVIDIA

Dans le VPS (système d’exploitation invité), installez le dernier pilote NVIDIA:

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

Redémarrez après l’installation.

Étape 3 : Vérifier la topologie NVLink

Une fois dans le système d’exploitation invité :

nvidia-smi topo -m

Vous devriez voir :

GPU0GPU1Affinité avec le CPU
GPU0XNV10-15
GPU1NV1X0-15

NV1 signifie que NVLink est actif entre GPU0 et GPU1.

Étape 4 : Activer l’accès Peer-to-Peer (facultatif mais recommandé)

nvidia-smi p2p

Assurez-vous que les options Peer-to-Peer et Access sont toutes deux marquées comme Enabled (activées).

Considérations de sécurité

  • Accès isolé: Assurez-vous que votre VPS n’est pas sursouscrit ou co-hébergé avec d’autres lorsque vous utilisez le GPU passthrough complet.

  • Pas de fuite de mémoire partagée: NVLink crée un espace de mémoire partagée dont l’accès est limité aux environnements de confiance.

  • Auditer l’accès aux périphériques /dev/nvidia*.

Dépannage des problèmes liés à NVLink

SymptômeCause possibleCorrection
NVLink n’apparaît pas dans nvidia-smiLes GPU ne sont pas pontés correctementMettre l’hôte hors tension et réinstaller le pont NVLink physique
Un seul GPU visibleMauvaise configuration du passthroughVérifier les paramètres XML/device passthrough de la VM
Peer-to-peer désactivéMauvaise adaptation du pilote ou des paramètres du BIOSMettre à jour le pilote, vérifier la prise en charge de NVLink par le BIOS
Faible bande passanteLes voies NVLink sont sous-utiliséesUtilisez nvidia-smi nvlink –status pour vérifier les voies

NVLink change la donne pour les charges de travail intensives en GPU, offrant d’immenses avantages en termes de performances lorsqu’il est correctement configuré, même dans les environnements virtuels. Grâce à un passage direct du GPU et à une configuration minutieuse, vous pouvez exploiter la puissance des interconnexions multi-GPU sur un VPS et le transformer en un nœud de calcul haute performance pour les applications exigeantes.