Transformers documentation

Intel GPU

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

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/xpu

PyTorch'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

Update on GitHub