Hub documentation
Spaces Dev Mode: бесшовная разработка в Spaces
Spaces Dev Mode: бесшовная разработка в Spaces
Режим разработки Spaces входит в состав тарифных планов PRO или Team & Enterprise.
Spaces Dev Mode
Spaces Dev Mode — это функция, которая упрощает отладку вашего приложения и ускоряет итерации в Spaces.
Каждый раз, когда вы отправляете изменения в репозиторий вашего Space, базовый образ Docker пересобирается, а затем выделяется новая виртуальная машина для размещения нового контейнера.
Режим Dev позволяет значительно быстрее обновлять ваш Space, переопределяя Docker-образ.
Docker-образ Dev Mode запускает ваше приложение как дочерний процесс, что позволяет перезапускать его без остановки самого контейнера Space. Он также запускает в фоновом режиме SSH-сервер (для локальных редакторов и терминалов) и сервер VS Code (для встроенного в продукт VS Code Web), чтобы вы могли подключиться к Space.
Возможность подключаться к работающему Space открывает несколько вариантов использования:
- Вы можете вносить изменения в код приложения без необходимости пересобирать Space каждый раз
- Вы можете отлаживать работающее приложение и отслеживать ресурсы в реальном времени
В целом это значительно ускоряет разработку и эксперименты со Spaces, позволяя пропустить этап пересборки Docker-образа.
Интерфейс
После включения режима Dev на вашем Space вы должны увидеть модальное окно, подобное следующему.

Приложение не перезапускается автоматически при изменении кода. Чтобы изменения отобразились в Space, необходимо нажать кнопку Refresh, которая перезапустит приложение.
Подключение
Dev Mode предоставляет доступ к запущенному Space как к стандартному SSH-хосту. VS Code и любой другой редактор подключаются через тот же SSH-эндпоинт.
SSH
После запуска Dev Mode подключитесь с помощью:
ssh <space-subdomain>@ssh.hf.space
Поддомен отображается в модальном окне управления Dev Mode. Вы также можете получить его программно:
from huggingface_hub import HfApi
print(HfApi().space_info("namespace/repo").subdomain)CLI Hugging Face может разрешить поддомен и открыть сессию за вас:
# SSH into the Space's Dev Mode container
hf spaces ssh username/my-space
# Print the SSH command instead of running it
hf spaces ssh username/my-space --dry-run
# Use a specific identity file
hf spaces ssh username/my-space -i ~/.ssh/id_ed25519Передайте --auto, чтобы включить Dev Mode без запроса, если он ещё не запущен. Полный список параметров см. в справке по CLI hf spaces ssh.
Чтобы подключиться к Space по SSH, вам нужно добавить публичный SSH-ключ вашего компьютера в вашу учётную запись. Подробные инструкции приведены в документации Git over SSH.
VS Code
Вы также можете использовать локальную установку VS Code для подключения к контейнеру Space. Для этого установите расширение Remote - SSH и подключитесь к тому же хосту <space-subdomain>@ssh.hf.space.
Сохранение изменений
# Add changes and commit them
git add .
git commit -m "Persist changes from Dev Mode"
# Push the commit to persist them in the repo
git pushМодальное окно отобразит предупреждение, если в Space есть незакоммиченные или не отправленные изменения:

Включение режима разработки
Вы можете включить Dev Mode в вашем Space через веб-интерфейс или через API.
Через API
Вы можете переключить режим разработки программно:
POST https://huggingface.co/api/spaces/{namespace}/{repo}/dev-mode
Content-Type: application/json
Authorization: Bearer {token}
{
"enabled": true
}Через веб-интерфейс



Вы также можете создать Space с включенным режимом разработки:

Ограничения
Dev Mode в настоящее время недоступен для статических Spaces. Для Docker Spaces также существуют дополнительные требования.
Docker Spaces
Режим разработки поддерживается для Docker Spaces. Однако для корректной работы режима разработки ваш Space должен соответствовать следующим правилам.
- Необходимо установить следующие пакеты:
bash(необходим для установления SSH-соединений)curl,wgetиprocps(необходимы для процесса сервера VS Code)gitиgit-lfsдля возможности коммитить и отправлять изменения из вашей среды Dev Mode
Код вашего приложения должен находиться в папке
/app, чтобы демон Dev Mode мог обнаруживать изменения.Папка
/appдолжна принадлежать пользователю с uid1000, чтобы вы могли вносить изменения в код.Dockerfile должен содержать инструкцию
CMDдля запуска. Подробности об инструкцииCMDсм. в документации Docker.
Dev Mode хорошо работает, если базовый образ основан на Debian (например, Ubuntu).
Более экзотические дистрибутивы Linux (например, alpine) не тестируются, и работа Dev Mode на них не гарантируется.
Примеры совместимых Dockerfile
Это пример Dockerfile, совместимый с Spaces Dev Mode.
Он устанавливает необходимые пакеты с помощью apt-get, а также несколько дополнительных для удобства разработчика (а именно: top, vim и nano).
Затем он запускает приложение NodeJS из /app.
FROM node:19-slim
RUN apt-get update && \
apt-get install -y \
bash \
git git-lfs \
wget curl procps \
htop vim nano && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --link ./ /app
RUN npm i
RUN chown 1000 /app
USER 1000
CMD ["node", "index.js"]В этой организации есть несколько примеров Docker Spaces, совместимых с Dev Mode. Смело дублируйте их в своём пространстве имён!
Пример приложения на Python (HTTP-сервер FastAPI): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-python
Пример приложения на JavaScript (HTTP-сервер Express.js): https://huggingface.co/spaces/dev-mode-explorers/dev-mode-javascript
Обратная связь
Вы можете поделиться своим мнением о Spaces Dev Mode напрямую на HF Hub: https://huggingface.co/spaces/dev-mode-explorers/README/discussions
Update on GitHub