Ring Attentionとは?複数GPUで長文コンテキストを線形に伸ばす分散Attention技術

Ring Attentionは、長い系列を複数デバイスに分散し、KVブロック通信とblockwise attention計算を重ねることで、近似なしに長文コンテキストを扱う技術です。仕組み、評価結果、AI開発への応用を日本語で解説します。

参考文献

Ring Attention with Blockwise Transformers for Near-Infinite Context

Hao Liu, Matei Zaharia, Pieter Abbeel

論文を見る

今回の論文

今回取り上げるのは、Hao Liu、Matei Zaharia、Pieter Abbeel による論文「Ring Attention with Blockwise Transformers for Near-Infinite Context」です。2023年10月3日に arXiv で公開され、2024年の ICLR に採択された研究です。公開元は arXiv / ICLR、URL は https://arxiv.org/abs/2310.01889、DOIhttps://doi.org/10.48550/arXiv.2310.01889 です。研究分野は、長文コンテキストTransformer、分散attention、LLMの学習・推論最適化です。

この論文を選んだ理由は、長文対応を「attentionを近似する」方向ではなく、計算の順番とデバイス間通信を組み替えることで解こうとしているからです。巨大なコードベース、長時間動画、長い行動履歴、長文RAGなどを扱うAIシステムでは、単にモデルを大きくするよりも、こうした分散実行の設計が効いてくる場面があります。

どんな技術か

Ring Attention は、長い入力系列を複数のGPUやTPUに分割し、各デバイスが自分の query ブロックを持ったまま、key/value ブロックをリング状に回して attention を計算する技術です。ひとことで言えば、1台のデバイスに入りきらない長文コンテキストを、複数デバイスのメモリにまたがって exact attention として処理する方法です。

重要なのは、attention の値を疎にしたり、低ランク近似したりする技術ではない点です。Ring Attention は、通常の Transformer と同じ attention を、blockwise に分けて計算します。そのうえで、KVブロックを隣のデバイスへ送りながら、手元では別のブロックに対する attention を計算します。通信時間を計算時間に隠せれば、追加の通信オーバーヘッドをほぼ増やさずに、扱える系列長をデバイス数に応じて伸ばせます。

たとえば、あるメモリ効率化Transformerが1台あたり s トークンを扱えるとします。Ring Attention では、n 台のデバイスを使うと、理論上 n × s に近いコンテキスト長まで伸ばせます。論文では、8台のA100で8倍、32台のA100で32倍、TPUv4-1024では構成によって数百倍の長い系列を扱えることを示しています。

課題

この技術が解決しようとしているのは、長文Transformerで最終的に残る「各層の出力をどこに置くのか」というメモリ制約です。

標準的な self-attention は、系列長が伸びると attention 行列の計算・保存が重くなります。FlashAttention のような memory-efficient attention は、attention 行列を丸ごとメモリに置かず、ブロック単位で計算することでこの問題を大きく緩和します。さらに Blockwise Parallel Transformer は、attention だけでなく feedforward もブロック単位で処理し、活性化メモリを削減します。

それでも限界は残ります。Transformer の各層の出力は次の層の attention で再び全位置から参照されるため、長い系列全体の表現をどこかに保持しなければなりません。論文では、隠れ次元1024程度の比較的小さなモデルでも、1億トークンをバッチサイズ1で処理すると1000GBを超えるメモリが必要になると説明しています。現代のGPUやTPUの高帯域メモリは通常それよりずっと小さいため、1デバイスのメモリ上限がコンテキスト長を止めてしまいます。

既存の分散手法にも課題があります。テンソル並列はモデル内部の行列を分けるには有効ですが、系列方向の活性化すべてを消せるわけではありません。通常のシーケンス並列は、系列を分割できる一方で、attention 計算のためにデバイス間で大きな通信が発生しやすく、長文では通信待ちがボトルネックになります。

実際のAIシステムでは、この問題は長文LLMの学習だけでなく、推論にも効きます。長い会議録を一括で読む、数十万行のログを解析する、長時間のエージェント履歴を保持する、動画・音声・テキストを長い系列として扱う、といった場面では、コンテキスト長を伸ばすほどメモリと通信の設計が性能を左右します。

用語解説

