대규모 언어 모델(LLM)의 양자화

KURTY·2025년 9월 19일
0

LLM

목록 보기
6/8

대규모 언어 모델(LLM)의 양자화

스케일링 시대의 효율성 확보

대규모 언어 모델(Large Language Model, LLM)의 시대는 인공지능 분야에 전례 없는 발전을 가져왔다. 스케일링 법칙(Scaling Laws)에 따르면, 모델의 매개변수 수, 학습 데이터셋의 크기, 그리고 투입되는 컴퓨팅 예산을 늘릴수록 모델의 성능은 향상되고 추론과 같은 새로운 능력이 발현된다. 이러한 법칙은 수십억, 수천억 개의 매개변수를 가진 거대 모델의 등장을 촉진하는 강력한 동기가 되었다.

그러나 이러한 스케일링은 심각한 하드웨어 병목 현상을 야기한다. 모델의 크기가 커질수록 학습과 추론에 필요한 계산 및 메모리 비용이 기하급수적으로 증가하여, 고사양 데이터 센터에서조차 막대한 비용이 발생하며 자원이 제한된 환경에서의 배포는 거의 불가능해진다. 이처럼 모델의 성능과 실제 배포 가능성 사이의 간극이 벌어지면서, 모델 압축 기술의 필요성이 절실해졌다.

이러한 문제에 대한 가장 중요하고 효과적인 해결책으로 양자화(Quantization)가 부상했다. 양자화는 모델의 매개변수(가중치)와 중간 계산 값(활성화)의 수치 정밀도를 낮추어 메모리 사용량과 계산 부하를 직접적으로 줄이는 기술이다. 이 기술을 통해 거대 모델을 소비자용 GPU, 엣지 디바이스, 심지어 모바일 기기에서도 실행할 수 있게 되어 강력한 AI 기술에 대한 접근성을 대중화하는 데 핵심적인 역할을 하고 있다.

LLM 양자화의 중요성은 현대 LLM을 지배하는 아키텍처 선택의 필연적인 결과로 이해할 수 있다.

오늘날의 LLM은 거의 예외 없이 트랜스포머(Transformer) 아키텍처를 기반으로 한다. 트랜스포머의 핵심은 셀프 어텐션(Self-Attention)과 피드포워드 신경망(Feed-Forward Network) 내에서 수행되는 방대한 행렬 곱셈 연산이다.

이러한 연산을 위한 모델의 매개변수, 즉 가중치는 일반적으로 높은 정밀도를 가진 32비트 부동소수점(FP32) 형식으로 저장된다. 수천억 개의 매개변수가 각각 4바이트 크기의 FP32 값으로 저장될 경우, 모델을 메모리에 불러오는 것만으로도 수백 기가바이트의 VRAM이 필요하게 된다.

따라서 트랜스포머 아키텍처의 성공과 확장성 자체가 양자화가 해결해야 할 메모리 및 계산 위기를 직접적으로 초래한 것이다. 이런 관점에서 양자화는 부수적인 최적화 기법이 아니라, 현대 LLM 패러다임에 필수적인 대응책이라고 할 수 있다.

신경망 양자화의 기본 원리

양자화의 고급 알고리즘과 실제 적용 사례를 탐구하기에 앞서, 그 기반이 되는 이론적, 수학적 원리를 이해하는 것이 중요하다.

수치 정밀도의 시계

