Hub documentation

GitHub Actions

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GitHub Actions

GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub ์ €์žฅ์†Œ๋ฅผ Hugging Face Hub์— ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ huggingface/hub-sync ์•ก์…˜์€ Models, Datasets, Spaces ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค ์—†์ด ๊ฒŒ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ• โ€” ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ต์ฒดํ•  HF_TOKEN ์‹œํฌ๋ฆฟ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ๊ฐ ์‹คํ–‰ ์‹œ์ž‘ ์‹œ GitHub Actions์˜ ๋‚ด์žฅ OIDC ํ† ํฐ์„ ์งง์€ ์ˆ˜๋ช…์˜ ์ €์žฅ์†Œ ๋ฒ”์œ„ Hub ํ† ํฐ์œผ๋กœ ๊ตํ™˜ํ•˜๋Š” Trusted Publishers๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์„ค์ •

  1. ๋Œ€์ƒ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ write ๊ถŒํ•œ์ด ์žˆ๋Š” Hugging Face access token์„ ์ƒ์„ฑํ•˜์„ธ์š”. ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋™๊ธฐํ™” ๋Œ€์ƒ ์ €์žฅ์†Œ์—๋งŒ ๋ฒ”์œ„๊ฐ€ ์„ค์ •๋œ fine-grained token์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  2. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •์—์„œ ํ† ํฐ์„ HF_TOKEN์ด๋ผ๋Š” ์ด๋ฆ„์˜ GitHub secret์œผ๋กœ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  3. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ(์˜ˆ: .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/repo-name
          hf_token: ${{ secrets.HF_TOKEN }}

๊ธฐ๋ณธ์ ์œผ๋กœ Space์— ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๋˜๋Š” ๋ฐ์ดํ„ฐ์…‹์„ ๋™๊ธฐํ™”ํ•˜๋ ค๋ฉด repo_type ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”:

      - uses: huggingface/hub-sync@v0.3.0
        with:
          github_repo_id: ${{ github.repository }}
          huggingface_repo_id: username/my-dataset
          hf_token: ${{ secrets.HF_TOKEN }}
          repo_type: dataset

๋งค๊ฐœ๋ณ€์ˆ˜

๋งค๊ฐœ๋ณ€์ˆ˜ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
github_repo_id์˜ˆโ€”GitHub ์ €์žฅ์†Œ(${{ github.repository }} ์‚ฌ์šฉ)
huggingface_repo_id์˜ˆโ€”Hub์˜ ๋Œ€์ƒ ์ €์žฅ์†Œ(username/repo-name)
hf_token์˜ˆโ€”Hugging Face ์•ก์„ธ์Šค ํ† ํฐ
repo_type์•„๋‹ˆ์š”spacespace, model ๋˜๋Š” dataset
space_sdk์•„๋‹ˆ์š”gradiogradio, streamlit, docker ๋˜๋Š” static
private์•„๋‹ˆ์š”false๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋น„๊ณต๊ฐœ๋กœ ์ƒ์„ฑํ• ์ง€ ์—ฌ๋ถ€
subdirectory์•„๋‹ˆ์š”.Sync a specific subdirectory (useful for monorepos)

์ด ์•ก์…˜์€ hf CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ Hub์— ๋ฏธ๋Ÿฌ๋งํ•ฉ๋‹ˆ๋‹ค. git-to-git ๋™๊ธฐํ™”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. .github/ ๋ฐ .git/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ œ์™ธํ•˜๊ณ  ์‚ญ์ œ ์‚ฌํ•ญ์„ ๋ฏธ๋Ÿฌ๋งํ•ฉ๋‹ˆ๋‹ค(GitHub์—์„œ ์‚ญ์ œ๋œ ํŒŒ์ผ์€ Hub์—์„œ๋„ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค).

๋” ๋ณต์žกํ•œ ์›Œํฌํ”Œ๋กœ(์˜ˆ: ๋นŒ๋“œ ๋‹จ๊ณ„, ์‚ฌ์šฉ์ž ์ •์˜ ์—…๋กœ๋“œ ๋กœ์ง)์˜ ๊ฒฝ์šฐ, ์›Œํฌํ”Œ๋กœ์—์„œ hf CLI๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Spaces์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๊ฐ€์ด๋“œ(ํŒŒ์ผ ํฌ๊ธฐ ์ œํ•œ, LFS ์ฒ˜๋ฆฌ)๋Š” GitHub Actions๋ฅผ ์‚ฌ์šฉํ•œ Spaces ๊ด€๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Update on GitHub