500xCompressor: Generalized Prompt Compression for Large Language Models

生成日:

500xCompressor: Generalized Prompt Compression for Large Language Models

Abstract(日本語訳)

プロンプト圧縮は、Large Language Model(LLM)の推論速度を高め、コストを下げ、ユーザー体験を改善するうえで重要である。しかし、既存手法には、圧縮率が低いことや、評価時に training-test overlap が生じうることなどの課題がある。これらの問題に対処するため、本論文は 500xCompressor を提案する。これは自然言語の文脈を最小 1 個の特殊トークンへ圧縮し、強い汎化能力を示す手法である。500xCompressor は約 0.3% の追加パラメータを導入し、6 倍から 500 倍の圧縮率を達成する。500 倍圧縮において、新規または再利用されたプロンプトから 100〜400 トークンを生成する場合、計算量を 27〜90% 削減し、メモリを 55〜83% 節約する一方で、非圧縮プロンプトを用いた場合と比べて、LLM の能力の 70〜74%(F1)および 77〜84%(Exact Match)を保持する。この手法は任意のテキストを圧縮し、さまざまな種類の質問に答え、元の LLM をファインチューニングせずに利用できるよう設計されている。500xCompressor はまず ArxivCorpus で事前学習され、続いて ArxivQA データセットでファインチューニングされ、その後、厳密に未見の question answering(QA)データセットおよび cross-domain QA データセットで評価された。本研究は、高い圧縮率で情報を保持するうえで、KV 値が embedding より優れていることを示す。詳細な情報を含む場合でも自然言語プロンプトが高度に圧縮可能であることは、将来の応用と新しい LLM 言語の発展の可能性を示している。

論文の面白いところ

この論文の主眼は、プロンプトを短くするという実務上の要求を、単なる不要語削除ではなく、LLM 内部の KV 値へ情報を写す問題として扱った点にある。長い文脈を何度も参照する RAG や QA では、入力文脈のトークン数が推論時間と KV cache の大きさを左右する。通常の hard prompt 圧縮は、文や単語やトークンを削るため、どの情報が失われたかが問題になる。ICAE のような soft prompt 圧縮は、自然言語を特殊トークンへ圧縮するが、本論文によれば圧縮率はおおむね 15 倍程度にとどまる。500xCompressor は、500 トークン程度の文脈を 16 トークン、さらに 1 トークンへ圧縮する設定を扱う。ここで用いられるのは特殊トークンの出力 embedding ではなく、各層における KV 値である。この違いにより、圧縮された表現が LLM の推論に直接渡り、より多くの文脈情報を保ちやすい。論文は、未見の arXiv abstract と抽出的 QA によって、単にモデルが記憶から答えているのではないことを確かめようとしている。この評価設計は地味だが重要で、圧縮手法の性能を読む際の足場になる。

問題設定

LLM に長いプロンプトを与えると、入力処理と生成中の attention 計算が重くなり、KV cache のメモリも大きくなる。文脈長の上限もあるため、長い文書をそのまま与える設計は、実装上も費用上も扱いにくい。既存の圧縮手法には二つの型がある。hard prompt 圧縮は、重要でない文や語を落として短くする。soft prompt 圧縮は、自然言語トークン列を少数の特殊トークンに変換する。前者は可読性を失ってもよいが、削った部分に必要情報があると質問応答で誤る。後者は一般化できれば便利だが、高い圧縮率では情報が落ちやすい。本論文は、500 トークン規模の文脈を、最小 1 個の圧縮トークンとして扱えるかを問う。評価では、圧縮後に元のテキストを再生成できるか、また圧縮表現だけから質問に答えられるかを調べる。この設定により、圧縮の効率だけでなく、どれだけ情報を失ったかも測れる。

提案手法

500xCompressor は、encoder と decoder を持つ autoencoder に近い構成をとる。encoder は凍結された LLaMA-3-8B-Instruct に LoRA パラメータを加えたもので、元のテキストトークンと圧縮トークンを受け取る。decoder は元の凍結 LLaMA-3-8B-Instruct であり、追加のファインチューニングを受けない。encoder は文脈情報を圧縮トークンの KV 値へ移し、その KV 値を decoder に渡す。事前学習では、decoder が圧縮 KV 値と beginning-of-sequence(BOS)トークンから元のテキストを再生成するように学習する。ファインチューニングでは、圧縮 KV 値と質問から答えを生成するように、ArxivQA の抽出的 QA ペアを用いる。推論時には、元テキストを encoder に通して圧縮 KV 値を作り、その後の再生成または QA では元の長い文脈の代わりにその KV 値を使う。ICAE との差は、圧縮トークンの embedding ではなく KV 値を渡す点にある。論文は、この設計を Prefix Tuning に近いものとして位置づけるが、保存しているのはタスク指示だけではなく、文脈の詳細情報である。

結果

効率面では、500 倍圧縮で 100〜400 トークンを生成する場合、新規プロンプトでも計算量が 27.39〜49.10% 減り、メモリは 83.16〜55.33% 減る。再利用プロンプトでは、100 トークン生成時の計算量削減が 90.64% に達する。テキスト再生成では、ArxivCorpus の厳密な未見テストセットで ICAE を一貫して上回った。500→16 圧縮では、平均 Rouge-2-F が 73.05、BLEU が 72.46 であり、ICAE の 49.33、47.55 を大きく上回る。500→1 圧縮では再生成品質は落ちるが、それでも平均 Rouge-2-F 28.97、BLEU 26.43 で、ICAE の 17.61、14.02 より高い。in-domain の ArxivQA では、500→16 圧縮の平均 F1 が 41.12、Exact Match が 13.86 で、ICAE を少し上回る。cross-domain QA では差がより大きく、RelationExtraction、NaturalQuestions、RACE、TextbookQA、TriviaQA の平均で、500→1 圧縮時に F1 42.30、Exact Match 26.95 を得た。これは同条件の ICAE の F1 20.36、Exact Match 10.30 より高い。意味を持たないランダム列での ablation では BLEU が大きく下がり、自然言語の意味構造が圧縮の助けになっていることも示される。

具体例

たとえば、ある論文 abstract に「すべての reciprocity sheaf は、完全体上で Rost の意味での cycle premodule を与える」とあり、続けて「正標数の完全体では、logarithmic de Rham-Witt sheaf の第一コホモロジー群が partial cycle module structure を持つ」と書かれているとする。通常の QA では、この abstract 全体を文脈として LLM に渡し、「どの種類の sheaf が cycle premodule を与えるか」と尋ねる。500xCompressor では、まず abstract の本文を encoder に通し、文脈の情報を 16 個または 1 個の圧縮トークンの KV 値へ写す。次に decoder は、元の abstract の代わりにその KV 値と質問だけを見て、「every reciprocity sheaf」と答える。別の質問で「Kato complexes が Rost の cycle complexes に似た関手性を満たすのはどのような対象か」と聞かれれば、「logarithmic de Rham-Witt sheaves の Kato complexes」と答えることが期待される。間違えやすいのは、専門用語の一部を落としたり、正標数を標数 0 と取り違えたりする場合である。論文の例では、ICAE は「positive characteristic zero」のような矛盾した表現を出すことがあり、圧縮で失われた情報が hallucination に変わることが示されている。500xCompressor も完全ではないが、KV 値を使うことで、固有名、数値、専門語の細部を比較的保ちやすい。