Hub documentation
Управление Spaces с помощью GitHub Actions
Управление Spaces с помощью GitHub Actions
Вы можете синхронизировать ваш Space с репозиторием GitHub с помощью официального GitHub Action huggingface/hub-sync.
hub-syncтакже работает с моделями и наборами данных. См. GitHub Actions для общей информации по использованию.
Настройка
- Создайте секрет GitHub с именем
HF_TOKENи значением — токен доступа Hugging Face. - Добавьте файл рабочего процесса (например,
.github/workflows/sync-to-hub.yml) в ваш репозиторий:
name: Sync to Hugging Face Hub
on:
push:
branches: [main]
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: huggingface/[email protected]
with:
github_repo_id: ${{ github.repository }}
huggingface_repo_id: username/my-space
hf_token: ${{ secrets.HF_TOKEN }}Вы можете настроить Space SDK с помощью space_sdk (по умолчанию gradio). См. все параметры.
Как это работает
Действие зеркалит ваши файлы на Hub с помощью CLI hf (hf repos create + hf upload). Это не синхронизация git-to-git — загружаются содержимое файлов, а каталоги .github/ и .git/ автоматически исключаются. Файлы, удалённые из вашего репозитория GitHub, также будут удалены с Hub.
Для более сложных рабочих процессов (например, шаги сборки, пользовательская логика) вы можете установить и использовать CLI hf непосредственно в вашем рабочем процессе.
Учет размера файла
Действие загружает содержимое файлов с помощью hf upload, поэтому вам не нужно настраивать Git LFS или git-xet для Hub: большие файлы автоматически хранятся в Xet. Если ваш репозиторий GitHub хранит файлы с помощью Git LFS (GitHub требует этого для файлов размером более 100 МБ), установите lfs: true на шаге actions/checkout, чтобы действие загружало сами файлы, а не указатели LFS.
Альтернатива: ручной git push
Если вы предпочитаете прямую синхронизацию git-to-git вместо зеркалирования файлов, вы можете выполнять push непосредственно в git-удалённый репозиторий вашего Space. При выполнении git push файлы размером более 10 МБ должны отслеживаться с помощью git-xet (рекомендуется) или Git LFS:
name: Sync to Hugging Face hub
on:
push:
branches: [main]
workflow_dispatch:
jobs:
sync-to-hub:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
- name: Push to hub
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
run: git push https://HF_USERNAME:[email protected]/spaces/HF_USERNAME/SPACE_NAME mainЗамените HF_USERNAME на ваше имя пользователя, а SPACE_NAME — на имя вашего Space.