# GPU Spacesの使用

Spaceの上部ナビゲーションバーにある_Settings_ボタンから、SpaceをGPUアクセラレータを使用するようにアップグレードできます。サイドプロジェクトでクールなデモを作成している場合は、無料のアップグレードをリクエストすることもできます。

> [!TIP]
> 長期的には、HPU、IPU、TPUなどのGPU以外のハードウェアも公開したいと考えています。特定のAIハードウェアで実行したいものがあれば、お知らせください（ウェブサイトはhuggingface.co）。

SpaceがGPU上で実行されると、このバッジからどのハードウェアで実行されているか直接確認できます。

## ハードウェア仕様

以下の表に、異なるアップグレードオプションの仕様（Specs）を示しています。

### CPU

| **ハードウェア**           | **CPU**       | **メモリ**   | **GPU メモリ**  | **ディスク**  | **時間単価**  |
|----------------------- |-------------- |------------- |---------------- |---------- | ----------------- |
| CPU 基本              | 2 vCPU        | 16 GB        |  -              | 50 GB     | 無料です！             |
| CPU アップグレード            | 8 vCPU        | 32 GB        |  -              | 50 GB     | $0.03             |

> [!NOTE]
> CPU Basicには時間単位の料金はありませんが、compute（GradioまたはDocker）で実行される新しいSpaceを作成するには有料プランが必要です。Static Spacesはすべてのユーザーに無料です。詳細は[Spaces Overview](./spaces-overview#hardware-resources)を参照してください。

### GPU

| **ハードウェア**           | **CPU**       | **メモリ**   | **GPU メモリ**  | **ディスク**  | **時間単価**  |
|----------------------- |-------------- |------------- |---------------- |---------- | ----------------- |
| Nvidia T4 - 小型      | 4 vCPU        | 15 GB        | 16 GB           | 50 GB     | $0.40             |
| Nvidia T4 - 中     | 8 vCPU        | 30 GB        | 16 GB           | 100 GB    | $0.60             |
| Nvidia L4 1枚           | 8 vCPU        | 30 GB        | 24 GB           | 400 GB    | $0.80             |
| Nvidia L4 4枚           | 48 vCPU       | 186 GB       | 96 GB           | 3200 GB   | $3.80             |
| Nvidia L40S 1台         | 8 vCPU        | 62 GB        | 48 GB           | 380 GB    | $1.80             |
| Nvidia L40S 4台         | 48 vCPU       | 382 GB       | 192 GB          | 3200 GB   | $8.30             |
| 8x Nvidia L40S         | 192 vCPU      | 1534 GB      | 384 GB          | 6500 GB   | $23.50            |
| Nvidia RTX PRO 6000 1台 | 23 vCPU       | 256 GB       | 96 GB           | 475 GB    | $2.75             |
| Nvidia RTX PRO 6000 2台 | 46 vCPU       | 512 GB       | 192 GB          | 950 GB    | $5.50             |
| Nvidia RTX PRO 6000 4枚 | 92 vCPU       | 1024 GB      | 384 GB          | 1900 GB   | $11.00            |
| 8x Nvidia RTX PRO 6000 | 184 vCPU      | 2048 GB      | 768 GB          | 3800 GB   | $22.00            |
| Nvidia A10G - 小型    | 4 vCPU        | 15 GB        | 24 GB           | 110 GB    | $1.00             |
| Nvidia A10G - 大    | 12 vCPU       | 46 GB        | 24 GB           | 200 GB    | $1.50             |
| 2x Nvidia A10G - large | 24 vCPU       | 92 GB        | 48 GB           | 1000 GB   | $3.00             |
| 4x Nvidia A10G - 大 | 48 vCPU       | 184 GB       | 96 GB           | 2000 GB   | $5.00             |
| Nvidia A100 - 大    | 12 vCPU       | 142 GB       | 80 GB           | 1000 GB   | $2.50             |
| ~~Nvidia H100~~ *(2025年12月に削除)* | | | | | |
| ~~8x Nvidia H100~~ *(2025年12月に削除)* | | | | | |
| Nvidia A100 4枚         | 48 vCPU       | 568 GB       | 320 GB          | 4000 GB    | $10.00    |         
| 8x Nvidia A100         | 96 vCPU       | 1136 GB      | 640 GB          | 8000 GB    | $20.00    | 

## ハードウェアをプログラムで設定する

`huggingface_hub` を使用して、Space のハードウェアをプログラムで設定できます。これにより、GPU を動的に割り当てる必要がある幅広いユースケースに対応できます。詳細は、[このガイド](https://huggingface.co/docs/huggingface_hub/main/en/guides/manage_spaces)を参照してください。

## フレームワーク固有の要件[[frameworks]]

ほとんどのSpacesはGPUのアップグレード後にそのまま動作しますが、使用する機械学習フレームワークのCUDAバージョンをインストールする必要がある場合があります。改善されたハードウェアの恩恵をSpaceに受けさせるために、このガイドに従ってください。

### PyTorch

ビルトインのCUDAドライバーと互換性のあるPyTorchのバージョンをインストールする必要があります。`requirements.txt`ファイルに以下の2行を追加すれば動作するはずです。

```
--extra-index-url https://download.pytorch.org/whl/cu113
torch
```

`app.py` に以下のコードを実行し、Space のログで出力を確認することで、インストールが正常に行われたかどうかを検証できます。

```Python
import torch
print(f"Is CUDA available: {torch.cuda.is_available()}")
# True
print(f"CUDA device: {torch.cuda.get_device_name(torch.cuda.current_device())}")
# Tesla T4
```

多くのフレームワークは、GPUが利用可能な場合、自動的にGPUを使用します。🤗 `transformers`、`fastai`のPipelinesや、その他の多くのフレームワークも同様です。それ以外のケース、またはPyTorchを直接使用している場合は、計算がCPUではなくアクセラレータ上で行われることを保証するために、モデルとデータをGPUに移動する必要がある場合があります。例えば、PyTorchの`.to()`構文を使用できます。

```Python
model = load_pytorch_model()
model = model.to("cuda")
```

### JAX

JAXを使用する場合は、CUDA互換のパッケージを含むURLを指定する必要があります。`requirements.txt`ファイルに以下の行を追加してください。

```
-f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
jax[cuda11_pip]
jaxlib
```

その後、以下のコードの出力を表示し、Space のログで確認することで、インストールを検証できます。

```Python
import jax

print(f"JAX devices: {jax.devices()}")
# JAX devices: [StreamExecutorGpuDevice(id=0, process_index=0)]
print(f"JAX device type: {jax.devices()[0].device_kind}")
# JAX device type: Tesla T4
```

### TensorFlow

デフォルトの`tensorflow`インストールでは、CUDAデバイスが認識されるはずです。`requirements.txt`ファイルに`tensorflow`を追加し、`app.py`で以下のコードを使用して、Spaceのログで確認してください。

```Python
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
```

## 請求

Spacesの請求はハードウェアの使用に基づいており、分単位で計算されます。Spaceが要求されたハードウェア上で実行されている間、Spaceが実際に使用されているかどうかに関わらず、1分ごとに料金が請求されます。

Spaceのライフサイクルにおいて、課金が発生するのはSpaceが`Starting`または`Running`状態のときのみです。つまり、ビルド中はコストが発生しません。

実行中のSpaceが失敗し始めると、自動的に停止され、請求が停止されます。

無料ハードウェアで実行されているSpacesは、一定期間（例：2日間）使用されないと自動的に停止します。アップグレードされたSpacesは、使用されていなくてもデフォルトで無期限に実行されます。この動作は、Spaceの設定で[カスタムの「スリープ時間」を設定する](#sleep-time)ことで変更できます。Spaceの請求を停止するには、HardwareをCPU basicに変更するか、[一時停止](#pause)してください。

請求に関する追加情報は、[Hub全体の専用セクション](./billing)で確認できます。

### コミュニティ GPU グラント 

素晴らしいSpaceをお持ちで、GPUハードウェアのアップグレード費用の支援が必要ですか?革新的なSpaceを持つ方をサポートすることに情熱を持っていますので、コミュニティGPU助成金への申請をぜひご検討ください。あなたのSpaceが選ばれるかもしれません!この申請フォームは、Spaceのハードウェアリポジトリ設定の左下にある「sleep time settings」の下にあります:

![Community GPU Grant](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/ask-for-community-grant.png)

## カスタムスリープ時間の設定[[sleep-time]]

Space がデフォルトの `cpu-basic` ハードウェアで実行されている場合、一定時間（現在 48 時間）以上アクティブでない場合にスリープ状態になります。Space を訪問したユーザーによって自動的に再起動されます。

Spaceが非アクティブになることを完全に防止したい場合、またはカスタムのスリープ時間を設定したい場合は、有料のハードウェアへのアップグレードが必要です。

デフォルトでは、アップグレードされたSpaceはスリープ状態にはなりません。ただし、この設定を使用すると、アップグレードされたSpaceが未使用のときにアイドル状態(`stopped`ステージ)になります😴。スリープ中は、アップグレードされたハードウェアの料金は発生しません。新しい訪問者を受け取ると、Spaceは「目覚め」て再起動されます。

その後、Spaces のハードウェア設定で以下のインターフェースが利用可能になります。

以下のオプションが利用可能です:

## レプリカ

Spaceは、複数のレプリカをリクエストすることで水平スケーリングできます。これにより、トラフィックがSpaceの複数のインスタンスに分散され、可用性とスループットが向上します。レプリカ数はAPI経由で設定できます:

```
POST https://huggingface.co/api/spaces/{namespace}/{repo}/replicas
Content-Type: application/json

{
  "replicas": 2
}
```

> [!NOTE]
> レプリカはアップグレード済み（有料）のハードウェアでのみ利用可能です。各レプリカは個別に課金されます。

## ログ、イベント、メトリクスのストリーミング[[streaming]]

SpaceからSSE（Server-Sent Events）を介して、リアルタイムのログ、ステータスイベント、メトリクスをストリーミングできます：

- **ビルドまたは実行ログ**: `GET /api/spaces/{namespace}/{repo}/logs/{build|run}`
- **ステータスイベント**: `GET /api/spaces/{namespace}/{repo}/events`
- **メトリクス**: `GET /api/spaces/{namespace}/{repo}/metrics`

これらのエンドポイントは認証を必要とし、[SSEプロトコル](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events)を使用してデータを返します。

ログエンドポイントは、応答をログの最後の N 行に制限するための任意の `tail` クエリパラメータ（非負の整数）を受け入れます:

```
GET /api/spaces/{namespace}/{repo}/logs/{build|run}?tail=100
```

## スペースの一時停止[[pause]]

リポジトリの設定から、Space を`pause`（一時停止）できます。「一時停止中」の Space は保留状態となり、手動で再起動されるまでリソースを消費しません。Space への書き込み権限を持つユーザーは、Space を一時停止または再起動できます。一時停止中の時間は請求対象外です。

