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.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Intel Gaudi

Intel Gaudi アクセラレータは、Intel Gaudi スタック上で PyTorch を実行し、デバイス文字列は hpu です。Gaudi はデフォルトで PyTorch を eager モードで実行します。eager モードでは、CPU や GPU 上で PyTorch が実行されるのと同じように、各オペレーションが呼び出された時点で即座に実行されるため、Transformers のモデルは Gaudi 固有の変更なしで Gaudi 上で実行できます。代わりにモデルをグラフとしてキャプチャするには、torch.compile でコンパイルします。

インストール

Intel Gaudi ソフトウェアとその PyTorch パッケージ(habana-torch-plugin、habana_frameworks としてインポート)を、Intel Gaudi インストールガイドに従ってインストールし、Accelerate 1.5.0 以降もインストールしてください。

Transformers はトークン ID に int64 テンソルを使用するため、Gaudi 上で int64 サポートを有効にしてください。Transformers の Gaudi CI も同じ設定で実行されています。

export PT_ENABLE_INT64_SUPPORT=1

Transformersがデバイスを確認できることを確認します。

from transformers import is_torch_hpu_available

print(is_torch_hpu_available())

Gaudi が使用可能な場合は True を出力し、Accelerate が 1.5.0 より古い場合は、Gaudi デバイスが存在していても False を出力します。

デバイスの選択

Docker コンテナの起動時に、コンテナが使用できる Gaudi デバイスを選択します。HABANA_VISIBLE_MODULES にモジュール ID を設定するか、HABANA_VISIBLE_DEVICES にデバイスインデックスを設定します。モジュール ID は再起動やドライバーの再インストール後も変更されませんが、デバイスインデックスは変更される可能性があります。どちらにも設定しない場合、PyTorch はサーバー上で利用可能な任意の Gaudi デバイスを使用します。

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

hl-smi -Q index,module_id -f csv を実行して、デバイスインデックスとモジュールIDの対応付けを行います。サーバーの一部で分散ワークロードを実行する場合、Intelは2デバイスおよび4デバイスのグループのみをサポートしています。サポートされているモジュールIDの組み合わせについては、単一のワークロードを持つ複数のDockerを参照してください。

推論を実行する

device_map="hpu" を from_pretrained() に渡します。device を渡さない場合、pipeline() は Gaudi を自動的に選択します。

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は、Gaudi 2 および Gaudi 3 上でモデルを 4 ビットまたは 8 ビットに量子化します。device_mapを指定しない場合、モデルは現在の Gaudi デバイスに配置されます。

1つのデバイスに収まらないモデルをファインチューニングするには、bitsandbytes を使用して 4-bit で読み込み、PEFT で LoRA アダプターを学習します。

Trainerで学習

TrainingArguments は Gaudi を検出し、デバイスを hpu に設定します。そのため、Trainer はデバイス設定なしで Gaudi 上で学習を実行できます。すべての Gaudi 世代は bf16 をサポートしています。

from transformers import TrainingArguments

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

TrainerがGaudi上で学習を行う場合、hpuデバイスが出力されます。

モデルをコンパイルする

Transformers は Gaudi 上で torch.compile をラップしているため、hpu_backend または eager 以外のバックエンドを指定した呼び出し、およびモデリングコード内の @torch.compile デコレータを含むすべての呼び出しは、hpu_backend に切り替わり、警告がログに出力されます。このラッパーは、推論でも学習でも、すべての torch.compile 呼び出しに適用されます。

モデルをトレーニング用にコンパイルするには、TrainingArgumentsでtorch_compile=Trueを設定します。これにより、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",
)

デバイスの選択を行った後、torchrunまたはaccelerate launchを使用して、Gaudi デバイスごとに 1 つのプロセスを起動します。accelerate launchでは、--num_processesを指定しない場合、プロセス数は Gaudi デバイスの数に設定されます。

accelerate launch train.py

次のステップ

Update on GitHub