Hub documentation
Spaces ZeroGPU: динамическое выделение GPU для Spaces
Spaces ZeroGPU: динамическое выделение GPU для Spaces
ZeroGPU — это общая инфраструктура, оптимизирующая использование GPU для AI-моделей и демо на Hugging Face Spaces. Она динамически выделяет и освобождает NVIDIA RTX Pro 6000 Blackwell по мере необходимости, предоставляя:
- Бесплатный доступ к GPU: обеспечивает экономичное использование GPU для Spaces.
- Поддержка нескольких GPU: позволяет Spaces использовать несколько GPU одновременно в одном приложении.
В отличие от традиционных выделений на одном GPU, эффективная система ZeroGPU снижает барьеры для разработчиков, исследователей и организаций при развертывании моделей ИИ, максимизируя использование ресурсов и энергоэффективность.
Использование и размещение ZeroGPU Spaces
- Using existing ZeroGPU Spaces
- ZeroGPU Spaces доступны для бесплатного использования всем пользователям. (Посетите отобранный список).
- Пользователи тарифа PRO получают в 8 раз больший дневной лимит использования, наивысший приоритет в очередях GPU и могут превышать свой дневной лимит, используя предоплаченные кредиты при работе с любыми ZeroGPU Spaces.
- Hosting your own ZeroGPU Spaces
- Бесплатные личные аккаунты: аккаунты в хорошем состоянии (подтверждённый адрес электронной почты, возраст аккаунта более 30 дней) могут бесплатно размещать до 2 ZeroGPU Spaces.
- Аккаунты PRO: Подпишитесь на PRO, чтобы размещать до 10 ZeroGPU Spaces в вашем аккаунте.
- Организации: подпишитесь на план Team или Enterprise, чтобы включить ZeroGPU Spaces для всех участников организации.
Технические характеристики
ZeroGPU поддерживает два размера GPU
| Размер GPU | Аппаратное обеспечение | Vram | Стоимость квоты |
|---|---|---|---|
large (по умолчанию) | Половина NVIDIA RTX Pro 6000 Blackwell | 48 ГБ | 1× |
xlarge | Полная NVIDIA RTX Pro 6000 Blackwell | 96 ГБ | 2× |
См. выбор размера GPU, чтобы узнать, как использовать размеры
Совместимость
Spaces ZeroGPU разработаны для обеспечения совместимости с большинством GPU Spaces на базе PyTorch. Совместимость улучшена для высокоуровневых библиотек Hugging Face, таких как transformers и diffusers, однако пользователям следует учитывать, что:
- В настоящее время ZeroGPU Spaces поддерживают только Gradio SDK.
- Spaces на базе ZeroGPU могут иметь ограниченную совместимость по сравнению со стандартными Spaces на базе GPU.
- В некоторых сценариях могут возникать непредвиденные проблемы.
Поддерживаемые версии
Gradio: 4+
PyTorch: поддерживаются практически все версии от 2.8.0 до latest
См. полный список
- 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
Начало работы с ZeroGPU
Чтобы использовать ZeroGPU в вашем Space, выполните следующие шаги:
- Убедитесь, что в настройках вашего Space выбрано оборудование ZeroGPU.
- Импортируйте модуль
spaces. - Декорируйте функции, зависящие от GPU, с помощью
@spaces.GPU.
Этот процесс декорирования позволяет Space запрашивать GPU при вызове функции и освобождать его по завершении.
Декоратор
@spaces.GPUспроектирован так, чтобы не оказывать никакого эффекта в средах, отличных от ZeroGPU, что обеспечивает совместимость с различными конфигурациями.
Пример использования
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()Загрузка модели
Хотя реальное GPU доступно только внутри функций @spaces.GPU, модели необходимо размещать на cuda на уровне корневого модуля (как показано в примере выше).
Ленивая загрузка моделей или их перемещение на CUDA внутри @spaces.GPU не рекомендуется, так как это значительно менее эффективно (передачи в CUDA оптимизированы для размещений, выполняемых при запуске).
Загрузка моделей на
cudaна уровне модуля работает, потому что вне функций@spaces.GPUвключён режим эмуляции CUDA в PyTorch, что позволяет выполнять операции CUDA без реального GPU. Внутри@spaces.GPUиспользуется реальный CUDA.
Выбор размера GPU
Размер по умолчанию, используемый @spaces.GPU, — large (половина NVIDIA RTX Pro 6000 Blackwell).
Вы можете явно запросить полную NVIDIA RTX Pro 6000 Blackwell, указав size="xlarge":
@spaces.GPU(size="xlarge")
def generate(prompt):
return pipe(prompt).images
xlargeпотребляет в 2 раза больше дневной квоты, чемlarge(например, задача с эффективной длительностью 45 с потребляет 90 с квоты)xlargeобычно означает более высокую вероятность попадания в очередь и более длительное время ожидания- Используйте
xlargeтолько в том случае, если ваша рабочая нагрузка действительно выигрывает от дополнительных вычислительных ресурсов или памяти
Управление длительностью
Для функций, время выполнения которых на GPU превышает стандартные 60 секунд, можно указать собственную длительность:
@spaces.GPU(duration=120)
def generate(prompt):
return pipe(prompt).imagesЭто устанавливает максимальное время выполнения функции в 120 секунд. Указание более коротких значений для быстрых функций повысит приоритет в очереди для посетителей Space.
Динамическая длительность
@spaces.GPU также поддерживает динамическую длительность.
Вместо того чтобы напрямую передавать длительность, просто передайте вызываемый объект, который принимает те же входные данные, что и ваша декорируемая функция, и возвращает значение длительности:
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).imagesКомпиляция
ZeroGPU does not support torch.compile, but you can use PyTorch ahead-of-time compilation (requires torch 2.8+)
См. эту статью в блоге с полным руководством по компиляции ahead-of-time на ZeroGPU.
Уровни использования
Использование GPU подчинено суточным квотам в зависимости от уровня аккаунта:
| Тип аккаунта | Включенный ежедневный лимит GPU | Приоритет очереди |
|---|---|---|
| Неаутентифицированный | 2 минуты | Низкий |
| Бесплатный аккаунт | 5 минут | Средний |
| PRO-аккаунт | 40 минут (с возможностью расширения) | Наивысший |
| Участник организации команды | 40 минут (с возможностью расширения) | Наивысший |
| Участник организации Enterprise | 60 минут (с возможностью расширения) | Наивысший |
Включенная ежедневная квота сбрасывается ровно через 24 часа после первого использования GPU.
Оставшаяся квота напрямую влияет на приоритет в очередях ZeroGPU.
Расширение квоты с помощью кредитов
Пользователи тарифов PRO, Team и Enterprise могут продолжать использовать Spaces с ZeroGPU сверх включённого в тариф ежедневного лимита, расходуя предоплаченные кредиты по ставке 1 доллар за 10 минут времени работы GPU. После исчерпания ежедневного лимита любое дополнительное использование GPU автоматически списывается с вашего баланса кредитов.
Вы можете добавить кредиты в своих настройках биллинга.
Ограничения хостинга
- Бесплатные личные аккаунты: максимум 2 ZeroGPU Spaces для аккаунтов в хорошем состоянии (подтверждённый адрес электронной почты, возраст аккаунта более 30 дней).
- Личные аккаунты (подписчики PRO): максимум 10 ZeroGPU Spaces.
- Организационные аккаунты (Team & Enterprise): максимум 50 ZeroGPU Spaces.
Благодаря ZeroGPU разработчики могут создавать более эффективные и масштабируемые Spaces, максимально используя GPU при минимизации затрат.
Рекомендации
Если ваша демонстрация использует большую модель, мы рекомендуем применять оптимизации, такие как компиляция ahead-of-time и flash-attention 3. Вы можете узнать, как использовать эти возможности с ZeroGPU, в этой статье. Эти оптимизации помогут вам максимально использовать преимущества часов ZeroGPU и обеспечить более комфортный пользовательский опыт.
Обратная связь
Вы можете поделиться своим мнением о Spaces ZeroGPU напрямую на HF Hub: https://huggingface.co/spaces/zero-gpu-explorers/README/discussions
Update on GitHub