딥러닝에서 사용되는 숫자 데이터 형식은 모델의 성능, 메모리 사용량, 연산 속도에 직접적인 영향을 미친다. 양자화는 이러한 데이터 형식 간의 변환 과정으로 이해할 수 있다.

  • 32비트 부동소수점 (FP32): 딥러닝 모델 학습의 표준 기준으로, 넓은 표현 범위와 높은 정밀도를 제공하여 안정적인 학습을 가능하게 한다. 하지만 각 숫자가 4바이트를 차지하여 메모리 요구량이 가장 크다.

  • 16비트 부동소수점 (FP16): FP32의 절반 크기(2바이트)로 메모리 사용량과 대역폭을 크게 줄여 추론 속도를 높인다. 그러나 표현 범위가 좁아져 언더플로우(underflow)나 오버플로우(overflow)가 발생할 위험이 있다.

  • Bfloat16 (BF16): FP32와 동일한 지수부 비트 수를 가지면서 가수부 비트 수를 줄인 16비트 형식이다. 이 덕분에 FP32와 유사한 넓은 표현 범위를 유지하면서도 메모리 사용량은 절반으로 줄일 수 있어, 학습 안정성과 효율성 사이의 균형을 맞추는 데 유리하다.

  • 8비트 정수 (INT8): 부동소수점이 아닌 정수를 사용하여 숫자를 표현하며, 크기가 1바이트에 불과하다. FP32 대비 메모리 사용량을 4배 줄일 수 있으며, 정수 연산을 지원하는 하드웨어(예: NVIDIA Tensor Core, Google TPU)에서 매우 빠른 연산 속도를 제공한다. 이는 추론 성능을 극대화하는 데 가장 효과적인 형식 중 하나이다.

  • 4비트 형식 (NF4, FP4 등): 모델 압축을 극한으로 밀어붙이는 기술로, 각 가중치를 단 4비트로 표현한다. 메모리 효율성을 극대화할 수 있지만, 정보 손실이 커서 정교한 양자화 알고리즘 없이는 심각한 성능 저하를 유발할 수 있다.

형식비트수지수부 비트가수부/분수부 비트표현 범위주요 특징 및 사용 사례
FP3232823매우 넓음모델 학습의 표준, 높은 정밀도 보장
FP1616510좁음추론 가속화, 메모리 절약, 오버플로우 위험 존재
BF161687FP32와 동일학습 안정성, 넓은 범위 유지, 낮은 정밀도
INT88N/AN/A-128 ~ 127추론 성능 극대화, 4배의 메모리 절약, 정수 연산 가속기 활용
NF44N/AN/A정규 분포에 최적화QLoRA 등에서 사용, 극한의 모델 압축

아핀 양자화의 수학: 스케일과 제로 포인트

가장 널리 사용되는 양자화 방식은 아핀(affine) 또는 선형(linear) 양자화이다. 이 방식은 고정밀 부동소수점 값의 범위를 저정밀 정수 데이터 형식의 범위로 선형 매핑하는 과정이다. 이 변환은 다음의 핵심 공식을 통해 이루어진다.

realvalue=(quantizedvaluezeropoint)×scalereal_value = (quantized_value - zero_point) × scale

  • 스케일 팩터 (Scale Factor, ss): 부동소수점 값의 전체 범위를 목표 정수 형식의 범위에 맞게 조정하는 축척 계수이다. 예를 들어, 텐서의 실제 값 범위가 [-10.5, 12.8]이고 이를 INT8([-127, 127])로 양자화한다면, 스케일 팩터는 이 두 범위를 연결하는 역할을 한다.

  • 제로 포인트 (Zero-Point, zz): 부동소수점 값 0.0에 정확히 매핑되는 정수 값을 의미한다. 이는 양자화된 공간에서도 0의 의미를 정확하게 보존하기 위해 필수적이며, 특히 패딩(padding)이나 ReLU 활성화 함수와 같이 0이 중요한 의미를 갖는 연산에서 수치적 안정성을 유지하는 데 기여한다.

이 두 매개변수를 사용하여 대칭적(symmetric) 양자화와 비대칭적(asymmetric) 양자화를 구분할 수 있다. 대칭적 양자화는 값의 분포가 0을 중심으로 대칭이라고 가정하고 제로 포인트를 0으로 고정한다. 반면, 비대칭적 양자화는 제로 포인트가 데이터 분포에 따라 자유롭게 이동할 수 있도록 하여, 0을 중심으로 치우친 데이터 분포를 더 정확하게 표현할 수 있다.

양자화 오차

양자화는 본질적으로 정보 손실을 수반하는 프로세스이다. 양자화 오차(Quantization Error)는 원본 고정밀 텐서와, 이를 양자화했다가 다시 복원(de-quantize)한 값 사이의 차이로 정의된다. 예를 들어, 부동소수점 값 3.14를 스케일 팩터 0.1을 사용해 정수로 양자화하면 31이 되고, 이를 다시 복원하면 3.1이 된다. 이때 발생하는 0.04가 양자화 오차이다.

