ScissorHands(シザーハンズ)
LLMのKVキャッシュを「過去に重要だったトークンは将来も重要」という持続性仮説に基づいて動的に圧縮するキャッシュ退去アルゴリズム。
ScissorHands — 持続性仮説によるKVキャッシュ予測的退去
ScissorHandsは、2023年にCarnegie Mellon大学(CMU)の研究チームが発表したKVキャッシュ退去(Cache Eviction)アルゴリズムだ。H2Oが「累積スコア」を使うのに対し、ScissorHandsは「過去のAttentionパターンは将来も持続する」という持続性仮説(Persistence of Importance)を使って、次ステップで重要になるトークンを予測的に選択する。
持続性仮説(Persistence of Importance)
ScissorHandsの中核アイデアは以下の観察に基づく:
「直近の観測窓(直前のk Decodeステップ)でAttention Scoreが高かったトークンは、次のDecodeステップでも高いAttention Scoreを示す確率が高い」
この仮説を論文では実験的に検証:
- LLaMA-65B・Falcon-40Bの複数層・複数ヘッドで持続性を測定
- 観測窓サイズk=4で、持続率(次ステップでもTop-20%以内に留まる割合)が92〜97%
- 層が深くなるほど持続性が高い傾向(深い層ほど文脈情報が安定)
ScissorHandsのアルゴリズム
[前提]
観測窓サイズ: k(直前kステップのAttentionを使用)
キャッシュ予算: B(保持するKVペア数上限)
[Decodeステップ t の処理]
1. ステップ t のAttention Score Aᵢ を計算
2. 直近k ステップのスコアを合計: S = Σ Aᵢ(t-k ≤ i ≤ t)
3. S が上位B個のトークンをキャッシュに保持
4. それ以外のKVペアを退去(削除)
H2Oとの違い: H2Oは「全履歴の累積スコア」を使うが、ScissorHandsは「直近kステップのスコアのみ」を使う。これにより直近の文脈変化に敏感に対応できる。
性能評価
LLaMA-65B・Falcon-40Bでの評価:
- KVキャッシュ圧縮率: 4倍(予算B = 全長の25%)
- HellaSwag精度保持率: 97.3%(フルキャッシュ比較)
- Decodeスループット: 1.4〜1.8倍向上
タスク別の強み:
- 長文生成タスク(ストーリー続き、コード補完): H2O比で高精度
- 長文QA(前半の情報を参照するタスク): SnapKVが優位
実装の特徴
ScissorHandsはAttention Scoreの合計を管理するだけのため、追加のメモリオーバーヘッドが最小限(スコア合計用にO(N)の追加メモリのみ)。既存のTransformerのAttentionコードに数十行を追加するだけで実装できる。
よくある質問(FAQ)
Q1: ScissorHandsは観測窓サイズkをどう設定すべきですか? A: 論文推奨はk=4〜8。k=1はH2Oに近い挙動(直前1ステップのみ)、kを大きくすると安定性が増すが計算コストが増加。実用的にはk=4で十分なバランスが得られる。
Q2: Flash Attentionと組み合わせて使えますか? A: 組み合わせに制約あり。Flash AttentionはAttention Scoreを中間で計算しない実装のため、ScissorHandsのスコア集計のためにStandard Attentionへのフォールバックが必要。
Q3: GQA(Grouped Query Attention)でのScissorHandsは? A: GQAはKVヘッド数が少ないため、スコア集計をGQAのKey/Valueグループ単位で行う。MHAより計算コストが小さく、GQA特有の「ヘッド間シェア」を活かした最適化も可能。