O LMCache é uma ferramenta de otimização de cache de valor-chave (KV) de código aberto projetada para melhorar a eficiência do raciocínio em modelos de linguagem grande (LLMs). Ele reduz significativamente o tempo de inferência e o consumo de recursos da GPU armazenando em cache e reutilizando resultados de computação intermediários (armazenamento em cache de valor-chave) do modelo, o que é especialmente adequado para cenários de contexto longo. vLLM Ele se integra perfeitamente a outros mecanismos de inferência e oferece suporte a GPU, CPU e armazenamento em disco para cenários como Q&A em várias rodadas e Retrieval Augmented Generation (RAG). O projeto é orientado pela comunidade, está sob a licença Apache 2.0 e é amplamente usado para otimização de inferência de IA em nível empresarial.
Lista de funções
- Reutilização do cache de valores-chavePares de valores-chave LLM em cache, suporte à reutilização de texto sem prefixo, redução da contagem dupla.
- Suporte a back-end com vários armazenamentosSuporte ao armazenamento, como GPU, DRAM da CPU, disco e Redis, para flexibilidade ao lidar com restrições de memória.
- Integração com o vLLMAcesso contínuo ao vLLM, proporcionando uma otimização de 3 a 10 vezes na latência da inferência.
- cache distribuídoSuporte para cache compartilhado em várias GPUs ou ambientes em contêineres para implementações em grande escala.
- suporte multimodalCaching key-value pairs of images and text to optimise multimodal model inference (Cache de pares de valores-chave de imagens e texto para otimizar a inferência de modelos multimodais).
- Geração de carga de trabalhoFornecer ferramentas de teste para gerar cargas de trabalho, como questionários de várias rodadas, RAGs, etc., para validar o desempenho.
- Suporte à comunidade de código abertoDocumentação, exemplos e reuniões da comunidade para facilitar as contribuições e os intercâmbios dos usuários.
Usando a Ajuda
Processo de instalação
O LMCache é fácil de instalar e é compatível com plataformas Linux e ambientes de GPU NVIDIA. Abaixo estão as etapas detalhadas de instalação, com base na documentação oficial e nas recomendações da comunidade.
- Preparação do ambiente::
- Certifique-se de que seu sistema seja Linux, Python versão 3.10 ou superior e CUDA versão 12.1 ou superior.
- Instale o Conda (recomenda-se o Miniconda) para criar um ambiente virtual:
conda create -n lmcache python=3.10 conda activate lmcache
- armazém de clones::
- Use o Git para clonar o repositório do LMCache localmente:
git clone https://github.com/LMCache/LMCache.git cd LMCache
- Use o Git para clonar o repositório do LMCache localmente:
- Instalação do LMCache::
- Instale a versão estável mais recente via PyPI:
pip install lmcache
- Ou instale a versão de pré-lançamento mais recente (que pode conter recursos experimentais):
pip install --index-url https://pypi.org/simple --extra-index-url https://test.pypi.org/simple lmcache==0.2.2.dev57
- Se você precisar instalar a partir da fonte:
pip install -e .
- Instale a versão estável mais recente via PyPI:
- Instalação do vLLM::
- O LMCache precisa ser usado com o vLLM, instale a versão mais recente do vLLM:
pip install vllm
- O LMCache precisa ser usado com o vLLM, instale a versão mais recente do vLLM:
- Verificar a instalação::
- Verifique se o LMCache está instalado corretamente:
python import lmcache from importlib.metadata import version print(version("lmcache"))
O resultado deve ser o número da versão da instalação, por exemplo
0.2.2.dev57
.
- Verifique se o LMCache está instalado corretamente:
- Opcional: implantação do Docker::
- O LMCache fornece imagens Docker pré-criadas com integração vLLM:
docker pull lmcache/lmcache:latest
- Execute o contêiner do Docker e configure o vLLM e o LMCache de acordo com a documentação.
- O LMCache fornece imagens Docker pré-criadas com integração vLLM:
Uso das funções principais
A função principal do LMCache é otimizar o cache de valores-chave para acelerar a inferência LLM. A seguir, um guia detalhado de como fazer para os principais recursos.
1. reutilização do cache de valores-chave
O LMCache evita a computação repetida do mesmo texto ou contexto, armazenando o Key Value Cache (KV Cache) do modelo. Os usuários podem ativar o LMCache no vLLM:
- Configuração de variáveis de ambiente::
export LMCACHE_USE_EXPERIMENTAL=True export LMCACHE_CHUNK_SIZE=256 export LMCACHE_LOCAL_CPU=True export LMCACHE_MAX_LOCAL_CPU_SIZE=5.0
Essas variáveis definem o LMCache para usar o recurso experimental, 256 tokens por bloco, ativar o backend da CPU e limitar a memória da CPU a 5 GB.
- Execução de uma instância vLLM::
O LMCache carrega e armazena automaticamente em cache os pares de valores-chave quando você inicia o vLLM. Código de amostra:from vllm import LLM from lmcache.integration.vllm.utils import ENGINE_NAME from vllm.config import KVTransferConfig ktc = KVTransferConfig(kv_connector="LMCacheConnector", kv_role="kv_both") llm = LLM(model="meta-llama/Meta-Llama-3.1-8B-Instruct", kv_transfer_config=ktc)
2. back-end com vários armazenamentos
O LMCache suporta o armazenamento de cache de valor-chave na GPU, CPU, disco ou Redis. Os usuários podem escolher o método de armazenamento de acordo com os recursos de hardware:
- Armazenamento em disco local::
python3 -m lmcache_server.server localhost 9000 /path/to/disk
Isso iniciará o servidor LMCache, armazenando o cache no caminho de disco especificado.
- Armazenamento Redis::
Para configurar o backend do Redis, é necessário definir um nome de usuário e uma senha, consulte a documentação:export LMCACHE_REDIS_USERNAME=user export LMCACHE_REDIS_PASSWORD=pass
3. cache distribuído
Em ambientes com várias GPUs ou contêineres, o LMCache oferece suporte ao armazenamento em cache compartilhado entre os nós:
- Inicie o servidor LMCache:
python3 -m lmcache_server.server localhost 9000 cpu
- Configure a instância do vLLM para se conectar ao servidor, consulte
disagg_vllm_launcher.sh
Exemplo.
4. suporte multimodal
O LMCache oferece suporte a um modelo multimodal para otimizar a inferência LLM visual, armazenando em cache pares de valores-chave por meio de tokens de imagem com hash (mm_hashes):
- Para ativar o suporte multimodal no vLLM, consulte o exemplo oficial
LMCache-Examples
Armazém.
5. ferramentas de teste
O LMCache fornece ferramentas de teste para gerar cargas de trabalho para verificar o desempenho:
- Armazém de teste clone:
git clone https://github.com/LMCache/lmcache-tests.git cd lmcache-tests bash prepare_environment.sh
- Execute os casos de teste:
python3 main.py tests/tests.py -f test_lmcache_local_cpu -o outputs/
A saída é salva no arquivo
outputs/test_lmcache_local_cpu.csv
.
Precauções de manuseio
- Inspeções ambientaisPara garantir que as versões do CUDA e do Python sejam compatíveis, é recomendável usar o ambiente de gerenciamento do Conda.
- Monitoramento de registros: Inspeção
prefiller.log
edecoder.log
responder cantandoproxy.log
para depurar o problema. - Suporte à comunidadeEntre no Slack do LMCache ou participe de uma reunião quinzenal da comunidade às terças-feiras, às 9h (horário de Brasília), para obter ajuda.
cenário do aplicativo
- Sistema multicast de perguntas e respostas
O LMCache armazena em cache os pares de valores-chave no contexto para acelerar os cenários de diálogo em várias rodadas. Quando um usuário faz perguntas sucessivas no chatbot, o LMCache reutiliza os resultados de computação anteriores para reduzir a latência. - Geração de aumento de recuperação (RAG)
existir RAG No aplicativo, o LMCache armazena em cache pares de valores-chave de documentos e responde rapidamente a consultas semelhantes, o que o torna adequado para pesquisa inteligente de documentos ou bases de conhecimento empresarial. - Inferência de modelo multimodal
Para modelos visual-linguísticos, o LMCache armazena em cache pares de valores-chave de imagens e texto, reduzindo o espaço de memória da GPU e melhorando o tempo de resposta. - Implementação massivamente distribuída
Em ambientes com várias GPUs ou contêineres, os recursos de cache distribuído do LMCache oferecem suporte ao compartilhamento entre nós para otimizar a inferência de IA de nível empresarial.
QA
- Quais plataformas são compatíveis com o LMCache?
Atualmente, há suporte para os ambientes Linux e NVIDIA GPU, e o Windows pode ser usado via WSL. - Como ele se integra ao vLLM?
aprovar (um projeto de lei ou inspeção etc.)pip install lmcache vllm
e ativar o LMCacheConnector na configuração do vLLM, consulte o código de amostra oficial. - Há suporte para o cache sem prefixo?
o LMCache usa técnicas de recomputação parcial para armazenar em cache o texto não prefixado em cargas de trabalho RAG. - Como depurar problemas de desempenho?
Examine os arquivos de registro e execute casos de teste, produza arquivos CSV para analisar a latência e a taxa de transferência.