Transformers documentation

AMD 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

AMD GPU

AMD Instinct (seri MI200, MI300, MI350) dan GPU Radeon menjalankan PyTorch melalui ROCm, tumpukan perangkat lunak GPU dari AMD. Build PyTorch untuk ROCm menggunakan HIP, antarmuka pemrograman mirip CUDA dari AMD, untuk mengekspos GPU AMD melalui API torch.cuda. String perangkatnya adalah cuda, sehingga kode yang ditulis untuk GPU NVIDIA dapat berjalan tanpa perubahan. Transformers memeriksa torch.version.hip saat runtime untuk membedakan keduanya dan mengarahkan kernel attention dan Hub ke build yang spesifik untuk AMD.

Instalasi

Install ROCm dari image Docker huggingface/transformers-pytorch-amd-gpu. Image ini menyertakan build PyTorch untuk ROCm, build flash-attn untuk GPU MI300 dan MI350 (gfx942 dan gfx950), serta Transformers yang diinstal dari source.

docker run -it --device=/dev/kfd --device=/dev/dri --group-add video \
    --ipc=host --shm-size 16G \
    huggingface/transformers-pytorch-amd-gpu

--device=/dev/kfd dan --device=/dev/dri mengekspos GPU AMD ke dalam container. Instal kernels di dalam container untuk menggunakan Hub kernels.

pip install "transformers[kernels]"

Untuk menginstal di sistem Anda sendiri, pilih ROCm di PyTorch install selector dan pastikan versi wheel ROCm didukung oleh driver Anda.

Periksa bahwa PyTorch mendeteksi GPU AMD.

import torch

print(torch.version.hip, torch.cuda.is_available(), torch.cuda.device_count())
print(torch.cuda.get_device_properties(0).gcnArchName)
7.2.53211 True 2
gfx942:sramecc+:xnack-

torch.version.hip bernilai None pada build PyTorch CUDA. gcnArchName melaporkan arsitektur GPU, misalnya gfx942 untuk MI300, gfx950 untuk MI350, dan gfx1151 untuk Ryzen AI Max (Strix Halo).

Pilih dan urutkan GPU

Gunakan HIP_VISIBLE_DEVICES untuk memilih GPU dan mengatur urutannya. Atur ini pada baris perintah yang sama dengan eksekusi.

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

PyTorch hanya melihat GPU 0 dan 2, yang dipetakan ke cuda:0 dan cuda:1. ROCR_VISIBLE_DEVICES memfilter GPU pada tingkat yang lebih rendah dalam stack dan umumnya diset oleh penjadwal cluster. Jika keduanya diset, HIP_VISIBLE_DEVICES mengindeks GPU yang masih terlihat oleh ROCR_VISIBLE_DEVICES.

Gunakan rocm-smi atau amd-smi untuk menampilkan daftar GPU dan indeksnya.

Jalankan inferensi

Pipeline dan device_map="auto" mendeteksi GPU AMD dan menempatkan model di cuda secara otomatis. Anda juga dapat meneruskan device_map="cuda" atau device_map="cuda:1" secara eksplisit.

from transformers import AutoModelForCausalLM, AutoTokenizer

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

inputs = tokenizer("The French Bread Law states", return_tensors="pt").to(model.device)
output = model.generate(**inputs, do_sample=False, max_new_tokens=50)
print(tokenizer.decode(output[0], skip_special_tokens=True))
The French Bread Law states that the French government must provide a certain amount of bread for the citizens of the country. The law is passed by the French parliament. The French parliament is a body of the French government. The French government is a body of the French state. The

Pilih backend perhatian

Atur backend perhatian dengan attn_implementation saat Anda memuat model, dan ini berlaku untuk inferensi maupun pelatihan. SDPA adalah default dan berfungsi di setiap GPU AMD yang didukung oleh PyTorch. Dua opsi FlashAttention juga tersedia.

attn_implementationDiperlukanCatatan
"sdpa"–Default.
"flash_attention_2"flash-attn yang dibangun untuk ROCm, atau kernelsMenggunakan paket flash-attn saat terinstal. Backend Composable Kernel (CK) bawaannya mendukung GPU MI200, MI300, MI355, dan RDNA 3/4, dan image Docker menyertakannya pada MI300 atau MI350. Jika tidak, memuat amd/aiter-flash-attn dari Hub.
"flash_attention_3"kernelsMemuat amd/aiter-flash-attn, kernel FlashAttention yang sudah dibangun sebelumnya dari pustaka AITER AMD. Tidak memerlukan kompilasi.
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-0.6B",
    dtype="bfloat16",
    device_map="auto",
    attn_implementation="flash_attention_3",
)

Pada ROCm, flash_attention_3 dipecahkan ke kernel AITER dan mencatat log berikut. Transformers saat ini menggunakan alias kernels-community/aiter-flash-attn, yang mengarahkan ulang ke amd/aiter-flash-attn. Pesan tersebut merujuk ke paket FlashAttention-3, sehingga muncul bahkan ketika flash_attention_2 terpasang.

You do not have `flash_attn` installed, using `kernels-community/aiter-flash-attn` from the `kernels` library instead!

Anda juga dapat melewatkan repositori kernel secara langsung dengan attn_implementation="kernels-community/aiter-flash-attn". Lihat Attention backends untuk cara backend dipilih.

Gunakan kernel Hub

Set use_kernels=True di from_pretrained() untuk mengganti lapisan yang didukung dengan kernel yang dioptimalkan dari Hub. Transformers mendeteksi ROCm dan memilih build AMD untuk setiap lapisan, seperti amd/aiter-rope untuk rotary embeddings dan kernels-community/liger-kernels untuk RMSNorm. Saat Anda menulis KernelConfig kustom, gunakan "rocm" sebagai kunci perangkat untuk pemetaan yang spesifik AMD.

from transformers import AutoModelForCausalLM

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

Kernel hub terutama mempercepat prefill dan batch besar. Benchmark workload Anda sendiri sebelum mengaktifkannya untuk decoding batch kecil. Lihat Memuat kernel untuk pemetaan lengkap.

Kuantisasi model

Metode yang didukung pada ROCm meliputi AWQ, GPT-QModel, compressed-tensors, dan Quark dari AMD. bitsandbytes memiliki dukungan parsial. GPU MI300 dan yang lebih baru mendukung FP8 secara native. Lihat tabel kompatibilitas untuk daftar lengkap.

Latih dengan Trainer

TrainingArguments mendeteksi GPU AMD dan mengatur perangkat ke cuda secara otomatis.

from transformers import TrainingArguments

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

Pelatihan terdistribusi

Build ROCm dari PyTorch menyertakan RCCL, implementasi API NCCL dari AMD, sehingga backend nccl, torchrun, FSDP, DeepSpeed, dan API distributed Transformers berfungsi tanpa perubahan.

import torch
from transformers import AutoModelForCausalLM, DistributedConfig

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-1.7B",
    dtype=torch.bfloat16,
    distributed_config=DistributedConfig(tp_size=2, fsdp_size=4),
)
torchrun --nproc_per_node=8 train.py

Lihat Paralelisme tensor, Paralelisme pakar, dan FSDP untuk opsi yang tersedia.

Keterbatasan

  • CodeCarbonCallback tidak kompatibel dengan ROCm. Atur report_to di TrainingArguments untuk mengecualikan codecarbon.
  • Metode kuantisasi yang ditandai 🔴 untuk ROCm dalam tabel kompatibilitas bergantung pada kernel khusus CUDA dan gagal dimuat pada GPU AMD.

Langkah selanjutnya

Update on GitHub