목차
이번에는 양자화(Quantization) 기술에 대해 정리해 보겠습니다. 오픈 소스로 공개되는 인공지능 언어 모델이 점점 더 많이 등장하고 있지만, 이러한 모델들은 상당히 고사양일 수록 그 모델 사이즈도 상당히 거대한 경우가 많습니다. 이러한 거대 사이즈를 어느정도 줄일 수 있는 방법이 양자화 기술로, 오늘은 양자화에 대해 알아봅니다.

양자화로 LLM 모델의 경량화 방법
LLM(대형 언어 모델)은 더 정교한 문장 해석과 맥락 이해, 자연스러운 대화 생성을 위해 많은 수의 매개변수를 필요로 합니다. 모델이 클수록 더 복잡한 패턴을 학습하고 정확한 예측을 수행할 수 있기 때문에 성능 향상을 위해 규모가 커질 수밖에 없는 거죠. 그래서 사람들에게 인기 있는, 많이 사용되는 인공지능 모델은 수십억 개 이상의 매개변수(Parameter)를 가지고 있습니다.
이처럼 큰 모델은 개인이 일반 PC에서는 실행한다는 것을 생각조차 할 수 없죠. 개인이 그런 고사양 시스템을 갖춘다는 것은 쉽지 않습니다. 이러한 환경은 인공지능 기술의 대중화를 막는 큰 벽 중 하나가 될 것입니다. 하지만, 그럼에도 불구하고 이 문제를 어느 정도 해결할 수 있는 아주 얄팍한 방법 중 하나는 Quantization이 아닐까 생각합니다.
양자화, 어떻게 작동하지?
양자화는 한마디로 말하면, 원천 모델의 메모리와 연산을 줄이기 위해 정밀도를 낮추는 기술이라 할 수 있죠. LLM은 보통 32비트(float32) 또는 16비트 (float16) 부동소수점 숫자를 사용하지만, 이를 8비트(int8)나 4비트 정수로 바꾸면 크기가 대략 1/4 이하로 줄일 수 있죠. 예를 들어, 3.141592를 3.1이나 3으로 근사하듯, 스케일링 방법을 통해 숫자 범위를 좁히고 가장 가까운 값으로 대체할 수 있습니다.
아래와 같이 비트 수에 따른 모델 크기, 정확도, 연산 속도를 정리한 표(예시)를 정해 봤어요.
비트 수 | 모델 크기 (Mistral-7B 기준) | 정확도 손실 | 연산 속도 |
32비트 | 13~15GB | 없음 | 기준 |
8비트 | ~7GB | ~1% | 2배 빠름 |
4비트 | ~4GB | 12% | 3배 빠름 |
모델을 양자화하면 얻을 있는 장점은 다음과 같아요.
- 모델 크기 감소: 저장 용량이 줄어들어 저사양 기기에서도 실행 가능
- 속도 향상: 연산량이 줄어들어 응답 시간이 빨라짐
- 배포 효율성 증가: 모바일 등 다양한 디바이스 환경에서도 사용 가능
예를 들어, 8Gb 모델을 4비트로 양자화해서 약 1Gb 수준까지 용량을 줄일 수 있다면, 이 정도 용량이면 스마트폰 앱으로도 만들 수 있는 크기가 되는 거죠. 또, 이런 용량이면 인터넷이 없는 환경에서도 실행할 수 있게 되는 겁니다.
다양한 양자화 방식
- Post-Training Quantization (PTQ): 학습이 끝난 모델에 바로 적용하는 방식으로 구현이 간편하지만, 성능 저하가 클 수 있습니다.
- Quantization Aware Training (QAT): 학습 과정부터 Quantization을 고려하여 정확도를 높일 수 있지만, 학습 시간이 길고 복잡합니다.
- Static Quantization: 사전 분석된 고정 값을 기준으로 Quantization을 적용하며, 일반적으로 더 빠르지만 적용 조건이 까다롭습니다.
- Dynamic Quantization: 실행 중 데이터를 기준으로 Quantization을 적용하며, 다양한 환경에 유연하게 대응할 수 있으나 예측 성능은 낮을 수 있습니다.
- 4bit/8bit/16bit 양자화: 비트 수가 적을수록 모델 크기는 작아지지만, 정확도 손실 가능성도 커집니다.
Quantization이 성능에 미치는 영향
앞서 언급한 바 있지만, Quantization은 성능의 손실을 감수해야 합니다. LLM 모델을 int8로 Quantization하면 성능이 뚝 떨어질 수 있다는 거예요. 특히 민감한 작업일수록 성능 저하는 두드러집니다.
그러면 어떻게 해야 할까요? 이때 적용할 수 있는 방법이 양자화 인지 학습(Quantization Aware Training)입니다. 이 방법은 한마디로 원천 모델을 훈련할 때부터 나중에 Quantization될 것을 미리 알고 훈련하여 모델을 만드는 방법이에요. 즉, 원천 모델이 양자화를 미리 준비해 두는 방식이죠. 이렇게 LLM 모델을 생성하면 이후 양자화를 거치더라도 성능이 떨어지는 문제를 회피할 수 있습니다.
그러나, 문제는 우리가 잘 알고 있는 Llama나 Mistral은 물론이고, GPT 모델도 QAT 기반으로 생성된 모델이 아니라는 게 문제라면 문제입니다.
Mistral, LLaMA 계열 모델에 적용된 사례
- Mistral 계열: Mistral-7B 및 Mixtral-8x7B
Mistral은 프랑스의 스타트업 Mistral AI에서 개발한 오픈소스 언어 모델이에요. 특히, Apache 2.0 라이선스를 적용하고 있어서, 누구든 자유롭게 사용할 수 있는 장점이 있습니다.
이 모델은 GPTO, AWQ, GGUF 포맷 등을 통해 4비트 양자화가 가능하며, 16Gb RAM 환경에서도 실행 가능한 수준으로 경량화할 수 있다고 합니다.
Ollama 플랫폼을 통해서도 쉽게 설치하고 대화할 수 있는 모델입니다. 실제로 7b 모델을 사용하면 한국어도 어느 정도 이해하고 있음을 알 수 있는데, Llama 3.2 1b 모델과 비교할 수 없을 만큼 더 훌륭한 모델입니다.
Mixtral-8x7B는 MoE(Mixture of Experts) 기반 모델로, Mistral 확장형입니다. 총 8개의 모듈 중 2개만 활성화되며, 추론 비용을 낮추면서도 성능은 GPT-3.5 이상 수준이라고 합니다. 최근 4비트 GGUF 버전으로 Quantization되었습니다.
- LLaMA 3 시리즈
2024년 Meta에서 Llama 3 시리즈를 공개했습니다. 물론 최근(5월 5일 기준) Llama 4가 공개됐습니다.
이 모델은 GPTO, AWQ, GGUF 포맷을 모두 지원하며, Hugging Face Transformers뿐만 아니라 llama.cpp와 KoboldCpp 등 다양한 추론 엔진에서 4비트 모델로 사용이 가능합니다.
최근까지도, Hugging Face, TheBloke 등 오픈소스 커뮤니티에서는 Mistral과 Llama 모델의 Quantization 버전을 GGUF 등의 포맷 형태로 활발히 공유되고 있습니다. 이러한 양자화 모델들은 RTX4060, Apple Silicon (M1.M2), AMD GPU 등 다양한 환경에서 최적화된 상태로 제공되며, 실시간 챗봇 등 AI Agent 등으로 적용되고 있습니다.
- 양자화로 LLM 모델의 경량화 방법 – Quantization #1
- 워드 클라우드 – 파이썬으로 네이버 데이터랩 키워드 활용 방법 #2
- LangChain 프롬프트 템플릿으로 GPT 프롬프트 자동화하기 #1
- 파이썬 Transformer(트랜스포머) #1 – 감정 분석부터 Self-Attention
- AI 글쓰기의 한계 #1 – 왜 GPT는 사람처럼 글을 못 쓸까?