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.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

CPU

CPU は、アクセラレータなしでデバイス文字列 cpu を指定して 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で学習

bf16をサポートするCPU(最近のIntelやAMDのプロセッサなど)では、PyTorchのAMPを使用してbf16混合精度トレーニングを行うことができ、メモリ使用量の削減とトレーニングの高速化を実現します。

以下の例は、1つのCPUが低速すぎる場合に複数のマシンを使用するケースまで、単一CPUから複数マシンまでの3つの構成をカバーしています。

  • 単一の CPU
  • 1台のマシン上で複数のプロセス(CPUソケットごとに1つ)
  • 複数のマシンにまたがる複数のプロセス

単一ノードおよびマルチノードの例では、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 の方が数値的に安定しているため、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