이 오차는 주로 반올림 과정에서 발생하며, 모델의 최종 성능 저하를 유발하는 근본적인 원인이다. 따라서 모든 고급 양자화 알고리즘의 목표는 이 오차 자체를 최소화하거나, 모델의 최종 출력에 미치는 영향을 최소화하는 것이다.

양자화 전략의 분류

양자화는 적용 시점과 대상에 따라 여러 전략으로 나눌 수 있다.

정적 양자화 (Static Quantization) vs. 동적 양자화 (Dynamic Quantization)

정적 양자화는 소량의 보정(calibration) 데이터셋을 사용하여 스케일과 제로 포인트를 오프라인에서 미리 계산한다. 이 매개변수들이 고정되어 있기 때문에 추론 시점에는 추가적인 계산 오버헤드가 없어 더 빠른 성능을 보인다.

동적 양자화는 추론 중에 각 활성화 텐서에 대해 스케일과 제로 포인트를 실시간으로 계산한다. 보정 데이터가 필요 없어 구현이 간단하지만, 런타임에 계산 오버헤드가 발생한다.

가중치 전용 (Weight-Only) vs. 가중치 및 활성화 (Weight-and-Activation) 양자화

가중치 전용 양자화는 모델의 매개변수인 가중치만 양자화하고, 활성화 값은 고정밀 형식으로 유지한다. 주로 모델의 저장 크기를 줄이는 것이 목표인 메모리 제한적인 시나리오에서 사용된다.

가중치 및 활성화 양자화는 가중치와 중간 활성화 값을 모두 양자화한다. 이 방식은 정수 전용 연산을 가능하게 하여 가장 큰 속도 향상을 제공하지만, 상당한 성능 저하 없이 구현하기가 더 어렵다.

이러한 기본 원리들을 이해하는 과정에서, LLM 양자화의 가장 핵심적인 난제가 드러난다. 문제는 단순한 수치 변환 기술에 있는 것이 아니라, LLM이 처리하는 데이터의 특성에 있다. 아핀 양자화는 텐서의 최소값과 최대값을 기준으로 범위를 설정하는데 , LLM의 활성화 값은 매우 특이한 분포를 보인다. 연구에 따르면, 극소수의 "이상치(outlier)" 값이 나머지 대다수 값들보다 수십에서 수백 배 큰 크기를 갖는 현상이 관찰된다.

만약 텐서 단위로 양자화를 적용하면, 이 거대한 이상치 하나가 전체 양자화 범위를 결정하게 된다. 예를 들어, 한 값이 100이고 나머지 모든 값이 -1과 1 사이에 분포한다면, 스케일 팩터는 100을 기준으로 설정된다. 그 결과, -1과 1 사이의 정상적인 값들은 극히 좁은 정수 범위(예: 2~3개의 값)로 매핑되어 버린다. 이는 사실상 해당 값들의 정보를 삭제하는 것과 같으며, 엄청난 양자화 오차를 유발한다. 따라서 LLM 양자화의 핵심 과제는 양자화 기법 자체가 아니라, LLM 활성화 값의 극도로 불균일한 분포를 어떻게 처리할 것인가에 있다. 이 문제 인식은 SmoothQuant , AWQ , LLM.int8() 등 이상치 처리에 특화된 여러 고급 알고리즘들의 개발 동기가 되었다.

주요 방법론: 학습 후 양자화(PTQ)와 양자화 인식 학습(QAT)

양자화를 적용하는 두 가지 주요 철학은 적용 시점에 따라 나뉜다. 하나는 이미 학습된 모델을 변환하는 실용적인 접근법이고, 다른 하나는 학습 과정 자체에 양자화를 통합하여 정확도를 극대화하는 방식이다. 이 두 방법론의 장단점을 비교하면, 왜 대규모 LLM 환경에서는 특정 방식이 지배적인 패러다임이 되었는지 명확히 이해할 수 있다.

학습 후 양자화 (Post-Training Quantization, PTQ)

PTQ는 완전히 학습된 고정밀 모델을 추가적인 재학습 없이 저정밀 모델로 변환하는 기술이다. 이는 자원 효율적인 파이프라인으로, 대규모 모델 배포의 실질적인 표준으로 자리 잡았다.

PTQ의 일반적인 프로세스는 "보정(calibration)" 단계를 포함한다. 이 단계에서는 소량의 대표적인 데이터셋을 모델에 통과시켜 가중치와 활성화 값의 통계(예: 최소/최대 범위)를 수집한다. 수집된 통계를 바탕으로 각 텐서에 대한 최적의 스케일과 제로 포인트를 계산한다.

