1トークンあたり512KBを覚えておく必要がありました。文脈が32,000トークンなら、1人分で15.63GBです。
80GBのメモリに何人分入るかを数えると、1,000トークンで131人、128,000トークンで1人でした。
1トークンあたりの量から数え上げました。文脈の長さが、そのまま同時に扱える人数を決めます。
KVキャッシュがどれだけの場所を取るのかを、実際に数えました。条件は層32・頭32・頭あたり128次元・16bitで持つ場合です。
1トークンあたりの量は、この条件から決まります。層の数 × 2 × 頭の数 × 次元 × 精度という掛け算です。
const LAYERS = 32, HEADS = 32, HEAD_DIM = 128, BYTES = 2; const perToken = LAYERS * 2 * HEADS * HEAD_DIM * BYTES; // 鍵と値で2倍 // perToken = 524,288 バイト = 512 KB
1トークンあたり 512 KB を覚えておく必要がある
文脈の長さ 1人あたり 8人同時 32人同時
1,000トークン 0.49 GB 3.9 GB 15.6 GB
4,000トークン 1.95 GB 15.6 GB 62.5 GB
8,000トークン 3.91 GB 31.3 GB 125.0 GB
32,000トークン 15.63 GB 125.0 GB 500.0 GB
128,000トークン 62.50 GB 500.0 GB 2000.0 GB
上の表を見てください。文脈が32,000トークンだと、1人分で15.63GBになります。
文脈の長さ 入る人数
1,000トークン 131人
4,000トークン 32人
8,000トークン 16人
32,000トークン 4人
128,000トークン 1人
文脈を1,000トークンから128,000トークンに伸ばすと、131人から1人になります。128倍の文脈で、人数は128分の1です。
この関係は素直な比例です。文脈を2倍にすれば、入る人数は半分になります。
同時に扱える人数は、そのまま1台あたりで捌ける量です。人数が減れば、同じ利用者数を支えるのに必要な台数が増えます。
つまり文脈を長くする設計は、そのまま費用の設計です。渡す文書を増やすかどうかを決めるときに、この表が判断材料になります。
文脈を2倍にすると、入る人数は半分になる。
Multi-query attention (MQA), which only uses a single key-value head, drastically speeds up decoder inference.原文Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 この内容の有効期限2027-02-18
1トークン出すたびに、それまでの全トークンとの関係を使います。毎回計算し直さないために覚えておきます。
KVキャッシュは、処理の途中で作った値を覚えておく仕組みです。鍵と値という2種類の値を保持します。
文章を1トークンずつ出していくとき、毎回それまでの全トークンとの関係を使います。100トークン目を出すには、1から99トークン目の情報が要ります。
覚えておかないと、1トークン出すたびに全部を計算し直すことになります。長さの二乗で増えます。覚えておけば、増えた1トークンぶんだけで済みます。
覚える量は会話が進むほど増えます。前の節の表でいえば、行が下に進んでいく形です。
4番目が効きます。会話が続いている間はずっと占有します。処理していない待ち時間も含めてです。
掛け算の項目を減らせば、量も減ります。鍵と値を持つ頭の数を減らす手法が知られています。
極端な形として、鍵と値の頭を1つだけ使う多問い注意は、復号側の推論を大きく速めると報告されています。
使った条件は頭の数と鍵と値の頭の数が同じ場合です。最近のモデルの多くは、鍵と値の頭を減らす仕組みを入れているので、実際の量はこれより小さくなります。ここで見せているのは、文脈の長さと人数が反比例するという関係です。詰め方そのものは継続バッチングの記事で扱っています。
a generalization of multi-query attention which uses an intermediate原文Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 この内容の有効期限2027-02-18
1トークンあたりの量はモデルごとに違います。掛け算の項目を確かめれば、自分の環境で同じ表が作れます。
KVキャッシュの量は使うモデルによって変わります。前の節の512KBは、特定の条件での値です。
3番目に注意してください。頭の数と、鍵と値の頭の数は別です。ここが違うモデルでは、前の節の値より小さくなります。
鍵と値の頭を1つまで減らすと量は最小になりますが、品質が落ちます。そこで中間の数を使う形が提案されています。
この方式は多問い注意の一般化であり、中間の数の鍵と値の頭を使うものだと説明されています。頭の数と1の間のどこかを選びます。
結果として追加学習した方式は、多頭の注意に近い品質を、多問い注意に匹敵する速さで達成すると報告されています。中間を選ぶことで、量と品質の両方を取る形です。
自分のモデルの数値を入れて、前の節と同じ表を作ってください。実際に扱う文脈の長さで、何人分入るかが出ます。
その人数が、1台で同時に応じられる利用者数です。渡す文書を増やす判断も、この数字と一緒に考えることになります。
掛け算の項目を確かめれば、自分の環境で数え直せる。
uptrained GQA achieves quality close to multi-head attention with comparable speed to MQA原文Ainslie et al.「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る