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 работают с PyTorch через бэкенд XPU, строка устройства — xpu. Сборка PyTorch для XPU поставляется из отдельного индекса пакетов, поэтому команда установки ниже добавляет его как дополнительный индекс.

Установка

Установите драйверы Intel GPU для PyTorch, затем выполните xpu-smi, чтобы проверить, что система обнаруживает GPU.

Установите PyTorch из индекса XPU вместе с Transformers.

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

Убедитесь, что PyTorch видит GPU.

import torch

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

Выводит True и количество GPU, например True 2.

Выбор и порядок XPUs

Используйте переменную окружения ZE_AFFINITY_MASK для выбора XPUs. Устанавливайте её в той же командной строке, что и запуск, так как экспортированная переменная, о которой вы забыли, может незаметно направить последующий запуск на неверные XPU.

Например, чтобы выбрать XPU 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 bus ID к наибольшему.

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 напрямую обрабатывает grouped-query attention, без предварительного дублирования ключей и значений.

attn_implementation="flash_attention_2" загружает kernels-community/flash-attn2 с Hub, где доступны сборки для XPU. Для использования установите дополнительный пакет kernels. FlashAttention-3 и FlashAttention-4 работают только на 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",
)

Запуск вывода

Передайте device_map="auto" в from_pretrained(), чтобы распределить модель, которая не помещается на одном XPU, по доступным XPU, или 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 и асинхронную пакетную обработку на GPU 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-специфичных отображений. Полное отображение описано в разделе Загрузка ядер.

Квантование моделей

Квантование позволяет разместить более крупную модель в памяти GPU. В столбце Intel GPU в обзоре квантования указаны методы, поддерживаемые на XPU.

Чтобы дообучить модель, которая не помещается в память GPU, загрузите её в 4-битном формате с помощью bitsandbytes и обучите адаптеры LoRA с помощью PEFT.

Обучение с помощью Trainer

TrainingArguments определяет GPU Intel и устанавливает устройство в xpu, поэтому Trainer обучает на них без каких-либо настроек устройства. TrainingArguments проверяет поддержку bf16 с помощью torch.xpu.is_bf16_supported() и вызывает ValueError, если GPU не поддерживает этот формат.

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 GPU, чтобы узнать о поддерживаемом оборудовании и платформах.
  • Ознакомьтесь с разделом Бэкенды внимания, чтобы узнать, как attn_implementation выбирает функцию внимания.
Update on GitHub