0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【大学生でもわかる】Flash Attention入門:なぜLLMは劇的に速くなったのか?

Posted at

こんにちは!最近、AIの進化が止まりませんね。特に「コンテキスト長(一度に読み込める文章量)」がどんどん長くなっていることに気づいていますか?

実は、その裏側には**Flash Attention(フラッシュ・アテンション)**という革命的な技術が存在します。

論文は数式だらけで難解ですが、今回は**「具体的な数値」と「キッチンの例え」**を使って、この技術が何をしているのか、なぜ速いのかを解説します。


1. そもそも何が問題だったのか?:GPUの記憶構造

Flash Attentionを理解するには、まずGPUのメモリ構造を知る必要があります。これを「料理」に例えてみましょう。

  • HBM(High Bandwidth Memory) = 「巨大な冷蔵庫」

  • 容量は大きい(24GB〜80GBなど)。

  • しかし、調理台(計算コア)から遠く、食材(データ)を取りに行くのに時間がかかる。

  • SRAM(Static RAM) = 「手元のまな板」

  • 計算コアのすぐそばにある超高速メモリ。

  • しかし、容量が極端に小さい(19MB〜数10MB程度)。

従来のAttentionの問題点

従来のAttention(Transformerの中核計算)は、**「冷蔵庫(HBM)とまな板(SRAM)の往復が多すぎる」**ことが最大の弱点でした。

計算そのもの(包丁で切る速度)は速いのに、食材を冷蔵庫に取りに行ったりしまったりする移動時間(メモリアクセス)がボトルネックになっていたのです。これをIOバウンド(メモリ転送律速)と呼びます。


2. 数値で見る:従来のAttentionの無駄

では、具体的にどれくらいの無駄があったのか、簡単な数値でシミュレーションしてみましょう。

設定

  • 入力される単語数(シーケンス長 )= 4 とします(超簡略化)。
  • 行列 (Query)、(Key)、(Value)を使います。

Attentionの計算式は以下の通りです。

従来の手順(Standard Attention)

  1. ** を計算する**
  • の行列 (スコア)ができます。
  • 【悲報】 この の行列 を一度、冷蔵庫(HBM)に書き込みます
  1. ** を計算する**
  • 冷蔵庫から を読み出し、確率に変換して にします。
  • 【悲報】 また の行列 を冷蔵庫(HBM)に書き込みます
  1. ** を計算する**
  • 冷蔵庫から と を読み出し、最終結果 を計算します。
  • 最後に を冷蔵庫に書き込みます。

ここでの問題点

なら 個の数字なんて大したことありません。
しかし、これが実際のLLMのように (1万単語)だったらどうなるでしょう?

  • 行列 や のサイズは に比例します。
  • 1億)個のデータを、計算の途中でわざわざ冷蔵庫(HBM)に書き込んだり読み出したりする必要があります。

これが「メモリ不足」と「遅延」の正体です。


3. Flash Attentionの魔法:タイリング(Tiling)

Flash Attentionのアプローチはシンプルです。
**「行列全体を一気に計算せず、まな板(SRAM)に乗るサイズに分割(ブロック化)して、計算が終わるまで冷蔵庫(HBM)に戻さない」**というものです。

数値で見る:Flash Attentionの手順

先ほどと同じ ですが、SRAM(まな板)には「 ブロック」しか乗らないと仮定します。

  1. ブロック単位でロード
  • を小さなブロック(例:)に分割します。
  1. SRAM内で計算完結
  • SRAM上で を計算します。
  • そのままSRAM上で Softmax の一部を計算します。
  • そのままSRAM上で を掛けます。
  1. 結果だけを書き込む
  • 途中の巨大な行列 () や () は、HBMには一切書き込みません
  • 最終的に必要な出力 だけをHBMに書き込みます。

どれくらい違う?(メモリアクセス量の比較)

が大きい(例:)場合の、HBMへのアクセス量(読み書きの回数)を比較してみましょう。

項目 Standard Attention Flash Attention
計算量(FLOPS) およそ 回 およそ 回(実は少し増える*)
メモリ使用量 ** (中間データを保存するため)** ** (線形メモリ)**
HBMアクセス ** に比例 (激遅)** ** に比例 (爆速)**

*注釈: Flash Attentionは「再計算(Recomputation)」というテクニックを使うため、計算量自体は少し増えます。しかし、GPUにおいては「計算」より「メモリ通信」の方が圧倒的に遅いため、通信をサボるために計算を頑張る方が、トータルでは圧倒的に速くなるのです。


4. 具体的なメリット:何が変わったの?

Flash Attentionの登場によって、世界はこう変わりました。

  1. 学習スピードが爆速に
  • 従来の数倍の速度でGPTなどのモデルを学習できるようになりました。
  1. 超長文が扱えるように
  • 以前は のメモリが必要だったため、長い文章を入れるとすぐに「Out of Memory(メモリ不足)」になっていました。
  • Flash Attentionはメモリ消費が に比例する程度(正確にはサブ線形)に抑えられるため、本1冊分のようなデータも一度に処理できるようになりました。

5. まとめ

Flash Attentionを大学生向けに一言でまとめると、こうなります。

「巨大な行列計算をする際、途中の計算結果をいちいちメインメモリ(HBM)に書き出さず、キャッシュメモリ(SRAM)の中で賢く計算しきることで、通信のボトルネックを解消した技術」

  • Before: 料理のたびに、切った野菜をいちいち冷蔵庫にしまっていた(Standard Attention)。
  • After: まな板の上で切って、炒める準備までしてから、完成品だけをお皿に盛るようにした(Flash Attention)。

この工夫のおかげで、私たちは今、高性能なAIを快適に使うことができているのです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?