# ハードウェア

Transformers は、PyTorch バックエンドを通じて、CPU、NVIDIA GPU、AMD GPU、Apple Silicon、Google TPU、AWS Trainium インスタンスなど、さまざまなハードウェアで動作します。

- トレーニングでは、[TrainingArguments](/docs/transformers/main/ja/main_classes/trainer#transformers.TrainingArguments)がバックエンドを自動的に検出します。
- 推論では、自動検出がすべてのバックエンドをカバーするわけではないため、デバイスの文字列を渡して明示的に選択します。このページでは、各バックエンドのデバイス文字列とパッケージ、[TrainingArguments](/docs/transformers/main/ja/main_classes/trainer#transformers.TrainingArguments)がそれをどのように設定するか、そしてTransformersがどのデバイスを使用するかをどのように決定するかを説明します。

## お使いのハードウェアを確認

各バックエンドには、`device_map`または`device`に渡すデバイス文字列があります。CPUとApple Siliconは、標準の`torch`パッケージで動作します。その他のバックエンドには、PyTorchにバックエンドを登録するPyTorch拡張パッケージが必要です。

| ハードウェア                         | デバイス文字列 | パッケージ               |
|----------------------------------|---------------|-----------------------|
| [CPU](./cpu)                     | `cpu`         | `torch`               |
| [NVIDIA GPU](./nvidia_gpu)       | `cuda`        | `torch`               |
| [AMD GPU](./amd_gpu)             | `cuda`        | `torch`（ROCm ビルド）  |
| [AWS Trainium](./aws_trainium)   | `neuron`      | `torch-neuronx`       |
| [Google TPU](./google_tpu)       | `tpu`         | `torch-tpu`           |
| [Intel GPU](./intel_gpu)         | `xpu`         | `torch`               |
| [Apple Silicon](./apple_silicon) | `mps`         | `torch`               |
| [Intel Gaudi](./intel_gaudi)     | `hpu`         | `habana-torch-plugin` |
| Huawei Ascend NPU                | `npu`         | `torch-npu`           |
| Cambricon MLU                    | `mlu`         | `torch-mlu`           |
| Moore Threads GPU                | `musa`        | `torch-musa`          |

> [!TIP]
> この表にハードウェアバックエンドが記載されていない場合、Transformers がそれをサポートしていると考える場合は、[issue を作成してください](https://github.com/huggingface/transformers/issues/new/choose)。

## Transformers がデバイスをどのように選択するか

Transformers は、トレーニングと推論で異なるデバイスを選択します。

### トレーニング

[TrainingArguments](/docs/transformers/main/ja/main_classes/trainer#transformers.TrainingArguments) は [Accelerate](https://hf.co/docs/accelerate/index) を通じてバックエンドを自動的に検出します。分散実行では、各プロセスが Accelerate に割り当てられたデバイスを使用します。単一プロセスの場合、[TrainingArguments](/docs/transformers/main/ja/main_classes/trainer#transformers.TrainingArguments) は最初に利用可能なバックエンドを選択し、利用可能なバックエンドがない場合は CPU にフォールバックします。CPU でのトレーニングを強制するには、`use_cpu=True` を設定してください。

### 推論

[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) はデフォルトでモデルを CPU に読み込みます。

`device_map="auto"` を設定すると、利用可能なアクセラレーターに配置されます。自動配置は Accelerate に依存しており、CUDA、Intel XPU、Intel Gaudi (HPU)、Apple Silicon (MPS) などの検出に対応していますが、すべてのバックエンドをカバーするわけではありません。AWS Trainium や Google TPU などの他のバックエンドを使用する場合は、`device_map` にデバイス文字列を明示的に渡してください。

```py
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B", device_map="neuron")
```

