Ir al contenido

ExLlamaV3 - Inferencia Rápida de LLM Cuantizado en GPUs de Consumidor

ExLlamaV3 - Inferencia Rápida de LLM Cuantizado en GPUs de Consumidor

ExLlamaV3 es una biblioteca de inferencia rápida para ejecutar LLMs cuantizados en GPUs NVIDIA de consumidor. Su formato EXL3 proporciona cuantización de tasa de bits variable de alta calidad — puedes apuntar a un promedio de bits por peso (p. ej. 3.0, 4.25, 6.0) para compensar calidad contra VRAM con precisión — permitiendo que modelos grandes quepan en una sola tarjeta de 24GB mientras se mantiene un throughput fuerte. Es el sucesor de ExLlamaV2 y es favorecido por la comunidad de LLM local por exprimir modelos grandes en memoria limitada.

Instalación

MétodoComando
pip (rueda precompilada)pip install exllamav3
Desde fuentegit clone https://github.com/turboderp-org/exllamav3 && cd exllamav3 && pip install -e .
RequisitosGPU NVIDIA (Ampere+), CUDA, PyTorch
Verificarpython -c "import exllamav3; print('ok')"

El Formato EXL3

ConceptoSignificado
Tasa de bits variableApuntar a un promedio de bits por peso (bpw), p. ej. 2.5–8.0
Precisión por capaDiferentes capas pueden usar diferentes precisiones
Dial calidad/tamañoMayor bpw = mejor calidad, más VRAM
CalibraciónUsa un conjunto de datos de calibración durante la cuantización

Cuantizando un Modelo

# Convertir un modelo HF a EXL3 a ~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
BanderaDescripción
-i, --in_dirModelo HF de origen
-o, --out_dirDirectorio EXL3 de salida
-b, --bitsPromedio objetivo de bits por peso
-hb, --head_bitsPrecisión para la cabeza de salida
-c, --cal_dirDatos de calibración personalizados

Inferencia de 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="Explain quantization briefly.",
                            max_new_tokens=200)
print(output)
ObjetoRol
ConfigCarga configuración de modelo desde un directorio EXL3
ModelEl modelo cuantizado
CacheCaché KV (tamaño = contexto más largo)
GeneratorEjecuta generación

Memoria y Contexto

PalancaEfecto
bpw en tiempo de cuantbpw más bajo → menos VRAM, cierta pérdida de calidad
Tamaño de cachéMás grande → contexto más largo, más VRAM
Cuantización de cachéCaché KV cuantizado para extender contexto
Bits de cabezaMantener la cabeza con precisión más alta para calidad

Eligiendo una Tasa de Bits (guía áspera)

bpw ObjetivoUso típico
2.0–2.5Ajustar un modelo muy grande en VRAM apretada (calidad cae)
3.0–3.5Agresivo pero usable
4.0–4.5Punto dulce para la mayoría de configuraciones de 24GB
6.0+Casi sin pérdida, más VRAM

Integración de Ecosistema

DestinoNota
TabbyAPIServidor compatible con OpenAI que usa ExLlamaV3
text-generation-webuiSoporte de cargador
Aphrodite EnginePuede servir modelos cuantizados EXL3

ExLlamaV3 vs Otros Enfoques

AspectoExLlamaV3llama.cpp (GGUF)GPTQ/AWQ
DestinoGPUs NVIDIA de consumidorCPU + GPU, multiplataformaGPU
CuantizaciónEXL3 de tasa de bits variablek-quantsFijo de 4-bit
Control de precisiónFino (cualquier bpw)Niveles preestablecidosÁspero
Mejor paraMáxima calidad por VRAM en GPUPortabilidad, CPUServicio estándar de 4-bit

Recursos