Repolode
mit-han-lab

mit-han-lab/streaming-llm

Código de pesquisa do StreamingLLM, um método que permite a LLMs pré-treinados processar fluxos de texto praticamente ilimitados mantendo tokens de attention sink e uma janela de tokens recentes.

Estrelas
7,276
Forks
402
Issues abertas
50
Último commit
há 2 anos

O que é?

StreamingLLM é um projeto de pesquisa do MIT Han Lab que acompanha o artigo da ICLR 2024 sobre modelos de linguagem eficientes para streaming com attention sinks. Ele aborda dois problemas do uso prolongado e em várias rodadas de LLMs: o custo de memória de armazenar em cache todos os estados Key e Value anteriores durante a decodificação e a queda na qualidade das respostas quando as entradas ultrapassam o tamanho da sequência de treinamento.

O método mostra que manter os estados KV dos primeiros tokens, que funcionam como attention sinks, junto com uma janela deslizante de tokens recentes, recupera em grande parte o desempenho da atenção com janela simples. A janela de contexto do modelo não aumenta; os tokens intermediários são simplesmente descartados, permitindo que o modelo use o texto recente sem reiniciar o cache. O repositório inclui uma demonstração de chatbot com Llama em streaming e código para avaliação de perplexidade, e atualmente oferece suporte a Llama-2, MPT, Falcon e Pythia.

O projeto é uma disponibilização do código do artigo, não uma biblioteca de uso geral. A configuração usa conda, uma versão fixa de transformers e uma instalação local em modo develop.

Recursos principais

  • 01Mantém no cache KV os tokens iniciais de attention sink junto com uma janela de tokens recentes.
  • 02Permite que os modelos processem entradas muito mais longas que o tamanho usado no treinamento, sem fine-tuning.
  • 03Inclui um script de demonstração de chatbot com Llama em streaming.
  • 04Disponibiliza código para avaliação de perplexidade.
  • 05Oferece suporte a Llama-2, MPT, Falcon e Pythia.

Casos de uso

  • Executar um chatbot de longa duração ou assistente diário que precisa continuar respondendo ao longo de muitas rodadas de conversa.
  • Estudar o comportamento de attention sinks e o gerenciamento do cache KV em pesquisas sobre LLMs.
  • Reproduzir os resultados de perplexidade do artigo StreamingLLM.

Início rápido

  1. 1

    Crie e ative um ambiente conda com Python 3.8

    conda create -yn streaming python=3.8
  2. 2

    Ative o ambiente

    conda activate streaming
  3. 3

    Instale o PyTorch e as dependências de Python com versões fixadas

    pip install torch torchvision torchaudio
  4. 4

    Execute a demonstração do chatbot Llama em streaming na GPU 0

    CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming

Antes de usar

  • A configuração exige uma versão antiga específica do Python (3.8) e uma versão fixada do transformers (4.33.0).
  • A demonstração exige uma GPU e usa modelos pré-treinados, como o Llama-2, que você precisa obter separadamente.
  • O modelo só presta atenção aos tokens recentes e aos attention sinks, portanto não expande o contexto nem oferece memória de longo prazo.
  • O último push do repositório foi em julho de 2024, então a manutenção é limitada.

Em coleções

Tópicos

Perguntas frequentes

O que é streaming-llm?
Código de pesquisa do StreamingLLM, um método que permite a LLMs pré-treinados processar fluxos de texto praticamente ilimitados mantendo tokens de attention sink e uma janela de tokens recentes. StreamingLLM é um projeto de pesquisa do MIT Han Lab que acompanha o artigo da ICLR 2024 sobre modelos de linguagem eficientes para streaming com attention sinks. Ele aborda dois problemas do uso prolongado e em várias rodadas de LLMs: o custo de memória de armazenar em cache todos os estados Key e Value anteriores durante a decodificação e a queda na qualidade das respostas quando as entradas ultrapassam o tamanho da sequência de treinamento.
streaming-llm é gratuito? Qual é a licença?
streaming-llm é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
streaming-llm ainda é mantido?
Sem commits há mais de 6 meses. O último commit de streaming-llm foi em 11 de jul. de 2024.
Para que posso usar streaming-llm?
Executar um chatbot de longa duração ou assistente diário que precisa continuar respondendo ao longo de muitas rodadas de conversa. Estudar o comportamento de attention sinks e o gerenciamento do cache KV em pesquisas sobre LLMs. Reproduzir os resultados de perplexidade do artigo StreamingLLM.
Como instalar streaming-llm?
Crie e ative um ambiente conda com Python 3.8: conda create -yn streaming python=3.8 Ative o ambiente: conda activate streaming Instale o PyTorch e as dependências de Python com versões fixadas: pip install torch torchvision torchaudio Execute a demonstração do chatbot Llama em streaming na GPU 0: CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
Onde consigo streaming-llm?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/mit-han-lab/streaming-llm

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados