NVIDIAによるPythonライブラリ。Hugging Face transformersを基盤に、多彩な圧縮方式を使って推論時のLLM KVキャッシュを圧縮します。
mit-han-lab/streaming-llm
事前学習済みLLMが、attention sink tokenと直近トークンのウィンドウを保持することで、実質的に無制限のテキストストリームを処理できる手法StreamingLLMの研究コード。
- スター
- 7,276
- フォーク
- 402
- 未解決の Issue
- 50
- 最終コミット
- 2 年前
これは何?
StreamingLLMは、attention sinkを用いた効率的なストリーミング言語モデルに関するICLR 2024論文に付随する、MIT Han Labの研究プロジェクトです。長時間にわたる複数ターンのLLM利用における2つの問題、すなわちデコード中に過去すべてのKeyとValueの状態をキャッシュするメモリコストと、入力が学習時のシーケンス長を超えるとモデルの出力品質が低下する問題に取り組みます。
この手法では、attention sinkとして機能する最初の数トークンのKV状態を、直近のトークンのスライディングウィンドウとともに保持すると、通常のウィンドウattentionの性能をほぼ回復できることを示しています。モデルのコンテキストウィンドウが拡大するわけではなく、中間のトークンを単に破棄するため、キャッシュをリセットせずに直近のテキストを使って処理を続けられます。リポジトリにはストリーミングLlamaチャットボットのデモとperplexity評価コードが含まれており、現時点ではLlama-2、MPT、Falcon、Pythiaに対応しています。
このプロジェクトは汎用ライブラリではなく、論文のコード公開です。環境構築には、バージョンを固定したtransformersと、ローカルでのdevelop installを使ってcondaを利用します。
主な機能
- 01attention sinkとなる最初のトークンと直近トークンのウィンドウをKV cacheに保持します。
- 02ファインチューニングなしで、学習時の長さを大幅に超える入力をモデルで処理できます。
- 03ストリーミングLlamaチャットボットのデモスクリプトを収録しています。
- 04perplexity評価コードを提供します。
- 05Llama-2、MPT、Falcon、Pythiaに対応しています。
ユースケース
- 多くの会話ターンを通じて応答し続ける必要がある、長時間稼働のチャットボットや日常利用のアシスタントを動かす。
- LLM研究でattention sinkの挙動やKV cacheの管理を調査する。
- StreamingLLM論文のperplexity結果を再現する。
クイックスタート
- 1
Python 3.8 の conda 環境を作成して有効化する
conda create -yn streaming python=3.8 - 2
環境を有効化する
conda activate streaming - 3
PyTorch とバージョン固定された Python の依存関係をインストールする
pip install torch torchvision torchaudio - 4
GPU 0 でストリーミング Llama チャットボットのデモを実行する
CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
使う前に知っておきたいこと
- セットアップには、特定の古い Python バージョン(3.8)とバージョン固定された transformers(4.33.0)が必要です。
- デモの実行には GPU が必要です。また、別途入手する必要がある Llama-2 などの事前学習済みモデルを使用します。
- モデルが注目するのは直近のトークンと attention sink のみで、コンテキストを拡張したり長期記憶を持たせたりすることはできません。
- リポジトリへの最後の push は 2024 年 7 月のため、メンテナンスは限定的です。
収録されている特集
トピック
よくある質問
- streaming-llm とは?
- 事前学習済みLLMが、attention sink tokenと直近トークンのウィンドウを保持することで、実質的に無制限のテキストストリームを処理できる手法StreamingLLMの研究コード。 StreamingLLMは、attention sinkを用いた効率的なストリーミング言語モデルに関するICLR 2024論文に付随する、MIT Han Labの研究プロジェクトです。長時間にわたる複数ターンのLLM利用における2つの問題、すなわちデコード中に過去すべてのKeyとValueの状態をキャッシュするメモリコストと、入力が学習時のシーケンス長を超えるとモデルの出力品質が低下する問題に取り組みます。
- streaming-llm は無料で使えますか?ライセンスは?
- streaming-llm は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- streaming-llm は今もメンテナンスされていますか?
- 半年以上コミットなし。streaming-llm の最終コミットは 2024年7月11日 です。
- streaming-llm は何に使えますか?
- 多くの会話ターンを通じて応答し続ける必要がある、長時間稼働のチャットボットや日常利用のアシスタントを動かす。 LLM研究でattention sinkの挙動やKV cacheの管理を調査する。 StreamingLLM論文のperplexity結果を再現する。
- streaming-llm のインストール方法は?
- Python 3.8 の conda 環境を作成して有効化する: conda create -yn streaming python=3.8 環境を有効化する: conda activate streaming PyTorch とバージョン固定された Python の依存関係をインストールする: pip install torch torchvision torchaudio GPU 0 でストリーミング Llama チャットボットのデモを実行する: CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
- streaming-llm はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/mit-han-lab/streaming-llm
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
PagedAttentionを使わず、CUDA仮想メモリAPIでGPUメモリをオンデマンドに割り当てる、LLM serving向けKV-cacheメモリマネージャー。
SGLangは、多様なGPU、TPU、CPU環境で大規模言語モデル、ビジョン言語モデル、拡散モデルを提供するオープンソース推論フレームワークです。
Microsoft製のPythonライブラリ。重要度の低いトークンを取り除き、性能をほぼ維持しながらLLMのプロンプトとKV cacheを最大20倍圧縮します。
LLM推論エンジン間でattentionのKVキャッシュを保存・共有・再利用し、time-to-first-tokenを短縮する管理レイヤー。
長文脈LLM推論向けのKV cache圧縮、検索、マージ、量子化手法を比較する統合研究環境。