Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# 機械学習

KVキャッシュ再利用でLLMの応答を速くする

新しい方法がKVキャッシュ再利用を使って大規模言語モデルの応答を高速化するよ。

― 1 分で読む


LLM応答速度アップLLM応答速度アップした。新しい方法でLLMの出力速度と品質が向上
目次

大規模言語モデル(LLM)は、応答の文脈を提供するために複数のテキストを使うことが多いんだけど、これが回答生成のプロセスを遅くしちゃうんだ。LLMは出力を生成する前に、特定の方法で全てのテキストを扱わなきゃいけないからね。プロセスを早めるための一つの方法は、テキスト用にKVキャッシュと呼ばれるタイプのメモリを事前に計算して再利用することなんだ。

ただし、再利用するテキストチャンクが入力の最初にない場合、その事前に計算されたKVキャッシュは直接使えないんだ。これは、モデルが新しい入力を見るときに、その前に何があったかを考慮する必要があるからで、これらのキャッシュはそれを考慮していないからね。その結果、これらのキャッシュを再利用するメリットはほとんど活用されていない。

この記事では、重要な質問に取り組んでる。どうやって事前に計算されたKVキャッシュを素早く組み合わせて、モデルの出力の質を保ちながらプロセスを早められるのかってね。私たちは、テキストの最初になくても事前に計算されたKVキャッシュを再利用できる方法を紹介するよ。それによって、出力の質が高いまま、一部のトークンだけを更新するんだ。

同時に、一部のトークンを更新するためのわずかな遅延がKVキャッシュを取得するのと同時に発生することができるんだ。これにより、推論プロセスを遅くすることなく、遅いストレージデバイスに大きなキャッシュを保管できるんだ。

私たちの手法をさまざまなLLMや一般的なパフォーマンスベンチマークタスクに対して既存のKVキャッシュ再利用方法と比較した結果、このアプローチは最初のトークンを生成するのにかかる時間を最大3.3倍短縮し、全体の処理能力を最大5倍向上させることができたよ。その上、生成されたテキストの質を犠牲にすることもなかった。

LLMはその素晴らしい能力から、パーソナルアシスタンスやヘルスケアなどの分野で広く使われてる。応答が正確で信頼できるためには、これらのモデルは基本的なユーザーのクエリでは提供される以上の情報が必要なことが多いんだ。通常、リトリーバル拡張生成(RAG)と呼ばれるプロセスでは、ユーザーのクエリにいくつかの関連テキストが追加されて、LLMの最終入力が形成されるんだ。

この余分な文脈の必要が応答時間を大幅に遅くすることがある。応答を生成する前に、LLMはまず全体の入力を処理してKVキャッシュを作成し、それがモデルがどう応答するかを決定するのを助けるんだ。この事前処理ステップは特に長い入力では時間がかかることが多い。

最適化を施しても、長い入力を処理するのにかかる時間は全体のシステムを遅くする可能性がある。最近の進展が示しているように、同じ文脈テキストは異なる入力間でしばしば再利用されるんだ。これに対処するために、一部のシステムはこれらのテキストのKVキャッシュを一度だけ事前に計算して再利用することで、時間を節約しているよ。

現在、KVキャッシュの再利用には主に2つのアプローチがあるけど、どちらにも欠点があるんだ。最初のアプローチはプレフィックスキャッシングと呼ばれ、入力の最初の部分のKVキャッシュだけを保持して再利用するんだ。短い入力には効果的だけど、複数の関連テキストが必要な場合、つまりRAGの設定ではあまりうまく機能しないんだよね。

2つ目のアプローチはフルKV再利用で、キャッシュの適用方法を調整しようとするけど、異なるテキストチャンクが複雑な入力の中でどのように関連しているかを無視しちゃうんだ。これにより、重要なテキストのチャンク間の相互作用を見逃してしまって、応答があまり正確でなくなることがあるんだ。

それに対して、私たちのアプローチは、プロセス時間を短縮しつつ、高い応答品質を維持するためにKVキャッシュを効果的に組み合わせることに重点を置いてる。必要なトークンのわずかな割合だけを更新すればいいんだ。通常、これは15%未満で、全体の計算時間を大幅に削減できるんだよ。

