Repolode
mit-han-lab

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. 1

    Python 3.8 の conda 環境を作成して有効化する

    conda create -yn streaming python=3.8
  2. 2

    環境を有効化する

    conda activate streaming
  3. 3

    PyTorch とバージョン固定された Python の依存関係をインストールする

    pip install torch torchvision torchaudio
  4. 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 の数値は毎日更新されます。

関連プロジェクト