Model Compression 기법으로서 Quantization 방법론 PTQ와 QAT를 소개합니다. # 74 위클리 딥 다이브 | 2025년 1월 15일 에디터 배니 |
|
|
💡 이번주 뉴스레터에는 이런 내용을 담았어요!
- On-device AI에 반영되는 Model Compression 개념을 소개합니다.
- Model Compression 기법 중 PTQ, QAT Quantization 방법론을 정리했습니다.
- SpinQuant와 QLoRA에 반영된 Quantization 방법론의 차이를 비교합니다.
|
|
|
📱 어떻게 AI 모델을 핸드폰에 올릴 수 있을까? |
|
|
안녕하세요, 에디터 배니입니다.
오는 22일, 삼성전자의 갤럭시 S25 언팩 행사가 예정되어 있습니다. 지난해 1월, 삼성전자는 세계 최초로 On-device AI를 적용한 스마트폰 S24를 공개했죠. 이번 갤럭시 S25에도 더욱 강화된 AI 기능이 포함될 것으로 알려져 기대가 큽니다. 삼성전자가 On-device AI의 공을 쏘아올린 뒤로 각종 디바이스에 AI 기능을 접목하려는 시도가 이어지고 있습니다. Microsoft에서는 Copilot 기능이 내장된 랩탑을 개발하고, Apple에서도 Apple Intelligence를 대대적으로 발표했습니다. 이에 발 맞춰 학계에서도 모바일 환경에서의 AI 모델 개발을 위해 다양한 연구를 진행하고 있습니다
이러한 기능을 디바이스 내에서 자체적으로 구현하기 위해서는 경량화된 모델이 필요합니다. Meta, Google 등에서는 다양한 기법으로 모델의 크기를 줄이려는 시도를 하고 있습니다. 대표적으로 Meta는 지난해 11월 모바일 디바이스에 AI 모델을 적용하기 위해 Llama 3.2를 경량화한 1B, 3B 모델을 공개했는데요. 이 모델은 Llama 3.1에 Pruning과 Distillation 기법을 적용하여 학습한 것입니다. |
|
|
그러면 이런 모델을 그대로 디바이스에 올려 실행시킬 수 있을까요? 아쉽게도 쉽지 않을 것입니다. Meta가 공개한 Llama 3.2 모델을 HuggingFace에서 누구나 찾아볼 수 있는데요. Llama-3.2-3B 모델의 크기가 6.4GB, Llama-3.2-1B는 2.5GB입니다. 상대적으로 가볍다고 얘기하지만 실제 디바이스에 올리기는 다소 부담스러운 크기입니다. 결국 이러한 모델도 디바이스에 올리기 위해서는 압축이 필요합니다. |
|
|
Meta도 이를 알고 있기에 경량화한 모델을 한 번 더 압축하여 Quantization 모델을 함께 공개했습니다. 이렇게 압축한 모델은 3B 기준 4GB와 1B 기준 1.6GB 정도로 기존 대비 60% 정도의 크기로 줄어들었습니다. 여전히 3B 모델의 용량은 크긴 하지만, 1B 모델은 일반적으로 다룰 수 있는 크기입니다.
그런데 말입니다. 사진을 자세히 살펴보면 모델명 뒤에 SpinQuant와 QLoRA라고 쓰여 있습니다. Quantization 모델의 종류를 두 가지로 구분해 공개한 것인데요. 두 개의 방법론에는 어떤 차이가 있을까요? 이번 뉴스레터에서 다룰 주제는 바로 Model Compression 기법 중 Quantization 방법론입니다. |
|
|
Model Compression은 리소스가 제한된 커다란 모델을 디바이스에 제한된 사양에 맞춰 컴팩트 버전으로 변환하는 과정입니다. |
|
|
위와 같이 여러 압축 기법이 있는데 이중 Quantization 기법에 주목해 보겠습니다. Quantization에 대한 기초적인 개념은 이전 뉴스레터( 🔗 링크)에서 다룬 적이 있습니다. 여기서 간단히 핵심만 짚어보자면 모델의 크기를 줄이기 위해 컴퓨터가 표현하는 숫자의 정밀도를 낮추는 과정이라고 할 수 있습니다. 더 구체적으로는 32 비트로 학습된 모델을 16, 8, 4, 3 등의 비트로 낮추면서 성능을 유지하는 것이 Quantization 학습의 목표입니다. 32비트로 표현하던 숫자를 16비트로 낮추게 되면 모델의 크기가 절반으로 줄어들겠죠. 그러나 그만큼 표현 범위가 줄어들기 때문에 가중치를 적당히 조정하는 것이 중요합니다. |
|
|
PTQ는 Full-Precision(FP32) LLM을 재훈련 과정 없이 메모리와 연산 비용을 절약하며 낮은 정밀도로 변환하는 과정입니다. 이런 방법이 가능한 이유는 모든 가중치가 동일한 중요성을 갖는 것이 아니기 때문입니다. 이는 Quantization 방법뿐만 아니라 Model Compression 방법론의 중요한 전제입니다.
PTQ 방법론은 Quantization 과정에서 재훈련을 하지 않기 때문에 성능을 보장하기 어렵습니다. 때문에 기존 가중치 값의 특성에 반영된 정보를 최대한 유지하는 것이 중요한데요. 때문에 양자화할 스케일에 맞게 조정하는 캘리브레이션(Calibration) 과정에 통계적 기법을 활용해야 합니다.
보통 ‘모델’ 경량화라고 하면 모델이 가진 가중치의 크기를 줄이는 것을 떠올리기 쉽습니다. 가중치의 분포를 살펴볼 때 이상치의 해당하는 값들은 주로 모델에 큰 영향을 끼친다고 알려져 있습니다. 양자화하는 과정에서 중요도가 높은 값들은 정밀도를 높게 유지하거나 최대한 그 특성을 잃지 않도록 하는 것이 중요합니다.
가중치의 분포가 고르지 않고 이상치가 중요한 역할을 하는 것처럼 레이어를 통과한 활성화 값(Activation)에도 분포가 존재합니다. 그리고 이 역시 중요한 정보를 담고 있으며, 직접적으로 양자화할 경우 모델 성능이 급격하게 떨어질 수 있습니다. 게다가 이 값은 모델의 가중치보다도 더 민감한 정보입니다. 때문에 활성화 값에 더 정밀한 표현을 유지하는 경우가 많습니다. |
|
|
🤔 양자화된 모델 뒤에 붙어 있는 숫자의 의미가 궁금해요! |
|
|
양자화된 모델을 보면 뒤에 w8a16과 같은 암호 같은 문자가 붙어 있는 것을 볼 수 있습니다. 이것이 어떤 비트로 양자화했는지 나타내는 정보인데요. 가중치(Weight)는 8비트로, 활성화 값(Activation)은 16비트로 학습되었다는 의미입니다. |
|
|
SpinQuant는 앞서 언급한 PTQ 기법의 일종으로, 가중치와 활성화 값의 분포를 회전 행렬(Rotation Matrix)을 통해 변환하여 양자화 오차를 줄이는 방법을 사용합니다. 이 과정에서 회전 행렬을 곱해 값의 분포를 더욱 균일하게 만들어, 모델의 출력 정확성을 유지하며 양자화를 용이하게 만듭니다. 최적의 회전 행렬을 찾기 위해 특수한 형태의 공간에서 직교성을 유지하면서 회전 행렬을 조금씩 조정하는 방식을 사용하여 학습합니다. 특히, SpinQuant는 가중치와 활성화 값의 이상치를 줄여 양자화 시 발생할 수 있는 큰 손실을 방지합니다. 이를 통해 SpinQuant는 모델 구조 변경 없이도 양자화된 모델의 성능 저하를 효과적으로 완화합니다. |
|
|
양자화 과정에서 모델의 성능은 악화되게 마련입니다. 이 과정에서 발생하는 차이를 Quantization Error라고 하는데요. 이 차이를 위해 양자화된 모델을 재훈련하여 성능을 유지하는 과정을 QAT라고 합니다. 재훈련이라니, 비용이 많이 들지 않을까요? 맞습니다. 아무리 양자화되어 모델이 가벼워졌다고 해도 LLM 규모의 파라미터를 재훈련하는 건 쉬운 일이 아닙니다.
훈련 비용을 절약하기 위해서는 다른 전략이 필요합니다. 가장 실용적인 방법은 PEFT 전략을 취하는 것입니다. 앞서 설명했던 QLoRA가 대표적인 QAT 방법으로 학습한 모델이라고 볼 수 있습니다. QLoRA 연구는 다양한 컨트리뷰션을 갖고 있지만 여기서는 QAT 개념을 중심으로 QLoRA의 구조만 살펴보겠습니다. |
|
|
그림을 이해하기 위해 먼저 그림 속 용어를 짚어봅시다. W_{FP} 는 부동소수점(Floating Point)으로 표현된 가중치(Weight)를 의미하며, 양자화되기 전 원본 파라미터입니다. W_q는 PTQ 방식으로 양자화된 모델입니다. A와 B는 LoRA 모듈을 구성하는 두 행렬이라고 보면 됩니다. 일반적으로 A는 정규화된 파라미터, B는 0으로 초기화된 파라미터로 구성되어 있습니다.
QLoRA의 학습 과정을 크게 이해해보면 4-bit NormalFloat(NF4)와 Double Quantization을 W_{FP}에 적용한 뒤 FP16으로 표현된 A, B 행렬을 업데이트하는 것입니다. (그림 상에서 불꽃으로 표현된 부분은 파인튜닝되는 행렬을, G_A, G_B 는 업데이트 되는 Gradient가 전달되어 업데이트 되는 파라미터를 의미합니다.) 이렇듯 모델을 양자화하면서 모델의 크기는 줄이고, 동시에 표현력을 갖춘 적은 수의 파라미터만을 재학습하면서 성능을 유지한다는 것이 QAT 방식의 핵심입니다.
QLoRA뿐만 아니라 다양한 QAT 전략이 있습니다. QLoRA가 갖는 한계 중 하나는 LoRA 모듈 W_q 의 정밀도(Precision)가 다르다는 것입니다. 레이어나 모듈마다 다른 정밀도를 사용해 연산하는 방식을 Mixed-precision(혼합 정밀도) 표현이라고 합니다. 표현을 정렬(Alignment)하기 위해서는 보통 추가적인 연산을 필요로 하고, 양자화된 값을 복원(Dequantization)하는 과정에서 정보 손실이 발생할 수 있습니다. 때문에 이러한 차이를 줄이고 빠른 추론 속도를 보장하기 위해 최근 연구에서는 두 표현의 크기를 일치시켜 학습하는 방법론이 제안하기도 합니다. |
|
|
이렇게 Quantization에 대해 알아봤습니다. 복습해보자면 SpinQuant는 PTQ, QLoRA는 QAT에 해당합니다. 그리고 재훈련한 QLoRA의 성능이 상대적으로 좋을 것입니다. 그리고 그것은 실제 결과로도 나타나는데요. 아래 이미지에서 볼 수 있듯이, 다른 Quantization 모델이 모두 BF16으로 학습한 모델에 비해 토큰 생성 속도가 2배 넘게 빠르지만 방식에 따라 정확도에서 차이가 납니다. QLoRA 방식을 활용했을 때는 재훈련을 한 만큼 원래 모델의 성능에 거의 필적한 수준을 보이지만 PTQ 방식은 80% 정도를 유지하고 있는 것으로 보입니다. 한편 SpinQuant는 그 사이에 위치하고 있는 것을 알 수 있습니다. |
|
|
물론, 감당 가능한 수준으로 모델만 가벼워진다고 해서 아무 기기에서나 사용할 수 있는 것은 아닙니다. 당장 위에서 소개한 모델은 여러분 개인 PC에서 활용한 수준은 되더라도 모바일 디바이스에서는 활용하기 쉽지 않습니다. 모델을 경량화하는 것을 넘어서 연산 방법을 하드웨어 환경에 최적화하는 과정 역시 필요한데요. 이를 위한 다양한 기법 역시 다양하게 연구되고 있습니다. 이렇게 이런 복잡한 과정을 거쳐 AI 모델을 우리 손 안에 들어온다니. 단순한 기술처럼 보여도 그 속에는 정말 많은 연구들이 자리하고 있었다는 것을 새삼 느낍니다. |
|
|
SNS를 팔로우하면 최신 소식을 가장 빠르게 확인하실 수 있습니다 😆 |
|
|
deep daiv.
manager@deepdaiv.com
|
|
|
|
|