Transformers documentation

وحدة المعالجة المركزية

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

وحدة المعالجة المركزية

تعمل وحدات المعالجة المركزية (CPUs) على تشغيل نماذج Transformers باستخدام سلسلة الأجهزة cpu، دون الحاجة إلى معجّل. وتكون هذه الوحدات مناسبة للاستدلال والتدريب عندما لا تتوفر وحدات معالجة رسومية (GPUs)، أو عندما ترغب في إعداد موفر للتكلفة.

تشغيل الاستدلال

تُحمَّل النماذج على وحدة المعالجة المركزية (CPU) افتراضيًا عندما لا تمرر device_map، ويستخدم pipeline() وحدة المعالجة المركزية عندما لا يتوفر مُسرِّع. مرر 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

يمكن لوحات المعالجة المركزية (CPUs) التي تدعم bf16، مثل معالجات Intel وAMD الحديثة، استخدام تدريب الدقة المختلطة bf16 مع AMP في PyTorch، مما يقلل من استهلاك الذاكرة ويسرّع عملية التدريب.

تغطي الأمثلة أدناه ثلاثة إعدادات، بدءًا من وحدة معالجة مركزية واحدة وصولاً إلى عدة أجهزة عندما تكون وحدة المعالجة المركزية الواحدة بطيئة جدًا:

  • معالج واحد
  • عمليات متعددة على جهاز واحد (عملية لكل مقبس وحدة معالجة مركزية)
  • عمليات متعددة عبر عدة أجهزة

تطلق أمثلة العقدة الواحدة والعقد المتعددة العمليات باستخدام mpirun من Intel MPI، وهو جزء من Intel oneAPI HPC Toolkit، بينما يعمل Trainer على DDP عبر الخلفية gloo.

معالج واحد
موزّع على المعالج المركزي (عقدة واحدة)
موزّع على المعالج المركزي (عقد متعددة)

اضبط bf16=True وuse_cpu=True في TrainingArguments، أو مرّر --bf16 و--use_cpu إلى سكربت التدريب. يُفضَّل استخدام bf16 بدلاً من fp16 على المعالج المركزي لأنه أكثر استقراراً رقمياً.

from transformers import TrainingArguments

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

ضبط أداء المعالج

قم بتحميل مُخصِّص ذاكرة أسرع وبيئة تشغيل OpenMP من Intel مسبقًا لتقليل النفقات الإضافية في التدريب على المعالج. ثبّت حزمة google-perftools (لـ libtcmalloc) وحزمة بايثون intel-openmp (لـ libiomp5)، ثم أضف كلا المكتبتين إلى متغير البيئة LD_PRELOAD قبل بدء التدريب.

اضبط OMP_NUM_THREADS على عدد الأنوية التي يمكن لكل عملية استخدامها. في حاوية أو مهمة عنقودية مع حدود معالج، يكون ذلك هو عدد وحدات المعالج المخصصة، لذا اترك بعض الأنوية غير مخصصة للعمليات النظامية.

الخطوات التالية

  • اقرأ منشور المدونة تسريع PyTorch Transformers باستخدام Intel Sapphire Rapids للحصول على نظرة أعمق على أداء BF16 على أجهزة Intel الحديثة.
  • اقرأ DDP لمزيد من المعلومات حول استراتيجية التوزيع التي تستخدمها أمثلة العمليات المتعددة.
  • اقرأ ملاحظات إسناد الخيوط إلى المعالج في PyTorch لمعرفة كيفية تأثير OMP_NUM_THREADS على الأداء.
  • اقرأ دليل PyTorchJob الخاص بـ Kubeflow لتشغيل التدريب الموزّع على المعالجات المركزية (CPU) في Kubernetes.
Update on GitHub