Simplifier les installations Python accélérées par CUDA et les flux d’empaquetage avec les variantes de Wheel
Sources: https://developer.nvidia.com/blog/streamline-cuda-accelerated-python-install-and-packaging-workflows-with-wheel-variants, developer.nvidia.com
TL;DR
- NVIDIA et des partenaires s’attaquent à la réalité du matériel hétérogène dans l’empaquetage Python avec Wheel Variants et l’initiative WheelNext.
- Wheel Variants étend le format de wheel pour décrire des artefacts spécifiques au GPU et au matériel, permettant plusieurs wheels par version de paquet, ABI Python et plateforme.
- Le support expérimental de PyTorch 2.8.0 montre comment les artefacts peuvent être sélectionnés à l’installation en fonction des capacités matérielles locales via des plugins de fournisseurs.
- Wheel Variants maintient la compatibilité descendante: les anciennes versions de pip ignorent les variantes, garantissant le fonctionnement des infrastructures existantes.
- Cette approche peut réduire la bande passante et le stockage dans des environnements comme Docker et les clusters HPC, avec le potentiel futur de roues éclatées selon le matériel.
Contexte et arrière-plan
L’écosystème moderne d’empaquetage Python nécessite souvent des paquets NVIDIA GPU-accelerated (par exemple PyTorch, JAX, RAPIDS) adaptés à une version CUDA spécifique. Les utilisateurs doivent fréquemment naviguer entre divers sites (pytorch.org, jax.dev, rapids.ai, etc.) et copier des commandes d’installation personnalisées avec des URLs d’index spécifiques ou des noms de paquet comme nvidia—cu{11-12}. Ce flux illustre une lacune fondamentale: le format actuel de wheel, conçu pour le calcul CPU et un matériel relativement homogène, ne peut pas exprimer les exigences matérielles pour les GPUs et les configurations spécialisées.
Pour adresser ce problème, NVIDIA a lancé l’initiative WheelNext en open source. L’objectif est de faire évoluer l’empaquetage Python afin de prendre en charge plus efficacement l’informatique scientifique, l’IA et le HPC, en décrivant et livrant des artefacts Python adaptés au hardware. Le projet est soutenu par une collaboration entre NVIDIA, PyTorch et des partenaires de l’écosystème. La feuille de route WheelNext envisage un futur où l’empaquetage reflétera les capacités et configurations matérielles, réduisant les interventions manuelles pour les utilisateurs.
En collaboration avec Meta, Astral et Quansight, NVIDIA lance un support expérimental dans PyTorch 2.8 pour un nouveau format appelé Wheel Variant. Cette préversion explique le fonctionnement des Wheel Variants et leur potentiel pour améliorer les flux de travail réels. L’objectif plus large est de proposer une norme permettant une description précise des artefacts et une sélection automatique de l’artefact le plus adapté pendant l’installation. Vous pouvez explorer WheelNext sur GitHub et suivre les discussions communautaires.
Le format de wheel Python utilise des tags identifiant la compatibilité selon des axes comme la version de Python, l’ABI et la plateforme (par exemple, cp313-cp313-linux_x86_64). Ces tags conviennent pour les paquets CPU, mais ils n’indiquent pas les exigences matérielles nécessaires pour les GPUs, les instructions CPU spécifiques (AVX512, ARMv9, etc.) ou d’autres configurations. Cette lacune pousse les mainteneurs à adopter des stratégies de distribution suboptimales et complexifie l’installation pour les utilisateurs. Wheel Variants comble cette lacune en permettant plusieurs wheels pour la même version, ABI et plateforme, chacune optimisée pour une configuration matérielle donnée.
Le design des variantes décrit, de façon élégante et puissante, les propriétés de variant. Chaque variante reçoit une étiquette (ou un hash SHA-256 généré automatiquement) et est incorporée dans le nom du wheel, garantissant une identification unique et une installation précise.
Le fonctionnement repose sur des plugins de fournisseurs qui analysent l’environnement logiciel et matériel local et orientent l’installation vers l’artefact le plus adapté. Lorsqu’on exécute pip install torch, l’installateur interroge les plugins installés pour comprendre les capacités du système et sélectionner automatiquement la variante de wheel optimale. Si aucun environnement CUDA n’est détecté, on peut recourir à la variante nulle, évitant les échecs d’installation. Cette approche rend l’installation plus robuste et prévisible sur des systèmes hétérogènes.
Quoi de neuf
Le format Wheel Variant représente une évolution vers une norme prête à l’emploi dans l’écosystème Python, permettant à une version donnée d’un paquet d’expédier plusieurs wheels, chacune optimisée pour une configuration matérielle précise. Le format repose sur des propriétés de variante clairement définies et utilise une étiquette ou un hash pour identifier chaque variante. Le nom du wheel intègre cet identifiant, facilitant l’appariement entre l’environnement et l’artefact. Les plugins de fournisseurs constituent le moteur de cette architecture. Ils examinent les capacités matérielles, les versions des pilotes CUDA, les ressources CPU et d’autres signaux, pour indiquer quelle variante correspond le mieux. Par exemple, un système avec CUDA peut préférer une variante spécifique; si CUDA n’est pas détecté, la variante nulle peut être utilisée pour assurer une installation fonctionnelle. Le design demeure compatible avec les versions antérieures: les versions de pip qui ne gèrent pas les variantes les ignorent. Le travail autour de Wheel Variants s’accompagne d’outils pratiques.variantlib propose une CLI pour convertir des artefacts existants en Wheel Variants, facilitant l’expérimentation sans réécrire des processus entiers. Dans le même temps, des travaux sur des backends de build (par exemple, une version modifiée de meson-python) permettent de transmettre les informations de variante au processus de compilation. L’objectif est d’intégrer progressivement ces variantes dans les flux de construction tout en conservant une base stable pour les projets existants. L’effort est explicitly collaboratif: PyTorch, Astral, Quansight, Meta et NVIDIA travaillent ensemble pour pousser l’écosystème vers une meilleure compatibilité et adoption progressive. L’expérience PyTorch 2.8 sert de jalon pour démontrer comment un cadre largement utilisé peut adopter Wheel Variants afin de simplifier l’installation et l’optimisation sur diverses architectures hardware. Pour participer, consultez WheelNext et rejoignez les discussions de la communauté.
Points clés
- Wheel Variants permettent d’expédier plusieurs wheels pour la même version de paquet, adaptée à différentes configurations matérielles.
- Des plugins fournisseurs analysent l’environnement et guident l’installation vers la variante optimale.
- La compatibilité ascendante est assurée: les anciennes versions de pip ignorent les variantes, évitant les ruptures.
- Des bénéfices concrets existent en termes de bande passante, d’espace et de fluidité d’installation dans des environnements Docker et HPC hétérogènes.
- L’initiative WheelNext vise une norme communautaire durable pour l’empaquetage Python face à l’évolution du matériel.
FAQ
-
Que résolvent les Wheel Variants?
Elles étendent le format wheel pour décrire des artefacts matériels spécifiques (GPU et caractéristiques CPU), permettant plusieurs wheels pour la même version et plateforme.
-
Comment l’installation choisit-elle une variante?
Des plugins fournisseurs détectent les capacités matérielles et logicielles locales et orientent vers la variante la plus adaptée; si CUDA est absent, on peut opter pour la variante nulle.
-
Les variantes restent-elles compatibles avec les anciens pip?
Oui. Les anciennes versions de pip ignorent les variantes, préservant les pipelines existants.
-
Où peut-on participer ou en savoir plus?
Consultez le site WheelNext et les ressources associées pour les opportunités de participation et les développements futurs. Voir l’article NVIDIA et WheelNext pour les détails.
Références
More news
NVIDIA HGX B200 réduit l’intensité des émissions de carbone incorporé
Le HGX B200 de NVIDIA abaisse l’intensité des émissions de carbone incorporé de 24% par rapport au HGX H100, tout en offrant de meilleures performances IA et une efficacité énergétique accrue. Cet article résume les données PCF et les nouveautés matérielles.
Prévoir les phénomènes météorologiques extrêmes en quelques minutes sans superordinateur : Huge Ensembles (HENS)
NVIDIA et le Lawrence Berkeley National Laboratory présentent Huge Ensembles (HENS), un outil IA open source qui prévoit des événements météorologiques rares et à fort impact sur 27 000 années de données, avec des options open source ou prêtes à l’emploi.
Comment réduire les goulots d’étranglement KV Cache avec NVIDIA Dynamo
NVIDIA Dynamo déporte le KV Cache depuis la mémoire GPU vers un stockage économique, permettant des contextes plus longs, une meilleure concurrence et des coûts d’inférence réduits pour les grands modèles et les charges AI génératives.
Le Playbook des Grands Maîtres Kaggle: 7 Techniques de Modélisation pour Données Tabulaires
Analyse approfondie de sept techniques éprouvées par les Grands Maîtres Kaggle pour résoudre rapidement des ensembles de données tabulaires à l’aide d’une accélération GPU, des baselines divers à l’assemblage et à la pseudo-étiquetage.
Microsoft transforme le site Foxconn en data center Fairwater AI, présenté comme le plus puissant au monde
Microsoft dévoile des plans pour un data center Fairwater AI de 1,2 million de mètres carrés au Wisconsin, abritant des centaines de milliers de GPU Nvidia GB200. Le projet de 3,3 milliards de dollars promet un entraînement IA sans précédent.
NVIDIA RAPIDS 25.08 Ajoute un Nouveau Profiler pour cuML, Améliorations du moteur GPU Polars et Support d’Algorithmes Étendu
RAPIDS 25.08 introduit deux profils pour cuml.accel (fonctionnel et ligne), l’exécuteur streaming par défaut du moteur Polars GPU, un support de types et chaînes étendu, Spectral Embedding dans cuML et des accélérations zéro-code pour plusieurs estimateurs.