Transformers documentation

CPU

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

CPU

CPUs executam modelos do Transformers com a string de dispositivo cpu, sem um acelerador. Elas funcionam para inferência e treinamento quando GPUs não estão disponíveis, ou quando você deseja uma configuração economicamente viável.

Executar inferência

Os modelos são carregados na CPU por padrão quando você não passa device_map, e o pipeline() usa a CPU quando nenhum acelerador está disponível. Passe device_map="cpu" ou device="cpu" para usar a CPU em uma máquina que também possui um acelerador.

from transformers import pipeline

generator = pipeline("text-generation", model="Qwen/Qwen3-0.6B", device="cpu")
print(generator("CPUs are", max_new_tokens=50, do_sample=False)[0]["generated_text"])

Treinar com o Trainer

CPUs com suporte a bf16, como os processadores Intel e AMD mais recentes, podem usar treinamento de precisão mista em bf16 com AMP do PyTorch, o que reduz o uso de memória e acelera o treinamento.

Os exemplos abaixo cobrem três configurações, de uma única CPU a vários computadores, quando uma única CPU é muito lenta:

  • uma única CPU
  • vários processos em uma única máquina (um por soquete de CPU)
  • vários processos em várias máquinas

Os exemplos de nó único e multi-nó iniciam processos com mpirun do Intel MPI, parte do Intel oneAPI HPC Toolkit, e o Trainer executa DDP sobre o backend gloo.

CPU única
CPU distribuída (nó único)
CPU distribuída (vários nós)

Defina bf16=True e use_cpu=True em TrainingArguments, ou passe --bf16 e --use_cpu para um script de treinamento. Prefira bf16 em vez de fp16 em CPU, pois é mais numericamente estável.

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./outputs",
    bf16=True,
    use_cpu=True,
)

Ajustar o desempenho da CPU

Pré-carregue um alocador de memória mais rápido e o runtime OpenMP da Intel para reduzir o overhead no treinamento em CPU. Instale o google-perftools (para o libtcmalloc) e o pacote Python intel-openmp (para o libiomp5), e em seguida adicione ambas as bibliotecas à variável de ambiente LD_PRELOAD antes de iniciar o treinamento.

Defina OMP_NUM_THREADS para o número de núcleos que cada processo pode usar. Em um contêiner ou em um trabalho de cluster com limites de CPU, esse é o número de unidades de CPU alocadas, portanto, deixe alguns núcleos não alocados para os processos do sistema.

Próximas etapas

  • Leia o post no blog Acelerando Transformers do PyTorch com Intel Sapphire Rapids para uma análise mais aprofundada do desempenho BF16 em hardware Intel moderno.
  • Leia DDP para saber mais sobre a estratégia distribuída usada nos exemplos multiprocessos.
  • Leia as notas de threading de CPU do PyTorch para entender como OMP_NUM_THREADS afeta o desempenho.
  • Leia o guia PyTorchJob do Kubeflow para executar treinamento distribuído de CPU no Kubernetes.
Update on GitHub