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

Les processeurs exécutent les modèles Transformers avec la chaîne de périphérique cpu, sans accélérateur. Ils fonctionnent pour l’inférence et l’entraînement lorsque les GPU ne sont pas disponibles, ou lorsque vous souhaitez une configuration économique.

Exécuter l'inférence

Les modèles sont chargés sur le CPU par défaut lorsque vous ne passez pas device_map, et pipeline() utilise le CPU lorsqu’aucun accélérateur n’est disponible. Passez device_map="cpu" ou device="cpu" pour utiliser le CPU sur une machine qui dispose également d’un accélérateur.

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

Entraîner avec Trainer

Les processeurs prenant en charge bf16, tels que les processeurs Intel et AMD récents, peuvent utiliser l’entraînement en précision mixte bf16 avec l’AMP de PyTorch, ce qui réduit l’utilisation de la mémoire et accélère l’entraînement.

Les exemples ci-dessous couvrent trois configurations, allant d'un seul CPU à plusieurs machines lorsqu'un CPU est trop lent :

  • un seul CPU
  • plusieurs processus sur une seule machine (un par socket CPU)
  • plusieurs processus sur plusieurs machines

Les exemples à nœud unique et multi-nœuds lancent des processus avec mpirun de Intel MPI, qui fait partie du Intel oneAPI HPC Toolkit, et Trainer exécute le DDP sur le backend gloo.

CPU unique
CPU distribué (nœud unique)
CPU distribué (plusieurs nœuds)

Définissez bf16=True et use_cpu=True dans TrainingArguments, ou passez --bf16 et --use_cpu à un script d’entraînement. Préférez bf16 à fp16 sur CPU car il est plus stable numériquement.

from transformers import TrainingArguments

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

Optimiser les performances du processeur

Préchargez un allocateur de mémoire plus rapide et le runtime OpenMP d’Intel pour réduire les surcoûts lors de l’entraînement sur CPU. Installez google-perftools (pour libtcmalloc) et le package Python intel-openmp (pour libiomp5), puis ajoutez les deux bibliothèques à la variable d’environnement LD_PRELOAD avant de lancer l’entraînement.

Définissez OMP_NUM_THREADS sur le nombre de cœurs que chaque processus peut utiliser. Dans un conteneur ou un travail de cluster avec des limites CPU, il s’agit du nombre d’unités CPU allouées, il convient donc de laisser certains cœurs non alloués pour les processus système.

Étapes suivantes

  • Lisez le billet de blog Accelerating PyTorch Transformers with Intel Sapphire Rapids pour une analyse approfondie des performances BF16 sur le matériel Intel moderne.
  • Consultez DDP pour en savoir plus sur la stratégie distribuée utilisée par les exemples multi-processus.
  • Lisez les notes sur le threading CPU de PyTorch pour comprendre comment OMP_NUM_THREADS affecte les performances.
  • Consultez le guide PyTorchJob de Kubeflow pour exécuter une formation distribuée sur CPU dans Kubernetes.
Update on GitHub