Transformers documentation

Intel Gaudi

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 Gaudi

Ускорители Intel Gaudi выполняют PyTorch на стеке Intel Gaudi с строкой устройства hpu. По умолчанию Gaudi выполняет PyTorch в режиме eager. В режиме eager каждая операция выполняется сразу после вызова, так же, как PyTorch работает на CPU или GPU, поэтому модели Transformers запускаются на Gaudi без изменений, специфичных для Gaudi. Чтобы вместо этого захватить модель в граф, скомпилируйте её с помощью torch.compile.

Установка

Установите программное обеспечение Intel Gaudi и его пакет PyTorch (habana-torch-plugin, импортируемый как habana_frameworks) с помощью руководства по установке Intel Gaudi, а также Accelerate версии 1.5.0 или новее.

Transformers использует тензоры int64 для идентификаторов токенов, поэтому включите поддержку int64 на Gaudi. CI для Gaudi в Transformers выполняется с тем же параметром.

export PT_ENABLE_INT64_SUPPORT=1

Убедитесь, что Transformers видит устройство.

from transformers import is_torch_hpu_available

print(is_torch_hpu_available())

Выводит True, когда Gaudi готов к использованию, и False при использовании Accelerate версии старше 1.5.0, даже если устройство Gaudi присутствует.

Выбор устройств

Выберите, какие устройства Gaudi может использовать контейнер Docker при его запуске. Установите для HABANA_VISIBLE_MODULES идентификаторы модулей, которые сохраняются при перезагрузках и переустановке драйверов, или для HABANA_VISIBLE_DEVICES индексы устройств, которые могут меняться. Если ни одно из значений не задано, PyTorch использует любое доступное устройство Gaudi на сервере.

docker run --runtime=habana -e HABANA_VISIBLE_MODULES=0,1,2,3 ...

Выполните hl-smi -Q index,module_id -f csv, чтобы сопоставить индексы устройств с идентификаторами модулей. Для распределённой нагрузки на части сервера Intel поддерживает только группы из 2 и 4 устройств. См. Несколько Docker-контейнеров, каждый с одной нагрузкой, для получения списка поддерживаемых комбинаций идентификаторов модулей.

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

Передайте device_map="hpu" в from_pretrained(). pipeline() автоматически выбирает Gaudi, если вы не передаёте device.

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B", device_map="hpu")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")

inputs = tokenizer("Intel Gaudi is", 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))

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

bitsandbytes квантует модели до 4 или 8 бит на Gaudi 2 и Gaudi 3. Если вы не передаете device_map, модель размещается на текущем устройстве Gaudi.

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

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

TrainingArguments определяет Gaudi и устанавливает устройство в hpu, поэтому Trainer обучает на нём без каких-либо настроек устройства. Все поколения Gaudi поддерживают bf16.

from transformers import TrainingArguments

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

Выводит устройство hpu, если Trainer обучает на Gaudi.

Компиляция модели

Transformers оборачивает torch.compile на Gaudi, поэтому любой вызов с бэкендом, отличным от hpu_backend или eager, включая декоратор @torch.compile в коде моделирования, переключается на hpu_backend и выводит предупреждение. Обёртка применяется ко всем вызовам torch.compile, как для инференса, так и для обучения.

Чтобы скомпилировать модель для обучения, установите torch_compile=True в TrainingArguments, что задаёт torch_compile_backend значение "hpu_backend".

from transformers import TrainingArguments

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

Распределённое обучение

Распределённое обучение использует коллективный бэкенд HCCL. Transformers выбирает его на Gaudi, а также его можно задать явно с помощью ddp_backend="hccl".

training_args = TrainingArguments(
    output_dir="./outputs",
    bf16=True,
    ddp_backend="hccl",
)

Запустите один процесс на каждое устройство Gaudi с помощью torchrun или accelerate launch, предварительно выбрав устройства. accelerate launch устанавливает количество процессов равным числу устройств Gaudi, если вы не передаёте --num_processes.

accelerate launch train.py

Дальнейшие шаги

Update on GitHub