Hub documentation
Spaces ZeroGPU : Allocation dynamique de GPU pour Spaces
Spaces ZeroGPU : Allocation dynamique de GPU pour Spaces
ZeroGPU est une infrastructure partagée qui optimise l'utilisation des GPU pour les modèles et les démonstrations d'IA sur Hugging Face Spaces. Il alloue et libère dynamiquement des GPU NVIDIA RTX Pro 6000 Blackwell selon les besoins, offrant :
- Accès gratuit aux GPU : Permet une utilisation rentable des GPU pour Spaces.
- Prise en charge multi-GPU : Permet aux Spaces d'exploiter plusieurs GPU simultanément sur une seule application.
Contrairement aux allocations traditionnelles sur un seul GPU, le système efficace de ZeroGPU abaisse les barrières pour les développeurs, les chercheurs et les organisations souhaitant déployer des modèles d’IA, en maximisant l’utilisation des ressources et l’efficacité énergétique.
Utilisation et hébergement des Spaces ZeroGPU
- Using existing ZeroGPU Spaces
- Les Spaces ZeroGPU sont disponibles gratuitement pour tous les utilisateurs. (Consultez la liste sélectionnée).
- Les utilisateurs PRO bénéficient d’un quota d’utilisation quotidien multiplié par 8, de la priorité la plus élevée dans les files d’attente GPU, et peuvent dépasser leur quota quotidien à l’aide de crédits prépayés lors de l’utilisation de n’importe quel Space ZeroGPU.
- Hosting your own ZeroGPU Spaces
- Comptes personnels gratuits : les comptes en règle (e-mail vérifié, compte créé depuis plus de 30 jours) peuvent héberger jusqu'à 2 Spaces ZeroGPU gratuitement.
- Comptes PRO : Souscrivez à PRO pour héberger jusqu'à 10 Spaces ZeroGPU sous votre compte.
- Organisations : souscrivez à un plan Team ou Enterprise pour activer les Spaces ZeroGPU pour tous les membres de l’organisation.
Spécifications techniques
ZeroGPU prend en charge deux tailles de GPU
| Taille du GPU | Matériel de support | Vram | Coût du quota |
|---|---|---|---|
large (par défaut) | Demi NVIDIA RTX Pro 6000 Blackwell | 48 Go | 1× |
xlarge | NVIDIA RTX Pro 6000 Blackwell complet | 96 Go | 2× |
Consultez GPU size selection pour apprendre à utiliser les tailles
Compatibilité
Les Spaces ZeroGPU sont conçus pour être compatibles avec la plupart des Spaces GPU basés sur PyTorch. Bien que la compatibilité soit renforcée pour les bibliothèques de haut niveau de Hugging Face telles que transformers et diffusers, les utilisateurs doivent savoir que :
- Actuellement, les Spaces ZeroGPU sont exclusivement compatibles avec le Gradio SDK.
- Les Spaces ZeroGPU peuvent avoir une compatibilité limitée par rapport aux Spaces GPU standard.
- Des problèmes inattendus peuvent survenir dans certains scénarios.
Versions prises en charge
Gradio : 4+
PyTorch : Presque toutes les versions de 2.8.0 à latest sont prises en charge
Voir la liste complète
- 2.8.0
- 2.9.1
- 2.10.0
- 2.11.0
- 2.12.1
- 2.13.0
Python :
- 3.12.12
- 3.10.13
Démarrer avec ZeroGPU
Pour utiliser ZeroGPU dans votre Space, suivez ces étapes :
- Assurez-vous que le matériel ZeroGPU est sélectionné dans les paramètres de votre Space.
- Importez le module
spaces. - Décorez les fonctions dépendantes du GPU avec
@spaces.GPU.
Ce processus de décoration permet à l'Espace de demander un GPU lorsque la fonction est appelée et de le libérer une fois celle-ci terminée.
Le décorateur
@spaces.GPUest conçu pour être sans effet dans les environnements non-ZeroGPU, garantissant ainsi la compatibilité avec différentes configurations.
Exemple d'utilisation
import spaces
from diffusers import DiffusionPipeline
pipe = DiffusionPipeline.from_pretrained(...)
pipe.to('cuda')
@spaces.GPU
def generate(prompt):
return pipe(prompt).images
gr.Interface(
fn=generate,
inputs=gr.Text(),
outputs=gr.Gallery(),
).launch()Chargement du modèle
Bien qu'un GPU réel ne soit disponible qu'à l'intérieur des fonctions @spaces.GPU, les modèles doivent être placés sur cuda au niveau du module racine (comme illustré dans l'exemple ci-dessus).
Le chargement paresseux ou le déplacement de modèles vers CUDA à l’intérieur de @spaces.GPU est déconseillé, car il est nettement moins efficace (les transferts CUDA sont optimisés pour les placements effectués au démarrage).
Charger des modèles sur
cudaau niveau du module fonctionne car un mode d’émulation CUDA de PyTorch est activé en dehors des fonctions@spaces.GPU, ce qui permet d’exécuter des opérations CUDA sans GPU réel. À l’intérieur de@spaces.GPU, le CUDA réel est utilisé.
Sélection de la taille du GPU
La taille par défaut utilisée par @spaces.GPU est large (demi NVIDIA RTX Pro 6000 Blackwell).
Vous pouvez demander explicitement une NVIDIA RTX Pro 6000 Blackwell complète en spécifiant size="xlarge" :
@spaces.GPU(size="xlarge")
def generate(prompt):
return pipe(prompt).images
xlargeconsomme 2× plus de quota quotidien quelarge(par exemple, une durée de tâche effective de 45 s consomme 90 s de quota)xlargesignifie généralement une probabilité de mise en file d’attente plus élevée et des temps d’attente plus longs- N'utilisez
xlargeque lorsque votre charge de travail bénéficie réellement de la puissance de calcul ou de la mémoire supplémentaire
Gestion de la durée
Pour les fonctions dont la durée d’exécution sur GPU est susceptible de dépasser la valeur par défaut de 60 secondes, vous pouvez spécifier une durée personnalisée :
@spaces.GPU(duration=120)
def generate(prompt):
return pipe(prompt).imagesCela définit la durée d’exécution maximale de la fonction à 120 secondes. Spécifier des durées plus courtes pour des fonctions plus rapides améliorera la priorité de file d’attente pour les visiteurs de l’espace.
Durée dynamique
@spaces.GPU prend également en charge des durées dynamiques.
Au lieu de passer directement une durée, passez simplement une fonction appelable qui prend les mêmes entrées que votre fonction décorée et qui renvoie une valeur de durée :
def get_duration(prompt, steps):
step_duration = 3.75
return steps * step_duration
@spaces.GPU(duration=get_duration)
def generate(prompt, steps):
return pipe(prompt, num_inference_steps=steps).imagesCompilation
ZeroGPU ne prend pas en charge torch.compile, mais vous pouvez utiliser la compilation ahead-of-time de PyTorch (nécessite torch 2.8+)
Consultez ce article de blog pour un guide complet sur la compilation ahead-of-time sur ZeroGPU.
Niveaux d'utilisation
L'utilisation du GPU est soumise à des quotas quotidiens, selon le niveau du compte :
| Type de compte | Quota quotidien de GPU inclus | Priorité de file |
|---|---|---|
| Non authentifié | 2 minutes | Faible |
| Compte gratuit | 5 minutes | Moyen |
| Compte PRO | 40 minutes (extensible) | Le plus élevé |
| Membre de l'équipe | 40 minutes (extensible) | Le plus élevé |
| Membre d'une organisation Enterprise | 60 minutes (extensible) | Le plus élevé |
La quota quotidienne incluse est réinitialisée exactement 24 heures après votre première utilisation du GPU.
Le quota restant a un impact direct sur la priorité dans les files d'attente ZeroGPU.
Étendre le quota avec des crédits
Les utilisateurs PRO, Team et Enterprise peuvent continuer à utiliser les Spaces ZeroGPU au-delà de leur quota quotidien inclus en consommant des crédits prépayés au tarif de 1 $ pour 10 minutes de temps GPU. Une fois votre quota quotidien épuisé, toute utilisation supplémentaire du GPU est automatiquement facturée sur votre solde de crédits.
Vous pouvez ajouter des crédits depuis vos paramètres de facturation.
Limites d'hébergement
- Comptes personnels gratuits : Maximum de 2 Spaces ZeroGPU, pour les comptes en règle (e-mail vérifié, compte créé depuis plus de 30 jours).
- Comptes personnels (abonnés PRO) : maximum de 10 Spaces ZeroGPU.
- Comptes d’organisation (Team & Enterprise) : 50 Spaces ZeroGPU maximum.
En exploitant ZeroGPU, les développeurs peuvent créer des Spaces plus efficaces et évolutifs, maximisant l'utilisation des GPU tout en minimisant les coûts.
Recommandations
Si votre démo utilise un grand modèle, nous recommandons d’utiliser des optimisations telles que la compilation ahead-of-time et flash-attention 3. Vous pouvez découvrir comment en tirer parti avec ZeroGPU dans ce post. Ces optimisations vous aideront à maximiser les avantages des heures ZeroGPU et à offrir une meilleure expérience utilisateur.
Retour
Vous pouvez partager vos retours sur Spaces ZeroGPU directement sur le HF Hub : https://huggingface.co/spaces/zero-gpu-explorers/README/discussions
Update on GitHub