이전에는 gguf 로 변환하면서 양자화를 옵션으로 추가할 수 있었다.
이와 똑같이 llama-quantize 로 양자화를 할 수 있다.
--outtype 옵션 없이 그대로 진행
% ./convert_hf_to_gguf.py ./models/EXAONE-3.5-2.4B-Instruct --outfile ./models/EXAONE-3.5-2.4B-Instruct/EXAONE-3.5-2.4B-Instruct.gguf
% ./bin/llama-quantize models/EXAONE-3.5-2.4B-Instruct/EXAONE-3.5-2.4B-Instruct.gguf models/EXAONE-3.5-2.4B-Instruct/EXAONE-3.5-2.4B-Instruct.Q8_0.gguf Q8_0
용도에 따라서 Legacy Quant 나 K‑Quants 를 사용하면 되겠다.
분류 | 예시 옵션 | 비트 | 특징 |
---|---|---|---|
Floating-point | F32, F16 | 32,16 | 비양자화 |
Legacy Quant | Q8_0, Q4_0, Q4_1, Q5_0, Q5_1 | 4–8 | 블록 기반 단순 양자화 |
K‑Quants | Q2_K_S, Q3_K_S, Q4_K_M, Q5_K_M, Q6_K | 2‑6 | 개선 스케일 + 블록 구조 |
I‑Quants | IQ2_XXS, IQ2_XS, IQ3_S, IQ3_M | 2‑4 | 테이블룩업 + 고정밀 |
실험적 | row-wise, non-linear, k-means | — | 연구 단계 |
Legacy Quant 나 K‑Quants 중 몇개 골라서 변환해 보았다.
quant size 가 2437.71MB 로 약 2GB 정도 줄었다.
지리적 특징 정보에 오답이 많이 발견되었다.
% ./bin/llama-bench -m ./models/EXAONE-3.5-2.4B-Instruct/EXAONE-3.5-2.4B-Instruct_<양자화 옵션>.gguf
model | size | params | backend | threads | pp512 t/s | tg128 t/s |
---|---|---|---|---|---|---|
exaone ?B Q4_0 | 1.32 GiB | 2.41 B | Metal,BLAS | 4 | 207.21 ± 0.06 | 33.23 ± 0.10 |
exaone ?B Q4_K - Medium | 1.39 GiB | 2.41 B | Metal,BLAS | 4 | 191.75 ± 0.85 | 30.26 ± 0.05 |
exaone ?B Q5_K - Medium | 1.61 GiB | 2.41 B | Metal,BLAS | 4 | 183.32 ± 0.78 | 26.84 ± 0.02 |
exaone ?B Q8_0 | 2.38 GiB | 2.41 B | Metal,BLAS | 4 | 206.59 ± 0.03 | 20.60 ± 0.02 |
exaone ?B F16 | 4.48 GiB | 2.41 B | Metal,BLAS | 4 | 214.79 ± 0.99 | 11.83 ± 0.14 |
모델 선택 시 tg128이 너무 낮으면 실사용 시 "버벅임"을 느낀다.
tg128 ≥ 15 tok/s 정도면 인터랙티브 대화가 꽤 부드럽고,
pp512 ≥ 100 tok/s이면 긴 지시문도 빠르게 소화한다.