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

Процессоры выполняют модели Transformers с использованием строки устройства cpu, без ускорителя. Они подходят для инференса и обучения, когда GPU недоступны или когда требуется экономичная конфигурация.

Запуск вывода

По умолчанию модели загружаются на CPU, если не передать device_map, а pipeline() использует CPU, когда ускоритель недоступен. Передайте device_map="cpu" или device="cpu", чтобы использовать CPU на машине, на которой также есть ускоритель.

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"])

Обучение с помощью Trainer

Процессоры с поддержкой bf16, такие как современные процессоры Intel и AMD, могут использовать обучение с смешанной точностью bf16 с помощью AMP в PyTorch, что снижает потребление памяти и ускоряет обучение.

Приведённые ниже примеры охватывают три конфигурации: от одного CPU до нескольких машин, когда одного CPU недостаточно:

  • один CPU
  • несколько процессов на одной машине (по одному на каждый сокет CPU)
  • несколько процессов на нескольких машинах

Примеры для одного и нескольких узлов запускают процессы с помощью mpirun из Intel MPI, входящего в состав Intel oneAPI HPC Toolkit, а Trainer выполняет DDP через бэкенд gloo.

один CPU
распределённый CPU (один узел)
распределённый CPU (несколько узлов)

Установите bf16=True и use_cpu=True в TrainingArguments или передайте --bf16 и --use_cpu в скрипт обучения. На CPU предпочтительнее использовать bf16, а не fp16, так как он обеспечивает большую численную устойчивость.

from transformers import TrainingArguments

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

Настройка производительности CPU

Предварительно загрузите более быстрый аллокатор памяти и рантайм Intel OpenMP, чтобы снизить накладные расходы при обучении на CPU. Установите google-perftools (для libtcmalloc) и пакет Python intel-openmp (для libiomp5), затем добавьте обе библиотеки в переменную окружения LD_PRELOAD перед запуском обучения.

Установите OMP_NUM_THREADS в значение количества ядер, доступных каждому процессу. В контейнере или в кластерной задаче с ограничениями по CPU это количество выделенных CPU-единиц, поэтому оставьте часть ядер незанятыми для системных процессов.

Дальнейшие шаги

  • Ознакомьтесь с публикацией Accelerating PyTorch Transformers with Intel Sapphire Rapids, чтобы подробнее узнать о производительности BF16 на современном оборудовании Intel.
  • Подробнее о распределённой стратегии, используемой в примерах с несколькими процессами, читайте в DDP.
  • Ознакомьтесь с заметками PyTorch о потоках CPU, чтобы узнать, как OMP_NUM_THREADS влияет на производительность.
  • Ознакомьтесь с руководством PyTorchJob Kubeflow, чтобы выполнять распределённое обучение на CPU в Kubernetes.
Update on GitHub