Salta ai contenuti

ExLlamaV3 - Inferenza LLM Quantizzata Veloce su GPU Consumer

ExLlamaV3 - Inferenza LLM Quantizzata Veloce su GPU Consumer

ExLlamaV3 è una libreria di inferenza veloce per eseguire LLM quantizzati su GPU NVIDIA consumer. Il suo formato EXL3 fornisce quantizzazione variable-bitrate ad alta qualità — puoi puntare a un average bits-per-weight (es. 3.0, 4.25, 6.0) per scambiare qualità contro VRAM precisamente — permettendo ai modelli grandi di stare su una singola scheda 24GB mantenendo throughput forte. È il successore di ExLlamaV2 ed è favorito dalla comunità local-LLM per schiacciare modelli grandi in memoria limitata.

Installazione

MetodoComando
pip (wheel precompilata)pip install exllamav3
Da sorgentigit clone https://github.com/turboderp-org/exllamav3 && cd exllamav3 && pip install -e .
RequisitiGPU NVIDIA (Ampere+), CUDA, PyTorch
Verificapython -c "import exllamav3; print('ok')"

Il Formato EXL3

ConcettoSignificato
Bitrate variabilePunta a un average bits-per-weight (bpw), es. 2.5–8.0
Precisione per-layerDiversi layer possono usare diversa precisione
Dial qualità/tagliabpw più alto = qualità migliore, più VRAM
CalibrazioneUsa un dataset di calibrazione durante la quantizzazione

Quantizzazione di un Modello

# Converti un modello HF a EXL3 a ~4.0 bit per peso
python -m exllamav3.convert \
  -i meta-llama/Llama-3.1-8B-Instruct \
  -o Llama-3.1-8B-exl3-4.0bpw \
  -b 4.0
FlagDescrizione
-i, --in_dirModello HF di origine
-o, --out_dirDirectory EXL3 di output
-b, --bitsTarget average bit per peso
-hb, --head_bitsPrecisione per la testa di output
-c, --cal_dirDati di calibrazione personalizzati

Inferenza 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="Spiega la quantizzazione brevemente.",
                            max_new_tokens=200)
print(output)
OggettoRuolo
ConfigCarica config del modello da una directory EXL3
ModelIl modello quantizzato
CacheCache KV (più grande = contesto più lungo)
GeneratorEsegue la generazione

Memoria e Contesto

LevaEffetto
bpw al momento della quantbpw più basso → meno VRAM, perdita di qualità
Dimensione cachePiù grande → contesto più lungo, più VRAM
Quantizzazione cacheCache KV quantizzato per estendere il contesto
Bit della testaMantieni la testa a precisione più alta per la qualità

Scelta di un Bitrate (guida approssimativa)

Target bpwUso tipico
2.0–2.5Adatta un modello molto grande in VRAM stretto (qualità cade)
3.0–3.5Aggressivo ma usabile
4.0–4.5Sweet spot per la maggior parte dei setup 24GB
6.0+Quasi-lossless, più VRAM

Integrazione dell”Ecosistema

TargetNota
TabbyAPIServer compatibile con OpenAI che usa ExLlamaV3
text-generation-webuiSupporto del loader
Aphrodite EnginePuò servire modelli quantizzati EXL3

ExLlamaV3 vs Altri Approcci

AspettoExLlamaV3llama.cpp (GGUF)GPTQ/AWQ
TargetGPU NVIDIA consumerCPU + GPU, cross-platformGPU
QuantizzazioneVariable-bitrate EXL3k-quantsFisso 4-bit
Controllo della precisioneFine (qualsiasi bpw)Livelli presetCoarse
Migliore perMassima qualità-per-VRAM su GPUPortabilità, CPUServizio 4-bit standard

Risorse