# Hardware

O Transformers roda em CPUs, GPUs NVIDIA, GPUs AMD, Apple Silicon, TPUs da Google, instâncias AWS Trainium e muito mais, por meio de seus backends do PyTorch.

- Para o treinamento, o [TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments) detecta o backend automaticamente.
- Para inferência, a detecção automática não cobre todos os backends, então passe a string de dispositivo para escolher um explicitamente. Esta página lista a string de dispositivo e o pacote para cada backend, o que [TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments) configura para ele e como o Transformers decide qual dispositivo usar.

## Encontre seu hardware

Cada backend possui uma string de dispositivo que você passa para `device_map` ou `device`. CPU e Apple Silicon funcionam com o pacote padrão `torch`. Os outros backends exigem um pacote de extensão do PyTorch que registra o backend no PyTorch.

| Hardware                         | String de dispositivo | Pacote               |
|----------------------------------|---------------|-----------------------|
| [CPU](./cpu)                     | `cpu`         | `torch`               |
| [GPU da NVIDIA](./nvidia_gpu)       | `cuda`        | `torch`               |
| [GPU AMD](./amd_gpu)             | `cuda`        | `torch` (build ROCm)  |
| [AWS Trainium](./aws_trainium)   | `neuron`      | `torch-neuronx`       |
| [Google TPU](./google_tpu)       | `tpu`         | `torch-tpu`           |
| [GPU Intel](./intel_gpu)         | `xpu`         | `torch`               |
| [Apple Silicon](./apple_silicon) | `mps`         | `torch`               |
| [Intel Gaudi](./intel_gaudi)     | `hpu`         | `habana-torch-plugin` |
| NPU Ascend da Huawei                | `npu`         | `torch-npu`           |
| Cambricon MLU                    | `mlu`         | `torch-mlu`           |
| GPU Moore Threads                | `musa`        | `torch-musa`          |

> [!TIP]
> Se um backend de hardware estiver ausente desta tabela e você acredita que o Transformers o suporta, por favor, [abra uma issue](https://github.com/huggingface/transformers/issues/new/choose).

## Como o Transformers seleciona um dispositivo

O Transformers seleciona um dispositivo diferente para treinamento e inferência.

### Treinamento

[TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments) detecta o backend automaticamente por meio do [Accelerate](https://hf.co/docs/accelerate/index). Em uma execução distribuída, cada processo utiliza o dispositivo que o Accelerate lhe atribui. Em um único processo, o [TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments) seleciona o primeiro backend disponível e recorre à CPU caso nenhum esteja disponível. Defina `use_cpu=True` para forçar o treinamento na CPU.

### Inferência

[from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) carrega um modelo na CPU por padrão.

Defina `device_map="auto"` para posicioná-lo nos aceleradores disponíveis. O posicionamento automático depende do Accelerate para detectar CUDA, Intel XPU, Intel Gaudi (HPU) e Apple Silicon (MPS), entre outros, mas não cobre todos os backends. Para outros backends, como AWS Trainium e Google TPU, passe a string de dispositivo para `device_map` explicitamente.

```py
from transformers import AutoModelForCausalLM

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

