Hub documentation
Обзор Spaces
Обзор Spaces
С помощью Hugging Face Spaces вы можете за несколько минут создать и развернуть демо-приложения на базе ML. Посмотрите следующее видео для краткого введения в Spaces:
В следующих разделах вы узнаете основы создания Space, его настройки и развёртывания вашего кода в нём.
Создание нового Space
Чтобы создать новое пространство, перейдите на главную страницу Spaces и нажмите Create new Space. Помимо выбора имени для вашего пространства, указания лицензии (по желанию) и настройки видимости (публичное, защищенное или частное), вам будет предложено выбрать SDK для вашего пространства. На Hub доступны три варианта SDK: Gradio, Docker и статический HTML. Если вы выберете «Gradio» в качестве SDK, вы будете перенаправлены в новый репозиторий со следующей страницей:
Статические Spaces бесплатны для всех. Spaces на базе Gradio и Docker работают на вычислительных ресурсах и требуют платного тарифа для создания: PRO для личных аккаунтов, Team или Enterprise для организаций. Личные аккаунты с бесплатным тарифом, находящиеся в хорошем состоянии, по-прежнему могут размещать до 2 Spaces на базе Gradio, работающих на ZeroGPU.

Под капотом Spaces хранит ваш код в git-репозитории, так же, как и репозитории моделей и датасетов. Благодаря этому те же инструменты, которые мы используем для всех остальных репозиториев на Hub (git и git-xet), работают и с Spaces. Следуйте той же последовательности действий, что и в Getting Started with Repositories, чтобы добавить файлы в ваш Space. Каждый раз, когда выполняется новый коммит, Space автоматически пересобирается и перезапускается.
Пошаговые руководства по созданию вашего первого Space приведены ниже:
Видимость пространства
Вы можете настроить видимость Space на вкладке Settings с помощью выпадающего списка. Spaces поддерживают три уровня видимости: public, protected и private.
Видимость «Защищённая» входит в планы PRO или Team & Enterprise.
| Публичный | Защищённый | Частный | |
|---|---|---|---|
| Исходный код на Hub | Виден всем | Частный (только владелец/соавторы) | Частный (только владелец/соавторы) |
| Приложение, доступное по URL для встраивания | Да | Да | Нет |
| Приложение доступно по собственному домену | Да | Да | Нет |
| Доступно для клонирования другими | Да | Нет | Нет |
Public Spaces полностью открыты: любой может просматривать исходный код, обращаться к работающему приложению и клонировать репозиторий.
Spaces с уровнем доступа Protected хранят исходный код в частном порядке на Hub — просматривать или клонировать репозиторий могут только владелец и соавторы. При этом работающее приложение доступно публично через URL для встраивания (https://<space-subdomain>.hf.space) или через собственный домен, если он настроен. Это особенно полезно для размещения сайтов или приложений без публикации исходного кода.
Spaces с уровнем доступа Private полностью закрыты: исходный код и работающее приложение доступны только владельцу и соавторам. Space не будет отображаться в результатах поиска, а другие пользователи получат ошибку 404 при попытке открыть его URL.
Ресурсы оборудования
По умолчанию каждый экземпляр Spaces ограничен 16 ГБ ОЗУ, 2 ядрами CPU и 50 ГБ дискового пространства (не сохраняемого). Базовое CPU-оборудование по умолчанию не тарифицируется по часам, однако создание Space, работающего на вычислительных ресурсах (Gradio или Docker), требует платного тарифа, тогда как Static Spaces бесплатны для всех. Вы можете перейти на более мощное оборудование, включая различные GPU-ускорители, по конкурентной цене. Чтобы запросить апгрейд, нажмите кнопку Settings в вашем Space и выберите нужную аппаратную среду.
| Аппаратное обеспечение | CPU | Память | Память GPU | Почасовая цена |
|---|---|---|---|---|
| CPU Basic | 2 vCPU | 16 ГБ | БЕСПЛАТНО | |
| Обновление CPU | 8 vCPU | 32 ГБ | $0.03 | |
| Nvidia T4 - малый | 4 vCPU | 15 ГБ | 16 ГБ | $0.40 |
| Nvidia T4 - средний | 8 vCPU | 30 ГБ | 16 ГБ | $0.60 |
| 1x Nvidia L4 | 8 vCPU | 30 ГБ | 24 ГБ | $0.80 |
| 4x Nvidia L4 | 48 vCPU | 186 ГБ | 96 ГБ | $3.80 |
| 1x Nvidia L40S | 8 vCPU | 62 ГБ | 48 ГБ | $1.80 |
| 4x Nvidia L40S | 48 vCPU | 382 ГБ | 192 ГБ | $8.30 |
| 8x Nvidia L40S | 192 vCPU | 1534 ГБ | 384 ГБ | $23.50 |
| 1x Nvidia RTX PRO 6000 | 23 vCPU | 256 ГБ | 96 ГБ | $2.75 |
| 2x Nvidia RTX PRO 6000 | 46 vCPU | 512 ГБ | 192 ГБ | $5.50 |
| 4x Nvidia RTX PRO 6000 | 92 vCPU | 1024 ГБ | 384 ГБ | $11.00 |
| 8x Nvidia RTX PRO 6000 | 184 vCPU | 2048 ГБ | 768 ГБ | $22.00 |
| Nvidia A10G - малый | 4 vCPU | 15 ГБ | 24 ГБ | $1.00 |
| Nvidia A10G - большой | 12 vCPU | 46 ГБ | 24 ГБ | $1.50 |
| 2x Nvidia A10G - большой | 24 vCPU | 92 ГБ | 48 ГБ | $3.00 |
| 4x Nvidia A10G - большой | 48 vCPU | 184 ГБ | 96 ГБ | $5.00 |
| Nvidia A100 - большой | 12 vCPU | 142 ГБ | 80 ГБ | $2.50 |
| 4x Nvidia A100 | 48 vCPU | 568 ГБ | 320 ГБ | $10.00 |
| 8x Nvidia A100 | 96 vCPU | 1136 ГБ | 640 ГБ | $20.00 |
Примечание: Более подробную и полную информацию о ценах вы можете найти на нашей странице с ценами.
У вас есть замечательный Space, но вы не можете покрыть расходы на обновление оборудования? Мы с удовольствием помогаем авторам инновационных Spaces, поэтому не стесняйтесь подавать заявку на грант на GPU для сообщества, используя ссылку на вкладке Settings вашего Space, и узнайте, попадёт ли ваш проект в число отобранных!
Подробнее в наших разделах Spaces GPU Upgrades и Spaces Disk Usage & Storage.

Управление секретами и переменными окружения
Если вашему приложению требуются переменные окружения (например, секретные ключи или токены), не вставляйте их в код приложения! Вместо этого перейдите на страницу Settings вашего репозитория Space и добавьте новую переменную или секрет. Используйте переменные для хранения несекретных значений конфигурации, а секреты — для хранения токенов доступа, API-ключей или любых других конфиденциальных значений и учётных данных.

Вы можете использовать:
- Переменные — если вам нужно хранить конфигурационные значения, не являющиеся конфиденциальными. Они доступны и просматриваются публично и автоматически добавляются в Spaces, продублированные из ваших.
- Секреты для хранения токенов доступа, API-ключей или любых других конфиденциальных значений и учётных данных. Они являются приватными, и после установки их значение нельзя прочитать со страницы настроек Space. Они не будут добавлены в Spaces, продублированные из вашего репозитория.
Способ доступа к секретам и переменным зависит от используемого вами Space SDK:
- Для Static Spaces оба доступны через клиентский JavaScript в
window.huggingface.variables - Для Docker Spaces ознакомьтесь с управлением окружением с помощью Docker
Для других Spaces оба значения доступны вашему приложению в виде переменных окружения. Ниже приведён очень простой пример доступа к ранее объявленной переменной MODEL_REPO_ID в Python (аналогично для секретов):
import os
print(os.getenv('MODEL_REPO_ID'))Владельцам Spaces выводится предупреждение, когда наш Spaces Secrets Scanner находит захардкоженные секреты.
Дублирование Space
Дублирование Space может быть полезно, если вы хотите создать новую демонстрацию, используя другую демонстрацию в качестве начального шаблона. Дублированные Spaces также могут быть полезны, если вы хотите иметь собственный Upgraded Space для своих задач с быстрым выводом.
Если вы хотите создать копию Space, нажмите на три точки в правом верхнем углу пространства и выберите Duplicate this Space. После этого вы сможете изменить следующие атрибуты:
- Owner: Дублированное пространство может находиться в вашем аккаунте или в любой организации, в которой у вас есть права на запись
- Имя пространства
- Видимость: По умолчанию Space является приватным. Подробнее о вариантах видимости можно прочитать здесь.
- Аппаратное обеспечение: вы можете выбрать оборудование, на котором будет работать Space. Подробнее об улучшении аппаратного обеспечения — здесь.
- Хранилище: если исходный репозиторий использует bucket для хранения, вам будет предложено настроить хранилище. Подробнее об использовании диска и хранилища — здесь.
- Секреты и переменные: если в исходном репозитории заданы какие-либо секреты и переменные, вы сможете задать их при дублировании репозитория.
Некоторые Spaces могут содержать переменные окружения, которые необходимо настроить. В таких случаях при дублировании автоматически заполняются публичные Variables из исходного Space, а также выводится предупреждение о необходимости настройки Secrets. По умолчанию дублированный Space использует аппаратное обеспечение CPU Basic, но при необходимости его можно позже обновить. Дублирование подчиняется тем же правилам, что и создание нового Space: для дублирования Space на базе Gradio или Docker требуется платный тариф для целевого аккаунта или организации (с тем же исключением ZeroGPU free tier для личных аккаунтов).
Сетевое взаимодействие
Если вашему Space необходимо выполнять сетевые запросы, вы можете отправлять запросы через стандартные порты HTTP и HTTPS (80 и 443), а также порт 8080. Все запросы, направленные на другие порты, будут блокироваться.
Управление жизненным циклом
На бесплатном оборудовании ваше Space «засыпает» и прекращает выполнение после периода бездействия. Если вы хотите, чтобы ваше Space работало непрерывно, рассмотрите возможность перехода на платное оборудование. Вы также можете вручную приостановить ваше Space на вкладке Settings. Приостановленное Space прекращает выполнение, пока пользователь с правами записи не перезапустит его. Время приостановки не тарифицируется.
Встроенные переменные окружения
В некоторых случаях вам может потребоваться программный доступ к имени автора или репозитория Space. Эта функция особенно полезна, если вы ожидаете, что пользователи будут дублировать ваш Space. Для этого Spaces предоставляет различные переменные окружения во время выполнения (см. также встроенные переменные окружения в Jobs). Для Space osanseviero/i-like-flan:
ACCELERATOR: тип доступного ускорителя (например,t4-medium,a10g-small) илиnoneдля Spaces, работающих только на CPU.CPU_CORES: 4MEMORY: 15GiSPACE_AUTHOR_NAME: osansevieroSPACE_REPO_NAME: i-like-flanSPACE_TITLE: I Like Flan (указано в файле README)SPACE_ID:osanseviero/i-like-flanSPACE_HOST:osanseviero-i-like-flan.hf.spaceSPACE_CREATOR_USER_ID:6032802e1f993496bc14d9e3— это ID пользователя, который изначально создал Space. Это полезно, если Space принадлежит организации. Получить информацию о пользователе можно с помощью API-запроса кhttps://huggingface.co/api/users/{SPACE_CREATOR_USER_ID}/overview.SPACE_SIGNING_SECRET: случайный секрет, уникальный для вашего Space, доступный в виде секрета. Он остаётся неизменным при перезапусках, пересборках и репликах, поэтому его можно использовать для подписи таких данных, как cookie, состояние OAuth или токены CSRF. Чтобы использовать собственное значение, добавьте секрет с именемSPACE_SIGNING_SECRETв настройках вашего Space.
Если для вашего Space включён OAuth, также будут доступны следующие переменные:
OAUTH_CLIENT_ID: идентификатор клиента вашего OAuth-приложения (публичный)OAUTH_CLIENT_SECRET: секрет клиента вашего OAuth-приложенияOAUTH_SCOPES: области доступа, доступные вашему OAuth-приложению. В настоящее время это всегда"openid profile".OPENID_PROVIDER_URL: URL провайдера OpenID. Метаданные OpenID будут доступны по адресу{OPENID_PROVIDER_URL}/.well-known/openid-configuration.
Клонирование репозитория
Вы можете легко клонировать репозиторий вашего Space локально. Начните с нажатия на выпадающее меню в правом верхнем углу страницы вашего Space:

Выберите «Clone repository», после чего вы сможете следовать инструкциям для клонирования репозитория Space на локальный компьютер с использованием HTTPS или SSH.


Связывание моделей и наборов данных на Hub
Вы можете отобразить все модели и наборы данных, на которые ссылается ваш Space, добавив их идентификаторы в метаданные README вашего Space. Для этого определите их под ключами models и datasets. Помимо перечисления артефактов в файле README, вы также можете указать их в любом файле .py, .ini или .html. Мы автоматически распарсим их!
Вот пример связывания двух моделей из пространства:
title: My lovely space
emoji: 🤗
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
models:
- reach-vb/musicgen-large-fp16-endpoint
- reach-vb/wav2vec2-large-xls-r-1B-common_voice7-lt-ft