Pular para o conteúdo

ExLlamaV3 - Inferência Rápida de LLM Quantizado em GPUs de Consumidor

ExLlamaV3 - Inferência Rápida de LLM Quantizado em GPUs de Consumidor

ExLlamaV3 é uma biblioteca de inferência rápida para executar LLMs quantizados em GPUs NVIDIA de consumidor. Seu formato EXL3 fornece quantização de alta qualidade e taxa de bits variável — você pode almejar uma quantidade média de bits por peso (ex: 3.0, 4.25, 6.0) para trocar qualidade por VRAM com precisão — permitindo modelos grandes encaixarem em um único cartão de 24GB enquanto mantêm throughput forte. É o sucessor de ExLlamaV2 e é favoritado pela comunidade local-LLM para apertar grandes modelos em memória limitada.

Instalação

MétodoComando
pip (wheel pré-construído)pip install exllamav3
A partir do código-fontegit clone https://github.com/turboderp-org/exllamav3 && cd exllamav3 && pip install -e .
RequisitosGPU NVIDIA (Ampere+), CUDA, PyTorch
Verificarpython -c "import exllamav3; print('ok')"

O Formato EXL3

ConceitoSignificado
Taxa de bits variávelAlmejar uma quantidade média de bits por peso (bpw), ex: 2.5–8.0
Precisão por camadaDiferentes camadas podem usar diferentes precisões
Discagem qualidade/tamanhobpw mais alto = melhor qualidade, mais VRAM
CalibraçãoUsa um dataset de calibração durante a quantização

Quantizando um Modelo

# Converta um modelo HF para EXL3 em ~4.0 bits por peso
python -m exllamav3.convert \
  -i meta-llama/Llama-3.1-8B-Instruct \
  -o Llama-3.1-8B-exl3-4.0bpw \
  -b 4.0
FlagDescrição
-i, --in_dirModelo HF de origem
-o, --out_dirDiretório de saída EXL3
-b, --bitsObjetivo de média de bits por peso
-hb, --head_bitsPrecisão para a cabeça de saída
-c, --cal_dirDados de calibração customizados

Inferência Python

from exllamav3 import Model, Config, Cache, Tokenizer, Generator

config = Config.from_directory("Llama-3.1-8B-exl3-4.0bpw")
model = Model.from_config(config)
cache = Cache(model, max_num_tokens=8192)
model.load()

tokenizer = Tokenizer.from_config(config)
generator = Generator(model=model, cache=cache, tokenizer=tokenizer)

output = generator.generate(prompt="Explique quantização brevemente.",
                            max_new_tokens=200)
print(output)
ObjetoPapel
ConfigCarrega config do modelo de um dir EXL3
ModelO modelo quantizado
CacheCache KV (tamanho = contexto mais longo)
GeneratorExecuta geração

Memória e Contexto

AlavancaEfeito
bpw no tempo de quantbpw mais baixo → menos VRAM, alguma perda de qualidade
Tamanho do cacheMaior → contexto mais longo, mais VRAM
Quantização de cacheCache KV quantizado para estender contexto
Head bitsMantenha a cabeça em precisão mais alta para qualidade

Escolhendo uma Taxa de Bits (guia aproximado)

Objetivo bpwUso típico
2.0–2.5Encaixe um modelo muito grande em VRAM apertada (qualidade cai)
3.0–3.5Agressivo mas usável
4.0–4.5Sweet spot para a maioria de setups 24GB
6.0+Quase sem perdas, mais VRAM

Integração de Ecossistema

AlvoNota
TabbyAPIServidor compatível com OpenAI que usa ExLlamaV3
text-generation-webuiSuporte de loader
Aphrodite EnginePode servir modelos quantizados EXL3

ExLlamaV3 vs Outras Abordagens

AspectoExLlamaV3llama.cpp (GGUF)GPTQ/AWQ
AlvoGPUs NVIDIA de consumidorCPU + GPU, cross-platformGPU
QuantizaçãoEXL3 taxa de bits variávelk-quantsFixo 4-bit
Controle de precisãoFino (qualquer bpw)Níveis pré-definidosGrosseiro
Melhor paraQualidade máxima por VRAM em GPUPortabilidade, CPUServiço 4-bit padrão

Recursos