Transformers documentation
Intel Gaudi
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=1Transformersがデバイスを確認できることを確認します。
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
次のステップ
- ハードウェアの詳細、ソフトウェアスタック、およびGaudi アーキテクチャについては、Intel Gaudi ドキュメントを参照してください。
- Gaudi向けの最適化されたモデル実装による学習と推論には、Optimum for Intel Gaudiをお試しください。