Развёртывание Potato в Hugging Face Space
Как запустить задачу разметки Potato в Docker Space на Hugging Face через potato deploy, с резервным копированием разметки в приватный датасет каждые пять минут.
potato deploy up --provider huggingface запускает задачу разметки в Docker Space на Hugging Face с HTTPS на адресе hf.space, и настраивать сервер не нужно. Это подходит для публичной демонстрации задачи и для лаборатории, чьи данные и модели уже лежат на Hugging Face Hub. Диск Space стирается при каждом перезапуске, поэтому Potato хранит разметку в приватном датасете на Hugging Face, который создаёт вместе со Space. Каждые пять минут он копирует разметку в датасет и восстанавливает её при старте Space. Для этой страницы нужен Potato 2.10 или новее и конфигурация, которую вы уже запускали через potato start.
Требования и ограничения Space
Spaces с Potato являются Docker Spaces, а для создания Docker Space нужен платный тариф Hugging Face: PRO для личного аккаунта либо Team или Enterprise для организации. Кроме того, аккаунт или организация на бесплатном тарифе Hugging Face могут одновременно держать запущенными не больше трёх Spaces. Четвёртый остаётся в состоянии PAUSED, и, в отличие от уснувшего Space, приостановленный не просыпается, когда его открывает посетитель.
Для исследования на несколько недель с поимённо известными разметчиками лучше подходит виртуальная машина, например AWS Lightsail, Jetstream2 или Hetzner: она сохраняет диск между перезапусками, и данные не зависят от резервной копии. Space уместнее всего, когда у людей, до которых вы хотите дотянуться, уже есть аккаунты Hugging Face, или когда задача служит демонстрацией и её разметку не жалко потерять.
Настройка токена Hugging Face
Space и датасет Potato создаёт с вашим токеном Hugging Face. Создайте токен с правом записи в настройках Hugging Face, затем установите дополнение для Hugging Face и положите токен в окружение:
pip install 'potato-annotation[huggingface]'
export HF_TOKEN=hf_...
potato deploy providers --verifyproviders --verify печатает аккаунт, которому принадлежит токен. Potato передаёт токен в Space как секрет Space, чтобы резервное копирование могло писать в датасет, и никогда не коммитит его в репозиторий Space.
Кто сможет войти
potato deploy не меняет настройки входа, а публичный Space может открыть любой, кто знает его адрес. Если конфигурация позволяет регистрироваться кому угодно, пробный запуск ниже выдаст предупреждение D003: «Anyone who finds the URL can register and annotate.» («Любой, кто найдёт URL, может зарегистрироваться и размечать».) Для демонстрации открытая регистрация обычно подходит. Если разметчики известны поимённо, перечислите их в user_config.users с allow_all_users: false (управление паролями) или настройте вход через их аккаунты Hugging Face, который Potato поддерживает как встроенного провайдера в authentication.providers (SSO и OAuth).
Проверка плана и развёртывание
Пробный запуск ничего не создаёт и печатает, что создаст развёртывание:
potato deploy up myproject/config.yaml --provider huggingface --dry-runПлан создаёт приватный датасет <account>/<name>-annotations, затем Docker Space <account>/<name>, задаёт ключ сессии, ключ администратора и токен как секреты Space и загружает ваш проект вместе с Dockerfile и README. Dockerfile строится на опубликованном образе Potato той версии, которая у вас установлена, так что в Space лежат только файлы вашего проекта. --owner разворачивает Space от имени организации, --private делает приватным сам Space, а --name заменяет имя, взятое из задачи.
Запустите команду без --dry-run и подтвердите план:
potato deploy up myproject/config.yaml --provider huggingfaceРазвёртывание ждёт, пока Space запустится, и печатает его адрес https://<account>-<name>.hf.space и путь к файлу с ключом администратора, .potato/secrets.json рядом с конфигурацией. Ключ администратора открывает админ-панель по адресу /admin. Space на бесплатном оборудовании засыпает после 48 часов без посетителей и просыпается, когда его кто-нибудь открывает, и каждый раз разметка возвращается из датасета.
Завершение исследования
potato deploy pull скачивает датасет с резервной копией, где лежит всё, что сохранил Space, а не читает сам Space:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamldestroy удаляет Space и оставляет датасет на месте: удаление Space можно отменить повторным развёртыванием, а удаление разметки нельзя. Когда датасет станет не нужен, удалите его на странице настроек на Hub.
Развёртывание без резервной копии
--demo разворачивает Space без датасета, для демонстрации, разметка которой не важна. Тогда пробный запуск предупреждает, что всё собранное пропадёт при следующем перезапуске. Без датасета pull читает работающий Space через экспорт администратора, а это работает, только пока Space запущен.
Устранение неполадок
Ошибка оплаты при создании означает, что у аккаунта или организации нет платного тарифа. Docker Spaces требуют PRO для личного аккаунта либо Team или Enterprise для организации.
Space в состоянии PAUSED, если аккаунт на бесплатном тарифе уже держит запущенными три Spaces. Приостановите один из них, затем перезапустите этот со страницы его настроек. Для перезапуска существующего Space платный тариф не нужен.
Разметка пропала после пересборки, если Space не смог восстановиться из датасета. При успешном восстановлении в журнале Space есть строка RESTORED, а её отсутствие обычно значит, что секрета Space HF_TOKEN нет или у него нет права записи.
Причина BUILD_ERROR описана в журнале сборки по адресу https://huggingface.co/spaces/<account>/<name>?logs=build.
Что почитать дальше
- Запуск Potato локально или в облаке: другие облачные цели и флаги резервного копирования
- Развёртывание сервера разметки: как выбрать хостинг
- Справка по Hugging Face Spaces