ExLlamaV3 - Fast Quantized LLM Inference on Consumer GPUs Cheatsheet
ExLlamaV3 ist eine schnelle Inferenz Library zum Ausführen Quantisierter LLMs auf Consumer NVIDIA GPUs. Sein EXL3 Format bietet Hochqualität, Variable-Bitrate Quantisierung — Sie können ein Durchschnitt Bits-Pro-Weight (z.B. 3.0, 4.25, 6.0) anvisieren zu Qualität gegen VRAM Präzision handeln — dass Große Modelle in eine Einzelne 24GB Karte passen, während starker Durchsatz beibehalten wird. Es ist der Nachfolger zu ExLlamaV2 und wird von der Lokale-LLM Kommunität bevorzugt zum Quetschen Großer Modelle in begrenzte Speicher.
Installation
| Methode | Befehl |
|---|
| pip (Prebuilt Wheel) | pip install exllamav3 |
| Aus Quellcode | git clone https://github.com/turboderp-org/exllamav3 && cd exllamav3 && pip install -e . |
| Anforderungen | NVIDIA GPU (Ampere+), CUDA, PyTorch |
| Überprüfen | python -c "import exllamav3; print('ok')" |
| Konzept | Bedeutung |
|---|
| Variable Bitrate | Ziel durchschnitt Bits-Pro-Weight (bpw), z.B. 2.5–8.0 |
| Pro-Layer Präzision | Verschiedene Schichten können verschiedene Präzision nutzen |
| Qualität/Größe Dial | Höher bpw = Bessere Qualität, mehr VRAM |
| Kalibrierung | Nutzt einen Kalibrierungs Dataset während Quantisierung |
Quantisiere ein Modell
# Konvertiere ein HF Modell zum EXL3 auf ~4.0 Bits Pro Weight
python -m exllamav3.convert \
-i meta-llama/Llama-3.1-8B-Instruct \
-o Llama-3.1-8B-exl3-4.0bpw \
-b 4.0
| Flag | Beschreibung |
|---|
-i, --in_dir | Quelle HF Modell |
-o, --out_dir | Ausgabe EXL3 Verzeichnis |
-b, --bits | Ziel Durchschnitt Bits Pro Weight |
-hb, --head_bits | Präzision für den Output Head |
-c, --cal_dir | Custom Kalibrierungs Daten |
Python Inferenz
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="Erklären Sie Quantisierung kurz.",
max_new_tokens=200)
print(output)
| Objekt | Rolle |
|---|
Config | Lade Modell Config aus einem EXL3 Verzeichnis |
Model | Das Quantisierte Modell |
Cache | KV Cache (Größer = Länger Kontext) |
Generator | Führe Generierung aus |
Speicher & Kontext
| Hebel | Effekt |
|---|
| bpw bei Quant Zeit | Niedriger bpw → Weniger VRAM, Einige Qualität Verlust |
| Cache Größe | Größer → Längerer Kontext, Mehr VRAM |
| Cache Quantisierung | Quantisierter KV Cache zum Kontekt Verlängerung |
| Head Bits | Halten Sie den Head Höher-Präzision für Qualität |
Wählen Sie eine Bitrate (Raue Anleitung)
| Ziel bpw | Typische Nutzung |
|---|
| 2.0–2.5 | Passe ein Sehr Großen Modell in engen VRAM (Qualität sinkt) |
| 3.0–3.5 | Aggressiv aber Nutzbar |
| 4.0–4.5 | Sweet Spot für Meisten 24GB Setups |
| 6.0+ | Nahe-Verlustlos, Mehr VRAM |
Ökosystem Integration
| Ziel | Notiz |
|---|
| TabbyAPI | OpenAI-kompatible Server, die ExLlamaV3 nutzt |
| Text-Generation-WebUI | Loader Support |
| Aphrodite Engine | Kann EXL3-Quantisierte Modelle Serve |
ExLlamaV3 vs Andere Ansätze
| Aspekt | ExLlamaV3 | llama.cpp (GGUF) | GPTQ/AWQ |
|---|
| Ziel | Consumer NVIDIA GPUs | CPU + GPU, Cross-Plattform | GPU |
| Quantisierung | Variable-Bitrate EXL3 | k-Quants | Feste 4-Bit |
| Präzision Control | Fein (Jedes bpw) | Vorgeset Level | Grob |
| Beste für | Max Qualität-Pro-VRAM auf GPU | Portabilität, CPU | Standard 4-Bit Serving |
Ressourcen