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

Bộ tăng tốc Intel Gaudi chạy PyTorch trên stack Intel Gaudi, với chuỗi thiết bị là hpu. Gaudi chạy PyTorch ở chế độ eager theo mặc định. Chế độ eager thực thi từng thao tác ngay khi nó được gọi, giống như cách PyTorch chạy trên CPU hoặc GPU, do đó các mô hình Transformers chạy trên Gaudi mà không cần thay đổi riêng cho Gaudi. Để bắt mô hình vào một đồ thị thay vì chạy theo cách đó, hãy biên dịch nó bằng torch.compile.

Cài đặt

Cài đặt phần mềm Intel Gaudi và gói PyTorch của nó (habana-torch-plugin, được nhập dưới tên habana_frameworks) theo hướng dẫn cài đặt Intel Gaudi, cùng với Accelerate phiên bản 1.5.0 trở lên.

Transformers sử dụng tensor int64 cho ID token, do đó hãy bật hỗ trợ int64 trên Gaudi. CI của Gaudi cho Transformers chạy với cùng cài đặt này.

export PT_ENABLE_INT64_SUPPORT=1

Kiểm tra xem Transformers có thể nhìn thấy thiết bị hay không.

from transformers import is_torch_hpu_available

print(is_torch_hpu_available())

Nó in ra True khi Gaudi sẵn sàng để sử dụng, và False với Accelerate cũ hơn 1.5.0, ngay cả khi có thiết bị Gaudi.

Chọn thiết bị

Chọn các thiết bị Gaudi mà một container Docker có thể sử dụng khi khởi động. Đặt HABANA_VISIBLE_MODULES thành các ID module, vốn giữ nguyên qua các lần khởi động lại và cài đặt lại driver, hoặc đặt HABANA_VISIBLE_DEVICES thành các chỉ mục thiết bị, vốn có thể thay đổi. Nếu bạn không đặt cả hai, PyTorch sẽ sử dụng bất kỳ thiết bị Gaudi nào khả dụng trên máy chủ.

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

Chạy hl-smi -Q index,module_id -f csv để ánh xạ chỉ mục thiết bị sang ID module. Đối với tác vụ phân tán trên một phần của máy chủ, Intel chỉ hỗ trợ nhóm 2 thiết bị và nhóm 4 thiết bị. Xem Nhiều Docker, mỗi Docker có một tác vụ duy nhất để biết các tổ hợp ID module được hỗ trợ.

Chạy suy luận

Truyền device_map="hpu" vào from_pretrained(). pipeline() sẽ tự động chọn Gaudi khi bạn không truyền 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))

Lượng tử hóa mô hình

bitsandbytes lượng tử hóa mô hình xuống 4 hoặc 8 bit trên Gaudi 2 và Gaudi 3. Khi bạn không truyền device_map, thư viện sẽ đặt mô hình lên thiết bị Gaudi hiện tại.

Để tinh chỉnh một mô hình không vừa trên một thiết bị, hãy tải nó ở 4-bit bằng bitsandbytes và huấn luyện các adapter LoRA với PEFT.

Huấn luyện với Trainer

TrainingArguments phát hiện Gaudi và đặt thiết bị thành hpu, do đó Trainer huấn luyện trên thiết bị này mà không cần bất kỳ cài đặt thiết bị nào. Tất cả các thế hệ Gaudi đều hỗ trợ bf16.

from transformers import TrainingArguments

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

Nó in ra thiết bị hpu khi Trainer sẽ huấn luyện trên Gaudi.

Biên dịch mô hình

Transformers bọc torch.compile trên Gaudi, do đó bất kỳ lời gọi nào có backend khác hpu_backend hoặc eager, bao gồm cả decorator @torch.compile trong mã modeling, đều sẽ chuyển sang hpu_backend và ghi log một cảnh báo. Lớp bọc này áp dụng cho mọi lời gọi torch.compile, cho cả suy luận lẫn huấn luyện.

Để biên dịch một mô hình cho việc huấn luyện, hãy đặt torch_compile=True trong TrainingArguments, điều này sẽ đặt torch_compile_backend thành "hpu_backend".

from transformers import TrainingArguments

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

Huấn luyện phân tán

Huấn luyện phân tán sử dụng backend tập thể HCCL. Transformers sẽ tự động chọn nó trên Gaudi, và bạn cũng có thể thiết lập rõ ràng bằng ddp_backend="hccl".

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

Khởi chạy một tiến trình cho mỗi thiết bị Gaudi bằng torchrun hoặc accelerate launch, sau khi chọn thiết bị. accelerate launch sẽ đặt số lượng tiến trình bằng số lượng thiết bị Gaudi khi bạn không truyền --num_processes.

accelerate launch train.py

Các bước tiếp theo

Update on GitHub