PTQ의 가장 큰 장점은 계산 비용이 매우 저렴하고 빠르다는 점이다. 원본의 방대한 학습 데이터셋에 접근할 필요가 없기 때문에, Hugging Face와 같은 모델 허브에서 사전 학습된 모델을 다운로드하여 사용하는 개발자들에게는 거의 유일한 선택지이다.

양자화 인식 학습 (Quantization-Aware Training, QAT)

QAT는 학습 또는 파인튜닝(fine-tuning) 과정 중에 저정밀 연산의 효과를 시뮬레이션하는 방법이다.

QAT는 모델의 계산 그래프에 "가짜(fake)" 양자화 연산을 삽입하여 작동한다. 순전파(forward pass) 중에는 가중치와 활성화 값이 양자화되지만, 역전파(backward pass) 시에는 안정적인 학습을 위해 고정밀 그래디언트가 사용된다. 이 과정을 통해 모델은 양자화로 인한 오차에 강건한 매개변수를 학습하게 된다.

QAT의 장점은 PTQ보다 높은 정확도를 달성할 수 있다는 점이다. 특히 4비트 이하의 매우 낮은 비트 폭으로 양자화할 때, 모델이 양자화 오차를 보상하도록 학습하기 때문에 그 효과가 두드러진다.

LLM 환경에서 PTQ가 지배적인 이유

두 방법론을 비교하면 LLM 분야의 현실적인 제약이 명확해진다. QAT는 거의 완전한 정밀도의 정확도를 제공할 수 있지만, 수백 에포크(epoch)에 달하는 광범위한 재학습을 요구하며 대규모의 대표 데이터셋이 필요해 계산 비용이 엄청나게 높다. 수천억 개의 매개변수를 가진 LLM의 경우, 이러한 재학습 비용은 종종 감당할 수 없는 수준이다.

따라서, PTQ는 수용 가능한 수준의 정확도 손실로 상당한 압축 효과를 얻을 수 있는 실용적이고 비용 효율적인 방법을 제공하기 때문에, 이러한 거대 모델을 배포하는 사실상의 표준이 되었다.

특징학습 후 양자화 (PTQ)양자화 인식 학습 (QAT)
핵심 원리학습 완료된 모델을 재학습 없이 변환학습 과정에 양자화 시뮬레이션을 통합
계산 비용낮음 (보정 단계만 필요)매우 높음 (전체 재학습 또는 미세 조정 필요)
데이터 요구사항소량의 보정 데이터셋대규모의 원본 학습 데이터셋
달성 가능 정확도약간의 성능 저하 발생 가능원본 모델과 거의 동등한 수준의 높은 정확도
적합한 사용 사례사전 학습된 대규모 LLM 배포, 빠른 프로토타이핑정확도가 극도로 중요한 경우, 엣지 디바이스용 소형 모델
주요 장점빠르고 비용 효율적이며 구현이 간단함최고의 정확도 보장, 저비트 양자화에 강함
주요 단점QAT보다 정확도가 낮을 수 있음막대한 계산 자원과 시간, 데이터 필요

이러한 PTQ와 QAT의 명확한 장단점은 새로운 하이브리드 접근법의 등장을 촉발했다. PTQ는 빠르지만 정확도가 아쉽고, QAT는 정확하지만 비용이 너무 많이 든다는 이분법적 상황에서 최적화의 여지가 발생한다. 연구자들은 QAT의 완전한 비용을 치르지 않고도 정확도 이점을 일부 얻을 수 있는 방법을 모색하기 시작했다.

그 결과 "PTQ 후 QAT 미세 조정"이라는 실용적인 절충안이 제시되었다. 이 접근법의 논리는 다음과 같다. 먼저, 사전 학습된 모델에 저비용의 PTQ를 적용하여 초기 양자화 모델을 만든다. 이 모델은 이미 "양자화된 공간"에 있지만 약간의 정확도 손실을 겪은 상태이다.

