Hub documentation

GitHub ActionsによるSpacesの管理

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GitHub ActionsによるSpacesの管理

公式のhuggingface/hub-syncGitHub Action を使用して、Space を GitHub リポジトリと同期させることができます。

hub-sync は、Models および Datasets にも対応しています。一般的な使用方法については、GitHub Actions を参照してください。

セットアップ

  1. Hugging Faceのアクセストークンを値とするHF_TOKENという名前のGitHubシークレットを作成します。
  2. リポジトリにワークフローファイル(例: .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 main

HF_USERNAME をユーザー名に、SPACE_NAME を Space の名前に置き換えてください。

Update on GitHub