Hub documentation
Spaces ZeroGPU: Asignación dinámica de GPU para Spaces
Spaces ZeroGPU: Asignación dinámica de GPU para Spaces
ZeroGPU es una infraestructura compartida que optimiza el uso de GPU para modelos y demostraciones de IA en Hugging Face Spaces. Asigna y libera dinámicamente GPU NVIDIA RTX Pro 6000 Blackwell según sea necesario, ofreciendo:
- Acceso gratuito a GPU: Permite el uso de GPU rentable para Spaces.
- Soporte para múltiples GPU: Permite que los Spaces aprovechen varias GPU de forma concurrente en una sola aplicación.
A diferencia de las asignaciones tradicionales de una sola GPU, el sistema eficiente de ZeroGPU reduce las barreras para que los desarrolladores, investigadores y organizaciones implementen modelos de IA al maximizar la utilización de recursos y la eficiencia energética.
Uso y alojamiento de Spaces ZeroGPU
- Using existing ZeroGPU Spaces
- Los Spaces de ZeroGPU están disponibles para que todos los usuarios los utilicen de forma gratuita. (Visita la lista curada).
- Los usuarios de PRO obtienen una cuota de uso diario 8 veces mayor, la máxima prioridad en las colas de GPU y pueden superar su cuota diaria utilizando créditos prepagados al usar cualquier Space de ZeroGPU.
- Hosting your own ZeroGPU Spaces
- Cuentas personales gratuitas: las cuentas en buen estado (correo electrónico verificado, cuenta con más de 30 días de antigüedad) pueden alojar hasta 2 Spaces ZeroGPU de forma gratuita.
- Cuentas PRO: Suscríbete a PRO para alojar hasta 10 Spaces ZeroGPU en tu cuenta.
- Organizaciones: Suscríbase a un plan Team o Enterprise para habilitar los espacios ZeroGPU para todos los miembros de la organización.
Especificaciones técnicas
ZeroGPU admite dos tamaños de GPU
| Tamaño de la GPU | Hardware de respaldo | Vram | Costo de la cuota |
|---|---|---|---|
large (predeterminado) | Mitad de NVIDIA RTX Pro 6000 Blackwell | 48GB | 1× |
xlarge | NVIDIA RTX Pro 6000 Blackwell completo | 96GB | 2× |
Consulte selección del tamaño de GPU para aprender a usar los tamaños
Compatibilidad
Los Spaces de ZeroGPU están diseñados para ser compatibles con la mayoría de los Spaces de GPU basados en PyTorch. Si bien la compatibilidad se mejora para las bibliotecas de alto nivel de Hugging Face como transformers y diffusers, los usuarios deben tener en cuenta que:
- Actualmente, los Spaces ZeroGPU son exclusivamente compatibles con el Gradio SDK.
- Los espacios ZeroGPU pueden tener una compatibilidad limitada en comparación con los espacios GPU estándar.
- Es posible que surjan problemas inesperados en algunos escenarios.
Versiones compatibles
Gradio: 4+
PyTorch: Se admiten casi todas las versiones desde 2.8.0 hasta latest
Ver lista completa
- 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
Primeros pasos con ZeroGPU
Para utilizar ZeroGPU en tu Space, sigue estos pasos:
- Asegúrate de que el hardware ZeroGPU esté seleccionado en la configuración de tu Space.
- Importa el módulo
spaces. - Decore las funciones dependientes de GPU con
@spaces.GPU.
Este proceso de decoración permite que el Space solicite una GPU cuando se llama a la función y la libere al completarse.
El decorador
@spaces.GPUestá diseñado para no tener efectos en entornos que no son ZeroGPU, lo que garantiza la compatibilidad en diferentes configuraciones.
Ejemplo de uso
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()Carga de modelos
Aunque una GPU real solo está disponible dentro de las funciones @spaces.GPU, los modelos deben colocarse en cuda a nivel de módulo raíz (como se muestra en el ejemplo anterior).
Se desaconseja la carga diferida o el traslado de modelos a CUDA dentro de @spaces.GPU, ya que es significativamente menos eficiente (las transferencias de CUDA están optimizadas para las ubicaciones realizadas durante el inicio).
Cargar modelos en
cudaa nivel de módulo funciona porque se habilita un modo de emulación de CUDA de PyTorch fuera de las funciones@spaces.GPU, lo que permite realizar operaciones de CUDA sin una GPU real. Dentro de@spaces.GPU, se utiliza CUDA real.
Selección del tamaño de la GPU
El tamaño predeterminado utilizado por @spaces.GPU es large (media NVIDIA RTX Pro 6000 Blackwell).
Puede solicitar explícitamente una NVIDIA RTX Pro 6000 Blackwell completa especificando size="xlarge":
@spaces.GPU(size="xlarge")
def generate(prompt):
return pipe(prompt).images
xlargeconsume 2× más cuota diaria quelarge(p. ej., una duración de tarea efectiva de 45 s consume 90 s de cuota)xlargesuele significar una mayor probabilidad de estar en cola y tiempos de espera más largos- Utilice
xlargesolo cuando su carga de trabajo se beneficie realmente del cómputo o la memoria adicionales
Gestión de la duración
Para las funciones que se espera que superen el tiempo de ejecución predeterminado de 60 segundos en la GPU, puede especificar una duración personalizada:
@spaces.GPU(duration=120)
def generate(prompt):
return pipe(prompt).imagesEsto establece el tiempo de ejecución máximo de la función en 120 segundos. Especificar duraciones más cortas para funciones más rápidas mejorará la prioridad de la cola para los visitantes del Space.
Duración dinámica
@spaces.GPU también admite duraciones dinámicas.
En lugar de pasar directamente una duración, simplemente pase una función invocable que reciba las mismas entradas que su función decorada y devuelva un valor de duración:
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).imagesCompilación
ZeroGPU no admite torch.compile, pero puedes usar la compilación ahead-of-time de PyTorch (requiere torch 2.8+)
Echa un vistazo a este blogpost para una guía completa sobre la compilación previa en ZeroGPU.
Niveles de uso
El uso de GPU está sujeto a cuotas diarias, según el nivel de la cuenta:
| Tipo de cuenta | Cuota diaria de GPU incluida | Prioridad de la cola |
|---|---|---|
| No autenticado | 2 minutos | Bajo |
| Cuenta gratuita | 5 minutos | Medio |
| Cuenta PRO | 40 minutos (ampliable) | Más alto |
| Miembro de la organización del equipo | 40 minutos (ampliable) | Más alto |
| Miembro de una organización empresarial | 60 minutos (ampliable) | Más alto |
La cuota diaria incluida se restablece exactamente 24 horas después de tu primer uso de GPU.
La cuota restante afecta directamente la prioridad en las colas de ZeroGPU.
Extender la cuota con créditos
Los usuarios PRO, Team y Enterprise pueden seguir usando Spaces ZeroGPU más allá de su cuota diaria incluida, consumiendo créditos prepagados a un precio de 1 USD por 10 minutos de tiempo de GPU. Una vez que se agote su cuota diaria, cualquier uso adicional de la GPU se facturará automáticamente contra su saldo de créditos.
Puedes añadir créditos desde tus configuraciones de facturación.
Limitaciones de alojamiento
- Cuentas personales gratuitas: Máximo de 2 Spaces ZeroGPU, para cuentas en buen estado (correo electrónico verificado, cuenta con más de 30 días de antigüedad).
- Cuentas personales (suscriptores PRO): Máximo de 10 Spaces ZeroGPU.
- Cuentas de organización (Team & Enterprise): Máximo de 50 Spaces ZeroGPU.
Aprovechando ZeroGPU, los desarrolladores pueden crear Spaces más eficientes y escalables, maximizando el uso de la GPU y minimizando los costos.
Recomendaciones
Si tu demo utiliza un modelo grande, te recomendamos usar optimizaciones como la compilación previa y flash-attention 3. Puedes aprender a aprovechar estas con ZeroGPU en esta publicación. Estas optimizaciones te ayudarán a maximizar las ventajas de las horas de ZeroGPU y a ofrecer una mejor experiencia de usuario.
Comentarios
Puedes compartir tus comentarios sobre Spaces ZeroGPU directamente en HF Hub: https://huggingface.co/spaces/zero-gpu-explorers/README/discussions
Update on GitHub