AMD Strix HaloでLLMをファインチューニングする方法
AMD Strix Halo APU(gfx1151)上で大規模言語モデルをフルファインチューニングおよびLoRAファインチューニングするためのガイド。ROCm互換性の問題を回避し、HuggingFace Trainerを直接使用します。
記事インテリジェンス
要点
- Strix Halo APUは128GBのユニファイドメモリを搭載し、大規模モデルを容易に収容可能。
- SwiftやUnslothは非互換のため、HuggingFace Trainerを直接使用。
- 環境設定には特定のROCmナイトリービルドのインストールとtorchao/bitsandbytesの削除が必要。
- フルSFTおよびLoRAのスクリプトとモニタリング方法を提供。
重要な理由
このニュースが重要なのは、Strix Halo APUは128GBのユニファイドメモリを搭載し、大規模モデルを容易に収容可能ためです。
技術的影響
モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。
このガイドでは、AMD Strix Halo APU(gfx1151)上で大規模言語モデル(LLM)のフルファインチューニング(SFT)とLoRAファインチューニングを行う方法を詳細に説明します。Strix HaloはAI MAX 395/395+プロセッサに搭載されたAPUアーキテクチャで、CPUとGPUが128GBのユニファイドメモリを共有します。VRAMとRAMの境界がないため、24GB VRAMのGPUではメモリ不足になる12Bパラメータモデルでも問題なく動作しますが、メモリ帯域幅は約256 GB/sと専用GPUより低い点に注意が必要です。
AMDのROCmエコシステムの公式サポートは限定的で、Strix Halo(gfx1151)は2025年末に実験的サポートが追加されました。多くの一般的なライブラリ(bitsandbytes、Flash Attention、torchao)は互換性がなく、分散訓練機能も完全には実装されていません。そのため、このガイドではSwiftやUnslothなどのフレームワークを避け、HuggingFace Trainerを直接使用してシングルGPUで訓練を行います。
環境設定
まず、AMD HIP SDK/ROCmランタイムをインストールします。Windowsの場合はAMDのWebサイトからHIP SDK 7.1.1をダウンロードし、最新のAdrenalinドライバをインストールします。Linux(Ubuntu 24.04)ではROCmリポジトリを追加し、amdgpu-installをインストールします。その後、GPUが認識されていることを確認します。
次に、Conda環境を作成し、PyTorchをインストールします。標準のpipインデックスではなく、AMDがgfx1151向けに提供する専用のナイトリービルドを使用する必要があります。インストール後、torchaoとbitsandbytesはこのアーキテクチャでクラッシュするため、必ずアンインストールします。torchvisionも依存関係の問題を引き起こすためインストールしないでください。
訓練スクリプト
フルSFTとLoRAの両方の訓練スクリプトを提供します。フルSFTスクリプトはTrainerクラスを使用し、データセットはJSON形式で、conversationsキーを持つマルチターン会話を含みます。訓練中はアシスタントの応答のみに損失を計算します(train-on-responses-only)。LoRAスクリプトはPEFTライブラリを使用し、低ランクアダプターのみを訓練します。
訓練の進行状況はログのloss値を監視することで確認できます。lossが減少しない場合は、学習率やウォームアップステップ数を調整します。訓練後、モデルとトークナイザーは指定されたディレクトリに保存されます。
後処理とトラブルシューティング
訓練後のモデルを使用するには、トークナイザーの設定ファイル(tokenizer_config.json)を修正し、生成プロンプト内の条件付き思考ブロックを削除する必要があります。一般的な問題として、CPUでの訓練(pipによる上書きが原因)、lossが0(データ形式の問題)、推論時のブロック出力(chat templateの未修正)などがあります。
このガイドは2026年5月時点の情報に基づいています。ROCmのgfx1151サポートが成熟するにつれて、一部の回避策は不要になる可能性があります。