13.5 고급 양자화: TurboQuant 및 극한 압축
모델이 수조 개의 파라미터 규모로 확장됨에 따라 표준 8비트 또는 4비트 양자화 방법(예: PTQ, GPTQ, AWQ)은 이론적 바닥에 부딪히기 시작합니다. 3비트, 2비트 또는 심지어 1비트까지 추가적인 압축을 방해하는 근본적인 병목 현상은 활성화 및 가중치 분포에 존재하는 거대한 아웃라이어 (Outliers) 입니다.
이 섹션에서는 모델 압축의 최첨단 전선을 탐구합니다. 회전 기반 양자화(TurboQuant)를 통해 이러한 아웃라이어를 처리하고 전통적인 행렬 곱셈(MatMul)을 완전히 포기하는 것(1비트 LLM)입니다.
1. 아웃라이어 문제 (The Outlier Problem)
대규모 언어 모델에서는 극히 일부의 특징(종종 0.1% 미만)이 극단적으로 큰 크기를 보입니다. 이러한 “아웃라이어”는 모델의 성능에 매우 중요합니다. 만약 이들을 잘라내면(clip) 모델의 정확도가 붕괴됩니다. 반대로 이들을 포함하도록 양자화 그리드를 확장하면 나머지 99.9%의 정상적인 가중치에 대한 해상도가 너무 거칠어집니다.
AWQ(Activation-aware Weight Quantization)와 같은 방법은 이러한 아웃라이어를 스케일링하여 보호하지만, 이는 여전히 압축을 4비트 내외로 제한합니다. 4비트 미만으로 내려가려면 패러다임의 전환이 필요합니다.
2. 극한 압축: BitNet b1.58 (1비트 시대)
TurboQuant가 표준 산술 연산의 비트 폭을 최적화하는 반면, 전통적인 산술 연산을 완전히 없애버리면 어떨까요?
Microsoft Research에서 도입한 BitNet b1.58 [2] 은 극한 압축의 최전선을 대표합니다. 1.58비트 LLM에서 네트워크의 모든 가중치는 정확히 세 가지 값인 1 로 제한됩니다.
행렬 곱셈의 종말 (The End of MatMul)
표준 신경망에서 핵심 연산은 값비싼 부동 소수점 곱셈-누산(MAC) 연산을 요구하는 행렬 곱셈(MatMul)입니다. BitNet b1.58에서는 가중치가 -1, 0 또는 1뿐이므로 곱셈 단계가 완전히 생략됩니다. 전체 순방향 패스는 오직 정수 덧셈과 뺄셈 으로만 구성됩니다.
이러한 이론적 전환은 에너지 소비와 메모리 대역폭을 한 자릿수 이상 줄여줄 것으로 기대되며, 거대한 파운데이션 모델을 엣지 디바이스와 스마트폰에서 직접 구동할 수 있는 길을 열어줍니다.
PyTorch 시뮬레이션: 회전의 힘 (The Power of Rotation)
직교 회전(단순한 하다마드 행렬 같은)이 아웃라이어를 어떻게 분산시켜 벡터를 양자화하기 쉽게 만드는지 시뮬레이션해 보겠습니다.
import torch
import math
# 1. 거대한 아웃라이어가 포함된 벡터 생성
x = torch.tensor([0.1, 0.2, 100.0, -0.1])
print(f"Original vector: {x}")
print(f"Max absolute value (Outlier): {x.abs().max().item():.2f}")
# 2. 단순한 4x4 직교 회전 행렬 정의 (하다마드 스타일)
# 실제 TurboQuant는 차원 D에 대해 효율적인 고속 월시-하다마드 변환(FWHT)을 사용합니다.
H = torch.tensor([
[1, 1, 1, 1],
[1, -1, 1, -1],
[1, 1, -1, -1],
[1, -1, -1, 1]
], dtype=torch.float32) / math.sqrt(4)
# 3. 벡터 회전
x_rotated = torch.matmul(H, x)
# 4. 부드러워진 분포 관찰
print(f"\nRotated vector: {x_rotated}")
print(f"Max absolute value after rotation: {x_rotated.abs().max().item():.2f}")
# 100.0 이라는 아웃라이어의 에너지가 이제 모든 차원에 골고루 분산되었습니다(약 50.0).
# 회전된 벡터는 촘촘하고 균일한 양자화 그리드에 완벽하게 들어맞습니다!
다음 단계
이것으로 Chapter 13: 모델 압축 및 양자화 를 마칩니다. 우리는 기초적인 사후 학습 양자화부터 회전 도메인 평활화 및 1비트 아키텍처의 수학적 우아함에 이르기까지의 여정을 함께 했습니다. 모델이 더 작고 빨라짐에 따라, 방대한 양의 외부 지식을 처리할 준비가 되었습니다. 이어지는 Chapter 14: 검색 증강 생성 (RAG) 에서는 이러한 효율적인 모델들을 외부 데이터베이스에 연결하여, 정적인 텍스트 생성기에서 실시간 추론 엔진으로 탈바꿈시키는 방법을 알아보겠습니다.
Quizzes
Quiz 1: 표준 양자화 방법이 3비트 이하에서 높은 정확도를 달성하지 못하게 막는 근본적인 병목 현상은 무엇인가요?
가중치 및 활성화 분포에 존재하는 극단적인 아웃라이어(Outliers)입니다. 양자화 그리드를 아웃라이어까지 포함하도록 확장하면 대부분의 정상적인 값에 대한 정밀도를 잃게 됩니다. 반대로 아웃라이어를 잘라내면 모델은 중요한 정보를 잃고 성능이 붕괴됩니다.
Quiz 2: TurboQuant는 단순히 아웃라이어를 스케일링하거나 잘라내지 않고 어떻게 아웃라이어 문제를 해결하나요?
TurboQuant는 양자화 전에 벡터 공간에 직교 회전(예: 고속 월시-하다마드 변환)을 적용합니다. 이 회전은 내적(기하학적 관계)을 보존하지만 아웃라이어의 에너지를 모든 차원에 분산시켜, 균일한 저비트 양자화에 매우 적합한 가우시안에 가까운 분포를 만들어냅니다.
Quiz 3: BitNet b1.58이 신경망 하드웨어 실행에서 패러다임의 전환으로 간주되는 이유는 무엇인가요?
모든 가중치를 1로 제한함으로써 부동 소수점 곱셈의 필요성을 완전히 없애기 때문입니다. 네트워크의 핵심 연산이 행렬 곱셈(곱셈-누산, MAC)에서 순수한 정수 덧셈과 뺄셈으로 전환되어, 에너지 소비와 칩 면적 요구량을 획기적으로 줄여줍니다.
Quiz 4: 아웃라이어 보호를 위해 최적의 스케일링 팩터를 결정하는 AWQ(Activation-aware Weight Quantization)의 왜곡 손실(Distortion Loss) 최적화 문제를 수학적으로 정식화하십시오.
AWQ는 원시 출력과 양자화된 출력 사이의 오차를 최소화하는 대각 스케일링 행렬 를 찾는 최적화 문제로 검색을 수식화합니다: . 각 입력 채널 에 대한 스케일링 팩터 는 일반적으로 로 정의되며, 여기서 는 채널 의 평균 활성화 크기(Magnitude)입니다. 알고리즘은 왜곡 손실을 최소화하는 최적의 파라미터 를 탐색하며, 활성화 아웃라이어의 크기와 가중치 양자화 바운드 격자망 정밀도 간의 직접적인 수학적 관계를 도출해냅니다.
References
- Zandieh, A., et al. (2025). TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate. arXiv:2504.19874.
- Ma, S., et al. (2024). The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits. arXiv:2402.17764.