Transformers documentation

GPU Intel

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

GPU Intel

GPU Intel menjalankan PyTorch melalui backend XPU, dengan string perangkat xpu. Build XPU PyTorch berasal dari indeks paket yang terpisah, sehingga perintah instalasi di bawah ini menambahkannya sebagai indeks tambahan.

Instalasi

Instal driver GPU Intel untuk PyTorch, lalu jalankan xpu-smi untuk mengonfirmasi bahwa sistem Anda mendeteksi GPU.

Install PyTorch dari indeks XPU bersama dengan Transformers.

pip install "transformers[torch]" --extra-index-url https://download.pytorch.org/whl/xpu

Periksa bahwa PyTorch dapat melihat GPU.

import torch

print(torch.xpu.is_available(), torch.xpu.device_count())

Ia mencetak True dan jumlah GPU, misalnya True 2.

Pilih dan urutkan XPU

Gunakan variabel lingkungan ZE_AFFINITY_MASK untuk memilih XPU. Tetapkan variabel ini pada baris perintah yang sama dengan eksekusi, karena variabel yang diekspor namun terlupakan dapat secara diam-diam mengarahkan eksekusi berikutnya ke XPU yang salah.

Sebagai contoh, untuk memilih XPU 0 dan 2 dari empat:

ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...

PyTorch hanya melihat XPU 0 dan 2. Urutan nilai dalam ZE_AFFINITY_MASK tidak mengubah urutan yang digunakan PyTorch untuk mendaftar perangkat tersebut. Untuk mendapatkan urutan yang konsisten antar eksekusi, juga atur ZE_ENABLE_PCI_ID_DEVICE_ORDER=1, yang melaporkan perangkat dari PCI bus ID terendah hingga tertinggi.

ZE_ENABLE_PCI_ID_DEVICE_ORDER=1 ZE_AFFINITY_MASK=0,2 torchrun trainer-program.py ...

Lihat spesifikasi Level Zero untuk informasi lebih lanjut tentang enumerasi perangkat.

Pilih backend perhatian

Anda mengatur backend perhatian dengan attn_implementation saat memuat model, dan ini berlaku untuk inferensi maupun pelatihan. Model menggunakan SDPA secara default. Dengan PyTorch 2.8 atau lebih baru, SDPA pada XPU menangani grouped-query attention secara langsung, tanpa perlu mengulang kepala key dan value terlebih dahulu.

attn_implementation="flash_attention_2" memuat kernels-community/flash-attn2 dari Hub, yang menyediakan build XPU. Instal ekstra kernels untuk menggunakannya. FlashAttention-3 dan FlashAttention-4 hanya berjalan pada GPU 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",
)

Jalankan inferensi

Lewati device_map="auto" ke from_pretrained() untuk membagi model yang tidak muat di satu XPU ke seluruh XPU yang tersedia, atau device_map="xpu" untuk memuatnya di satu XPU. pipeline() memilih XPU secara otomatis ketika Anda tidak melewatkan 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 mendukung grafik XPU dan batching asinkron pada GPU Intel, serta secara otomatis menentukan apakah akan menggunakannya.

Gunakan kernel Hub

Setel use_kernels=True di from_pretrained() untuk mengganti lapisan yang didukung dengan kernel yang dioptimalkan dari Hub. GPU Intel mencakup sebagian besar lapisan yang sama dengan GPU NVIDIA, seperti aktivasi, RMSNorm, dan rotary embeddings. Instal ekstra kernels untuk menggunakannya.

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-0.6B", dtype="bfloat16", device_map="xpu", use_kernels=True
)

Hub kernels juga berlaku untuk pelatihan. Memanggil model.train() atau model.eval() akan mengganti kernel untuk mode tersebut. Untuk memilih kernel secara manual, berikan KernelConfig dan gunakan "xpu" sebagai kunci perangkat untuk pemetaan khusus XPU. Lihat Memuat kernel untuk pemetaan lengkap.

Kuantisasi model

Quantization memungkinkan model yang lebih besar muat di memori GPU. Periksa kolom Intel GPU di ringkasan quantization untuk metode yang berjalan di XPU.

Untuk melakukan fine-tuning pada model yang tidak muat di memori GPU, muat model tersebut dalam 4-bit dengan bitsandbytes dan latih adapter LoRA dengan PEFT.

Latih dengan Trainer

TrainingArguments mendeteksi GPU Intel dan mengatur perangkat ke xpu, sehingga Trainer dapat melatih di atasnya tanpa pengaturan perangkat apa pun. TrainingArguments memeriksa dukungan bf16 dengan torch.xpu.is_bf16_supported() dan melempar ValueError jika GPU tidak mendukungnya.

from transformers import TrainingArguments

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

Ia mencetak xpu:0 ketika Trainer akan melatih pada satu XPU.

Pelatihan terdistribusi

Pelatihan terdistribusi menggunakan backend kolektif xccl. Jalankan satu proses per XPU dengan torchrun atau accelerate launch.

torchrun --nproc_per_node=2 train.py

Lihat DDP, FSDP2, DeepSpeed ZeRO, dan Tensor parallelism untuk memilih strategi paralelisme.

Langkah selanjutnya

Update on GitHub