私たちの手法は、テキストをレイヤーごとに処理し、必要なトークンの一部だけを更新しながら残りを再利用するんだ。この選択的更新は、全体の事前計算が生み出すものとの偏差が最も大きいトークンに基づいているんだ。

私たちは、わずかな更新率でもフルプレ計算と同じ出力の質を達成できることが分かったし、かなりのスピードアップも得られるんだ。

さらに、KVキャッシュの取得と再計算の遅延を並行して管理するパイプライン手法を使うことで、パフォーマンスに影響を与えることなく、遅いストレージにもっと多くのKVキャッシュを保存できるんだ。これにより、リソース管理が向上し、効率性が高まるんだ。

私たちのシステムは、さまざまなオープンソースのLLMやいくつかのベンチマークデータセットでテストされていて、パフォーマンスだけでなく応答の質も大幅に向上していることが示されているよ。

要するに、私たちのアプローチは、LLMの入力における複数の文脈のKVキャッシュを再利用できるようにしつつ、応答の質を犠牲にすることなく実現可能なんだ。この手法は、KVキャッシュのアクセス方法を最適化し、メモリサイズを減らすことに焦点を当てた最近の研究を補完するんだ。

LLMの台頭とともに、複数の入力を効果的に処理する方法を管理する必要が高まってる。これらのモデルは、正確な回答を出すためにさまざまな文脈を一緒に解析する必要があることが多いんだ。しかし、大きな入力を扱うと応答時間が遅くなることがある。私たちの技術は、これらのモデルが高い質とスピードを維持できるようにして、実際のアプリケーションでより役立つものにすることができるんだ。

一連のテストと評価を通じて、私たちの手法が複雑なシナリオでの迅速で正確なLLMパフォーマンスの要求を満たすのに非常に効果的であることを示してきた。この研究は、LLMが実際のアプリケーション、特に迅速で信頼できる情報処理が求められる分野での役割を強化する新しい可能性を開くんだ。

オリジナルソース

タイトル: CacheBlend: Fast Large Language Model Serving for RAG with Cached Knowledge Fusion

概要: Large language models (LLMs) often incorporate multiple text chunks in their inputs to provide the necessary contexts. To speed up the prefill of the long LLM inputs, one can pre-compute the KV cache of a text and re-use the KV cache when the context is reused as the prefix of another LLM input. However, the reused text chunks are not always the input prefix, and when they are not, their precomputed KV caches cannot be directly used since they ignore the text's cross-attention with the preceding text in the LLM input. Thus, the benefits of reusing KV caches remain largely unrealized. This paper tackles just one question: when an LLM input contains multiple text chunks, how to quickly combine their precomputed KV caches in order to achieve the same generation quality as the expensive full prefill (i.e., without reusing KV cache)? We present CacheBlend, a scheme that reuses the pre-computed KV caches, regardless prefix or not, and selectively recomputes the KV values of a small subset of tokens to partially update each reused KV cache. In the meantime,the small extra delay for recomputing some tokens can be pipelined with the retrieval of KV caches within the same job,allowing CacheBlend to store KV caches in slower devices with more storage capacity while retrieving them without increasing the inference delay. By comparing CacheBlend with the state-of-the-art KV cache reusing schemes on three open-source LLMs of various sizes and four popular benchmark datasets of different tasks, we show that CacheBlend reduces time-to-first-token (TTFT) by 2.2-3.3X and increases the inference throughput by 2.8-5X, compared with full KV recompute, without compromising generation quality or incurring more storage cost.

著者: Jiayi Yao, Hanchen Li, Yuhan Liu, Siddhant Ray, Yihua Cheng, Qizheng Zhang, Kuntai Du, Shan Lu, Junchen Jiang

最終更新: 2024-06-03 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2405.16444

ソースPDF: https://arxiv.org/pdf/2405.16444

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事

音声・音声処理リーディングスピーチデータを使った少数ショットキーワードスポッティングの進展

新しい方法で、利用可能な読み上げ音声データを使ってキーワードスポッティングが向上したよ。

― 1 分で読む