Rendez vos ZeroGPU Spaces plus rapides avec la compilation AoT de PyTorch
Sources: https://huggingface.co/blog/zerogpu-aoti, Hugging Face Blog
TL;DR
- ZeroGPU Spaces peut désormais tirer parti de la compilation ahead-of-time (AoT) de PyTorch pour réduire la latence et les temps de démarrage à froid des tâches GPU.
- AoT permet d’exporter un modèle compilé une fois et de le recharger instantanément dans de nouveaux processus, offrant des démonstrations plus réactives sur Hugging Face Spaces avec le matériel Nvidia H200.
- Des gains réels d’environ 1,3× à 1,8× ont été observés sur des modèles tels que Flux.1-dev, Wan et LTX; la quantification FP8 peut ajouter environ 1,2× de vitesse supplémentaire.
- Le flux de travail s’appuie sur spaces.aoti_capture et spaces.aoti_compile, plus spaces.aoti_apply pour patcher le pipeline en toute sécurité sans conserver de gros paramètres du modèle en mémoire.
- MIG slices actuels sur ZeroGPU: 3g.71gb; une tranche complète 7g.141gb est attendue fin 2025.
- ZeroGPU peut être combiné avec Flash-Attention 3 (FA3) pour accélérer davantage les charges de travail. Pour plus de détails, consultez le post Hugging Face d’origine. Source
Contexte et antécédents
Spaces est une plateforme Hugging Face permettant aux praticiens ML de publier des démos d’applications avec des GPU puissants. ZeroGPU évite de réserver un GPU en permanence pour chaque Space, en allouant la ressource GPU uniquement en cas d’activité, ce qui optimise les ressources lorsque le trafic est clairsemé et irrégulier. L’approche traditionnelle oblige à initialiser le pilote NVIDIA lors de l’appel .to(‘cuda’), ce qui fixe le processus CUDA de manière permanente. ZeroGPU adopte une approche de démarrage à la demande: il bifurque le processus, configure CUDA pour la tâche, exécute le travail et libère le GPU ensuite. Cette approche repose sur le package spaces et sur le décorateur GPU. Mais AoT apporte une optimisation importante: elle permet d’exporter un programme compilé et de le réutiliser rapidement sans recompilation, ce qui réduit les surcoûts et les temps de démarrage. Référence à l’article d’origine sur AoT par Hugging Face. Source
Ce qui est nouveau
L’objectif est de compiler à l’avance le composant transformer (la partie denoiser dans de nombreux modèles génératifs), car c’est le cœur du coût de calcul. Le flux intègre plusieurs éléments du package spaces:
- aoti_capture: utilisé comme gestionnaire de contexte pour intercepter les appels du transformer et enregistrer les entrées simulées.
- torch.export.export: exporte le transformer en PyTorch ExportedProgram, qui est un graphe de calcul avec les paramètres.
- spaces.aoti_compile: wrapper autour de torch._inductor.aot_compile qui gère l’enregistrement et le chargement paresseux du modèle compilé.
- spaces.aoti_apply: patch sûr du pipeline en remplaçant forward par le modèle compilé et en nettoyant les paramètres pour éviter les fuites mémoire.
- Encadrement par @spaces.GPU: tout doit être exécuté dans ce cadre pour bénéficier du matériel et du tuning spécifiques à AoT.
- Compatibilité: remplacer directement par compiled_transformer peut supprimer des attributs importants; spaces.aoti_apply assure une intégration propre. Concrètement, à partir de l’exemple ZeroGPU de base et en utilisant le transformeur Flux.1-dev, on observe environ 1,7× d’accélération avec AoT sur ZeroGPU. Cela démontre qu’un seul passage de compilation AoT peut apporter des gains significatifs pour les démonstrations dans Spaces. La quantification FP8 peut être associée à AoT pour des gains supplémentaires. FP8 nécessite une compute capability CUDA d’au moins 9.0, ce qui est satisfait par les GPUs H200 dans ZeroGPU. TorchAO rend ce flux possible et permet d’explorer la quantification et les formes dynamiques lors de l’exportation (transformer_dynamic_shapes). Pour Flux.1-Dev, les entrées d’exemple et les plages dynamiques sont déterminées par l’analyse des shapes de hidden_states sous des résolutions variées. Dans les cas où le dynamisme est très important (comme Wan pour la génération vidéo), on peut compiler un modèle par résolution et dispatcher le bon artefact au moment de l’exécution. FA3 (Flash-Attention 3) est compatible avec AoT, offrant davantage d’accélérations pour les calculs d’attention; l’installation et l’optimisation de FA3 peuvent prendre du temps et dépendent du hardware. Des démonstrations complètes existent dans zerogpu-aoti-multi.py et dans Wan 2.2 Space. Ensemble, AoT, quantification FP8 et formes dynamiques offrent un cadre pratique pour accélérer les démos sur Spaces avec ZeroGPU.
Pourquoi cela compte (impact pour les développeurs/entreprises)
AoT avec ZeroGPU Spaces permet des démonstrations plus rapides sans nécessiter des GPU continuellement allumés. La latence réduite au démarrage bénéficie grandement aux flux de démonstration et améliore l’expérience utilisateur final. Sur le plan architectural, compiler puis réutiliser le artefact AoT s’aligne avec l’objectif de ZeroGPU d’utilisation efficace des ressources GPU à la demande. Les entreprises et équipes utilisant Spaces obtiennent plusieurs avantages:
- Démos plus rapides et cycles d’itération plus courts.
- Meilleure utilisation des ressources en évitant les initialisations CUDA répétées.
- Potentiel de throughput accru grâce à la quantification FP8 et aux formes dynamiques.
- Option de gestion par résolution lorsque le dynamisme est élevé, en conservant les paramètres partagés. Les informations techniques viennent du post Hugging Face original; consultez la source pour les détails. Source
Détails techniques ou Mise en œuvre
La mise en œuvre décrit un flux concret dans un Spaces ZeroGPU:
- Préparer des entrées d’exemple via spaces.aoti_capture pour représenter les tenseurs d’inférence réels.
- Exporter le transformer en PyTorch ExportedProgram avec torch.export.export.
- Compiler via spaces.aoti_compile, qui encapsule aot_compile et gère le chargement paresseux du modèle compilé.
- Appliquer le patch via spaces.aoti_apply pour remplacer forward par le modèle compilé et nettoyer les paramètres.
- Encapsuler le tout dans une fonction @spaces.GPU afin d’assurer l’accès au matériel réel et le tuning matériel.
- L’inférence via AoT: le transformer compilé peut être réutilisé sans réexportation, réduisant le coût total par exécution. Knobs pratiques:
- Quantification FP8 avec TorchAO: accélère les générations d’images/vidéos en complément d’AoT, sous réserve de la compatibilité matérielle.
- Formes dynamiques: exportez avec transformer_dynamic_shapes pour traiter facilement différentes résolutions d’entrée.
- Wan et résolutions multiples: lorsque le dynamisme est élevé, compiler par résolution et dispatcher le bon artefact à l’exécution.
- FA3: compatible avec AoT pour accélérer l’attention; la construction et le tuning peuvent prendre du temps et dépendre du hardware. Notes matérielles et capacités:
- MIG slices: ZeroGPU dispose actuellement d’un MIG slice de 3g.71gb; un slice complet 7g.141gb est prévu pour fin 2025.
- Compatibilité: AoT nécessite un environnement CUDA réel et ne peut être entièrement simulé hors du frame @spaces.GPU. Pour ceux qui veulent commencer, les exemples Flux.1-Dev, Wan et LTX illustrent les gains pratiques avec AoT. Le post Hugging Face d’origine offre une vue détaillée du processus. Source
Points clés
- AoT permet la réutilisation immédiate du modèle compilé entre processus ZeroGPU, réduisant la latence de démarrage.
- L’intégration avec aoti_capture, aoti_compile et aoti_apply rend l’amélioration accessible même pour des demos existantes dans Spaces.
- FP8 et formes dynamiques apportent des gains additionnels et élargissent les scénarios d’utilisation.
- Wan montre une approche par résolution lorsque le dynamisme est élevé, tout en réutilisant les paramètres partagés.
- FA3 est compatible et peut offrir des accélérations supplémentaires sur les calculs d’attention.
FAQ
-
- **Q : Qu’est-ce que AoT dans ce contexte ?** **
AoT signifie compilation à l’avance. Elle exporte un modèle compilé et le réutilise rapidement dans de nouveaux processus, réduisant les coûts et la latence d’inférence. - **
-
Comment activer AoT dans un ZeroGPU Space ?** **
Utilisez aoti_capture pour les entrées, exportez avec torch.export.export, compilez via spaces.aoti_compile et appliquez via spaces.aoti_apply dans une fonction @spaces.GPU. - **
-
Quels modèles bénéficient le plus ?** **
Les architectures où le transformer constitue le cœur du calcul, comme Flux.1-dev, Wan et LTX, tirent des gains significatifs. - **
-
FP8 est-il compatible ?** **
Oui, avec TorchAO; FP8 peut apporter environ 1,2× de vitesse supplémentaire, à condition que le matériel supporte compute capability 9.0+. - **
-
Y a-t-il des considérations mémoire ?** **
L’utilisation de spaces.aoti_apply aide à éviter de conserver les paramètres originaux en mémoire et à prévenir les OOM pendant l’exécution.
Références
- Article Hugging Face sur ZeroGPU AoT: https://huggingface.co/blog/zerogpu-aoti
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.
Scaleway rejoint les Fournisseurs d’Inference de Hugging Face pour une Inférence Serverless et Faible Latence
Scaleway est désormais un Fournisseur d’Inference pris en charge sur Hugging Face Hub, permettant l’inférence serverless directement sur les pages de modèles avec les SDK JS et Python. Accédez à des modèles open-weight populaires et bénéficiez d’une latence réduite.
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.