Hub documentation
Использование GPU Spaces
Использование GPU Spaces
Вы можете обновить свой Space, чтобы использовать GPU-ускоритель, с помощью кнопки Settings в верхней навигационной панели Space. Вы даже можете запросить бесплатное обновление, если создаёте крутую демонстрацию для побочного проекта!

В долгосрочной перспективе мы также планируем обеспечить поддержку не-GPU-железа, такого как HPU, IPU или TPU. Если у вас есть конкретное AI-железо, на котором вы хотели бы запускать модели, пожалуйста, сообщите нам об этом (сайт huggingface.co).
Как только ваш Space запущен на GPU, вы можете увидеть, на каком именно оборудовании он работает, прямо по этому значку:

Характеристики оборудования
В таблицах ниже представлены характеристики различных вариантов обновления.
CPU
| Аппаратное обеспечение | CPU | Память | Память GPU | Диск | Почасовая цена |
|---|---|---|---|---|---|
| CPU Basic | 2 vCPU | 16 ГБ | - | 50 ГБ | Бесплатно! |
| Обновление CPU | 8 vCPU | 32 ГБ | - | 50 ГБ | $0.03 |
CPU Basic не имеет почасовой стоимости, но создание нового Space, работающего на вычислительных ресурсах (Gradio или Docker), требует платного тарифа. Статические Spaces бесплатны для всех. Подробности см. в Обзоре Spaces.
GPU
| Аппаратное обеспечение | CPU | Память | Память GPU | Диск | Почасовая цена |
|---|---|---|---|---|---|
| Nvidia T4 - малый | 4 vCPU | 15 ГБ | 16 ГБ | 50 ГБ | $0.40 |
| Nvidia T4 - средний | 8 vCPU | 30 ГБ | 16 ГБ | 100 ГБ | $0.60 |
| 1x Nvidia L4 | 8 vCPU | 30 ГБ | 24 ГБ | 400 ГБ | $0.80 |
| 4x Nvidia L4 | 48 vCPU | 186 ГБ | 96 ГБ | 3200 ГБ | $3.80 |
| 1x Nvidia L40S | 8 vCPU | 62 ГБ | 48 ГБ | 380 ГБ | $1.80 |
| 4x Nvidia L40S | 48 vCPU | 382 ГБ | 192 ГБ | 3200 ГБ | $8.30 |
| 8x Nvidia L40S | 192 vCPU | 1534 ГБ | 384 ГБ | 6500 ГБ | $23.50 |
| 1x Nvidia RTX PRO 6000 | 23 vCPU | 256 ГБ | 96 ГБ | 475 ГБ | $2.75 |
| 2x Nvidia RTX PRO 6000 | 46 vCPU | 512 ГБ | 192 ГБ | 950 ГБ | $5.50 |
| 4x Nvidia RTX PRO 6000 | 92 vCPU | 1024 ГБ | 384 ГБ | 1900 ГБ | $11.00 |
| 8x Nvidia RTX PRO 6000 | 184 vCPU | 2048 ГБ | 768 ГБ | 3800 ГБ | $22.00 |
| Nvidia A10G - малый | 4 vCPU | 15 ГБ | 24 ГБ | 110 ГБ | $1.00 |
| Nvidia A10G - большой | 12 vCPU | 46 ГБ | 24 ГБ | 200 ГБ | $1.50 |
| 2x Nvidia A10G - большой | 24 vCPU | 92 ГБ | 48 ГБ | 1000 ГБ | $3.00 |
| 4x Nvidia A10G - большой | 48 vCPU | 184 ГБ | 96 ГБ | 2000 ГБ | $5.00 |
| Nvidia A100 - большой | 12 vCPU | 142 ГБ | 80 ГБ | 1000 ГБ | $2.50 |
| 4x Nvidia A100 | 48 vCPU | 568 ГБ | 320 ГБ | 4000 ГБ | $10.00 |
| 8x Nvidia A100 | 96 vCPU | 1136 ГБ | 640 ГБ | 8000 ГБ | $20.00 |
Настройка оборудования программно
Вы можете программно настроить аппаратное обеспечение вашего Space с помощью huggingface_hub. Это позволяет покрывать широкий спектр сценариев, в которых требуется динамически назначать GPU.
Подробнее — в этом руководстве.
Требования, специфичные для фреймворка
Большинство Spaces должны работать сразу после обновления GPU, но иногда потребуется установить версии CUDA для используемых вами фреймворков машинного обучения. Пожалуйста, следуйте этому руководству, чтобы убедиться, что ваш Space использует преимущества улучшенного оборудования.
PyTorch
Вам потребуется установить версию PyTorch, совместимую со встроенными драйверами CUDA. Добавление следующих двух строк в файл requirements.txt должно сработать:
--extra-index-url https://download.pytorch.org/whl/cu113
torchВы можете убедиться в успешности установки, выполнив следующий код в вашем app.py и проверив вывод в логах вашего Space:
import torch
print(f"Is CUDA available: {torch.cuda.is_available()}")
# True
print(f"CUDA device: {torch.cuda.get_device_name(torch.cuda.current_device())}")
# Tesla T4Многие фреймворки автоматически используют GPU, если он доступен. Так работают Pipelines в 🤗 transformers, fastai и многих других. В других случаях, или если вы используете PyTorch напрямую, вам может потребоваться переместить модели и данные на GPU, чтобы вычисления выполнялись на ускорителе, а не на CPU. Для этого можно использовать синтаксис .to() в PyTorch, например:
model = load_pytorch_model()
model = model.to("cuda")JAX
Если вы используете JAX, вам нужно указать URL, содержащий пакеты, совместимые с CUDA. Добавьте следующие строки в файл requirements.txt:
-f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
jax[cuda11_pip]
jaxlibПосле этого вы можете проверить установку, выведя результат выполнения следующего кода и проверив его в логах вашего Space.
import jax
print(f"JAX devices: {jax.devices()}")
# JAX devices: [StreamExecutorGpuDevice(id=0, process_index=0)]
print(f"JAX device type: {jax.devices()[0].device_kind}")
# JAX device type: Tesla T4TensorFlow
Установка tensorflow по умолчанию должна распознавать устройство CUDA. Просто добавьте tensorflow в файл requirements.txt и используйте следующий код в вашем app.py, чтобы проверить это в логах вашего Space.
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]Тарифы
Тарификация на Spaces основана на использовании аппаратного обеспечения и рассчитывается по минутам: вы платите за каждую минуту работы Space на запрошенном оборудовании, независимо от того, используется ли Space.
В течение жизненного цикла Space тарификация происходит только тогда, когда Space находится в состоянии Starting или Running. Это означает, что сборка не облагается платой.
Если работающее пространство начинает сбоить, оно будет автоматически приостановлено, и начисление платы прекратится.
Spaces, работающие на бесплатном оборудовании, автоматически приостанавливаются, если они не используются в течение длительного времени (например, двух дней). Spaces с улучшенным оборудованием по умолчанию работают бесконечно, даже если ими не пользуются. Вы можете изменить это поведение, установив собственное «время сна» в настройках Space. Чтобы прекратить начисление платы за ваш Space, вы можете изменить Hardware на CPU basic или приостановить его.
Дополнительную информацию о тарификации можно найти в специальном разделе для всего Hub.
Гранты сообщества на GPU
Есть у вас замечательный Space, но нужна помощь в покрытии затрат на обновление GPU-оборудования? Мы с удовольствием поддерживаем авторов инновационных Space, поэтому не стесняйтесь подать заявку на грант сообщества на GPU и проверить, попадёт ли ваш проект в число отобранных! Эта заявка находится в настройках репозитория оборудования вашего Space в левом нижнем углу, в разделе «sleep time settings»:

