ExLlamaV3 - 소비자 GPU에서 빠른 양자화 LLM 추론 치트시트
ExLlamaV3는 소비자 NVIDIA GPU에서 양자화 LLM을 실행하기 위한 빠른 추론 라이브러리입니다. EXL3 형식은 높은 품질, 가변 비트율 양자화를 제공합니다. 평균 비트/가중치 (예: 3.0, 4.25, 6.0)를 목표로 품질에 대해 VRAM을 정확히 거래할 수 있으므로, 큰 모델이 단일 24GB 카드에 맞으면서도 강한 처리량을 유지합니다. ExLlamaV2의 후속입니다. 로컬 LLM 커뮤니티에서 제한된 메모리에 큰 모델을 가압하기 위해 선호됩니다.
설치
| 방법 | 명령어 |
|---|
| pip (사전 빌드 wheel) | pip install exllamav3 |
| 소스에서 | git clone https://github.com/turboderp-org/exllamav3 && cd exllamav3 && pip install -e . |
| 요구사항 | NVIDIA GPU (Ampere+), CUDA, PyTorch |
| 검증 | python -c "import exllamav3; print('ok')" |
EXL3 형식
| 개념 | 의미 |
|---|
| Variable bitrate | 평균 비트/가중치 목표 (bpw), 예: 2.5–8.0 |
| Per-layer precision | 다른 계층은 다른 정밀도 사용 가능 |
| Quality/size dial | 높은 bpw = 더 나은 품질, 더 많은 VRAM |
| Calibration | 양자화 중 보정 데이터세트 사용 |
모델 양자화
# HF 모델을 ~4.0 비트/가중치의 EXL3로 변환
python -m exllamav3.convert \
-i meta-llama/Llama-3.1-8B-Instruct \
-o Llama-3.1-8B-exl3-4.0bpw \
-b 4.0
| 플래그 | 설명 |
|---|
-i, --in_dir | 소스 HF 모델 |
-o, --out_dir | 출력 EXL3 디렉토리 |
-b, --bits | 목표 평균 비트/가중치 |
-hb, --head_bits | 출력 헤드의 정밀도 |
-c, --cal_dir | 커스텀 보정 데이터 |
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)
| 객체 | 역할 |
|---|
Config | EXL3 디렉토리에서 모델 설정 로드 |
Model | 양자화 모델 |
Cache | KV 캐시 (더 크게 = 더 긴 컨텍스트) |
Generator | 생성 실행 |
메모리 및 컨텍스트
| 레버 | 효과 |
|---|
| bpw at quant time | 낮은 bpw → 더 적은 VRAM, 일부 품질 손실 |
| Cache size | 더 크게 → 더 긴 컨텍스트, 더 많은 VRAM |
| Cache quantization | 양자화 KV 캐시로 컨텍스트 확장 |
| Head bits | 품질을 위해 헤드 더 높은 정밀도 유지 |
비트율 선택 (대략 가이드)
| 목표 bpw | 전형적 사용 |
|---|
| 2.0–2.5 | 매우 큰 모델을 긴장된 VRAM에 맞추기 (품질 저하) |
| 3.0–3.5 | 공격적이지만 사용 가능 |
| 4.0–4.5 | 대부분 24GB 설정의 스위트스팟 |
| 6.0+ | 거의 무손실, 더 많은 VRAM |
생태계 통합
| 대상 | 노트 |
|---|
| TabbyAPI | ExLlamaV3를 사용하는 OpenAI 호환 서버 |
| text-generation-webui | 로더 지원 |
| Aphrodite Engine | EXL3 양자화 모델 제공 가능 |
ExLlamaV3 vs 다른 접근법
| 측면 | ExLlamaV3 | llama.cpp (GGUF) | GPTQ/AWQ |
|---|
| 대상 | 소비자 NVIDIA GPU | CPU + GPU, 크로스 플랫폼 | GPU |
| 양자화 | 가변 비트율 EXL3 | k-quants | 고정 4비트 |
| 정밀도 제어 | 미세 (임의 bpw) | 사전 설정 수준 | 거친 |
| 최고의 용도 | GPU 상 VRAM 당 최대 품질 | 이식성, CPU | 표준 4비트 서빙 |
리소스