GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
GPTQ: 생성적 사전학습 트랜스포머의 정확한 사후 학습 양자화
Elias Frantar, Saleh Ashkboos, Torsten Hoefler, Dan Alistarh (2022)
대규모 생성 사전학습 모델(GPT)을 재학습 없이 한 번에(one-shot) 3-4비트로 양자화하는 GPTQ를 제안하여, 175B 파라미터 모델을 단일 GPU에서 실행할 수 있게 했다. 양자화 과정은 수 시간 내에 완료되며 정확도 손실이 미미하다.
배경
GPT-3(175B), OPT-175B, BLOOM-176B 등 초대규모 언어 모델은 뛰어난 성능을 보이지만, 추론 시 수백 GB의 메모리가 필요하여 여러 대의 고가 GPU가 요구되었다. 가중치 양자화는 모델 크기를 줄이는 효과적 방법이지만, 기존 양자화 기법들(AdaRound, BRECQ 등)은 수십억 파라미터 규모에서 비실용적이거나 정확도 손실이 컸다. 특히 사후 학습 양자화(post-training quantization, PTQ)는 재학습이 필요 없어 실용적이지만, 대규모 생성 모델에 적용하기 위한 효율적이고 정확한 방법이 부재했다.
핵심 아이디어
GPTQ는 최적 뇌 양자화(Optimal Brain Quantization, OBQ) 프레임워크를 대규모 모델에 확장하되, 핵심적인 계산 효율성 개선을 도입한다. OBQ는 가중치를 하나씩 양자화하면서 나머지 가중치를 갱신하여 양자화 오차를 보상하지만, 이 순차적 처리가 대규모 모델에서는 비실용적이다. GPTQ의 핵심 혁신은 세 가지이다: (1) 가중치 양자화 순서를 임의(arbitrary)로 고정하여도 성능 저하가 미미하다는 발견(lazy batch updates), (2) 같은 열(column)의 모든 행을 동시에 양자화하여 행렬 연산으로 병렬화, (3) Cholesky 분해를 활용한 수치적으로 안정적인 역 헤시안 갱신. 이를 통해 OBQ 대비 수백 배 빠른 양자화를 달성한다.
방법론
각 레이어의 가중치 행렬을 독립적으로 양자화한다. 소량의 보정(calibration) 데이터(보통 128개 샘플)를 사용하여 각 레이어의 입력 활성화에 대한 헤시안 행렬 H = 2X^TX를 계산한다. 가중치 열을 128개 단위 블록으로 나누어, 블록 내에서는 순차적으로 각 열을 양자화하고 블록 내 나머지 열의 가중치를 갱신(lazy batch updates)한 뒤, 블록이 끝나면 나머지 전체 열에 대해 일괄 갱신을 수행한다. 이 과정을 Cholesky 분해된 역 헤시안을 사용하여 수치적으로 안정화한다. 그룹 양자화(group quantization)를 적용하여 연속된 가중치 그룹별로 별도의 양자화 파라미터를 사용할 수 있다.
주요 결과
GPTQ는 OPT-175B와 BLOOM-176B를 3비트로 양자화했을 때 perplexity 증가가 0.5 미만이었다. OPT-175B를 3비트로 양자화하면 약 63GB로 단일 A100 80GB GPU에 적재 가능해졌다. 양자화 시간은 OPT-175B 기준 약 4 GPU-시간으로, 기존 OBQ 대비 수백 배 빠르다. 4비트 양자화에서는 거의 무손실(lossless)에 가까운 정확도를 유지했으며, 제로샷 태스크(LAMBADA, ARC, PIQA 등)에서도 원본 모델과 유사한 성능을 보였다.
임팩트
GPTQ는 대규모 LLM 양자화의 사실상 표준으로 자리잡아, 오픈소스 LLM 생태계의 접근성을 크게 높였다. AutoGPTQ 라이브러리를 통해 HuggingFace에 통합되어 수천 개의 양자화 모델이 공유되고 있으며, TheBloke 등 커뮤니티 기여자들이 주요 모델의 GPTQ 양자화 버전을 지속적으로 제공하고 있다. 이후 AWQ, SqueezeLLM, QuIP 등 후속 양자화 연구에 직접적 영감을 제공했으며, 소비자 하드웨어에서 LLM 실행이라는 새로운 사용 사례를 개척했다.