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 chạy các mô hình Transformers với chuỗi thiết bị cpu, không có bộ tăng tốc. Chúng hoạt động cho suy luận và huấn luyện khi không có GPU, hoặc khi bạn muốn một cấu hình tiết kiệm chi phí.

Chạy suy luận

Các mô hình được nạp lên CPU theo mặc định khi bạn không truyền device_map, và pipeline() sẽ sử dụng CPU khi không có bộ tăng tốc nào khả dụng. Hãy truyền device_map="cpu" hoặc device="cpu" để sử dụng CPU trên một máy cũng có bộ tăng tốc.

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

Huấn luyện với Trainer

CPU hỗ trợ bf16, chẳng hạn như các bộ xử lý Intel và AMD đời mới, có thể sử dụng huấn luyện độ chính xác hỗn hợp bf16 với AMP của PyTorch, giúp giảm lượng bộ nhớ sử dụng và tăng tốc độ huấn luyện.

Các ví dụ bên dưới bao gồm ba cấu hình, từ một CPU đơn lẻ đến nhiều máy khi một CPU quá chậm:

  • một CPU đơn
  • nhiều tiến trình trên một máy (một tiến trình cho mỗi socket CPU)
  • nhiều tiến trình trên nhiều máy

Các ví dụ đơn nút và đa nút khởi chạy các tiến trình bằng mpirun từ Intel MPI, một phần của Intel oneAPI HPC Toolkit, và Trainer chạy DDP trên backend gloo.

một CPU
CPU phân tán (đơn nút)
CPU phân tán (nhiều nút)

Đặt bf16=True và use_cpu=True trong TrainingArguments, hoặc truyền --bf16 và --use_cpu cho một script huấn luyện. Nên ưu tiên bf16 hơn fp16 trên CPU vì nó ổn định hơn về mặt số học.

from transformers import TrainingArguments

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

Tối ưu hiệu năng CPU

Tải trước bộ cấp phát bộ nhớ nhanh hơn và runtime OpenMP của Intel để giảm overhead trong huấn luyện CPU. Cài đặt google-perftools (cho libtcmalloc) và gói Python intel-openmp (cho libiomp5), sau đó thêm cả hai thư viện vào biến môi trường LD_PRELOAD trước khi bạn khởi chạy huấn luyện.

Đặt OMP_NUM_THREADS bằng số lõi mà mỗi tiến trình có thể sử dụng. Trong một container hoặc một tác vụ cụm có giới hạn CPU, đó là số đơn vị CPU được cấp phát, vì vậy hãy để một số lõi chưa được cấp phát cho các tiến trình hệ thống.

Các bước tiếp theo

  • Đọc bài đăng trên blog Tăng tốc PyTorch Transformers với Intel Sapphire Rapids để tìm hiểu sâu hơn về hiệu năng BF16 trên phần cứng Intel hiện đại.
  • Đọc DDP để tìm hiểu thêm về chiến lược phân tán mà các ví dụ đa tiến trình sử dụng.
  • Đọc ghi chú về luồng CPU của PyTorch để tìm hiểu cách OMP_NUM_THREADS ảnh hưởng đến hiệu suất.
  • Đọc hướng dẫn PyTorchJob của Kubeflow để chạy huấn luyện CPU phân tán trên Kubernetes.
Update on GitHub