Blockwise Attention
attention を系列全体の巨大な行列として一度に計算するのではなく、query と key/value を小さなブロックに分けて順番に計算する方法です。Ring Attention はこの性質を利用して、KVブロックをデバイス間で回しながら exact attention を計算します。
KVブロック
Transformer の attention で使う key と value を、系列方向に分割した単位です。Ring Attention では各デバイスがKVブロックを隣へ送り、受け取ったKVブロックと自分のqueryブロックで部分的なattentionを計算します。
通信と計算のオーバーラップ
データ転送を待ってから計算するのではなく、あるブロックを計算している間に次のブロックを転送する実行方式です。この論文の中核で、通信待ちを隠せるかどうかが長文分散attentionの実用性を決めます。
FSDP
Fully Sharded Data Parallel の略で、モデルパラメータや勾配などを複数デバイスに分散する学習手法です。論文では最大コンテキスト長の比較で使われ、Ring Attention が既存の分散学習手法と組み合わせられることを示しています。
MFU
Model FLOPs Utilization の略で、理論上の計算性能に対して実際にどれだけ有効に計算できているかを見る指標です。Ring Attention は長い文脈を扱えるだけでなく、MFUを大きく落とさないことも重要な評価ポイントです。

技術の仕組み

Ring Attention の基本アイデアは、系列方向に分けたブロックを複数デバイスへ配置し、KVブロックだけをリング状に移動させながら、各デバイスが自分のqueryブロックの出力を完成させることです。モデル構造そのものを大きく変えるというより、Transformer の計算を分散実行に向く形へ再配置する技術です。

基本アイデア

通常の attention は、query Q、key K、value V から softmax(QK^T / sqrt(d))V を計算します。長い系列では QK^T が巨大になりますが、memory-efficient attention ではこれをブロック単位で計算し、softmax の正規化統計を更新しながら最終出力を作れます。

Ring Attention は、この「ブロックの処理順序を変えても、正しく統計を合成すれば最終的なattention結果は同じ」という性質に注目します。各デバイスは入力系列の一部を担当し、その部分に対応する query ブロックを固定で持ちます。一方、key/value ブロックはリング状の通信で順番に移動します。

デバイスは、手元にある query ブロックと現在受け取っているKVブロックで部分的な attention を計算します。その同じタイミングで、自分が持つKVブロックを次のデバイスへ送り、前のデバイスから次のKVブロックを受け取ります。これをデバイス数ぶん繰り返すと、各queryブロックは全KVブロックを見たことになり、通常の full attention と同じ範囲を参照できます。

リング構造で何が嬉しいのか

素朴に考えると、各デバイスが全デバイスからKVを集めればよさそうです。しかし、それでは通信が一気に発生し、受信したKVを大量に保持する必要があります。これでは、メモリ削減のために系列を分割した意味が薄れてしまいます。

リング構造では、各デバイスは基本的に前後の隣接デバイスとだけ通信します。必要なKVブロックは一度に全部集めず、1ステップずつ流れてきます。つまり、メモリ上は「現在計算中のKV」と「次に受け取るKV」を持てばよく、長い系列全体を1台に置く必要がありません。

論文では、この方式により attention と feedforward を含むブロック単位の最大活性化サイズが、入力系列長 s に依存せず、ブロックサイズ c と隠れ次元 h に依存する形へ抑えられると整理しています。直感的には、メモリの支配項を「全文の長さ」から「1回に処理するブロックの大きさ」へ移しているわけです。

通信を計算で隠す条件

Ring Attention が成立する鍵は、通信時間を計算時間に重ねられることです。論文では、1ホストの計算性能を F、デバイス間帯域を B、ブロックサイズを c とすると、通信を隠すには大まかに c >= F / B が必要だと説明しています。

これは実務的にかなり重要な条件です。高帯域なNVLinkやTPUのICIでは、必要な最小ブロックサイズはおおむね1000トークン程度に収まります。一方、InfiniBandのように相対的に帯域が低い接続では、必要ブロックサイズが大きくなり、論文の表ではA100 InfiniBandで約24.5Kトークン、最小系列長では約149.5Kトークンが目安として示されています。

つまり、Ring Attention は「どんな小さな長さでも速くなる」技術ではありません。十分に長い系列を、十分に大きいブロックで処理できるときに、通信待ちを計算で隠せる設計です。長文特化の基盤モデルや分散推論基盤に向いた考え方だと捉えるのが自然です。

学習と推論での流れ

処理の流れは次のように考えると分かりやすいです。まず、入力系列をデバイス数に応じて分割し、各デバイスに1つの入力ブロックを持たせます。各デバイスは自分のブロックから query、key、value を作ります。