그 다음, 처음부터 값비싼 QAT를 수행하는 대신, 이미 양자화된 이 모델을 대상으로 몇 에포크(epoch) 정도의 짧은 QAT 방식 미세 조정을 수행한다. 이를 통해 모델은 초기 PTQ 단계에서 손실된 정확도를 회복하기 위해 가중치를 미세하게 조정할 수 있으며, 이는 전체 QAT를 수행하는 것보다 훨씬 적은 비용으로 가능하다. 이 하이브리드 방식은 비용과 성능 사이의 균형을 맞추는 제3의 길을 제시하며, 응용 AI 연구의 중요한 흐름을 보여준다.

고급 학습 후 양자화(PTQ) 알고리즘

LLM 양자화 분야는 단순한 정밀도 변환을 넘어, 성능 저하를 최소화하면서 4비트 또는 3비트까지 압축률을 높이는 정교한 알고리즘들로 발전해 왔다.

GPTQ: 근사 2차 최적화

GPTQ(Generative Pre-trained Transformer Quantizer)는 층별(layer-wise)로 양자화를 수행하는 원샷(one-shot) 기법으로, 각 층의 출력 재구성 오차를 최소화하는 것을 목표로 한다. 이 알고리즘은 1750억 개 매개변수 모델을 성능 저하 거의 없이 3~4비트로 성공적으로 양자화한 최초의 방법 중 하나로 큰 주목을 받았다.

GPTQ의 핵심 메커니즘은 가중치를 한 번에 하나씩 탐욕적(greedy)으로 처리하는 것이다. 하나의 가중치를 양자화할 때 발생하는 오차를 보상하기 위해, 아직 양자화되지 않은 나머지 가중치들을 업데이트한다. 이 업데이트 단계는 단순한 반올림 오차 보정을 넘어, 층 입력의 헤시안 행렬(Hessian matrix) 역행렬이라는 근사 2차 정보를 기반으로 한다. 이를 통해 오차를 더 최적에 가깝게 보정할 수 있다.

