ExLlamaV2

ExLlamaV2

ExLlamaV2는 현대적인 컨슈머 GPU에서 로컬 LLM을 돌리기 위한 추론 라이브러리예요. Hugging Face Transformers처럼 학습·범용 프레임워크가 아니라, 양자화된 모델을 최대한 빠르고 가볍게 추론하는 데 특화한 라이브러리라서 '로컬 추론 엔진'으로 부르는 게 더 정확해요. 4비트 GPTQ 모델을 지원할 뿐 아니라 EXL2라는 자체 양자화 포맷까지 만들어서, 적은 VRAM으로 큰 모델을 다루고 싶을 때 자주 찾게 돼요.

참고로 이 저장소는 현재 아카이브(보관) 상태이고, 개발은 후속 버전인 ExLlamaV3로 이어지고 있어요. 그래도 ExLlamaV2 학습 자료와 TabbyAPI 등 생태계 문서는 여전히 기준으로 쓰이니까, 개념 잡기에 좋아요.

설치와 빠른 시작

소스에서 설치하려면 CUDA Toolkit과 컴파일러(Linux는 gcc, Windows는 Visual Studio Build Tools)가 필요해요. PyTorch 버전도 CUDA에 맞춰 먼저 깔아두면 좋아요.

git clone https://github.com/turboderp/exllamav2
cd exllamav2
pip install -r requirements.txt
pip install .

설치가 끝나면 바로 추론을 확인할 수 있어요. -m에 모델 경로를, -p에 프롬프트를 넘기면 돼요. 멀티 GPU라면 --gpu_split auto를 붙이면 자동으로 나눠 담아요.

python test_inference.py -m <path_to_model> -p "Once upon a time,"

간단한 콘솔 챗봇도 들어 있어요. -mode로 프롬프트 형식을 고르는데, raw는 베이스 모델이나 파인튠에 두루 쓰는 채팅로그 형식이에요. -modes로 전체 목록을 볼 수 있고, -sp로 커스텀 시스템 프롬프트를 넣을 수 있어요.

python examples/chat.py -m <path_to_model> -mode llama -gs auto

EXL2 양자화

EXL2는 ExLlamaV2가 지원하는 2/3/4/5/6/8비트 양자화 포맷이에요. GPTQ와 같은 최적화 방식을 쓰면서도 레이어마다 양자화 비트 수를 섞을 수 있어 평균 2~8비트 사이의 아무 목표 비트율이나 달성할 수 있죠. 가중치가 중요한 열은 더 많은 비트로, 덜 중요한 곳은 적은 비트로 두는 식이라, 70B 모델을 24GB VRAM에서 2048 토큰 컨텍스트로 돌리는 것도 가능해요.

양자화는 convert.py가 하는데, 옵션과 사용법은 이 허브의 EXL2 양자화 변환 페이지에 정리해 뒀어요.

성능 참고

공식 벤치마크 몇 가지를 보면 GPU 별로 속도 차이를 직관적으로 알 수 있어요 (3090Ti vs 4090, 토큰/초):

Model Mode Size grpsz act 3090Ti 4090
Llama GPTQ 7B 128 no 181 t/s 205 t/s
Llama2 EXL2 4.0 bpw 7B - - 185 t/s 211 t/s
Llama2 EXL2 2.5 bpw 70B - - 33 t/s 38 t/s
TinyLlama EXL2 4.0 bpw 1.1B - - 602 t/s 700 t/s

속도는 GPU마다 다르고, 느린 CPU가 여전히 병목이 될 수 있다는 점은 참고해 두면 좋아요.

다이내믹 제너레이터

v0.1.0부터 ExLlamaV2는 다이내믹 제너레이터라는 새 추론 API를 소개했어요. paged attention 기반의 연속 배칭(continuous batching), 스마트 프롬프트 캐싱, K/V 캐시 중복 제거를 하나로 합친 API인데, 자세한 원리와 사용법은 이 허브의 다이내믹 제너레이터 페이지에서 다뤄요.

생태계와 통합

  • TabbyAPI — ExLlamaV2의 공식 권장 백엔드 서버예요. OpenAI 호환 API를 제공해서 SillyTavern 같은 프론트엔드와 바로 붙을 수 있고, HF 모델 다운로드·임베딩 모델·HF Jinja2 채팅 템플릿 지원 같은 확장 기능이 있어요. 시작법은 위키에서 확인할 수 있어요.
  • ExUI — 단일 사용자용 심플 웹 UI. 채팅 모드와 노트북 모드를 지원해요.
  • text-generation-webuiexllamav2/exllamav2_HF 로더로 ExLlamaV2를 지원해요.
  • EXL2 양자화 모델은 Hugging Face의 turboderp, LoneStriker, bartowski 같은 계정에서 많이 찾아볼 수 있어요.

더 알아보기

  • 다이내믹 제너레이터doc/dynamic.md 번역: 연속 배칭·프롬프트 캐싱 원리와 API
  • EXL2 양자화 변환doc/convert.md 번역: convert.py 옵션과 사용 예시
  • 평가 스크립트doc/eval.md 번역: HumanEval·MMLU 벤치마크 실행법
  • Q4/FP8 캐시 평가doc/qcache_eval.md 번역: 캐시 모드별 정확도 비교
  • 원본: ExLlamaV2 README