各Transformer層では、デバイスごとに自分の query ブロックを固定し、受け取ったKVブロックとの attention を逐次的に累積します。KVブロックはリング上を移動し、全デバイスのKVが一周するまで計算します。attention 出力が完成したら、そのqueryブロックに対する feedforward を blockwise に実行します。

この流れは forward だけでなく backward にも適用できると論文では説明されています。そのため、長文推論専用の工夫ではなく、長文コンテキストでの学習にも使える点が大きな特徴です。

近似しないことの意味

長文attentionの研究では、疎attentionや線形attentionのように attention 自体を近似して軽くする方法がよく使われます。Ring Attention はそこが異なります。計算を分けているだけで、各queryは最終的に全key/valueを見ます。

この性質は、長文内のどこに重要情報があるか分からないタスクで効きます。たとえば、長いコードベースの中の定義参照、長文ドキュメント内の1行検索、長時間の行動履歴からの意思決定などでは、情報を落とす近似が性能リスクになる場合があります。Ring Attention は、そうしたリスクを避けながら分散で長くする選択肢です。

実験と結果

論文では、Ring Attention を最大コンテキスト長、計算効率、強化学習、長文LLM性能の4方向から評価しています。単に「長く入る」だけでなく、実際に学習・推論で使えるかを確認している構成です。

最大コンテキスト長

最大コンテキスト長の評価では、LLaMA系の3B、7B、13B、30Bモデルを対象に、vanilla Transformer、memory-efficient attention、attentionとfeedforwardの両方をblockwise化した手法、Ring Attention を比較しています。評価にはFSDPを使い、総トークンバッチサイズが揃うようにしています。

結果はかなり明確です。8台のA100 NVLinkでは、3Bモデルで従来のblockwise手法が64Kトークンだったのに対し、Ring Attention は512Kトークンを扱い、8倍に伸びました。7Bでは32Kから256K、13Bでは16Kから128Kです。

32台のA100 InfiniBandでは、7Bモデルで128Kから4096K、つまり約409万トークンまで伸び、32倍の改善です。13Bでも64Kから2048Kまで伸びています。TPUv4-1024では、3Bモデルで32Kから16384K、7Bモデルで16Kから8192K、13Bモデルで16Kから4096K、30Bモデルで8Kから2048Kまで伸びています。

この結果から言えるのは、Ring Attention のコンテキスト長がデバイス数にかなり素直に比例して伸びることです。1台のメモリ上限で止まっていた系列長を、複数デバイスのメモリへ分散できていると見てよいです。

MFUとスループット

長い系列が入っても、計算効率が大きく落ちるなら実用上は使いにくくなります。そこで論文では、MFUも評価しています。Ring Attention は長い系列で attention の計算比率が増えるため、feedforward 中心の短い設定よりMFUが下がりやすい条件です。

それでも論文では、7Bから65Bまでの大きなモデル、A100やTPUv4などの環境で、非常に長いコンテキストを扱いながらMFUを大きく損なわないことを示しています。たとえば、8台A100の7Bモデルでは、比較対象の32Kに対してRing Attentionは256K、32台A100の13Bモデルでは64Kに対して2048K、TPUv4-1024の30Bモデルでは16Kに対して2048Kといった長さで評価されています。

ここでの読みどころは、Ring Attention が「メモリには入るが遅すぎる」方式ではなく、通信と計算の重ね合わせによって長文実行の効率を維持しようとしている点です。分散推論基盤では、コンテキスト長だけでなく実効スループットが重要なので、この評価は実務的な意味があります。

強化学習での評価

論文では、Transformerで試行錯誤の履歴を扱う強化学習にも Ring Attention を適用しています。ExoRLベンチマークの6タスクで、Actor-Transformer 系のモデルがより多くの軌跡を条件にできるかを評価しています。指標は累積報酬です。

結果として、AT + BPT は32軌跡では平均111.13のリターンを出しましたが、128軌跡ではメモリ不足になりました。一方、AT + Ring Attention は128軌跡を扱え、平均113.66まで改善しています。Walker Stand、Walker Run、Cheetah Run、Cartpole Swingupなどすべてのタスクで、AT + BPTの32軌跡設定を上回っています。

この結果は、長文コンテキストが単なる文章処理だけの問題ではないことを示しています。行動履歴、状態、報酬、目標のような長い系列をモデルに見せられると、意思決定タスクでも性能改善につながる可能性があります。

長文LLMでの評価

