Hub documentation
GitHub ActionsによるSpacesの管理
GitHub ActionsによるSpacesの管理
公式のhuggingface/hub-syncGitHub Action を使用して、Space を GitHub リポジトリと同期させることができます。
hub-syncは、Models および Datasets にも対応しています。一般的な使用方法については、GitHub Actions を参照してください。
セットアップ
- Hugging Faceのアクセストークンを値とする
HF_TOKENという名前のGitHubシークレットを作成します。 - リポジトリにワークフローファイル(例:
.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/hub-sync@v0.3.0
with:
github_repo_id: ${{ github.repository }}
huggingface_repo_id: username/my-space
hf_token: ${{ secrets.HF_TOKEN }}Space SDKはspace_sdk(デフォルトはgradio)で設定できます。すべてのパラメータを参照してください。
仕組み
このアクションは、hf CLI(hf repos create + hf upload)を使用してファイルを Hub にミラーリングします。これは git 間の同期ではなく、ファイルの内容をアップロードし、.github/ ディレクトリと .git/ ディレクトリを自動的に除外します。GitHub リポジトリから削除されたファイルも、Hub から削除されます。
より複雑なワークフロー(ビルドステップやカスタムロジックなど)では、代わりにワークフロー内で直接hf CLIをインストールして使用できます。
ファイルサイズの考慮事項
このアクションはhf uploadを使用してファイルの内容をアップロードするため、HubのためにGit LFSやgit-xetを設定する必要はありません。大きなファイルは自動的にXetに保存されます。GitHubリポジトリでGit LFSを使用してファイルを保存している場合(GitHubでは100MBを超えるファイルに必須です)、actions/checkoutステップでlfs: trueを設定してください。これにより、アクションがLFSポインターではなく実際のファイルをアップロードします。
代替案: 手動でのgit push
ファイルミラーリングではなく、git-to-git の直接同期を希望する場合は、Space の git リモートに直接 push できます。git push を使用する場合、10MB を超えるファイルは 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:$HF_TOKEN@huggingface.co/spaces/HF_USERNAME/SPACE_NAME mainHF_USERNAME をユーザー名に、SPACE_NAME を Space の名前に置き換えてください。