Hub documentation

Spaces 概要

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces 概要

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

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

新しいSpaceの作成

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

Static Spacesはすべてのユーザーに無料です。GradioおよびDockerのSpacesは計算リソースを使用するため、作成には有料プランが必要です。個人アカウントにはPRO、組織にはTeamまたはEnterpriseプランです。良好な状態にある無料の個人アカウントでも、ZeroGPUで動作するGradio Spacesを最大2つホストできます。

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

Spaceの作成に関するステップバイステップのチュートリアルについては、以下のガイドを参照してください:

スペースの公開範囲

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

Protected visibilityは、PROまたはTeam & Enterpriseプランの一部です。

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

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

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

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

ハードウェアリソース

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

ハードウェアCPUメモリGPU メモリ時間単価
CPU 基本2 vCPU16 GB無料
CPU アップグレード8 vCPU32 GB$0.03
Nvidia T4 - 小型4 vCPU15 GB16 GB$0.40
Nvidia T4 - 中8 vCPU30 GB16 GB$0.60
Nvidia L4 1枚8 vCPU30 GB24 GB$0.80
Nvidia L4 4枚48 vCPU186 GB96 GB$3.80
Nvidia L40S 1台8 vCPU62 GB48 GB$1.80
Nvidia L40S 4台48 vCPU382 GB192 GB$8.30
8x Nvidia L40S192 vCPU1534 GB384 GB$23.50
Nvidia RTX PRO 6000 1台23 vCPU256 GB96 GB$2.75
Nvidia RTX PRO 6000 2台46 vCPU512 GB192 GB$5.50
Nvidia RTX PRO 6000 4枚92 vCPU1024 GB384 GB$11.00
8x Nvidia RTX PRO 6000184 vCPU2048 GB768 GB$22.00
Nvidia A10G - 小型4 vCPU15 GB24 GB$1.00
Nvidia A10G - 大12 vCPU46 GB24 GB$1.50
2x Nvidia A10G - large24 vCPU92 GB48 GB$3.00
4x Nvidia A10G - 大48 vCPU184 GB96 GB$5.00
Nvidia A100 - 大12 vCPU142 GB80 GB$2.50
Nvidia A100 4枚48 vCPU568 GB320 GB$10.00
8x Nvidia A10096 vCPU1136 GB640 GB$20.00

注: より詳細で包括的な料金情報については、料金ページをご覧ください。

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

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

シークレットと環境変数の管理

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

以下を使用できます:

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

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

  • Static Spacesでは、window.huggingface.variables内のクライアントサイドJavaScriptを通じて、両方が利用可能です。
  • Docker Spacesについては、Dockerによる環境管理をご覧ください。

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

import os
print(os.getenv('MODEL_REPO_ID'))

Spaces のオーナーには、Spaces Secrets Scanner がハードコードされたシークレットを検出した場合に警告が表示されます。

スペースの複製

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

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

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

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

ネットワーク

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

ライフサイクル管理

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

組み込みの環境変数

一部のケースでは、Spaceの作成者やリポジトリ名へのプログラムによるアクセスに関心を持つ場合があります。この機能は、ユーザーがあなたのSpaceを複製することを想定している場合に特に役立ちます。このため、Spacesは実行時にさまざまな環境変数を公開します(Jobsの組み込み環境変数も参照)。Space 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が有効になっている場合、以下の変数も利用できます。

  • 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 で利用できます。

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

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
Update on GitHub