メモリとモデル

コンテキスト長・RoPE・スライディングウィンドウ

長いドキュメントを読み込もうとコンテキストを最大値まで増やしたところ、逆に遅くなったり実行ができないようになりました。モデルは大きな文脈をサポートしているとありますが、なぜこのようなことが起こるのでしょうか?サポートできる長さ、自らの機器が収容できる長さ、そして内容を適切に活用できる長さは、同じ値ではありません。

コンテキストの枠を使うのは、文書だけではない

システムの指示、過去の会話、検索したドキュメントおよび現在の質問がすべて入力に含まれます。生成される回答にもスペースが必要です。設定された文脈を元の言語で埋め切ってしまうと、望ましい長さの回答を生成する余裕が不足する可能性があります。

トークンは文字数と正確に一致しません。長文の韓国語ドキュメントをそのままトークンに換算するのではなく、実際のアプリで入力長を確認したほうがよいです。チャット画面に表示されないツールの説明やテンプレートも含まれる可能性があります。

システム指示、会話、添付ドキュメントおよび出力余裕が一つの限定された文脈チャンクを分けずに使用する図
文脈チャンクは入力と出力が共用する予算であるため、ドキュメントを多く入れるほど、回答に残すトークンのスペースが減ります。

コンテキストを長く設定すると、必要なメモリも変わる

長い入力の処理にはプリフィル時間が必要であり、計算状態を保持するメモリも必要です。プログラムによって、最大文脈用の空間を事前に確保したり、必要に応じて拡張することができます。そのため、入力が短い場合でも設定値そのものが読み込み可能かどうかに影響を与える可能性があります。

まず、通常のドキュメントと回答を入力するためのパスから始めます。正常に実行された後、より長いドキュメントに拡張しながらピークメモリと最初のトークンの時間を見てください。最初から最大値を選択すると、どこで不足したかを特定するのが難しいです。

固定されたコンテキストウィンドウを越えた古い会話が切断され、最近の会話と要約だけが残る様子
最大文脈を超過した場合、古いトークンを削除または要約する必要がありますので、表示された最大長が常に有効な記憶長であるとは限りません。

より長いものを追加できるものの、すべてが適切に使用されているわけではありません。

入力自体が許容されるかどうかと、ドキュメントの中間における小さな条件を正確に見つけることは異なります。知っている数字や例外を前中後で配置して確認することで、単に回答が自然かどうかよりも有用な検証になります。

RoPEの拡張は、位置を表現する範囲を調整する手段に過ぎず、モデルの理解力を自動で向上させるオプションではありません。推奨されていない拡張設定は、短い質問にも影響を与える可能性があります。モデルが示す範囲および実行プログラムのサポートを優先してください。

入力が長くなるにつれ、より大きなKVキャッシュの引き出しが必要になり、最初の出力までに時間がかかる段階の図
長い文脈では、モデルの重みサイズを変更しないものの、KVキャッシュとプリフィルの計算量を同時に増加させます。

古い部分を削除したり、必要な部分だけを追加します

スライディングウィンドウは、近い文脈を中心に見ることを意味します。モデル設計に含まれる場合と、アプリが任意で古いキャッシュを切り抜く場合では異なります。キャッシュを減らすと、初期の詳細内容を後の段階で直接参照するのが難しくなる可能性があります。

ドキュメント内の関連部分を検索して挿入する方法もあります。入力と待ち時間を短縮できますが、検索段階で必要な資料を漏らさなければならないです。ドキュメント全体を挿入する方法と検索して挿入する方法にはそれぞれ失敗する可能性があるため、結果を確認する必要があります。

いちばん長い文書を、どれくらいの頻度で扱うのか

1年間に1回使う最長ドキュメントを基準に、装置全体を起動するか、通常の作業を速く処理するかを検討してください。稀な作業では待機したり、分散して処理できる場合があり、その場合必要なメモリは変化する可能性があります。

逆に毎日長いデータを連結して質問を行うと、大きな文脈の余裕が実際の利便性になります。広告されている最大値ではなく、自分のドキュメントの長さと必要な回答を基準に計算してください。より大きなウィンドウを得るよりも、その中で重要な内容を失わないことの方が優先されます。