Qu'est-ce que le GPU Passthrough ?
Le GPU passthrough est une technique de virtualisation qui permet d'attribuer directement un processeur graphique physique (GPU) à une seule machine virtuelle (VM). La VM peut ainsi accéder à toutes les capacités du GPU, comme si elle fonctionnait sur du matériel physique. Le GPU passthrough contourne la couche d'abstraction de l'hyperviseur, offrant des performances quasi natives pour les charges de travail gourmandes en ressources graphiques ou en calcul.
Cette fonctionnalité est essentielle dans des cas d'utilisation tels que l'infrastructure de bureau virtuel (VDI), l'intelligence artificielle (IA), l'apprentissage automatique (ML) et le calcul haute performance (HPC), où l'accélération GPU est nécessaire pour obtenir des performances optimales. Contrairement aux ressources GPU partagées ou émulées, le passthrough consacre un GPU entier à une seule machine virtuelle, offrant un débit maximal et une latence minimale.
Le GPU passthrough est généralement mis en œuvre à l'aide de plateformes de virtualisation telles que KVM (Kernel-based Virtual Machine), VMware ESXi et Citrix Hypervisor, souvent en combinaison avec la technologie IOMMU (Input-Output Memory Management Unit) disponible dans les processeurs centraux (CPU) et les cartes mères modernes.
Fonctionnement du GPU Passthrough
Le passthrough GPU est rendu possible grâce à une combinaison de prise en charge de la virtualisation au niveau matériel et logiciel, en particulier le passthrough des périphériques PCI Express (PCIe) à l'aide des technologies IOMMU. Cela permet à un GPU physique d'être mappé directement sur une machine virtuelle invitée, contournant ainsi le contrôle du système hôte et donnant à la machine virtuelle un accès direct et à faible latence au GPU.
Configuration matérielle
Pour que le GPU passthrough fonctionne, le serveur doit prendre en charge l'IOMMU (Input-Output Memory Management Unit), qui permet l'isolation des périphériques et le remappage des adresses mémoire pour les périphériques PCIe. Sur les plateformes Intel, cette fonctionnalité est connue sous le nom d'Intel VT-d ; sur AMD , elle est appelée AMD. Les deux doivent être pris en charge par le processeur, le chipset de la carte mère et le micrologiciel.
Pour activer l'IOMMU, les utilisateurs doivent l'activer dans les paramètres BIOS ou UEFI du système. Cela implique généralement d'activer les extensions de virtualisation (VT-d ou AMD) et de s'assurer que PCIe ACS (Access Control Services) est activé si la plate-forme le prend en charge. Certains systèmes peuvent également nécessiter la désactivation de fonctionnalités telles que Secure Boot ou Fast Boot pour bénéficier d'une fonctionnalité de passthrough complète.
Installation du pilote
Une fois le GPU attribué à une machine virtuelle, le système d'exploitation invité (OS) doit être installé avec les pilotes spécifiques au fournisseur appropriés, tels que NVIDIA, AMDou Intel. Ces pilotes permettent au système d'exploitation invité de reconnaître et d'utiliser toutes les capacités du GPU physique, y compris l'accélération 3D, les cœurs CUDA pour le calcul parallèle et les pipelines de rendu accélérés par le matériel.
Dans certains cas, les interfaces graphiques au niveau de l'hyperviseur peuvent devoir être désactivées dans l'invité afin d'éviter les conflits de pilotes, garantissant ainsi que seul le GPU passthrough est utilisé.
Configuration de l'hyperviseur
Une fois l'IOMMU activé, l'étape suivante consiste à configurer un hyperviseur prenant en charge le passthrough PCIe. Parmi les choix les plus courants, on trouve KVM/QEMU, VMware ESXi et Citrix Hypervisor (anciennement XenServer). Ces plateformes utilisent des pilotes de virtualisation de bas niveau et des API pour faciliter l'attribution directe des périphériques PCIe aux machines virtuelles invitées.
Par exemple, dans les environnements KVM, le transfert de périphériques est configuré à l'aide du module noyau vfio-pci, qui garantit un accès sécurisé et isolé aux périphériques. VMware ESXi utilise DirectPath I/O pour exposer le GPU directement à la machine virtuelle, ce qui permet d'obtenir des performances quasi natives avec une surcharge de virtualisation minimale.
Liaison d'appareils
Une étape cruciale dans le transfert GPU consiste à détacher le GPU du système hôte et à le lier à la VM. Pour ce faire, il faut dissocier l'adresse PCIe du GPU de tous les pilotes hôtes par défaut et la lier à un pilote de transfert tel que vfio-pci.
Une fois lié, le GPU est totalement inaccessible au système d'exploitation hôte et ne peut être utilisé que par la machine virtuelle qui lui est attribuée. Cela évite les conflits et garantit un accès exclusif au GPU, ce qui est essentiel pour les charges de travail sensibles à la latence, telles que le rendu en temps réel, la simulation ou l'entraînement de modèles d'apprentissage profond.
Avantages et défis du GPU Passthrough
Le GPU passthrough permet aux machines virtuelles d'accéder directement aux GPU physiques, offrant ainsi des performances quasi natives en contournant la couche d'abstraction de l'hyperviseur. Cela le rend particulièrement adapté aux charges de travail gourmandes en calcul, telles que l'entraînement de l'IA, le rendu de conception assistée par ordinateur (CAO) et les simulations en temps réel. L'attribution d'un GPU dédié à une machine virtuelle améliore également l'isolation et la cohérence des performances, ce qui est essentiel dans les environnements de production.
Au-delà des performances brutes, le passthrough étend les capacités de virtualisation en permettant l'accélération GPU dans les bureaux virtuels, les postes de travail distants et les applications conteneurisées. Il permet aux entreprises de consolider les charges de travail sur un nombre réduit de serveurs physiques tout en conservant des performances élevées par machine virtuelle, ce qui se traduit par une meilleure utilisation du matériel et une efficacité opérationnelle accrue.
Cependant, le GPU passthrough présente des défis techniques. Il nécessite la prise en charge IOMMU au niveau du processeur et de la carte mère, une configuration BIOS ou UEFI correcte, ainsi que des GPU permettant le passthrough. De nombreux GPU grand public ne prennent pas entièrement en charge la virtualisation, ce qui peut entraîner une compatibilité limitée ou des problèmes de pilotes au sein des systèmes d'exploitation invités.
La complexité de la configuration est un autre facteur, qui nécessite souvent des modifications du noyau, une liaison précise des périphériques et un réglage au niveau de l'hyperviseur. Le dépannage prend souvent beaucoup de temps, en particulier sur les serveurs sans écran, et les modifications nécessitent généralement des redémarrages, car la prise en charge du branchement à chaud pour les GPU en mode passthrough est limitée ou indisponible.
Configuration matérielle requise pour le GPU Passthrough
La mise en œuvre du GPU passthrough nécessite un matériel serveur prenant en charge les fonctionnalités de virtualisation IOMMU, telles que Intel VT-d ou AMD, ainsi que des configurations BIOS ou UEFI appropriées. Le processeur, le chipset de la carte mère et le micrologiciel doivent tous être compatibles, et le GPU doit prendre en charge la fonctionnalité passthrough, que l'on trouve généralement dans les cartes de classe entreprise telles que NVIDIA A100 ou AMD MI-series.
De plus, les systèmes doivent offrir suffisamment de voies PCIe et d'alimentation électrique pour prendre en charge les GPU pleine taille. Des plates-formes serveur optimisées pour les charges de travail GPU haute densité, généralement dotées d'une topologie PCIe avancée, d'une architecture de refroidissement robuste et d'une prise en charge du passthrough au niveau du micrologiciel, sont nécessaires pour faciliter les configurations passthrough efficaces dans des environnements de centres de données correctement gérés.
FAQ
- Comment activer le GPU passthrough ?
Le GPU passthrough est activé en activant la prise en charge IOMMU (VT-d ou AMD) dans le BIOS ou l'UEFI du système, puis en configurant votre hyperviseur (tel que KVM ou VMware ESXi) pour attribuer le GPU directement à une machine virtuelle. Vous devez également dissocier le GPU des pilotes hôtes et installer les pilotes GPU appropriés dans la machine virtuelle invitée. - Avez-vous besoin de deux GPU pour le GPU passthrough ?
Bien que cela ne soit pas strictement nécessaire, il est recommandé d'avoir deux GPU. L'un doit être dédié au système hôte, et l'autre à la machine virtuelle. Cela permet à l'hôte de maintenir la sortie d'affichage et la stabilité du système tandis que le GPU passthrough est entièrement isolé pour la VM. - Le GPU passthrough fonctionne-t-il avec les conteneurs ?
Oui, le GPU passthrough peut être utilisé avec des conteneurs s'il est configuré dans une machine virtuelle disposant d'un accès direct au GPU. Il existe également des solutions spécifiques aux conteneurs, telles que NVIDIA Docker ou les frameworks GPU Operator, qui offrent un accès au GPU dans les environnements Kubernetes.