본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

Serve 타임 양자화

~24 min · serving, quantization

Level 0스카우트
0 XP0/50 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

양자화는 비트 수만 비교하면 틀려

형식비트속도품질용도
fp16 / bf1616기준기준양자화하지 않은 운영 기준선.
fp881.3~1.5배기준에 가까움Hopper·Ada GPU와 fp8 지원 엔진이 필요해.
bitsandbytes8 / 41~1.5배작은 저하작은 GPU에 빠르게 맞추기 좋지만 전용 서빙 형식보다 덜 최적화돼.
GPTQ4 / 3약 2배작은 저하채널별 양자화이며 저장소 이름에 -GPTQ가 자주 붙어.
AWQ42~3배작은 저하activation을 반영한 강력한 4비트 서빙 선택지야.
GGUF2~8환경별환경별llama.cpp·Ollama용이며 TGI·vLLM용 형식은 아니야.

하드웨어와 엔진이 지원하는 조합을 골라

현대 GPU에서 AWQ 변형이 있으면 4비트 AWQ를 먼저 검토하고, GPU와 엔진이 fp8을 지원하면 fp8도 좋은 선택이야. 둘 다 맞지 않으면 bnb-nf4로 시작할 수 있어. 이미 검증한 GPTQ 자산이 없다면 새 배포에서는 AWQ와 비교한 뒤 결정해.

Code

Hub 에서 variant 고르기·bash
# 모델의 AWQ variant 검색
huggingface-cli download "TheBloke/Llama-2-7B-Chat-AWQ" --local-dir ./awq

# TGI launch:
docker run ... \
  --model-id /data/awq \
  --quantize awq

# vLLM:
vllm serve TheBloke/Llama-2-7B-Chat-AWQ --quantization awq
포맷 간 perplexity sanity check·python
# Pseudo-code: transformers 통해 각 variant 로드, held-out eval set
# (예: 너 실제 트래픽에서 100 프롬프트) 의 logprob 계산, perplexity 비교.
# 너 분포에서 fp16 의 0.2 perplexity 안에 오는 4-bit AWQ = 충분히 좋음.
# 1 perplexity 넘게 drift 하는 4-bit = 위험.

# from transformers import AutoModelForCausalLM, AutoTokenizer
# import torch
# ... fp16 vs awq vs gptq 로드, 토큰별 -log p(eval_text) 계산,
# eval set 평균, 비교.

External links

Exercise

Hub 에 AWQ + GPTQ variant 둘 다 있는 7B 모델 골라. 각각 vLLM 로 serve. 너 도메인에서 50 프롬프트 hold out. fp16, awq, gptq 에 돌려. perplexity (또는 deterministic task 면 bleu/exact-match) 계산. 이긴 variant 골라.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.