로컬 AI 기초 · 글 11편로컬 AI 기초
  1. 로컬 AI 학습 순서 한눈에 보기
  2. 로컬 AI와 클라우드 AI는 무엇이 다른가
  3. 로컬에서 AI를 돌리는 이유와 한계
  4. 내 PC 사양으로 돌릴 수 있는 모델 고르기
  5. 토큰, 컨텍스트 윈도우, 파라미터, 환각
  6. 공개 모델 계열과 모델 이름 읽는 법
  7. 양자화란 무엇인가
  8. CPU, GPU, 메모리가 하는 일
  9. 작업별로 로컬 모델과 온라인 모델 고르기
  10. 작은 모델에서 더 중요한 프롬프트 기본기
  11. 업무에서 AI를 쓸 때의 안전 습관

이 글에서 다루는 것큰 모델을 PC에서 돌릴 수 있게 줄이는 방법인 양자화를 원리, 장단점, 고르는 기준 순서로 설명합니다.

왜 줄여야 하나

언어 모델은 숫자 수십억 개로 이루어져 있습니다. 이 숫자 하나하나가 파라미터입니다. 원래는 숫자 하나를 32비트 실수로 저장합니다. 파라미터가 40억 개인 모델이면 저장에만 십수 GB가 필요하고, 실행하려면 이것이 전부 메모리에 올라가야 합니다. 일반 사무용 PC로는 감당하기 어렵습니다.

양자화(Quantization) 는 이 숫자를 덜 정밀하게 저장해 모델을 줄이는 방법입니다. 32비트로 저장하던 것을 16비트, 8비트, 4비트로 바꿉니다.

시험 점수로 이해하기

강의 교재의 비유입니다. 100점 만점 시험에서 99.87점이라고 적던 것을 99점, 98점처럼 정수로만 적는 것과 같습니다. 소수점 아래는 사라지지만 누가 더 잘했는지는 대부분 그대로 알 수 있습니다. 기록에 필요한 칸은 크게 줄어듭니다.

더 거칠게 “상, 중, 하”로만 적으면 칸은 더 줄지만 97점과 91점을 구분하지 못하게 됩니다. 양자화도 마찬가지로, 많이 줄일수록 모델이 원래 구분하던 미세한 차이를 잃습니다.

얻는 것과 잃는 것

얻는 것 잃는 것
파일 크기가 줄어듦. 32비트를 8비트로 바꾸면 4분의 1 정밀도가 낮아져 답의 품질이 조금 내려감
메모리를 덜 써서 사양이 낮은 PC에도 올라감 너무 낮은 비트(예: 2비트)에서는 품질이 크게 떨어짐
계산할 양이 줄어 답이 빨라짐 긴 추론이나 미묘한 표현에서 차이가 먼저 드러남

핵심은 균형점을 찾는 것입니다. 품질이 조금 내려가는 대신 내 PC에서 돌아가게 만드는 거래입니다.

이름에서 양자화 수준 읽기

GGUF 파일 이름이나 Ollama 태그에는 양자화 수준이 적혀 있습니다.

표기 뜻 성격
F16, FP16 16비트 실수 원본에 가깝고 큼
Q8_0 8비트 품질 손실이 적고 파일이 큼
Q6_K, Q5_K_M 6비트, 5비트 중간
Q4_K_M 4비트 크기와 품질의 균형. 가장 널리 쓰임
Q3_K_M, Q2_K 3비트, 2비트 아주 작지만 품질 저하가 뚜렷함

Q 뒤의 숫자가 비트 수입니다. 그 뒤의 K는 양자화 방식의 한 종류이고, S, M, L은 같은 비트 안에서 작은 판, 중간 판, 큰 판을 뜻합니다. Q4_K_M은 “4비트, K 방식, 중간 판”입니다.

Ollama 라이브러리에서 태그를 따로 고르지 않고 받는 모델은 대부분 4비트 수준으로 양자화된 것입니다. 강의 자료의 모델 표에 “파일 크기 (Q4)“라고 적혀 있는 것도 이 기준입니다.