Установка пользовательского времени сна
Если ваш Space работает на стандартном оборудовании cpu-basic, он перейдёт в спящий режим после простоя в течение установленного времени (на данный момент — 48 часов). Любой посетитель вашего Space автоматически запустит его заново.
Если вы хотите, чтобы ваше Space никогда не переходило в спящий режим, или если вы хотите установить собственное время сна, вам необходимо перейти на платное оборудование.
По умолчанию обновлённый Space никогда не переходит в спящий режим. Однако вы можете использовать эту настройку, чтобы ваш обновлённый Space переходил в состояние простоя (стадия stopped), когда он не используется 😴. За обновлённое оборудование вы не будете платить, пока оно находится в спящем режиме. Space «проснётся» или перезапустится, как только получит нового посетителя.
Затем в настройках оборудования вашего Spaces станет доступен следующий интерфейс:

Доступны следующие параметры:

Реплики
Вы можете масштабировать свой Space горизонтально, запросив несколько реплик. Это распределяет трафик между несколькими экземплярами вашего Space для повышения доступности и пропускной способности. Вы можете задать количество реплик через API:
POST https://huggingface.co/api/spaces/{namespace}/{repo}/replicas
Content-Type: application/json
{
"replicas": 2
}Реплики доступны только для обновленного (платного) оборудования. Каждая реплика тарифицируется независимо.
Потоковая передача журналов, событий и метрик
Вы можете получать в реальном времени логи, события статуса и метрики вашего Space через SSE (Server-Sent Events):
- Журналы сборки или выполнения:
GET /api/spaces/{namespace}/{repo}/logs/{build|run} - События статуса:
GET /api/spaces/{namespace}/{repo}/events - Метрики:
GET /api/spaces/{namespace}/{repo}/metrics
Эти конечные точки требуют аутентификации и возвращают данные с использованием протокола SSE.
Эндпоинт журналов принимает необязательный параметр запроса tail (неотрицательное целое число) для ограничения ответа последними N строками журнала:
GET /api/spaces/{namespace}/{repo}/logs/{build|run}?tail=100Приостановка Space
Вы можете pause Space в настройках репозитория. Space в состоянии «пауза» приостановлен и не потребляет ресурсы, пока его не перезапустят вручную. Пауза или перезапуск доступны всем, у кого есть права на запись в Space. Время простоя не тарифицируется.