ExLlama: Implementação Llama com eficiência de memória para pesos quantizados

ExLlama

3.5 | 259 | 0
Tipo:
Projetos de Código Aberto
Última atualização:
2025/10/18
Descrição:
ExLlama é uma implementação Python/C++/CUDA independente e com eficiência de memória de Llama para inferência rápida com pesos quantizados GPTQ de 4 bits em GPUs modernas.
Compartilhar:
Inferência Llama
quantização GPTQ
CUDA
eficiência de memória
grandes modelos de linguagem

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?

  1. 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
  2. Executando o Benchmark:

    • python test_benchmark_inference.py -d <path_to_model_files> -p -ppl
  3. Executando o Exemplo de Chatbot:

    • python example_chatbot.py -d <path_to_model_files> -un "Jeff" -p prompt_chatbort.txt
  4. 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>

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"

vLLM
Imagem não disponível
457 0

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.

Mecanismo de inferência LLM
llama.cpp
Imagem não disponível
329 0

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.

Inferência LLM
biblioteca C/C++
Fireworks AI
Imagem não disponível
539 0

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.

mecanismo de inferência
Friendli Inference
Imagem não disponível
337 0

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.

Serviço LLM
otimização de GPU