LuAITools.com
提交工具
AI
アテンションを軽く速く

FlashAttention

分塊計算と再計算で、アテンションのメモリと計算を大幅に削減・高速化する実装。長文脈モデルの標準です。

FlashAttentionって何?

アテンションはTransformerの「心臓」ですが、欠点があります。遅くてメモリを食う。系列が長くなると、メモリ使用量が漏れるように膨らみます。FlashAttentionは、そのアテンションを「より速く、より省メモリに」するアルゴリズム。計算の組み方を工夫し、メモリと時間を同時に減らします。

何を解決するのか

メモリは系列長の2乗で増える
従来のアテンションは、途方もなく大きな「アテンション行列」を丸ごと保存します。系列が2倍になればメモリは4倍にも。
頻繁な読み書きが速度を落とす
メモリ間の往復には、実は無駄が多く含まれます。

どう実現するのか

タイリング(分塊計算)
行列を一気に計算せず、小さな塊に分けて高速なオンチップメモリで計算し、結果だけを残します。
再計算(Recomputation)
逆伝播に必要なものは保存せず、使うときにその場で再計算。少しの計算コストで、メモリを大幅に削減します。
データ移動を削減
遅いメモリ間の往復を減らし、GPUの力を「計算」に集中させます。

なぜ重要なのか

FlashAttentionは、ほぼすべての主要な大規模モデルの標準装備になっています。より長い文脈、より大きなモデルを現実にし、「モデルは大きくなるのに、メモリは節約できる」を支える立役者のひとつです。

まとめ:FlashAttentionはアテンションを「軽く、速く」する技術。分塊で計算し、移動を減らせば、メモリも時間も節約できます。

コメント