長文LLMの評価では、LLaMA-13BをShareGPTで512Kコンテキストへfine-tuningし、line retrievalタスクで検証しています。このタスクでは、長い文書中に埋め込まれた数値を正しく取り出せるかを見ます。長文生成、検索、情報結合の能力をまとめて見るための評価です。

Ring Attention-13B-512K は、512Kに近い長さでも高い精度を維持したと報告されています。比較対象のGPT-3.5-turbo-16K、Vicuna-16B-16K、Claude-2-100Kは短い範囲では強いものの、それぞれのコンテキスト上限を超える長さは扱えません。

この評価から分かるのは、Ring Attention が「長い系列をメモリに載せる」だけでなく、長い文脈から実際に情報を取り出す用途にもつながることです。ただし、論文ではクラウド計算予算の制約により512Kでfine-tuningしたと説明しており、すべてのモデルサイズや全タスクで同じように効くかは追加検証が必要です。

何に使える?

Ring Attention は、長い入力を近似なしで扱いたいAIシステムに向いています。特に、コンテキスト長そのものが価値になるプロダクトや、長い系列を学習データとして使いたい基盤開発で応用が考えられます。

長文RAGと全文読解

RAGでは検索で候補文書を絞れますが、最終的に複数の長文をまとめて読む段階でコンテキスト制約に当たります。Ring Attention の考え方を使えば、長い文書集合を近似せずにattentionできる可能性があります。特に、契約書群、監査資料、技術仕様、研究資料のように、どの箇所が後で効くか事前に分かりにくい文書で価値があります。

コードベース理解

巨大なリポジトリを扱う開発支援AIでは、ファイル間の依存関係、型定義、設定、テスト、過去の変更履歴が遠く離れて存在します。短いコンテキストに切って検索するだけでは、横断的な関係を落とすことがあります。Ring Attention は、将来的にコードベース全体をより長い系列として扱うモデルや、長文fine-tuning基盤の設計に使えそうです。

動画・音声・マルチモーダル系列

動画フレーム、音声特徴、字幕、操作ログをまとめると、入力系列はすぐに長くなります。論文でも、長文コンテキストは動画、行動、長形式モダリティに重要だと位置づけています。Ring Attention はattentionを近似しないので、長時間の出来事のどこが重要か分からないタスクでも情報を落としにくい設計です。

長時間エージェントと行動履歴

AIエージェントでは、ツール実行結果、ユーザー指示、途中判断、環境状態が長く積み上がります。実運用では要約や外部メモリが必要になりますが、モデル側でより長い履歴を直接扱えるなら、長時間タスクの一貫性が上がる可能性があります。これは論文からの応用推測ですが、強化学習で長い軌跡を扱った結果とは方向性が合っています。

長文モデルの学習基盤

Ring Attention は推論だけでなく学習にも使える点が大きいです。長い本、コード、論文、会話、ログ、ゲノム配列などで基盤モデルを学習する場合、そもそも長文を学習時に見せられなければ、推論時だけコンテキストを伸ばしても限界があります。長文向けモデルを自前で作る事業では、学習インフラの選択肢として重要です。

開発や事業へのヒント

この論文から得られるヒントは、長文AIの改善をモデル単体の能力だけでなく、分散システムとしての実行計画で考えることです。

長文機能はアルゴリズムとインフラが一体です

長文コンテキストを売りにするプロダクトでは、モデルアーキテクチャ、KVキャッシュ、GPU間通信、バッチング、スケジューリングがすべて関係します。Ring Attention は、attentionの数学的定義を変えずに、実行の並べ方で限界を押し上げています。これは、AI機能を作るときに「精度改善」と「システム設計」を切り離せないことを示しています。

小規模プロダクトでも設計思想は使えます

Ring Attention をそのまま実装するには複数GPUや低レベル通信が必要ですが、考え方は小規模でも応用できます。たとえば、処理対象をブロックに分ける、ブロック処理とデータ転送を重ねる、全データを一箇所に集めずに流しながら処理する、といった設計です。RAGパイプラインやログ解析バッチでも、同じ発想で待ち時間やメモリ使用量を下げられます。

近似しない長文処理は高単価領域に向きます

長文処理では、要約や検索で情報を削る方法がよく使われます。しかし、法務、金融、医療、研究、ソフトウェア保守のように、細部を落としにくい領域では、近似や要約がリスクになります。Ring Attention のように exact attention を保ちながら長くする方向は、精度要求が高い業務システムで差別化要素になりえます。