어떤 수준을 고르나

기준은 두 가지입니다.

1. 메모리에 들어가는가. 파일 크기에 대화 내용을 담을 공간과 운영체제 몫을 더한 것이 메모리 안에 들어와야 합니다. 들어가지 않으면 실행이 안 되거나 매우 느려집니다.

2. 큰 모델을 많이 줄일까, 작은 모델을 덜 줄일까. 같은 용량이라면 선택지가 둘 생깁니다.

  • 큰 모델의 4비트 판
  • 작은 모델의 8비트 판

일반적으로는 파라미터가 많은 쪽이 유리한 경우가 많아, 4비트 수준까지는 큰 모델을 줄여 쓰는 선택을 많이 합니다. 다만 3비트 아래로 내려가면 손실이 커져 이 계산이 뒤집힙니다. 결국 내 업무 문장으로 두 가지를 다 시험해 보는 것이 가장 확실합니다.

처음에는 다음 순서를 권합니다.

  1. 기본 태그(대개 4비트)로 받아 써 봅니다.
  2. 메모리가 남고 품질이 아쉬우면 같은 모델의 8비트 판이나 한 단계 큰 모델을 받아 비교합니다.
  3. 메모리가 모자라면 양자화를 더 낮추기보다 한 단계 작은 모델로 내려갑니다.

Ollama에서 양자화 수준을 지정해 받기

Hugging Face에 올라온 GGUF 모델은 이름 뒤에 양자화 수준을 붙여 가져올 수 있습니다. 강의에서 쓰는 방식은 Modelfile의 첫 줄에 경로를 적는 것입니다.

FROM hf.co/<올린 사람>/<모델 이름>-GGUF:Q4_K_M

<올린 사람>과 <모델 이름> 자리는 Hugging Face 모델 페이지의 주소에서 그대로 가져옵니다. 콜론 뒤의 Q4_K_M을 Q8_0으로 바꾸면 같은 모델의 8비트 판을 받습니다. 그 저장소에 해당 수준의 파일이 올라와 있어야 합니다. Modelfile을 쓰는 방법은 Modelfile과 파라미터로 업무용 모델 만들기에서 다룹니다.

양자화는 언제 이루어지나

두 가지 방식이 있습니다. 모델을 받아 쓰는 사람에게 필요한 지식은 아니지만, 설명서에 자주 나오는 말이라 적어 둡니다.

  • PTQ(학습 후 양자화): 학습이 끝난 모델에 양자화를 적용합니다. 빠르고 간단하며 다시 학습할 필요가 없습니다. 우리가 내려받는 GGUF 파일은 대부분 이 방식으로 만든 것입니다.
  • QAT(양자화 인식 학습): 학습하는 동안 양자화를 고려합니다. 시간이 더 걸리지만 낮은 비트에서도 품질이 잘 유지됩니다. 제작사가 “QAT 판”이라고 따로 공개하는 경우가 있습니다.

양자화와 헷갈리기 쉬운 말

모델을 가볍게 만드는 방법은 양자화 말고도 있습니다.

방법 하는 일
양자화 숫자의 정밀도를 낮춤. 파라미터 수는 그대로
가지치기(Pruning) 덜 중요한 파라미터를 없앰
지식 증류(Distillation) 큰 모델의 답을 본떠 작은 모델을 새로 학습시킴

모델 이름에 distill이 들어가 있으면 증류로 만든 작은 모델입니다. 증류한 모델을 다시 양자화해 배포하는 경우도 흔합니다.

정리

  • 양자화는 모델의 숫자를 덜 정밀하게 저장해 크기와 메모리 사용을 줄이는 방법입니다.
  • Q 뒤의 숫자가 비트 수이고, 작을수록 가볍지만 품질이 내려갑니다.
  • 처음에는 4비트 수준의 기본 태그로 시작하고, 메모리 여유에 따라 조정합니다.

다음에 읽을 글