Transformers documentation
Intel GPU
Intel GPU
Intel GPU'ler, PyTorch'u xpu cihaz dizgesiyle XPU arka ucu üzerinden çalıştırır. PyTorch'un XPU derlemesi ayrı bir paket dizininden gelir; bu nedenle aşağıdaki kurulum komutu, bu dizini ek bir dizin olarak ekler.
Kurulum
PyTorch için Intel GPU sürücülerini yükleyin, ardından sisteminizin GPU'yu algıladığını kontrol etmek için xpu-smi komutunu çalıştırın.
Transformers ile birlikte PyTorch'u XPU dizininden yükleyin.
pip install "transformers[torch]" --extra-index-url https://download.pytorch.org/whl/xpuPyTorch'un GPU'ları görebildiğinden emin olun.
import torch
print(torch.xpu.is_available(), torch.xpu.device_count())True ve GPU sayısını, örneğin True 2 gibi, yazdırır.
XP'leri seçin ve sıralayın
XPUI seçmek için ZE_AFFINITY_MASK ortam değişkenini kullanın. Dışa aktarıp unuttuğunuz bir değişken, sonraki bir çalıştırmayı sessizce yanlış XPUI yönlendirebileceğinden, bu değişkeni çalıştırma komutunun aynı satırında ayarlayın.
Örneğin, dört XPU'dan 0 ve 2 numaralı XP'ları seçmek için:
ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...PyTorch yalnızca 0 ve 2 numaralı XP’leri görür. ZE_AFFINITY_MASK içindeki değerlerin sırası, PyTorch’ün bu cihazları listelediği sırayı değiştirmez. Çalışmalar arasında tutarlı bir sıra elde etmek için, cihazları en düşükten en yüksek PCI bus kimliğine göre raporlayan ZE_ENABLE_PCI_ID_DEVICE_ORDER=1 değerini de ayarlayın.
ZE_ENABLE_PCI_ID_DEVICE_ORDER=1 ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...Cihaz numaralandırma hakkında daha fazla bilgi için Level Zero spesifikasyonuna bakın.
Bir dikkat arka ucunu seçin
Modeli yüklerken attn_implementation ile dikkat (attention) arka ucunu (backend) ayarlar ve bu ayar hem çıkarım (inference) hem de eğitim için geçerlidir. Modeller varsayılan olarak SDPA kullanır. PyTorch 2.8 veya daha yeni sürümlerde, XPU üzerindeki SDPA, anahtar (key) ve değer (value) başlıklarını önce tekrarlamadan gruplu sorgu dikkatini (grouped-query attention) doğrudan işler.
attn_implementation="flash_attention_2", Hub'dan kernels-community/flash-attn2 paketini yükler; bu paket XPU derlemelerini içerir. Kullanmak için kernels ekini kurun. FlashAttention-3 ve FlashAttention-4 yalnızca NVIDIA GPU'larda çalışır.
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",
)Çıkarım çalıştır
Tek bir XPU’ya sığmayan bir modeli kullanılabilir XPU’lar arasında dağıtmak için from_pretrained() fonksiyonuna device_map="auto" parametresini iletin veya tek bir XPU’da yüklemek için device_map="xpu" kullanın. device parametresi iletilmediğinde pipeline() bir XPU’yu otomatik olarak seçer.
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, Intel GPU'lerde XPU grafiklerini ve asenkron toplu işlemleri destekler ve bunların kullanılıp kullanılmayacağını otomatik olarak belirler.
Hub çekirdeklerini kullanın
from_pretrained() içinde use_kernels=True değerini ayarlayarak desteklenen katmanları Hub’daki optimize edilmiş çekirdeklerle değiştirin. Intel GPU’lar, aktivasyonlar, RMSNorm ve döner gömme (rotary embeddings) gibi NVIDIA GPU’larla büyük ölçüde aynı katmanları kapsar. Bunları kullanmak için kernels ekini yükleyin.
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-0.6B", dtype="bfloat16", device_map="xpu", use_kernels=True
)Hub çekirdekleri eğitim için de geçerlidir. model.train() veya model.eval() çağrıldığında, ilgili moda ait çekirdekler devreye alınır. Çekirdeği kendiniz seçmek için bir KernelConfig iletin ve XPU'ya özgü eşlemeler için cihaz anahtarı olarak "xpu" kullanın. Tam eşleme için Çekirdekleri yükleme bölümüne bakın.
Modelleri kuantize et
Quantization, daha büyük bir modelin GPU belleğine sığmasını sağlar. XPU üzerinde çalışan yöntemler için quantization genel bakış sayfasındaki Intel GPU sütununu kontrol edin.
GPU belleğine sığmayan bir modeli ince ayar yapmak için, modeli bitsandbytes ile 4-bit olarak yükleyin ve PEFT ile LoRA adaptörlerini eğitin.
Trainer ile Eğitim
TrainingArguments, Intel GPU’ları algılar ve cihazı xpu olarak ayarlar; bu sayede Trainer, herhangi bir cihaz ayarı gerektirmeden bu GPU’larda eğitim yapar. TrainingArguments, torch.xpu.is_bf16_supported() ile bf16 desteğini kontrol eder ve GPU bu özelliği desteklemiyorsa ValueError fırlatır.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
)
print(training_args.device)Trainer tek bir XPU üzerinde eğitim yapacaksa xpu:0 yazdırır.
Dağıtık eğitim
Dağıtık eğitim, xccl kolektif arka ucunu kullanır. Her XPU için bir süreç başlatmak için torchrun veya accelerate launch kullanın.
torchrun --nproc_per_node=2 train.py
Bir paralelleştirme stratejisi seçmek için DDP, FSDP2, DeepSpeed ZeRO ve Tensor parallelism seçeneklerine göz atın.
Sonraki adımlar
- Desteklenen donanımlar ve platformlar için PyTorch Intel GPU ile başlangıç kılavuzunu okuyun.
attn_implementation'in bir dikkat fonksiyonunu nasıl seçtiğini öğrenmek için Dikkat arka uçları bölümünü okuyun.