実行プログラムと拡張機能
FlashAttentionとPagedAttentionの違い
設定リストにはFlashAttentionとPagedAttentionが表示されています。どちらも速く処理できる場合、どちらか一つだけを有効にすればよいでしょうか?名前は似ていますが、一つは計算中のデータ移動を、もう一つは会話用メモリバッチを扱います。どの問題を解決しているかを理解すれば、選択肢をはるかに混乱させずに見ることができます。
長い入力での中間データの移動コスト
アテンションは、入力の各部分が他の部分を参照しながら計算されます。長い文脈では、中間結果をメモリに書き込み、再読するコストも大きくなります。FlashAttentionは、計算をまとめて順序を整理することで、このようなメモリの移動を減らす方法です。
重要な文を選び残りを捨てるSpecPrefillとは異なり、より効率的に同じアテンション計算を実行しようとするアプローチです。そのため、名前の「速い」という意味だけから入力選択や量子化などの機能だと考えるべきではありません。

複数の会話間の空白を減らす問題
サーバーには長さが異なるリクエストが入ってきます。会話ごとに大きな連続空間を事前に確保してしまうと、使用しない空間や配置が難しい隙間が生じる可能性があります。PagedAttentionはKVキャッシュをブロックに分割し、必要なだけを管理する方式です。
ページ管理と同様の考え方ではありますが、GPUメモリが自動的に無限に大きくなったり、SSDをVRAMのように使用したりするわけではありません。残りの空間をより効率的に活用する機能であり、モデルの重みそのものを減らす機能ではありません。

一つは別の一つを代用しません
計算カーネルとキャッシュ管理は異なる問題であり、同一のランタイムで共に利用可能である。プリフィルにおけるカーネルの選定や生成中のキャッシュ管理については別途検討すべき項目である。そのどちらが優れているかを比較することは目的に適していない。
サポートの有無はGPUやモデル構造・量子化・アプリバージョンによって異なります。自動で選択される経路がある可能性があるため、強制オプションを設定する前に現在のログを確認してください。メニューに名前が表示されていることよりも実際に選択された実行経路が重要です。

一人の短い質問と、複数人が使うサーバーでは事情が違う
短い会話ではページ管理による節約できるメモリ空間は小さい可能性があります。複数のリクエストや長いコンテキストでは、同じメモリにより多くの状態を保持する価値が高まります。サーバーの総処理能力の向上を個人チャットの速度倍率に換えることはできません。
FlashAttentionも長文プリフィルおよび短いデコードにおいて同等の効果を保証しません。最初のトークン時間、ピークメモリ、並列リクエストあたりの処理量を分けて確認することで、どの部分が改善されたかを把握できます。
結果を一つ残した後にオプションを追加します
通常の設定で正常に実行され、通常の入力に対する出力を保存してください。その次にサポートされるパスを変更し、速度およびメモリの改善が確認できるかどうかを確認します。実行に失敗したり、異常な出力が生成された場合は、元の設定に戻ることができる必要があります。
機器を買う際も、機能名の数よりも、望むモデルで確認された結果を確認します。新しい用語をすべて覚える必要はありません。長いドキュメントで待ちているか、複数の会話のメモリが不足しているかを判断できれば、必要な設定を検索する出発点は十分です。