# Spaces 概要

Hugging Face Spaces を使用すると、数分で ML によるデモの作成とデプロイを簡単に実行できます。Spaces の簡単な紹介として、以下の動画をご覧ください。

次のセクションでは、Spaceの作成、設定、およびコードのデプロイに関する基礎を学びます。

## 新しいSpaceの作成

**新しいSpaceを作成するには**、[Spacesのメインページ](https://huggingface.co/spaces)にアクセスし、**Create new Space**をクリックします。Spaceの名前を選択し、任意のライセンスを選択し、Spaceの[visibility](#space-visibility)（public、protected、またはprivate）を設定すると、Spaceの**SDK**を選択するよう促されます。Hubでは、Gradio、Docker、静的HTMLの3つのSDKオプションが提供されています。「Gradio」をSDKとして選択すると、次のページが表示される新しいリポジトリに移動します：

> [!WARNING]
> Static Spacesはすべてのユーザーに無料です。GradioおよびDockerのSpacesはコンピュートリソースを必要とするため、作成には有料プランが必要です。個人アカウントにはPRO、組織にはTeamまたはEnterpriseプランが適用されます。良好な状態にある無料の個人アカウントは、[ZeroGPU](./spaces-zerogpu)で動作するGradio Spacesを最大2つホストし続けることができます。

Spaces は内部で git リポジトリにコードを保存しており、モデルやデータセットのリポジトリと同様です。これにより、[Hub 上の他のリポジトリ](./repositories)で使用するのと同じツール（`git` と `git-xet`）が Spaces でも利用できます。[リポジトリの入門](./repositories-getting-started)と同様の手順に従って、Space にファイルを追加してください。新しいコミットがプッシュされるたびに、Space は自動的に再ビルドおよび再起動されます。

Spaceの作成に関するステップバイステップのチュートリアルについては、以下のガイドを参照してください：
* [Gradio Space の作成](./spaces-sdks-gradio)
* [Docker Space の作成](./spaces-sdks-docker-first-demo)

## スペースの公開範囲

Spaceの表示設定は、**Settings**タブの表示設定ドロップダウンから変更できます。Spaceには3つの表示レベルが用意されています: **public**、**protected**、**private**。

> [!WARNING]
> Protected visibilityはPROまたはTeam & Enterpriseプランの一部です。

| | パブリック | 保護済み | プライベート |
|---|---|---|---|
| Hub上のソースコード | すべてのユーザーに公開 | プライベート（オーナー/コラボレーターのみ） | プライベート（オーナー/コラボレーターのみ） |
| 埋め込みURLでアクセス可能なアプリ | はい | はい | いいえ |
| [カスタムドメイン](./spaces-custom-domain)でアクセス可能なアプリ | はい | はい | いいえ |
| 他のユーザーがクローン可能 | はい | いいえ | いいえ |

**Public** Spaces は完全に公開されています。誰でもソースコードを表示し、実行中のアプリにアクセスし、リポジトリをクローンできます。

**Protected** Spaces は、Hub 上でソースコードを非公開に保ちます。リポジトリの閲覧またはクローン操作は、オーナーとコラボレーターのみ可能です。ただし、実行中のアプリは、埋め込み URL（`https://<space-subdomain>.hf.space`）を通じて、または [カスタムドメイン](./spaces-custom-domain) が設定されている場合はそのドメインを通じて、一般に公開されます。これは、ソースコードを公開せずにウェブサイトやアプリをホスティングする場合に特に有用です。

**Private** Spaces は完全にプライベートです。ソースコードと実行中のアプリは、オーナーとコラボレーターのみがアクセスできます。その Space は検索結果に表示されず、他のユーザーがその URL を訪問すると `404` エラーを受信します。

## ハードウェアリソース

各 Spaces 環境は、デフォルトで 16GB の RAM、2 つの CPU コア、および 50GB の（永続化されない）ディスク容量に制限されています。デフォルトの CPU Basic ハードウェアは時間あたりのコストがかかりませんが、compute（Gradio または Docker）で実行される Space を作成するには有料プランが必要であり、Static Spaces はすべてのユーザーに無料です。[競争力のある価格](https://huggingface.co/pricing#spaces)で、さまざまな GPU アクセラレータを含むより高性能なハードウェアにアップグレードできます。アップグレードをリクエストするには、Space の _Settings_ ボタンをクリックして、希望するハードウェア環境を選択してください。

| **ハードウェア**           | **CPU**       | **メモリ**   | **GPU メモリ**  | **時間単価**  |
|----------------------- |-------------- |------------- |---------------- | ----------------- |
| CPU 基本              | 2 vCPU        | 16 GB        |                 | 無料              |
| CPU アップグレード            | 8 vCPU        | 32 GB        |                 | $0.03             | 
| Nvidia T4 - 小型      | 4 vCPU        | 15 GB        | 16 GB           | $0.40             |
| Nvidia T4 - 中     | 8 vCPU        | 30 GB        | 16 GB           | $0.60             |
| Nvidia L4 1枚           | 8 vCPU        | 30 GB        | 24 GB           | $0.80             |
| Nvidia L4 4枚           | 48 vCPU       | 186 GB       | 96 GB           | $3.80             |
| Nvidia L40S 1台         | 8 vCPU        | 62 GB        | 48 GB           | $1.80             |
| Nvidia L40S 4台         | 48 vCPU       | 382 GB       | 192 GB          | $8.30             |
| 8x Nvidia L40S         | 192 vCPU      | 1534 GB      | 384 GB          | $23.50            |
| Nvidia RTX PRO 6000 1台 | 23 vCPU       | 256 GB       | 96 GB           | $2.75             |
| Nvidia RTX PRO 6000 2台 | 46 vCPU       | 512 GB       | 192 GB          | $5.50             |
| Nvidia RTX PRO 6000 4枚 | 92 vCPU       | 1024 GB      | 384 GB          | $11.00            |
| 8x Nvidia RTX PRO 6000 | 184 vCPU      | 2048 GB      | 768 GB          | $22.00            |
| Nvidia A10G - 小型    | 4 vCPU        | 15 GB        | 24 GB           | $1.00             |
| Nvidia A10G - 大    | 12 vCPU       | 46 GB        | 24 GB           | $1.50             |
| 2x Nvidia A10G - large | 24 vCPU       | 92 GB        | 48 GB           | $3.00             |
| 4x Nvidia A10G - 大 | 48 vCPU       | 184 GB       | 96 GB           | $5.00             |
| Nvidia A100 - 大    | 12 vCPU       | 142 GB       | 80 GB           | $2.50             |
| Nvidia A100 4枚         | 48 vCPU       | 568 GB       | 320 GB          | $10.00            |
| 8x Nvidia A100         | 96 vCPU       | 1136 GB      | 640 GB          | $20.00            |

注: より詳細で包括的な料金情報については、[料金ページ](https://huggingface.co/pricing)をご覧ください。

素晴らしいSpaceをお持ちで、ハードウェアのアップグレード費用の支援が必要ですか?革新的なSpaceを持つ方をサポートすることに情熱を持っていますので、Spaceの_Settings_タブにあるリンクからコミュニティGPU助成金への申請を行い、あなたのSpaceが選ばれるかどうかぜひご確認ください!

[Spaces GPU アップグレード](./spaces-gpus)および[Spaces ディスク使用量とストレージ](./spaces-storage)に関する専用セクションで詳細をご覧ください。

## シークレットと環境変数の管理[[managing-secrets]]

アプリが環境変数（秘密鍵やトークンなど）を必要とする場合、アプリ内にハードコードしないでください。代わりに、SpaceリポジトリのSettingsページに移動し、新しい**variable**または**secret**を追加してください。機密でない設定値を保存する場合は変数を使用し、アクセストークン、APIキー、またはその他の機密値や認証情報を保存する場合はシークレットを使用してください。

	
	

以下を使用できます：

* **Variables**は、機密でない設定値を保存する必要がある場合に使用します。Variablesは公開されており、誰でも閲覧できます。また、あなたのSpaceから複製されたSpaceには自動的に追加されます。
* アクセストークン、APIキー、または機密情報や認証情報などの値を保存するための**Secrets**です。これらは非公開であり、設定後はSpaceの設定ページからその値を読み取ることができません。また、リポジトリから複製されたSpacesには追加されません。

Space SDKによって、シークレットと変数へのアクセス方法は異なります。

- Static Spacesでは、`window.huggingface.variables`内のクライアントサイドJavaScriptを通じて、両方が利用可能です。
- Docker Spacesについては、[Dockerによる環境管理](./spaces-sdks-docker#secrets-and-variables-management)をご覧ください。

その他の Spaces では、両方が環境変数としてアプリに公開されます。以下は、Python で以前に宣言した `MODEL_REPO_ID` 変数にアクセスする非常にシンプルな例です（シークレットの場合も同様です）：
```py
import os
print(os.getenv('MODEL_REPO_ID'))
```

Spaces のオーナーには、`Spaces Secrets Scanner` が[ハードコードされたシークレットを検出した場合](./security-secrets)に警告が表示されます。

## スペースの複製

Spaceを複製すると、別のデモを初期テンプレートとして新しいデモを構築する場合に便利です。また、高速推論用の個別のUpgraded Spaceを確保したい場合にも、Spaceの複製が役立ちます。

Spaceを複製したい場合は、Spaceの右上にある3つのドットをクリックし、**Duplicate this Space**をクリックしてください。これを行うと、以下の属性を変更できるようになります。

* Owner: 複製されたSpaceは、あなたのアカウント配下、または書き込みアクセス権限を持つ任意の組織配下にある可能性があります
* スペース名
* 表示設定: Spaceはデフォルトで非公開です。表示設定の詳細については、[こちら](./repositories-settings#repository-visibility)をご覧ください。
* ハードウェア: Spaceが実行されるハードウェアを選択できます。ハードウェアのアップグレードについては、[こちら](./spaces-gpus)をご覧ください。
* Storage: 元のリポジトリがストレージバケットを使用している場合、ストレージを設定するように促されます。ディスク使用量とストレージの詳細については、[こちら](./spaces-storage)をご覧ください。
* シークレットと変数: 元のリポジトリにシークレットや変数が設定されている場合、リポジトリを複製する際にそれらを設定できます。

一部のSpacesには、設定が必要な環境変数が含まれている場合があります。このような場合、複製ワークフローではソースのSpacesから公開のVariablesが自動で入力され、Secretsの設定に関する警告が表示されます。複製されたSpacesはデフォルトでCPU Basicハードウェアを使用しますが、必要に応じて後でアップグレードできます。複製は新しいSpacesの作成と同じルールに従います。GradioまたはDockerのSpacesを複製するには、対象のアカウントまたは組織に有料プランが必要です（個人アカウントには同じく[ZeroGPU無料枠](./spaces-zerogpu)の例外があります）。

## ネットワーク

Spaceがネットワークリクエストを行う必要がある場合、標準のHTTPおよびHTTPSポート（80および443）とポート8080を通じてリクエストを行うことができます。その他のポート宛てのリクエストはブロックされます。

## ライフサイクル管理

無料のハードウェアでは、一定時間使用されないと、Spaceは「スリープ」状態になり、実行が停止します。Spaceを無制限に実行させたい場合は、[有料ハードウェアへのアップグレード](./spaces-gpus)をご検討ください。また、**Settings**タブからSpaceを手動で一時停止することもできます。一時停止されたSpaceは、書き込みアクセスを持つユーザーが再起動するまで実行を停止します。一時停止中の時間は請求されません。

## 組み込みの環境変数

一部のケースでは、Spaceの作成者やリポジトリ名へのプログラムによるアクセスに関心を持つ場合があります。この機能は、ユーザーがあなたのSpaceを複製することを想定している場合に特に役立ちます。このため、Spacesは実行時にさまざまな環境変数を公開します（[Jobsの組み込み環境変数](./jobs-configuration#built-in-environment-variables)も参照）。Space [`osanseviero/i-like-flan`](https://huggingface.co/spaces/osanseviero/i-like-flan) について:

* `ACCELERATOR`: 利用可能なアクセラレーターの種類（例: `t4-medium`、`a10g-small`）、または CPU のみの Spaces には `none`。
* `CPU_CORES`: 4
* `MEMORY`: 15Gi
* `SPACE_AUTHOR_NAME`: osanseviero
* `SPACE_REPO_NAME`: i-like-flan
* `SPACE_TITLE`: I Like Flan（READMEファイルで指定）
* `SPACE_ID`: `osanseviero/i-like-flan`
* `SPACE_HOST`: `osanseviero-i-like-flan.hf.space`
* `SPACE_CREATOR_USER_ID`: `6032802e1f993496bc14d9e3` - Space を最初に作成したユーザーの ID です。Space が組織配下にある場合に役立ちます。`https://huggingface.co/api/users/{SPACE_CREATOR_USER_ID}/overview` への API 呼び出しでユーザー情報を取得できます。
* `SPACE_SIGNING_SECRET`: Space ごとに一意なランダムなシークレットで、シークレットとして公開されます。再起動、再ビルド、レプリカをまたいで同じ値が維持されるため、Cookie、OAuth state、CSRF トークンなどの署名に使用できます。独自の値を使用するには、Space の設定に `SPACE_SIGNING_SECRET` という名前のシークレットを追加してください。

スペースで[OAuth](./spaces-oauth)が有効になっている場合、以下の変数も利用できます。

* `OAUTH_CLIENT_ID`: OAuth アプリのクライアント ID（公開）
* `OAUTH_CLIENT_SECRET`: OAuth アプリのクライアントシークレット
* `OAUTH_SCOPES`: OAuth アプリケーションがアクセスできるスコープです。現在、常に`"openid profile"`です。
* `OPENID_PROVIDER_URL`: OpenID プロバイダーの URL です。OpenID メタデータは [`{OPENID_PROVIDER_URL}/.well-known/openid-configuration`](https://huggingface.co/.well-known/openid-configuration) で利用できます。

## リポジトリをクローンする

Spaceのリポジトリをローカルにクローンするのは簡単です。Spaceページの右上にあるドロップダウンメニューをクリックしてください:

リポジトリをクローンを選択すると、HTTPSまたはSSHを使用して、Spaceのリポジトリをローカルマシンにクローンするための手順に従うことができます。

## Hubでのモデルとデータセットのリンク

SpaceのREADMEメタデータに識別子を追加することで、Spaceがリンクしているすべてのモデルとデータセットを展示できます。そのためには、`models`キーと`datasets`キーの下でそれらを定義します。READMEファイルに成果物をリストアップするほかに、`.py`、`.ini`、`.html`ファイルのいずれかに記録することもできます。自動的に解析します!

スペースから2つのモデルをリンクする例を以下に示します。

```
title: My lovely space
emoji: 🤗
colorFrom: blue
colorTo: green
sdk: docker
pinned: false
models:
- reach-vb/musicgen-large-fp16-endpoint
- reach-vb/wav2vec2-large-xls-r-1B-common_voice7-lt-ft
```

