kina006097 commited on
Commit
4a19fce
·
1 Parent(s): dcb3d39

ドキュメントの追加

Browse files
docs/github_actions_hf_spaces_integration.md ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Genemicliと実践!GitHub ActionsでHugging Face SpacesへAIアプリを自動デプロイするガイド
2
+
3
+ AIモデルを使ったアプリケーション開発は、時に予期せぬ課題に直面します。しかし、`genemicli`のような強力なCLIアシスタントと連携することで、それらの課題を乗り越え、スムーズにプロジェクトを進めることができます。この記事では、私たちが`genemicli`と共に、GitHub ActionsとHugging Face Spacesを連携させ、AIアプリケーションを自動でデプロイするまでの道のりを、具体的な実装手順と問題解決のプロセスを交えながら解説します。
4
+
5
+ ---
6
+
7
+ ### 1. Hugging Face Spacesの準備
8
+
9
+ まず、Hugging Face Spacesで新しいSpaceを作成します。
10
+
11
+ * Hugging Faceにログインし、「Spaces」タブから「Create new Space」を選択。
12
+ * 「Space name」を決め、「Gradio」SDKを選択します。
13
+ * 「Create Space」をクリック。
14
+
15
+ ### 2. GitHubリポジトリの準備
16
+
17
+ あなたのAIアプリケーションのコードがGitHubリポジトリにあることを確認してください。
18
+
19
+ ### 3. Hugging Faceアクセストークンの取得
20
+
21
+ GitHub ActionsからHugging Face Spacesにアクセスするために、アクセストークンが必要です。
22
+
23
+ * Hugging Faceにログインし、右上のプロフィールアイコン → 「Settings」 → 「Access Tokens」へ。
24
+ * 「New token」をクリックし、`write`権限を持つトークンを作成し、コピーします。
25
+
26
+ ### 4. GitHub Secretsへのトークン登録
27
+
28
+ コピーしたアクセストークンをGitHubリポジトリのSecretsに登録します。これは、セキュリティのためにコードに直接トークンを書き込まないための重要な手順です。
29
+
30
+ * GitHubリポジトリの「Settings」→「Secrets and variables」→「Actions」へ。
31
+ * 「New repository secret」をクリックし、**Name**を `HF_TOKEN`、**Secret**にコピーしたトークンを貼り付けて登録します。
32
+ * **`genemicli`との連携:** `genemicli`は、この`HF_TOKEN`の登録方法を丁寧に案内してくれました。
33
+
34
+ ### 5. GitHub Actionsワークフローの作成
35
+
36
+ GitHubリポジトリのルートに `.github/workflows/sync-to-space.yml` というファイルを作成し、以下の内容を記述します。このワークフローは、GitHubの`main`ブランチへのプッシュをトリガーにして、Spaceのコンテンツを自動で更新します。
37
+
38
+ ```yaml
39
+ name: Sync to Hugging Face hub
40
+ on:
41
+ push:
42
+ branches: [main] # mainブランチへのプッシュをトリガー
43
+ workflow_dispatch: # 手動実行も可能にする
44
+
45
+ jobs:
46
+ sync-to-hub:
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v3
50
+ with:
51
+ fetch-depth: 0
52
+ lfs: true # LFSファイルがある場合
53
+ - name: Push to hub
54
+ env:
55
+ HF_TOKEN: ${{ secrets.HF_TOKEN }} # GitHub Secretsからトークンを取得
56
+ run: |
57
+ # Spaceのリモートを追加(YOUR_HF_USERNAMEとYOUR_SPACE_NAMEを置き換える)
58
+ git remote add space https://YOUR_HF_USERNAME:${{ secrets.HF_TOKEN }}@huggingface.co/spaces/YOUR_HF_USERNAME/YOUR_SPACE_NAME
59
+ # mainブランチをSpaceに強制プッシュ
60
+ git push --force space main
61
+ ```
62
+
63
+ **注意点:**
64
+
65
+ * `YOUR_HF_USERNAME` と `YOUR_SPACE_NAME` は、あなたのHugging Faceのユーザー名とSpace名に置き換えてください。
66
+ * `fetch-depth: 0` と `lfs: true` は、大きなモデルファイルなどを扱う場合に重要です。
67
+ * **`genemicli`との連携:** `genemicli`は、このワークフローの作成をサポートし、`YOUR_HF_USERNAME`と`YOUR_SPACE_NAME`を実際の値に置き換えるよう指示してくれました。
68
+
69
+ ### 6. `README.md` の設定
70
+
71
+ Hugging Face Spacesは、`README.md`の先頭にあるメタデータブロックを読み込んでSpaceの設定を行います。あなたの`README.md`の先頭に以下の内容を追加してください。
72
+
73
+ ```yaml
74
+ ---
75
+ title: あなたのアプリのタイトル
76
+ emoji: ✨
77
+ colorFrom: "#FFD700" # 好みの色に
78
+ colorTo: "#FFA500" # 好みの色に
79
+ sdk: gradio
80
+ sdk_version: "4.x.x" # requirements.txtのGradioバージョンに合わせる
81
+ app_file: app.py # アプリケーションのエントリーポイントファイル
82
+ pinned: false
83
+ ---
84
+ ```
85
+
86
+ **注意点:**
87
+
88
+ * `title`、`emoji`、`colorFrom`、`colorTo` は自由に設定してください。
89
+ * `sdk_version` は `requirements.txt` に記載されているGradioのバージョンに合わせてください。
90
+ * `app_file` は、あなたのGradioアプリケーションのメインファイル(例: `app.py` や `src/main.py` など)のパスを記述します。
91
+ * **`genemicli`との連携:** `genemicli`は、Spaceが画面表示されない問題に直面した際、この`README.md`のメタデータ設定が不足していることを特定し、必要な項目(`title`、`sdk`、`app_file`など)の追加を提案・適用してくれました。
92
+
93
+ ### 7. アプリケーションのエントリーポイントの調整 (`app.py`の作成)
94
+
95
+ Hugging Face Spacesで`ModuleNotFoundError`が発生した場合、アプリケーションのエントリーポイントを調整する必要があります。これは、Pythonのモジュールパスの問題を解決するためです。
96
+
97
+ GitHubリポジトリのルートに `app.py` というファイルを作成し、以下の内容を記述します。
98
+
99
+ ```python
100
+ import sys
101
+ sys.path.append('./src') # srcディレクトリをPythonのパスに追加
102
+ from ai_api.main import iface # src/ai_api/main.pyからifaceオブジェクトをインポート
103
+
104
+ if __name__ == "__main__":
105
+ iface.launch(server_name="0.0.0.0") # Gradioアプリケーションを起動
106
+ ```
107
+
108
+ * **`genemicli`との連携:** `genemicli`は、Space上で`ModuleNotFoundError: No module named 'ai_api'`というエラーが発生した際、この`app.py`ラッパーファイルの作成を提案・実装してくれました。これにより、`src`ディレクトリ内のモジュールが正しく認識され、アプリケーションが起動できるようになりました。
109
+
110
+ ### 8. デプロイの確認
111
+
112
+ これらの設定が完了したら、GitHubリポジリにコードをプッシュしてください。GitHub Actionsが自動的に実行され、Hugging Face Spaceにコードが同期されます。
113
+
114
+ Hugging Face Spaceのページにアクセスし、アプリケーションが正常に表示されるか確認しましょう。もし問題があれば、Spaceページの「Logs」タブでエラーメッセージを確認してください。