GPUクラスタ前提のモデル設計が増えます

この論文は、単一GPUで完結するモデル設計から、クラスタ上で効率よく動くモデル設計への流れを示しています。今後、長文・動画・エージェント・科学データのような重いAI用途では、モデル構造とクラスタ通信の相性がより重要になります。開発者としては、モデル論文だけでなく、並列化・メモリ管理・通信最適化の論文も追う価値があります。

限界

Ring Attention には明確な注意点があります。

まず、複数デバイスと高速なデバイス間通信が前提です。単一GPUで長文を劇的に伸ばす技術ではありません。NVLinkやTPUのような高帯域接続では有利ですが、低帯域なネットワークではブロックサイズをかなり大きくしないと通信を隠しにくくなります。

次に、短いコンテキストでは効果が出にくいです。通信と計算を重ねるには、1ブロックあたりの計算量が十分に大きい必要があります。短文チャットや小さなバッチでは、通常のFlashAttentionや既存の推論サーバー最適化のほうが現実的です。

実装の難しさもあります。各デバイスのブロック配置、KV転送、forward/backwardの同期、数値的に正しいsoftmax統計の累積、FSDPやtensor parallelとの組み合わせを扱う必要があります。論文ではJAXの ppermute を使った実装が紹介されていますが、PyTorchや既存サービング基盤へきれいに統合するには相応のエンジニアリングが必要です。

また、長く読めることと、長く読んで常に賢くなることは同じではありません。line retrievalのようなタスクでは有効性が見えますが、複雑な推論、RAG、ツール利用、対話の一貫性でどれだけ効くかはタスクごとに検証が必要です。長文モデルでは、学習データ、位置表現、評価方法も一緒に設計しなければなりません。

最後に、コスト面の注意があります。コンテキスト長を伸ばせるということは、実際に非常に長い入力を処理しがちになるということでもあります。単価、レイテンシ、スループット、ジョブスケジューリングを考えずに長文機能を提供すると、プロダクトとしては扱いにくくなる可能性があります。

よくある質問

Q. Ring Attention は FlashAttention と何が違うのですか?

A. FlashAttention は主に1デバイス内でattention行列をメモリに載せず効率よく計算する技術です。Ring Attention はそのようなblockwise attentionの考え方を、複数デバイスへ拡張します。KVブロックをリング状に通信しながら計算することで、1デバイスのメモリ上限を超える長い系列を扱います。

Q. Ring Attention は attention を近似していますか?

A. 近似ではありません。計算をブロックに分け、KVブロックの処理順を変えていますが、各queryは最終的に全key/valueを参照します。正しくsoftmax統計を累積すれば、通常のfull attentionと同じ範囲を扱えます。

Q. 既存のLLM APIを使うアプリ開発でも役立ちますか?

A. 直接実装する技術ではありませんが、設計思想は役立ちます。長文処理では、全データを一箇所へ集めるのではなく、ブロック化し、転送と計算を重ね、メモリ上限を意識して処理を流す発想が重要です。大規模RAGやログ解析基盤では特に参考になります。

Q. どんな環境で効果が出やすいですか?

A. 複数GPUやTPUを使い、高速な相互接続があり、処理する系列が十分に長い環境です。8台A100 NVLink、32台A100 InfiniBand、TPUクラスタのような設定で論文は評価しています。短い入力や単一GPU中心の環境では、効果は限定的です。

Q. 長文RAGでは検索を不要にできますか?

A. 不要にはなりません。Ring Attention は長い入力をモデルに読ませるための計算技術であり、必要な文書を探す検索とは役割が違います。むしろ、検索で集めた多数の文書を、より長いコンテキストとして精密に読む段階で効く可能性があります。

今日の学び

この論文は、Transformer が長い系列を扱うとき、1デバイスのメモリ上限とデバイス間通信がコンテキスト長を制限する課題を扱いました。そこに対して、queryブロックを各デバイスに固定し、KVブロックをリング状に回しながら blockwise attention を計算する Ring Attention で、近似なしにコンテキスト長をデバイス数に応じて伸ばそうとしました。

ここから得られるヒントは、長文AIの性能はモデルの重みだけでなく、計算をどう分割し、通信をどう隠し、メモリをどう使うかで大きく変わるということです。長文RAG、コード理解、動画・音声モデル、長時間エージェントを作るなら、アルゴリズムと分散システムを一体で見る視点が重要になります。

関連記事