Hub documentation

Spaces ZeroGPU: Spaces 向けの動的 GPU 割り当て

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces ZeroGPU: Spaces 向けの動的 GPU 割り当て

ZeroGPU schema

ZeroGPUは、Hugging Face Spaces上のAIモデルやデモのGPU使用を最適化するための共有インフラストラクチャです。必要に応じてNVIDIA RTX Pro 6000 Blackwell GPUを動的に割り当てて解放し、以下を提供します:

  1. 無料GPUアクセス: Spacesでのコスト効率の高いGPU利用を可能にします。
  2. マルチGPUサポート: 単一のアプリケーション内で複数のGPUを並行して利用できるようにします。

従来の単一GPU割り当てとは異なり、ZeroGPUの効率的なシステムは、リソースの活用率と電力効率を最大化することで、開発者、研究者、組織がAIモデルをデプロイする際の障壁を低減します。

ZeroGPU Spaces の使用とホスティング

  • Using existing ZeroGPU Spaces
    • ZeroGPU Spacesは、すべてのユーザーが無料で利用できます(キュレーションされたリストをご覧ください)。
    • PRO ユーザーは、1日あたりの使用量クォータが8倍になり、GPUキューでの優先度が最高となり、ZeroGPU Spaces を使用する場合、前払いクレジットを使用して1日あたりのクォータを超えて利用できます。
  • Hosting your own ZeroGPU Spaces
    • 無料の個人アカウント: 正常な状態のアカウント(メールアドレスが確認済みで、アカウント作成から30日以上経過しているもの)は、最大2つのZeroGPU Spacesを無料でホストできます。
    • PROアカウント: PROにサブスクライブすると、アカウント内で最大10個のZeroGPU Spacesをホストできます。
    • 組織: Team または Enterprise プランにサブスクライブすると、組織のすべてのメンバーで ZeroGPU Spaces を有効にできます。

技術仕様

ZeroGPUは2つのGPUサイズをサポートしています

GPUサイズバックエンドのハードウェアVramクォータコスト
large (デフォルト)NVIDIA RTX Pro 6000 Blackwell の半分48GB1×
xlargeNVIDIA RTX Pro 6000 Blackwell 全機96GB2×

サイズ的使用方法については、GPUサイズ選択を参照してください。

互換性

ZeroGPU Spacesは、ほとんどのPyTorchベースのGPU Spacesとの互換性を備えています。transformersやdiffusersなどのHugging Faceの上位ライブラリとの互換性は強化されていますが、以下の点にご注意ください。

  • 現在、ZeroGPU SpacesはGradio SDKとのみ互換性があります。
  • ZeroGPU Spacesは、標準のGPU Spacesと比較して、互換性が制限される場合があります。
  • 一部のシナリオでは、予期しない問題が発生する可能性があります。

サポートされているバージョン

  • Gradio: 4以上

  • PyTorch: 2.8.0からlatestまでのほぼすべてのバージョンがサポートされています

    完全なリストを表示
    • 2.8.0
    • 2.9.1
    • 2.10.0
    • 2.11.0
    • 2.12.1
    • 2.13.0
  • Python:

    • 3.12.12
    • 3.10.13

ZeroGPUの入門

Space で ZeroGPU を利用するには、以下の手順に従ってください。

  1. Space の設定で、ZeroGPU ハードウェアが選択されていることを確認してください。
  2. spacesモジュールをインポートします。
  3. GPU依存の関数に@spaces.GPUを付与します。

このデコレーション処理により、Space は関数が呼び出されたときに GPU を要求し、完了時に解放することができます。

@spaces.GPU デコレーターは、非ZeroGPU環境では副作用を持たないよう設計されており、異なるセットアップ間で互換性を確保します。

使用例

import spaces
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(...)
pipe.to('cuda')

@spaces.GPU
def generate(prompt):
    return pipe(prompt).images

gr.Interface(
    fn=generate,
    inputs=gr.Text(),
    outputs=gr.Gallery(),
).launch()

モデルの読み込み

実際のGPUは@spaces.GPU関数の内部でのみ利用可能ですが、モデルはルートモジュールレベルでcudaに配置する必要があります(上記の例を参照)。

@spaces.GPU 内でモデルの遅延読み込みや CUDA への移動を行うことは推奨されていません。これは、はるかに非効率になるためです(CUDA 転送は、起動時に行われる配置に対して最適化されています)。

