AI News HubLIVE
站内改写2 分で読了

xFormersを使ったメモリ効率の良いTransformerの構築方法:パックシーケンス、GQA、ALiBi、SwiGLU、因果的注意

このチュートリアルでは、xFormersツールキットを使用してGPU上で高速でメモリ効率の良いTransformerモデルを構築する実践的な方法を解説します。メモリ効率的な注意機構と標準的な注意機構の検証から始め、異なる系列長における速度とメモリ消費の比較、因果的マスキング、可変長系列のパッキング、グループ化クエリ注意(GQA)、カスタムALiBiバイアスを扱います。最後に、これらの技術を組み合わせて、SwiGLUフィードフォワード層と自動混合精度学習による学習可能なGPTスタイルのモデルを構築します。

ソースMarkTechPost著者: Sana Hassan

このチュートリアルでは、xFormersツールキットを使用してGPU上で高速かつメモリ効率の良いTransformerモデルを構築します。まず、xFormersをインストールし、GPUの可用性を確認した後、CUDA実行時間とピークメモリ消費を測定する補助関数を定義します。次に、xFormersのメモリ効率的な注意機構を標準的な注意機構と比較し、数値的に高い一致を確認します(FP16丸め誤差のみ)。xFormersは完全なMxMスコア行列を保存することなく計算を行います。

ベンチマークでは、系列長512から4096まで順方向および逆方向の伝播をテストしました。標準的な注意機構はメモリが系列長の2乗で増加する(長さが2倍になるごとにメモリが約4倍増加)のに対し、xFormersはほぼ線形に増加し、速度も安定しています。また、暗黙的な下三角マスクを使用して因果的注意を実現し、ブール行列を割り当てずに正しく動作することを確認しました。

可変長系列については、BlockDiagonalMaskを使用して異なる長さの系列をパッキングし、系列間の注意を防ぎながらパディングのオーバーヘッドを排除します。各セグメントの出力を復元し、パックされた因果的注意も実行しました。これはvLLMのような推論エンジンが異なる長さのリクエストをバッチ処理する方法です。次に、グループ化クエリ注意(GQA)をデモします。複数のクエリヘッドが少数のキーバリューヘッドを共有することでKVキャッシュサイズを削減します。これはLlama/Mistralクラスのモデルで使用される技術です。

さらに、各注意ヘッドに異なる線形位置ペナルティを適用するカスタムALiBiテンソルを構築し、因果マスクと組み合わせます。xFormersはこのようなカスタムバイアスを直接受け入れます。最後に、xFormers因果的注意、残差接続、層正規化、SwiGLUフィードフォワード層を使用したコンパクトなGPTスタイルTransformerを構築します。自動混合精度(AMP)を使用して合成データで400ステップ学習し、因果的Transformerをゼロから学習する完全な流れを示します。この例は実際のデータとトークナイザーに置き換えてスケールアップできます。

このチュートリアルはxFormersの核となる機能(セクション1〜3)と高度なテクニック(セクション4〜6)をカバーしており、メモリ効率の良いTransformerモデル構築の実用的なガイドとなります。