Transformers documentation
وحدة معالجة الرسوميات من Intel
وحدة معالجة الرسوميات من Intel
تعمل معالجات Intel الرسومية مع PyTorch عبر واجهة XPU، مع سلسلة الأجهزة xpu. يأتي بناء XPU الخاص بـ PyTorch من فهرس حزم منفصل، لذا يضيف أمر التثبيت أدناه هذا الفهرس كفهرس إضافي.
التثبيت
قم بتثبيت مُحركات Intel GPU الخاصة بـ PyTorch، ثم شغّل xpu-smi لـ التحقق من أن نظامك يكتشف وحدة المعالجة الرسومية.
قم بتثبيت PyTorch من فهرس XPU إلى جانب Transformers.
pip install "transformers[torch]" --extra-index-url https://download.pytorch.org/whl/xpuتحقق من أن PyTorch يمكنه رؤية وحدات معالجة الرسوميات (GPUs).
import torch
print(torch.xpu.is_available(), torch.xpu.device_count())يطبع True وعدد وحدات معالجة الرسومات، على سبيل المثال True 2.
اختيار وترتيب وحدات المعالجة XPU
استخدم متغير البيئة ZE_AFFINITY_MASK لاختيار وحدات XPUs. اضبطه على نفس سطر الأوامر الخاص بالتنفيذ، لأن متغيرًا مُصدَّرًا تنساه قد يُوجّه تنفيذًا لاحقًا إلى وحدات XPUs خاطئة دون أي إنذار.
على سبيل المثال، لاختيار XPUs 0 و 2 من أصل أربعة:
ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...يرى PyTorch وحدات المعالجة XPU ذات المعرّفات 0 و2 فقط. لا يغيّر ترتيب القيم في ZE_AFFINITY_MASK الترتيب الذي تُدرجه به PyTorch. للحصول على ترتيب متسق عبر التشغيلات، اضبط أيضاً ZE_ENABLE_PCI_ID_DEVICE_ORDER=1، والذي يُبلّغ عن الأجهزة من أدنى معرّف ناقل PCI إلى أعلى معرّف.
ZE_ENABLE_PCI_ID_DEVICE_ORDER=1 ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...راجع مواصفة Level Zero لمزيد من المعلومات حول تعداد الأجهزة.
اختر واجهة خلفية للانتباه
تحدد واجهة الانتباه الخلفية باستخدام attn_implementation عند تحميل النموذج، وتُطبَّق على كل من الاستدلال والتدريب. تستخدم النماذج SDPA افتراضياً. مع PyTorch 2.8 أو أحدث، يتعامل SDPA على XPU مع انتباه الاستعلام المجمّع مباشرةً، دون الحاجة إلى تكرار رؤوس المفتاح والقيمة أولاً.
attn_implementation="flash_attention_2" يحمّل kernels-community/flash-attn2 من Hub، والذي يتضمن إصدارات XPU. ثبّت الإضافة kernels لاستخدامه. يعمل FlashAttention-3 وFlashAttention-4 على وحدات معالجة الرسوميات من NVIDIA فقط.
pip install "transformers[kernels]"from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-0.6B",
dtype="bfloat16",
device_map="xpu",
attn_implementation="flash_attention_2",
)تشغيل الاستدلال
مرّر device_map="auto" إلى from_pretrained() لتقسيم نموذج لا يتسع على XPU واحد عبر XPUs المتاحة، أو مرّر device_map="xpu" لتحميله على XPU واحد. يختار pipeline() XPU تلقائياً عندما لا تمرّر device.
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B", dtype="bfloat16", device_map="xpu")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
inputs = tokenizer("Intel GPUs are", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=50, do_sample=False)
print(tokenizer.decode(output[0], skip_special_tokens=True))يدعم Continuous batching رسوميات XPU والتدريج غير المتزامن على معالجات Intel الرسومية، ويقرر تلقائيًا ما إذا كان سيستخدمها أم لا.
استخدام نواة Hub
Set use_kernels=True in from_pretrained() to replace supported layers with optimized kernels from the Hub. Intel GPUs cover most of the same layers as NVIDIA GPUs, such as activations, RMSNorm, and rotary embeddings. Install the kernels extra to use them.
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-0.6B", dtype="bfloat16", device_map="xpu", use_kernels=True
)تُطبَّق نوى Hub على التدريب أيضًا. عند استدعاء model.train() أو model.eval() يتم تبديل النوى الخاصة بذلك الوضع. لاختيار نواة بنفسك، مرّر KernelConfig واستخدم "xpu" كمفتاح جهاز للخرائط الخاصة بـ XPU. راجع تحميل النوى للتعرف على الخرائط الكاملة.
كمّ النماذج
تتيح تقنية التكميم (Quantization) استيعاب نموذج أكبر في ذاكرة وحدة معالجة الرسوميات (GPU). راجع عمود معالجات Intel GPU في نظرة عامة على التكميم لمعرفة الطرق التي تعمل على XPU.
لضبط نموذج لا يتسع في ذاكرة وحدة معالجة الرسوميات، حمّله بدقة 4 بت باستخدام bitsandbytes ودرّب محولات LoRA باستخدام PEFT.
التدريب باستخدام Trainer
يتعرّف TrainingArguments على معالجات الرسوميات من Intel ويضبط الجهاز على xpu، بحيث يتدرّب Trainer عليها دون الحاجة إلى أي إعدادات للأجهزة. يتحقق TrainingArguments من دعم bf16 باستخدام torch.xpu.is_bf16_supported() ويرمي ValueError إذا لم يدعم المعالج ذلك.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
)
print(training_args.device)يطبع xpu:0 عندما يتدرب Trainer على وحدة XPU واحدة.
التدريب الموزّع
يستخدم التدريب الموزّع الخلفية الجماعية xccl. شغّل عملية واحدة لكل وحدة معالجة XPU باستخدام torchrun أو accelerate launch.
torchrun --nproc_per_node=2 train.py
راجع DDP وFSDP2 وDeepSpeed ZeRO وTensor parallelism لاختيار استراتيجية التوازي.
الخطوات التالية
- اقرأ دليل البدء باستخدام PyTorch على معالجات Intel الرسومية لمعرفة الأجهزة والمنصات المدعومة.
- اقرأ واجهات الانتباه الخلفية لمعرفة كيفية اختيار
attn_implementationلدالة الانتباه.