# 🟧 Spaces での Label Studio

[Label Studio](https://labelstud.io)は、さまざまなデータタイプをラベリング、アノテーション、探索するための[オープンソースのデータラベリングプラットフォーム](https://github.com/heartexlabs/label-studio)です。さらに、Label Studioには、新しいモデルの学習、アクティブ学習、教師あり学習、その他の多くの学習手法に使用できる強力な[機械学習インターフェース](https://labelstud.io/guide/ml.html)が含まれています。

このガイドでは、Hugging Face Hub内でデータラベリングおよびアノテーションのためにLabel Studioをデプロイする方法を説明します。デモや評価目的として、Dockerを使用してHub上に完全にホストされた自己完結型アプリケーションとしてLabel Studioのデフォルト設定を使用することも、独自のデータベースとクラウドストレージを接続して、Spaces上でホストされた本番環境で利用可能なフル機能のアプリケーションを構築することもできます。

## ⚡️ Spaces に Label Studio をデプロイする

Label Studioは、わずか数回のクリックでSpacesにデプロイできます:

  

Spacesでは、以下を定義する必要があります:

* **オーナー**: 個人アカウントまたは所属している組織のいずれかです。

* **Space名**: Spaceを作成するアカウント内のSpaceの名前。

* スペースを自分または自分の組織のみに表示させたい場合は **Visibility**: _private_、Label Studio API を使用する他のユーザーやアプリケーションにも表示させたい場合は _public_（推奨）を指定します。

## 🚀 デフォルト設定の使用

デフォルトでは、Spaces にインストールされる Label Studio は、アプリケーションデータベースとしてローカルストレージを使用する構成で動作し、設定、アカウント認証情報、プロジェクト情報が保存されます。ラベリングタスクおよびデータアイテムもまた、ローカルストレージに保持されます。

> [!WARNING]
> Hugging Face Spaces でのストレージは、デフォルトで一時（エフェメラル）です。再起動後もデータを保持するには、[Storage Bucket](./storage-buckets) をアタッチしてください。詳細は、以下の[永続化セクション](#enable-persistence-with-hf-storage-buckets)を参照してください。

Label Studio を起動すると、標準のログイン画面が表示されます。メールアドレスを使用して新しいアカウントを作成し、新しい認証情報でログインすることから始めましょう。ログイン後、定期的に、ストレージは一時的であり、Space が再起動されるとデータが失われる可能性があるという警告が表示されます。また、Label Studio のマスコットである Heidi からのプロンプトが事前に設定されており、新しいプロジェクトを作成してデータのラベリングを開始するよう促されます。まずは、感情分析用のアノテーションインターフェースを構築する方法をガイドする Label Studio の [「ゼロからワン」チュートリアル](https://labelstud.io/blog/introduction-to-label-studio-in-hugging-face-spaces/) をご覧ください。

## 🛠️ Label Studioの本番環境向けインスタンスの構成

Spaceを本番環境で利用できるようにするには、3つの設定変更が必要です。

* 新しいアカウントの無制限な作成を無効にします。

* [Storage Bucket](./storage-buckets)または外部データベースをアタッチして、永続化を有効にします。

* 必要に応じて、ラベリングタスクにクラウドストレージをアタッチします。

### 新しいアカウントの無制限な作成を無効にする

Label Studioのデフォルト設定では、アプリケーションのURLを知っている誰でも、制限なく新しいアカウントを作成できます。Spaceの**Settings**に以下の設定シークレットを追加することで、[サインアップを制限](https://labelstud.io/guide/signup.html#Restrict-signup-for-local-deployments)できます。

* `LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK`: この値を`true`に設定すると、制限のないアカウント作成が無効になります。

* `LABEL_STUDIO_USERNAME`: Label Studio Space の最初のユーザーとして使用するアカウントのユーザー名です。有効なメールアドレスである必要があります。

* `LABEL_STUDIO_PASSWORD`: 最初のユーザーアカウントに関連付けられるパスワード。

これらの設定を適用するには、Space を再起動してください。ログイン画面から新しいアカウントを作成する機能が無効になります。新しいアカウントを作成するには、Label Studio アプリケーションの `Organization` 設定で新しいユーザーを招待する必要があります。

### HF Storage バケットで永続化を有効にする

デフォルトでは、このSpaceはすべてのプロジェクト設定とデータアノテーションをSQLiteによるローカルストレージに保存します。Spaceがリセットされると、Space内のすべての設定およびアノテーションデータが失われます。

永続化を有効にする最も簡単な方法は、[Storage Bucket](./storage-buckets)をアタッチすることです。これにより、永続的なオブジェクトストレージがSpaceに直接マウントされます。Label Studioは、マウントされたバケット内にSQLiteデータベースとメディアのアップロードを書き込むため、プロジェクトとアノテーションは再起動後も保持されます。

1. **バケットを作成します:**

   ```bash
   hf buckets create <your-namespace>/label-studio-data
   ```

2. Space Settings → Storage Buckets で、マウントパス `/data` に **アタッチ**します。

3. **2つのSpace変数を設定します:**

   ```
   LABEL_STUDIO_BASE_DATA_DIR=/data
   STORAGE_PERSISTENCE=1
   ```

4. Space を **Factory rebuild** します。

> [!TIP]
> ユーザーセッションを再起動後も維持するために、`SECRET_KEY` の Space Secret を設定してください。設定しない場合、Label Studio は起動のたびにランダムなキーを生成するため、再起動時にすべてのユーザーがログアウトされます。

#### コーディングエージェントに代行させる

Space の設定画面を操作したくない場合は、`huggingface_hub` にアクセスできるコーディングエージェントに、Space のプロビジョニングを依頼できます。Space ID とバケット名を伝えれば、以下に相当する処理を実行できます。

```python
from huggingface_hub import HfApi, Volume

api = HfApi()
space_id = "<your-namespace>/<your-space>"

# Attach the bucket at /data
api.set_space_volumes(
    space_id,
    volumes=[
        Volume(type="bucket", source="<your-namespace>/label-studio-data", mount_path="/data"),
    ],
)

# Tell Label Studio to write its SQLite DB and media into the mounted bucket
api.add_space_variable(space_id, "LABEL_STUDIO_BASE_DATA_DIR", "/data")
api.add_space_variable(space_id, "STORAGE_PERSISTENCE", "1")

# Optional: set a stable SECRET_KEY so sessions survive restarts
api.add_space_secret(space_id, "SECRET_KEY", "<random-string>")

# Factory rebuild so the new mount and variables take effect
api.restart_space(space_id, factory_reboot=True)
```

スペースおよび`huggingface_hub`によるボリュームマウントの管理については、[`manage-spaces`ガイド](/docs/huggingface_hub/guides/manage-spaces)を参照してください。

### Postgresで永続化を有効にする

より大規模なマルチユーザー環境でのデプロイメントでは、代わりに[スペースに外部のPostgresデータベースを接続](https://labelstud.io/guide/storedata.html#PostgreSQL-database)して永続化を有効にすることで、すべてのプロジェクト設定およびアノテーション設定が保持されることを保証できます。

Postgresのセルフホストインスタンスに合わせて、以下のシークレット変数を設定してください。スペースの定義内でデータベースサービスに関する情報が公開されるのを防ぐため、これらをシークレットとして設定することを強く推奨します。

* `DJANGO_DB`: `default`に設定します。

* `POSTGRE_NAME`: Postgresデータベースの名前を設定します。

* `POSTGRE_USER`: Postgres のユーザー名を設定します。

* `POSTGRE_PASSWORD`: Postgres ユーザーのパスワードを設定します。

* `POSTGRE_HOST`: Postgres データベースが実行されているホストに設定します。

* `POSTGRE_PORT`: Postgresデータベースが実行されているポートに設定します。

* `STORAGE_PERSISTENCE`: 一時的なストレージに関する警告を削除するには、これを`1`に設定してください。

これらの設定を適用するには、Space を再起動してください。ユーザー、プロジェクト、アノテーションに関する情報はデータベースに保存され、Space が再起動またはリセットされた場合、Label Studio によって再読み込みされます。

### クラウドストレージを有効にする

デフォルトでは、このSpaceで有効になっているデータストレージはローカルのみです。Spaceのリセットが発生した場合、すべてのデータが失われます。永続的なストレージを有効にするには、[クラウドストレージコネクタ](https://labelstud.io/guide/storage.html)を有効にする必要があります。適切なクラウドコネクタを選択し、そのシークレットを設定してください。

#### Amazon S3

* `STORAGE_TYPE`: `s3`に設定します。

* `STORAGE_AWS_ACCESS_KEY_ID`: `<YOUR_ACCESS_KEY_ID>`

* `STORAGE_AWS_SECRET_ACCESS_KEY`: `<YOUR_SECRET_ACCESS_KEY>`

* `STORAGE_AWS_BUCKET_NAME`: `<YOUR_BUCKET_NAME>`

* `STORAGE_AWS_REGION_NAME`: `<YOUR_BUCKET_REGION>`

* `STORAGE_AWS_FOLDER`: 空の文字列に設定します。

#### Google Cloud Storage

* `STORAGE_TYPE`: `gcs`に設定します。

* `STORAGE_GCS_BUCKET_NAME`: `<YOUR_BUCKET_NAME>`

* `STORAGE_GCS_PROJECT_ID`: `<YOUR_PROJECT_ID>`

* `STORAGE_GCS_FOLDER`: 空の文字列に設定します。

* `GOOGLE_APPLICATION_CREDENTIALS`: `/opt/heartex/secrets/key.json` に設定してください。

#### Azure Blob Storage

* `STORAGE_TYPE`: `azure`に設定します。

* `STORAGE_AZURE_ACCOUNT_NAME`: `<YOUR_STORAGE_ACCOUNT>`

* `STORAGE_AZURE_ACCOUNT_KEY`: `<YOUR_STORAGE_KEY>`

* `STORAGE_AZURE_CONTAINER_NAME`: `<YOUR_CONTAINER_NAME>`

* `STORAGE_AZURE_FOLDER`: 空の文字列に設定してください。

## 🤗 次のステップ、フィードバック、サポート

Label Studio の使い方を始めるには、感情分析アノテーションプロジェクトの例を段階的に解説した Label Studio の [「ゼロからワン」チュートリアル](https://labelstud.io/blog/introduction-to-label-studio-in-hugging-face-spaces/) をご覧ください。Label Studio に関する完全なリソースセットと Label Studio コミュニティについては、[Label Studio ホームページ](https://labelstud.io) で確認できます。これには、[完全なドキュメント](https://labelstud.io/guide/)、さまざまなアノテーションインターフェースを試せる [インタラクティブなプレイグラウンド](https://labelstud.io/playground/)、および [Label Studio Slack コミュニティ](https://slack.labelstudio.heartex.com/?source=spaces) に参加するためのリンクが含まれています。