モジュールレベルでcudaにモデルを読み込むことが機能するのは、@spaces.GPU関数の外側でPyTorchのCUDAエミュレーションモードが有効化されており、実際のGPUなしでCUDA操作を実行できるためです。@spaces.GPU内では、実際のCUDAが使用されます。

GPUサイズの選択

@spaces.GPUで使用されるデフォルトのサイズはlarge(NVIDIA RTX Pro 6000 Blackwellの半分)です。

size="xlarge"を指定することで、NVIDIA RTX Pro 6000 Blackwellのフル構成を明示的にリクエストできます。

@spaces.GPU(size="xlarge")
def generate(prompt):
    return pipe(prompt).images
  • xlarge は large より 2倍 の日次クォータを消費します(例:実効タスク時間が45秒の場合、クォータは90秒分消費されます)
  • xlargeは通常、キューイング確率が高く、待ち時間が長くなることを意味します
  • ワークロードが追加の計算リソースやメモリから実際に恩恵を受ける場合のみ、xlargeを使用してください。

期間の管理

デフォルトの60秒というGPU実行時間を超えると予想される関数の場合、カスタムの実行時間を指定できます。

@spaces.GPU(duration=120)
def generate(prompt):
   return pipe(prompt).images

これにより、関数の最大実行時間が120秒に設定されます。より短い実行時間の関数を指定することで、Spaceの訪問者に対するキューの優先順位が向上します。

動的な期間

@spaces.GPU は、動的な実行時間もサポートしています。

期間を直接渡す代わりに、デコレータで装飾された関数と同じ入力を受け取り、期間の値を返す呼び出し可能オブジェクトを渡すだけです:

def get_duration(prompt, steps):
    step_duration = 3.75
    return steps * step_duration

@spaces.GPU(duration=get_duration)
def generate(prompt, steps):
   return pipe(prompt, num_inference_steps=steps).images

コンパイル

ZeroGPUはtorch.compileをサポートしていませんが、PyTorchの事前コンパイル機能を使用できます(torch 2.8+が必要)

ZeroGPUでの事前コンパイルに関する完全なガイドは、このブログ記事をご覧ください。

利用ティア

GPU usage is subject to daily quotas, per account tier:

アカウントタイプ含まれる1日あたりのGPUクォータキューの優先度
認証なし2分低
無料アカウント5分中程度
PROアカウント40分(拡張可能)最高
チーム組織メンバー40分(拡張可能)最高
エンタープライズ組織のメンバー60分(拡張可能)最高

含まれる1日あたりのクォータは、最初のGPU使用からちょうど24時間後にリセットされます。

残りのクォータは、ZeroGPUのキューにおける優先度に直接影響します。

クレジットによるクォータの拡張

PRO、Team、Enterprise のユーザーは、GPU 時間あたり 10 分につき 1 米ドル のレートで事前購入クレジットを消費することで、含まれる 1 日あたりのクォータを超えても ZeroGPU Spaces を引き続き利用できます。 1 日あたりのクォータを使い切ると、追加の GPU 使用分は自動的にクレジット残高から請求されます。

請求設定からクレジットを追加できます。

ホスティングの制限

  • 無料の個人アカウント: 健全な状態のアカウント(メール認証済み、アカウント作成から30日以上経過)には、最大2つのZeroGPU Spacesが利用可能です。
  • 個人アカウント(PRO サブスクライバー):ZeroGPU Spaces は最大 10 個まで。
  • 組織アカウント(Team & Enterprise):ZeroGPU Spaces の最大数は 50 個です。

ZeroGPUを活用することで、開発者はより効率的かつスケーラブルなSpacesを作成でき、GPUの利用率を最大化しながらコストを最小限に抑えることができます。

推奨事項

デモで大規模モデルを使用する場合は、ahead-of-time コンパイルや flash-attention 3 などの最適化の使用を推奨します。これらの活用方法は、この投稿で ZeroGPU を用いた方法として学ぶことができます。これらの最適化により、ZeroGPU の利用時間の利点を最大限に引き出し、より良いユーザー体験を提供できます。

フィードバック

Spaces ZeroGPU に関するフィードバックは、HF Hub 上で直接共有できます: https://huggingface.co/spaces/zero-gpu-explorers/README/discussions

Update on GitHub