최근 연구에서는 GPTQ가 고전적인 격자(lattice) 알고리즘인 바바이의 최근접 평면 알고리즘(Babai's nearest plane algorithm)과 수학적으로 동일하다는 깊은 연관성이 밝혀졌다. 이 발견은 GPTQ의 오차 전파 단계에 대한 기하학적 해석을 제공하고, 공식적인 오차 상한을 증명함으로써 알고리즘에 견고한 이론적 기반을 마련해주었다.

AWQ: 활성화 인식 가중치 양자화

AWQ(Activation-aware Weight Quantization)는 모든 가중치가 모델 성능에 동일하게 중요하지 않다는 관찰에서 출발한다. 약 1%에 해당하는 소수의 가중치가 모델 성능에 특히 중요하며, 이들을 큰 양자화 오차로부터 보호하는 것이 핵심이다.

AWQ는 이러한 중요한 가중치를 가중치 값 자체를 보고 식별하는 대신, 해당 가중치에 곱해지는 활성화 채널의 크기를 분석하여 찾아낸다. 활성화 값의 크기가 큰 채널이 더 중요하다고 간주하는 것이다.

AWQ는 이렇게 식별된 중요 채널의 가중치 범위를 양자화 전에 축소하기 위해 채널별 스케일링 팩터를 적용한다. 이 과정은 최종 출력값을 변경하지 않는 수학적 등가 변환(equivalent transformation)으로, 중요한 가중치들이 양자화 과정에서 겪는 정보 손실을 최소화하여 보호하는 효과를 낳는다.

이상치 문제 완화: SmoothQuant의 역할

앞서 논의했듯이, 활성화 채널에 존재하는 이상치는 양자화를 매우 어렵게 만드는 주된 요인이다. SmoothQuant는 이 문제를 해결하기 위해, 양자화의 어려움을 활성화에서 가중치로 이전시키는 독창적인 등가 변환을 제안한다.

구체적으로, SmoothQuant는 활성화 값을 특정 팩터로 나누어 크기를 줄이는 동시에, 가중치 값에는 동일한 팩터를 곱하여 크기를 키운다. 행렬 곱셈의 결과는 변하지 않으므로 수학적으로는 동일한 연산이다.

일반적으로 가중치는 활성화보다 양자화하기가 더 쉽기 때문에, 이러한 재조정 과정은 전체적인 가중치-활성화 양자화 프로세스를 더 안정적이고 정확하게 만든다.

이러한 고급 알고리즘들을 분석하면, 양자화 오차를 최소화하려는 두 가지 근본적으로 다른 철학적 접근법이 드러난다. GPTQ의 작동 방식을 보면, 가중치를 양자화한 후 남은 가중치들을 조정하여 층의 최종 출력 오차(XQXW2\| XQ - XW \| ^2)를 최소화한다.

이는 출력 중심적이고 교정적인(corrective) 접근법이다. "양자화로 인해 발생한 오차를 어떻게 사후에 수정하여 최종 출력을 원본과 가장 가깝게 만들 것인가?"라는 질문에 답하는 방식이다.

반면, AWQ는 입력 활성화(X)를 분석하여 중요한 가중치 채널을 식별하고, 양자화 전에 가중치를 스케일링하여 양자화 과정 자체를 더 쉽게 만든다. 이는 입력 중심적이고 예방적인(preventative) 접근법이다. "입력 데이터(가중치)를 어떻게 조작하여 양자화 과정 자체의 손실을 줄일 것인가?"라는 질문에 답하는 방식이다.

이러한 철학적 차이는 두 알고리즘의 각기 다른 강점을 설명해 준다. 헤시안 기반 업데이트를 사용하는 GPTQ는 수학적으로 엄밀하며 층별 전역 최적해를 목표로 한다. 반면, 활성화 중요도에 대한 경험적 관찰에 기반한 AWQ는 휴리스틱에 가깝지만, 종종 더 빠르고 매우 효과적이다. 이 구분은 앞으로 등장할 새로운 양자화 알고리즘을 분류하고 이해하는 데 유용한 분석 프레임워크를 제공한다.

프레임워크, 라이브러리, 그리고 포맷

이론을 넘어 실제 개발 현장에서는 어떤 도구들이 양자화된 LLM의 광범위한 채택을 가능하게 했는지 살펴본다.

허깅페이스 생태계: bitsandbytes

bitsandbytes는 맞춤형 CUDA 함수를 감싼 경량 파이썬 래퍼(wrapper)로, 허깅페이스의 transformers 라이브러리와 완벽하게 통합되어 강력한 양자화 도구를 제공한다.

주요 기능은 다음과 같다.

  • LLM.init8(): 벡터 단위(vector-wise) 양자화를 사용하고, 성능 저하를 막기 위해 이상치를 FP16 형식으로 별도 처리하는 8비트 양자화 기법이다. 이 기능은 큰 성능 저하 없이 대규모 모델을 실행할 수 있게 한 획기적인 기술이었다.

  • 4비트 양자화 (QLoRA): 이 라이브러리는 NF4와 같은 4비트 형식을 사용한 양자화를 지원한다. 특히, 4비트로 양자화된 모델에 소수의 훈련 가능한 저계급 적응(Low-Rank Adaptation, LoRA) 가중치를 추가하여 미세 조정을 가능하게 하는 QLoRA 기법으로 널리 알려져 있다. 이 방법은 미세 조정에 필요한 메모리 요구량을 극적으로 낮춘다.

실제 구현 워크플로우는 매우 간단하다. BitsAndBytesConfig 객체를 생성하여 transformers의 from_pretrained 메서드에 전달하기만 하면 되므로, 단 몇 줄의 코드로 양자화를 적용할 수 있다.

로컬 추론의 오픈소스화: llama.cpp와 GGUF 포맷

llama.cpp는 LLM을 위한 고성능 C/C++ 추론 엔진으로, 원래 Llama 모델을 위해 개발되었으나 현재는 다양한 아키텍처를 지원한다. 이 프로젝트의 주된 목표는 AVX를 지원하는 소비자용 CPU부터 CUDA, Metal, Vulkan을 사용하는 GPU에 이르기까지 광범위한 하드웨어에서 최소한의 설정으로 효율적인 LLM 실행을 가능하게 하는 것이다. 이로 인해 로컬 AI 커뮤니티의 초석이 되었다.

GGUF(GGML Universal File) 포맷은 llama.cpp에서 사용하는 파일 형식으로, 이전 버전(GGML, GGJT)에 비해 크게 개선되었다. GGUF는 양자화된 가중치뿐만 아니라 모델 실행에 필요한 모든 메타데이터(아키텍처 유형, 컨텍스트 길이, 토크나이저 정보, 프롬프트 템플릿 등)를 포함하는 단일 파일이다. 이 덕분에 외부 설정 파일 없이도 모델을 공유하고 실행할 수 있어, 모델 배포가 훨씬 견고하고 사용자 친화적으로 변했다.

이 두 가지 주요 툴킷은 단순히 다른 도구가 아니라, 서로 다른 개발 철학을 반영하는 두 개의 경쟁적인 생태계를 형성한다. 허깅페이스와 bitsandbytes 생태계는 파이썬 중심적이며, 파이토치(PyTorch)와 깊게 통합되어 학습 및 미세 조정 과정에 중점을 둔다. 주로 GPU 가속 시스템에서 작업하는 연구자와 개발자를 대상으로 하며, 유연성과 광범위한 머신러닝 개발 수명주기와의 통합이 강점이다. 이는 연구 개발 세계에서 출발하여 배포 기능을 추가하는 "하향식(top-down)" 접근법으로 볼 수 있다.

반면, llama.cpp와 GGUF 생태계는 C++ 기반으로 성능에 집착하며, 특히 소비자용 CPU를 포함한 최대한 넓은 범위의 하드웨어에서 추론을 효율적으로 실행하는 것을 최우선 목표로 합니다. 이 생태계의 강점은 최종 사용자를 위한 배포와 접근성이다.

llama.cpp에게 양자화는 부가 기능이 아니라, 프로젝트의 핵심 사명을 가능하게 하는 기술 그 자체이다. GGUF 포맷은 다양한 양자화 방식(예: Q4_K_M, Q5_K_M)을 효율적으로 저장하도록 설계되었다. 이는 노트북에서 모델을 실행한다는 목표에서 출발하여 이를 달성하기 위한 고성능 추론 스택을 구축하는 "상향식(bottom-up)" 접근법이다. 이러한 철학적 차이를 이해하면, 실무자는 자신의 특정 목표(연구 및 미세 조정 vs. 광범위하고 효율적인 배포)에 맞는 올바른 도구를 선택하는 데 도움을 받을 수 있다.

양자화 LLM의 영향 및 성능 평가

양자화는 필연적으로 트레이드오프를 수반한다. 이 섹션에서는 양자화가 모델에 미치는 영향을 비판적으로 평가한다. 성능 측정 방식, 모델 크기와 정밀도 간의 중요한 관계, 그리고 양자화가 모델의 다양한 능력에 미치는 미묘한 영향들을 분석한다.

벤치마킹 방법론과 핵심 지표

양자화된 모델의 성능을 평가하는 표준적인 방법은 다음과 같다.

  • Perplexity (PPL): 언어 모델링에서 널리 사용되는 지표로, 모델이 주어진 텍스트 샘플을 얼마나 잘 예측하는지를 측정한다. PPL이 낮을수록 좋다. 양자화 후 모델 품질을 신속하게 가늠하는 대리 지표(proxy metric)로 자주 사용된다.

  • 다운스트림 태스크 벤치마크: 궁극적인 평가는 지식과 추론 능력을 측정하는 표준화된 벤치마크에서의 성능이다. MMLU(일반 지식), GSM8K(수학 응용 문제), MATH(고급 수학 문제)와 같은 핵심 벤치마크들이 모델의 실제 능력을 평가하는 데 사용된다.

새로운 스케일링 패러다임: 크기 대 정밀도

양자화 연구에서 가장 중요한 발견 중 하나는, 주어진 메모리 예산 내에서는 더 작은 고정밀 모델보다 더 큰 저정밀 모델이 종종 더 나은 성능을 보인다는 것이다.

예를 들어, 동일한 VRAM에 80억 매개변수의 8비트 모델과 160억 매개변수의 4비트 모델을 올릴 수 있다면, 후자가 더 우수한 성능을 보일 가능성이 높다. 연구에 따르면 더 많은 매개변수를 가진 4비트 양자화가 더 적은 매개변수를 가진 8비트 양자화보다 거의 항상 더 낫다는 결과가 보고되었다. 이는 양자화를 단순한 압축 기술이 아니라, 자원이 제한된 하드웨어에서 성능을 극대화하기 위한 전략적 선택으로 재정의한다.

성능 저하의 미묘한 측면

양자화로 인한 정확도 손실은 모든 태스크에 걸쳐 균일하게 나타나지 않는다. 공격적인 양자화는 특히 높은 정밀도를 요구하는 특정 능력에 불균형적으로 큰 해를 끼칠 수 있다.

  • 수학적 추론: 정밀한 수치 계산과 논리적 계획이 필요한 태스크는 특히 취약하다. 한 연구에서는 공격적으로 양자화된 Llama-3 모델이 MATH 벤치마크에서 최대 32.39%의 정확도 저하를 보였다고 보고했다.

  • 다국어 성능: 양자화의 부정적인 영향은 비영어권 언어에서 더 심각하게 나타날 수 있다. 이러한 효과는 자동화된 지표로는 과소평가되는 경향이 있으며, 인간 평가를 통해서만 명확하게 드러난다.

  • 지시 따르기 및 환각: 일부 연구에서는 일반 지식 관련 태스크는 양자화 후에도 성능이 잘 유지되는 반면, 지시 따르기(instruction-following)나 환각(hallucination) 탐지 능력은 더 저하될 수 있음을 시사한다.

새로운 지평과 보안 고려사항

양자화의 보안적 함의: 잠재적 공격 측면

양자화는 효율성을 높이는 동시에, 지금까지 충분히 연구되지 않은 새로운 보안 위험을 초래할 수 있다.

  • 위협 모델: 공격자는 고정밀 상태에서는 무해하거나 유용해 보이지만, 양자화된 후에만 악의적인 행동(예: 특정 브랜드 광고 삽입, 편향된 정보 생성)을 드러내는 LLM을 제작할 수 있다.

  • 공격 경로: 공격자는 이 고정밀 모델을 Hugging Face와 같은 공개 허브에 배포한다. 아무 의심 없는 사용자는 이 모델을 다운로드하여 자신의 컴퓨터에서 llama.cpp 등을 사용해 양자화를 수행한다. 이 과정에서 사용자는 자신도 모르게 악성 페이로드를 활성화하게 된다.

  • 시사점: 이 연구는 현재의 모델 평가 관행이 대부분 고정밀 모델만을 테스트하기 때문에 불충분하다는 점을 지적한다. 따라서 양자화 프로세스 전반에 걸쳐 더욱 엄격한 보안 평가가 필요함을 강력히 시사한다.

이러한 보안 취약점은 양자화가 모델의 신뢰 사슬(chain of trust)에 미치는 더 넓은 영향을 드러낸다. 전통적인 모델 공급망은 '연구소 학습 -> 사용자 다운로드 -> 사용자 사용'의 단순한 구조를 가진다. 여기서 신뢰는 모델 제작자인 연구소에 집중된다. 그러나 양자화는 이 과정에 '사용자 변환'이라는 중간 단계를 추가한다. 사용자가 자신의 기기에서 실행하는 최종 모델은 제작자가 배포한 원본과 동일하지 않다.

이 변환 단계는 모델의 출처 증명(provenance)을 단절시키고 새로운 추상화 계층을 만든다. 사용자는 원본 제작자를 신뢰할지라도, 자신이 수행한 양자화 과정이 모델의 행동에 어떤 영향을 미칠지 확신할 수 없다.

이는 모델 최적화 기술이 더욱 복잡해지고 최종 사용자에 의해 적용됨에 따라, 시스템의 최종 동작을 추론하기가 점점 더 어려워진다는 것을 의미한다. 이제 신뢰의 대상은 모델 제작자뿐만 아니라, 모델의 행동을 수동적인 래퍼가 아닌 능동적인 변환기로서 바꿀 수 있는 전체 툴체인(양자화 라이브러리, 추론 엔진 등)으로 확장되어야 한다.

초저비트 모델을 향한 도전

연구는 4비트를 넘어 3비트, 2비트, 심지어 이진(binary)/삼진(ternary) 수준까지 양자화의 한계를 밀어붙이고 있다.

일반적으로 4비트 미만에서는 상당한 성능 저하가 관찰되며, 이는 주요 연구 과제로 남아있다. 이러한 극한의 양자화 수준을 실용적으로 만들기 위해서는 SpQR과 같이 이상치 가중치를 효과적으로 격리하고 보호하는 기술이 필수적이다.

profile
진짜 공부하자

0개의 댓글