Ring Attention(リングアテンション)
複数GPU間でKV(Key-Value)ブロックをリング状に巡回させながらAttention計算を分散処理する手法。単一GPUのメモリ制限を超えた数百万トークン規模のコンテキストを、通信と計算のオーバーラップにより効率的に処理する。
Ring Attentionとは
Ring Attention(リングアテンション)は、UC Berkeleyの研究チームが2023年に提案した分散Attention計算手法である。複数のGPU(またはTPU)をリング状のトポロジーで接続し、各デバイスが保持するQuery(Q)ブロックに対して、Key-Value(KV)ブロックを隣接デバイスへ順次送信しながらAttentionスコアを計算する。通信と計算を完全にオーバーラップさせることで、デバイス数に比例してコンテキスト長をスケールさせる。
動作原理
リングトポロジー
N台のデバイスがリング状に接続される。各デバイスは入力シーケンスの1/Nのブロックを担当する。
計算フロー(1ステップ)
- 各デバイスiは自身が保持するQ_iと、現在受け取っているKV_jでローカルAttentionスコアを計算
- 計算と同時に、KV_jを次のデバイス(i+1) mod Nへ非同期送信
- N-1回のステップで全デバイスが全KVブロックを処理完了
通信隠蔽
KVブロックの送信サイズがAttention計算のFLOPsに対して十分小さいため、通信を計算の裏に完全に隠蔽できる。理想的には通信オーバーヘッドはゼロに近づく。
| パラメータ | 説明 |
|---|---|
| デバイス数 N | リングに参加するGPU/TPU数 |
| ブロックサイズ B | 各デバイスが担当するトークン数(総コンテキスト長 / N) |
| 通信量/ステップ | 2 × B × d × sizeof(dtype)(KとVそれぞれ) |
| 総ステップ数 | N - 1(全KVブロックが一巡する回数) |
FlashAttentionとの統合
Ring AttentionはFlashAttention(Tri Dao, 2022)のブロック単位Attention計算と自然に統合できる。各デバイス内ではFlashAttentionでメモリ効率的にローカルAttentionを計算し、デバイス間ではRingプロトコルでKVを巡回させる。この組み合わせにより、単一デバイスのHBMメモリ制限を超えつつ、デバイス内の計算もメモリ最適化される。
Striped Attention
Ring Attentionの改良版であるStriped Attention(2024年)は、因果的マスキング(Causal Masking)による計算量の不均衡を解決する。通常のRing Attentionでは、因果マスクにより後方デバイスほど有効な計算量が減少してロードバランスが崩れる。Striped Attentionはトークンをストライプ状に分散配置し、各デバイスの計算量を均等化する。
実用上の制約と展望
- 通信帯域要件: NVLink(900 GB/s)やInfiniBand HDR(200 Gb/s)クラスの高速インターコネクトが必要
- 因果マスク対応: 因果的言語モデルではマスクによるロードインバランスが発生(Striped Attentionで緩和)
- 数百万トークン実績: Google DeepMindのGeminiはRing Attention系技術で100万トークン以上を実現
FAQ
Q1: Ring Attentionは何台のGPUから効果がありますか?
A1: 理論的には2台から機能するが、通信オーバーヘッドの隠蔽効果は4台以上で顕著になる。大規模クラスタ(64台以上)での長コンテキスト学習が主な適用場面である。
Q2: Tensor ParallelismやPipeline Parallelismとの違いは?
A2: Tensor Parallelismはモデルの重みを分割し、Pipeline Parallelismはレイヤーを分割するのに対し、Ring Attentionは入力シーケンス(コンテキスト)を分割する。これらは直交する技術であり、組み合わせて使用できる。
Q3: Ring Attentionを使えばコンテキスト長は無限に伸ばせますか?
A3: 理論的にはデバイス数に比例して伸ばせるが、実際にはAttention以外のレイヤー(FFN等)のメモリ消費、通信帯域のボトルネック、学習データの不足により上限がある。現実的には数百万トークンが実用的な上限とされる。