Biblioteca Python da NVIDIA para comprimir caches KV de LLMs durante a inferência, com vários métodos de compressão plugáveis baseados em Hugging Face transformers.
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
Crie e ative um ambiente conda com Python 3.8
conda create -yn streaming python=3.8 - 2
Ative o ambiente
conda activate streaming - 3
Instale o PyTorch e as dependências de Python com versões fixadas
pip install torch torchvision torchaudio - 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
Gerenciador de memória para KV-cache em serving de LLMs que aloca memória da GPU sob demanda via APIs de memória virtual do CUDA, sem PagedAttention.
SGLang é um framework open source de inferência para servir modelos de linguagem, visão-linguagem e difusão em diversas plataformas com GPU, TPU e CPU.
Biblioteca Python da Microsoft que comprime prompts de LLM e KV cache em até 20x, removendo tokens não essenciais com perda mínima de desempenho.
Uma camada de gerenciamento de cache KV que armazena, compartilha e reutiliza caches de atenção de LLMs entre mecanismos de serving para reduzir o time-to-first-token.
Um ambiente unificado de pesquisa para comparar métodos de compressão, recuperação, mesclagem e quantização de KV cache em inferência de LLMs com contexto longo.