TL;DR

LLMのプロンプト(指示文)を、中間層の活性化ベクトルの加重和で1つのベクトルに圧縮し、早期層に注入する手法を提案。軽量なMLPで重みを学習し、精度低下は2%未満。KVキャッシュとは異なり、プロンプトを再計算せずに再利用可能。

解説

AMI HAPPY

ねえ智也くん、このブログのタイトル、『プロンプトを1つのベクトルに圧縮』って面白そう!でも、なんでそんなことする必要があるの?

TOMOYA NEUTRAL

ああ、普通のLLMはプロンプトを毎回処理するから、長い指示だと計算コストが大きいんだ。この手法は、プロンプトを一度ベクトルに圧縮して、再利用できるようにしてる。

AMI SURPRISED

なるほど!で、どうやって圧縮するの?

TOMOYA NEUTRAL

中間層の活性化ベクトルを、軽量なMLPで学習した重みで加重和するんだ。その結果を早期層に注入する。

AMI SURPRISED

え、それって精度落ちたりしないの?

TOMOYA HAPPY

論文だと、精度低下は2%未満って書いてある。結構優秀だよ。

AMI HAPPY

すごい!じゃあ、KVキャッシュとどう違うの?

TOMOYA NEUTRAL

KVキャッシュはプロンプトの再計算を避けるけど、この手法はプロンプト自体をベクトルに圧縮して、毎回の推論でそのベクトルを注入するだけだから、もっと効率的なんだ。

AMI NEUTRAL

なるほどね。でも、どんな場面で使うのがいいの?

TOMOYA NEUTRAL

例えば、長いシステムプロンプトを毎回使うチャットボットとか。あとは、リソースが限られた環境でも使える。

AMI NEUTRAL

でも、欠点とかはないの?

TOMOYA SAD

学習に追加のデータが必要なことと、圧縮したベクトルが元のプロンプトの情報を完全には保持できないこと。あと、タスクによっては効果が薄い場合もある。

AMI HAPPY

ふーん、でも2%未満の精度低下なら、実用上は結構使えそうだね!まるでプロンプトを魔法の粉に圧縮するみたい!

TOMOYA NEUTRAL

魔法の粉か…。でも、その粉をかけるタイミングを間違えると、逆効果になることもあるけどな。