ExLlama
Visão geral de ExLlama
ExLlama: Implementação de Llama com Eficiência de Memória para Pesos Quantizados
ExLlama é uma implementação independente em Python/C++/CUDA de Llama projetada para velocidade e eficiência de memória ao usar pesos GPTQ de 4 bits em GPUs modernas. Este projeto visa fornecer uma alternativa mais rápida e com maior eficiência de memória à implementação do Hugging Face Transformers, particularmente para usuários que trabalham com modelos quantizados.
O que é ExLlama?
ExLlama é projetado para ser um mecanismo de inferência de alto desempenho para a família de modelos de linguagem Llama. Ele aproveita CUDA para aceleração de GPU e é otimizado para pesos quantizados GPTQ de 4 bits, permitindo que os usuários executem modelos de linguagem grandes em GPUs com memória limitada.
Como o ExLlama funciona?
ExLlama otimiza o uso de memória e a velocidade de inferência por meio de várias técnicas:
- Implementação CUDA: Utiliza CUDA para computação eficiente em GPU.
- Suporte de Quantização: Projetado especificamente para pesos quantizados GPTQ de 4 bits.
- Eficiência de Memória: Reduz a ocupação de memória em comparação com implementações padrão.
Principais Características e Benefícios:
- Alto Desempenho: Otimizado para inferência rápida.
- Eficiência de Memória: Permite executar modelos grandes em GPUs menos potentes.
- Implementação Independente: Não precisa da biblioteca Hugging Face Transformers.
- Web UI: Inclui uma interface de usuário web simples para fácil interação com o modelo (JavaScript escrito por ChatGPT, então cuidado!).
- Suporte a Docker: Pode ser executado em um contêiner Docker para facilitar a implantação e a segurança.
Como usar o ExLlama?
Instalação:
- Clone o repositório:
git clone https://github.com/turboderp/exllama - Navegue até o diretório:
cd exllama - Instale as dependências:
pip install -r requirements.txt
- Clone o repositório:
Executando o Benchmark:
python test_benchmark_inference.py -d <path_to_model_files> -p -ppl
Executando o Exemplo de Chatbot:
python example_chatbot.py -d <path_to_model_files> -un "Jeff" -p prompt_chatbort.txt
Web UI:
- Instale dependências adicionais:
pip install -r requirements-web.txt - Execute a Web UI:
python webui/app.py -d <path_to_model_files>
- Instale dependências adicionais:
Por que escolher ExLlama?
ExLlama oferece várias vantagens:
- Desempenho: Oferece velocidades de inferência mais rápidas em comparação com outras implementações.
- Acessibilidade: Permite que usuários com memória GPU limitada executem modelos de linguagem grandes.
- Flexibilidade: Pode ser integrado a outros projetos através do módulo Python.
- Facilidade de Uso: Fornece uma interface de usuário web simples para interagir com o modelo.
Para quem é o ExLlama?
ExLlama é adequado para:
- Pesquisadores e desenvolvedores que trabalham com modelos de linguagem grandes.
- Usuários com GPUs NVIDIA (série 30 e posteriores recomendadas).
- Aqueles que buscam uma solução de inferência de alto desempenho e com eficiência de memória.
- Qualquer pessoa interessada em executar modelos Llama com quantização GPTQ de 4 bits.
Requisitos de Hardware:
- GPUs NVIDIA (RTX série 30 ou posterior recomendada)
- O suporte a ROCm é teórico, mas não testado
Dependências:
- Python 3.9+
- PyTorch (testado em 2.0.1 e 2.1.0 nightly) com CUDA 11.8
- safetensors 0.3.2
- sentencepiece
- ninja
- flask e waitress (para a Web UI)
Suporte a Docker:
ExLlama pode ser executado em um contêiner Docker para facilitar a implantação e a segurança. A imagem Docker oferece suporte a GPUs NVIDIA.
Resultados e Benchmarks:
ExLlama demonstra melhorias significativas de desempenho em comparação com outras implementações, especialmente em termos de tokens por segundo (t/s) durante a inferência. Os benchmarks são fornecidos para vários tamanhos de modelo Llama (7B, 13B, 33B, 65B, 70B) em diferentes configurações de GPU.
Exemplo de uso
import torch
from exllama.model import ExLlama, ExLlamaCache, ExLlamaConfig
from exllama.tokenizer import ExLlamaTokenizer
## Inicializar modelo e tokenizer
model_directory = "/path/to/your/model"
tokenizer_path = os.path.join(model_directory, "tokenizer.model")
model_config_path = os.path.join(model_directory, "config.json")
config = ExLlamaConfig(model_config_path)
config.model_path = os.path.join(model_directory, "model.safetensors")
tokenizer = ExLlamaTokenizer(tokenizer_path)
model = ExLlama(config)
cache = ExLlamaCache(model)
## Preparar entrada
prompt = "The quick brown fox jumps over the lazy"
input_ids = tokenizer.encode(prompt)
## Gerar saída
model.forward(input_ids, cache)
token = model.sample(temperature = 0.7, top_k = 50, top_p = 0.7)
output = tokenizer.decode([token])
print(prompt + output)
Compatibilidade e Suporte de Modelo:
ExLlama é compatível com uma variedade de modelos Llama, incluindo Llama 1 e Llama 2. O projeto é continuamente atualizado para oferecer suporte a novos modelos e recursos.
ExLlama é uma ferramenta poderosa para quem procura executar modelos Llama de forma eficiente. Seu foco na otimização de memória e velocidade o torna uma excelente escolha para pesquisa e aplicações práticas.
Melhores ferramentas alternativas para "ExLlama"
Float16.cloud oferece GPUs sem servidor para desenvolvimento de IA. Implante modelos instantaneamente em GPUs H100 com preços de pagamento por uso. Ideal para LLM, ajuste fino e treinamento.
Friendli Inference é o mecanismo de inferência LLM mais rápido, otimizado para velocidade e custo-benefício, reduzindo os custos de GPU em 50-90%, oferecendo alto rendimento e baixa latência.
Habilite a inferência LLM eficiente com llama.cpp, uma biblioteca C/C++ otimizada para diversos hardwares, com suporte a quantização, CUDA e modelos GGUF. Ideal para implantação local e em nuvem.
Construa um mecanismo de resposta de IA inspirado no Perplexity usando Next.js, Groq, Llama-3 e Langchain. Obtenha fontes, respostas, imagens e perguntas de acompanhamento de forma eficiente.
vLLM é um mecanismo de inferência e serviço de alto rendimento e com eficiência de memória para LLMs, apresentando PagedAttention e processamento em lote contínuo para desempenho otimizado.
Plataforma de IA ultrarrápida para desenvolvedores. Implante, ajuste e execute mais de 200 LLMs e modelos multimodais otimizados com APIs simples - SiliconFlow.
O Serviço de Inferência do Nebius AI Studio oferece modelos open source hospedados para resultados mais rápidos, baratos e precisos do que APIs proprietárias. Escala sem MLOps, ideal para RAG e cargas de trabalho de produção.
ChatLLaMA é um assistente de IA treinado com LoRA baseado em modelos LLaMA, permitindo conversas personalizadas no seu GPU local. Inclui GUI de desktop, treinado no dataset HH da Anthropic, disponível para modelos 7B, 13B e 30B.
xTuring é uma biblioteca open-source que capacita os usuários a personalizar e fazer fine-tuning de Modelos de Linguagem Grandes (LLMs) de forma eficiente, focando em simplicidade, otimização de recursos e flexibilidade para personalização de IA.
Inweave é uma plataforma alimentada por IA projetada para startups e scaleups para automatizar fluxos de trabalho de forma eficiente. Implante assistentes IA personalizáveis usando modelos líderes como GPT e Llama via chat ou API para ganhos de produtividade seamless.
Sagify é uma ferramenta Python de código aberto que simplifica pipelines de ML no AWS SageMaker, com uma Gateway LLM unificada para integração perfeita de modelos de linguagem grande proprietários e open-source.
LlamaChat é um aplicativo macOS que permite que você converse com modelos LLaMA, Alpaca e GPT4All localmente no seu Mac. Baixe agora e experimente o bate-papo LLM local!
Execute instantaneamente qualquer modelo Llama do HuggingFace sem configurar nenhum servidor. Mais de 11.900 modelos disponíveis. A partir de US$ 10/mês para acesso ilimitado.
Fireworks AI oferece inferência incrivelmente rápida para IA generativa usando modelos de código aberto de última geração. Ajuste e implemente seus próprios modelos sem custo extra. Escale as cargas de trabalho de IA globalmente.