# Использование GPU Spaces

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

> [!TIP]
> В долгосрочной перспективе мы также планируем обеспечить поддержку не-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             |

> [!NOTE]
> CPU Basic не имеет почасовой стоимости, но создание нового Space, работающего на вычислительных ресурсах (Gradio или Docker), требует платного тарифа. Статические Spaces бесплатны для всех. Подробности см. в [Обзоре Spaces](./spaces-overview#hardware-resources).

### 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             |
| ~~Nvidia H100~~ *(удалено в декабре 2025 г.)* | | | | | |
| ~~8x Nvidia H100~~ *(удалено в декабре 2025 г.)* | | | | | |
| 4x Nvidia A100         | 48 vCPU       | 568 ГБ       | 320 ГБ          | 4000 ГБ    | $10.00    |         
| 8x Nvidia A100         | 96 vCPU       | 1136 ГБ      | 640 ГБ          | 8000 ГБ    | $20.00    | 

## Настройка оборудования программно

Вы можете программно настроить аппаратное обеспечение вашего Space с помощью `huggingface_hub`. Это позволяет решать широкий спектр задач, в которых требуется динамически назначать GPU. Подробнее — в [этом руководстве](https://huggingface.co/docs/huggingface_hub/main/en/guides/manage_spaces).

## Требования, специфичные для фреймворка[[frameworks]]

Большинство Spaces должны работать сразу после обновления GPU, но иногда потребуется установить версии CUDA для используемых вами фреймворков машинного обучения. Пожалуйста, следуйте этому руководству, чтобы убедиться, что ваш Space использует преимущества улучшенного оборудования.

### PyTorch

Вам потребуется установить версию PyTorch, совместимую со встроенными драйверами CUDA. Добавление следующих двух строк в файл `requirements.txt` должно сработать:

```
--extra-index-url https://download.pytorch.org/whl/cu113
torch
```

Вы можете убедиться в успешности установки, выполнив следующий код в вашем `app.py` и проверив вывод в логах вашего Space:

```Python
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, например:

```Python
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.

```Python
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 T4
```

### TensorFlow

Установка `tensorflow` по умолчанию должна распознавать устройство CUDA. Просто добавьте `tensorflow` в файл `requirements.txt` и используйте следующий код в вашем `app.py`, чтобы проверить это в логах вашего Space.

```Python
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 с улучшенным оборудованием по умолчанию работают бесконечно, даже если ими не пользуются. Вы можете изменить это поведение, [установив пользовательское «время сна»](#sleep-time) в настройках Space. Чтобы прекратить начисление платы за ваш Space, вы можете изменить Hardware на CPU basic или [приостановить](#pause) его.

Дополнительную информацию о тарификации можно найти в [специальном разделе для всего Hub](./billing).

### Гранты сообщества на GPU 

Есть у вас замечательный Space, но нужна помощь в покрытии затрат на обновление GPU-оборудования? Мы с удовольствием помогаем авторам инновационных Space, поэтому не стесняйтесь подать заявку на грант сообщества на GPU и проверить, попадёт ли ваш проект в число отобранных! Эта заявка находится в настройках репозитория оборудования вашего Space в левом нижнем углу, в разделе «sleep time settings»:

![Community GPU Grant](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/ask-for-community-grant.png)

## Установка пользовательского времени сна[[sleep-time]]

Если ваш 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
}
```

> [!NOTE]
> Реплики доступны только для обновленного (платного) оборудования. Каждая реплика тарифицируется независимо.

## Потоковая передача журналов, событий и метрик[[streaming]]

Вы можете получать в реальном времени логи, события статуса и метрики вашего 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](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events).

Эндпоинт журналов принимает необязательный параметр запроса `tail` (неотрицательное целое число) для ограничения ответа последними N строками журнала:

```
GET /api/spaces/{namespace}/{repo}/logs/{build|run}?tail=100
```

## Приостановка Space[[pause]]

Вы можете `pause` Space в настройках репозитория. Space в состоянии «пауза» приостановлен и не потребляет ресурсы, пока его не перезапустят вручную. Пауза или перезапуск доступны всем, у кого есть права на запись в Space. Время простоя не тарифицируется.

