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

CPU는 가속기 없이 cpu라는 device 문자열을 사용하여 Transformers 모델을 실행합니다. GPU가 사용 불가능한 경우나 비용 효율적인 구성을 원할 때 추론과 학습에 사용할 수 있습니다.

추론 실행

device_map를 전달하지 않으면 모델은 기본적으로 CPU에 로드되며, 가속기가 없는 경우 pipeline()은 CPU를 사용합니다. 가속기가 있는 머신에서 CPU를 사용하려면 device_map="cpu" 또는 device="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로 학습

최근 Intel 및 AMD 프로세서와 같이 bf16을 지원하는 CPU는 PyTorch의 AMP를 사용하여 bf16 혼합 정밀도 훈련을 수행할 수 있으며, 이를 통해 메모리 사용량을 줄이고 훈련 속도를 높일 수 있습니다.

아래 예제는 CPU 1개에서 CPU 1개가 너무 느릴 때 여러 대의 머신을 사용하는 세 가지 구성을 다룹니다:

  • 단일 CPU
  • multiple processes on one machine (one per CPU socket)
  • 여러 대의 머신에 걸친 여러 프로세스

단일 노드 및 다중 노드 예제는 Intel oneAPI HPC Toolkit의 일부인 Intel MPI의 mpirun으로 프로세스를 시작하며, Trainer는 gloo 백엔드를 통해 DDP를 실행합니다.

단일 CPU
분산 CPU(단일 노드)
분산 CPU(여러 노드)

bf16=True와 use_cpu=True를 TrainingArguments에 설정하거나, 학습 스크립트에 --bf16와 --use_cpu를 전달하세요. CPU에서는 수치적으로 더 안정적이므로 fp16보다 bf16을 사용하는 것이 좋습니다.

from transformers import TrainingArguments

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

CPU 성능 조정

CPU 학습의 오버헤드를 줄이기 위해 더 빠른 메모리 할당기와 Intel의 OpenMP 런타임을 사전 로드합니다. google-perftools(libtcmalloc용)와 intel-openmp Python 패키지(libiomp5용)를 설치한 후, 학습을 시작하기 전에 두 라이브러리를 모두 LD_PRELOAD 환경 변수에 추가합니다.

OMP_NUM_THREADS를 각 프로세스가 사용할 수 있는 코어 수로 설정합니다. CPU 제한이 있는 컨테이너 또는 클러스터 작업의 경우, 이는 할당된 CPU 단위 수이므로 시스템 프로세스를 위해 일부 코어를 할당하지 않는 것이 좋습니다.

다음 단계

  • 현대 Intel 하드웨어에서 BF16 성능을 심층적으로 살펴보기 위해 Accelerating PyTorch Transformers with Intel Sapphire Rapids 블로그 게시물을 읽어보세요.
  • 멀티프로세스 예제에서 사용하는 분산 전략에 대한 자세한 내용은 DDP를 참고하세요.
  • OMP_NUM_THREADS가 성능에 어떤 영향을 미치는지 알아보려면 PyTorch CPU 스레딩 참고 문서를 읽어보세요.
  • Kubernetes에서 분산 CPU 학습을 실행하려면 Kubeflow PyTorchJob 가이드를 읽어보세요.
Update on GitHub