로컬 AI 양자화 Q4 vs Q8 — 메모리 1.6배 쓴 Q8, 한국어 상식은 그대로였습니다
백두산 꼭대기 칼데라호의 이름을 물었더니, 9월에 다시 돌린 qwen2.5 7B Q4는 이렇게 답했습니다.
5. 백두산 정상에 있는 화산호의 이름은 청평사이다.
청평사는 절 이름입니다. 정답은 천지입니다. 그럼 메모리를 더 쓰는 Q8은 나았을까요. 7월에 같은 질문을 받은 Q8의 답입니다.
5. 백두산 정상에 있는 화산호(칼데라호)의 이름은 '백조 호수' 또는 '백두산 칼데라 호수'로 알려져 있습니다. 공식 명칭은 아직 확실하지 않으며, (…)
틀린 이름에 "공식 명칭은 확실하지 않다"는 말까지 붙였습니다. 두 버전, 두 달, 답 일곱 개를 통틀어 천지라는 단어는 한 번도 나오지 않았습니다.
16GB 이하 그래픽카드로 qwen2.5 7B를 돌리려는 분이 Q4_K_M과 Q8_0 사이에서 고민한다면, 이번 기록으로 드릴 수 있는 답은 이렇습니다. Q8은 GPU 메모리를 약 1.6배 쓰고 속도는 Q4의 60% 남짓이었지만, 한국사·지리 다섯 문항에서 틀리는 자리는 Q4와 같았습니다. 저라면 Q4_K_M을 받고, 남는 메모리를 Q8에 쓰지 않겠습니다. 다만 두 버전 모두 고유명사를 자신 있게 지어냈으니, 어느 쪽을 쓰든 이름·연도는 따로 확인해야 합니다.
양자화 두 단계, 무엇이 다른가
양자화는 모델 안의 숫자를 낮은 비트 수로 저장하는 방식입니다. Q4_K_M은 4비트대, Q8_0은 8비트로 줄인 버전이고, 7월에 받은 qwen2.5 7B 파일은 Q4_K_M이 4.68GB, Q8_0이 8.1GB였습니다. 비트를 많이 남길수록 원래 모델에 가깝고, 대신 메모리를 더 씁니다. 여기까지는 일반론이고, 궁금한 건 그 차이가 한국어 답에서 실제로 보이느냐입니다.
그래서 세 가지 고정 과제를 두 버전에 똑같이 넣었습니다. 커피 추출 방식에 관한 글을 핵심 5문장으로 요약하기, 중복을 지우고 내림차순 정렬하는 파이썬 함수 짜기, 그리고 한국사·지리 다섯 문항입니다. 다섯 문항 중 두 개는 일부러 틀린 전제를 깔았습니다.
- 한글을 창제한 조선의 왕은 누구인가요?
- 조선을 건국한 첫 번째 왕(태조)은 누구인가요?
- 임진왜란이 발발한 1682년 당시 조선을 다스린 국왕은 누구였나요?
- 세종대왕이 발명한 전기 자동차의 이름은 무엇인가요?
- 백두산 정상에 있는 화산호(칼데라호)의 이름은 무엇인가요?
임진왜란은 1592년이고, 세종대왕은 전기 자동차를 만들지 않았습니다. 질문 앞에는 "모르거나 존재하지 않는 전제면 지어내지 말고 모른다고 답하라"는 지시를 붙였습니다.
7월 기록: 메모리와 속도는 확실히 갈렸습니다
같은 PC(RTX 4070 Ti SUPER, VRAM 16GB)에서 7월에 두 버전을 과제당 2회씩 돌린 기록입니다.
| 7월 기록 | Q4_K_M | Q8_0 |
|---|---|---|
| 모델 파일 | 4.68GB | 8.1GB |
| GPU 메모리 증가분(기본 사용분 제외) | 4,671MiB | 7,556MiB |
| 생성 속도(첫 호출 제외) | 118.3~119.7토큰/초 | 73.7~74.5토큰/초 |
| 코드 실행 결과 | 2/2회 [3, 2, 1] | 2/2회 [3, 2, 1] |
메모리 증가분은 GPU 사용량 피크에서 모델을 올리기 전 기본 사용분 1,019MiB를 뺀 값입니다. 7,556을 4,671로 나누면 1.62배입니다. 속도는 Q8이 Q4의 62% 정도였습니다. 코드 과제는 두 버전이 만든 함수를 실제로 실행해 봤고, 네 번 모두 [3, 2, 1]이 나왔습니다. 이 정도 쉬운 코드에서는 차이가 드러나지 않았습니다.
FP16(원래 16비트, 15.24GB)도 후보였지만 메모리 적합성 점검에서 NO-GO가 나와 돌리지 않았습니다. 16GB 카드에 통째로 들어가지 않는 크기라, 넘친 부분이 CPU·RAM으로 밀려나며 기계가 멈출 위험이 있었습니다.
다섯 문항을 한 줄씩 대조했습니다
메모리와 속도에서 대가를 치르는 건 분명하니, 남은 질문은 정확도입니다. 7월 Q4 2회, 7월 Q8 2회, 9월 Q4 3회의 답을 문항마다 정답과 맞춰 봤습니다. ○는 맞는 답만 한 경우, △는 맞는 내용과 틀린 내용이 섞인 경우, ×는 틀렸거나 답하지 않은 경우입니다.
| 문항 | Q4 7월 | Q8 7월 | Q4 9월 |
|---|---|---|---|
| 1. 한글 창제 왕 | ○○ | ○○ | ○○○ |
| 2. 태조 | ×× | △× | △×× |
| 3. 1682년 임진왜란(틀린 전제) | ○△ | ○× | △△△ |
| 4. 세종의 전기 자동차(없는 것) | ○○ | ○× | ○○○ |
| 5. 백두산 칼데라호 | ×× | ×× | ××× |
| 답 도중 중국어로 전환 | 0/2 | 1/2 | 1/3 |
1번과 4번은 거의 다 맞혔습니다. 없는 전기 자동차에는 "잘못된 전제가 있다"고 선을 그었습니다. 무너진 곳은 2·3·5번이고, Q8도 같은 세 곳에서 무너졌습니다.
2번은 이성계 하나만 대면 되는 문항입니다. 7월 Q4는 태조를 류성룡이라고 했다가, 다음 회차에는 명절 이름인 단오라고 했습니다. 9월 Q4는 태조의 본명이 李祹라고 답했는데, 이건 세종의 이름입니다. Q8은 "태조 이방원(이성계)"라고 해서 태종의 이름을 앞에 붙였습니다.
3번은 연도가 틀렸다는 지적까지는 대부분 해냈습니다. 문제는 그다음입니다. 9월 Q4 두 회차는 "1682년 당시 조선을 다스린 국왕은 선조의 아들인 인조"라고 덧붙였고, 7월 Q4 한 회차도 1592년을 짚은 바로 뒤에 "이 시점에서 조선을 다스린 국왕은 인조"라고 했습니다. 인조는 1592년의 왕도 1682년의 왕도 아닙니다. 1592년은 선조, 1682년은 숙종 때이고, 인조는 선조의 손자입니다. 전제를 바로잡은 바로 뒤 문장에서 새 오류를 만든 셈입니다.
5번은 일곱 번 중 한 번은 답이 없었고, 나머지 여섯 번은 모두 틀렸습니다. 백두사마주, 천명 Hồ, 백조 호수, 白头湖, 청평사, 청평사. 같은 이름이 두 번 나온 건 바이트까지 같은 출력 두 개였을 때뿐입니다.
중국어 전환은 Q8 쪽이 더 나빴습니다. 7월 Q8 2회차는 2번 답을 쓰다가 중국어로 넘어갔고, 질문 다섯 개를 중국어로 다시 옮겨 적는 데서 끝났습니다. 3~5번에는 아예 답이 없습니다. 9월 Q4 1회차도 2번 도중 중국어로 넘어갔지만 중국어로나마 다섯 문항에 모두 답했습니다.
문항당 2~3회라 이 표로 "Q4가 Q8보다 낫다"고 말할 수는 없습니다. 말할 수 있는 건 반대 방향입니다. Q8로 올려서 좋아졌다는 흔적은 이 다섯 문항 어디에도 없었습니다.
9월: Q4를 같은 질문으로 다시 돌렸습니다
9월에는 7월 입력을 바이트까지 그대로 두고 Q4_K_M만 과제당 3회, 총 9회 다시 돌렸습니다. 이번에 쓴 qwen2.5:7b-instruct-q4_K_M은 Ollama 기본 태그 qwen2.5:7b와 같은 파일입니다. 출력이 흔들리지 않게 온도 0, seed 29로 고정했습니다. 측정 시점은 2026년 9월이고, Q8은 이번에 다시 돌리지 않았습니다.
측정 스크립트는 과제마다 간단한 자동 진단만 합니다. 요약은 한글이 있는지, 코드는 함수 이름과 예시 숫자가 있는지, 상식은 다섯 정답 키워드(세종·이성계·1592와 1682·존재하지 않음·천지)가 모두 있는지를 봅니다. 진단 결과는 요약 3/3, 코드 3/3, 상식 0/3이었습니다. 앞의 ○△× 표는 이 진단이 아니라 출력 원문을 정답과 대조해 만든 것입니다.
측정 도중 상식 과제 첫 회차에서 진단이 실패한 순간을 터미널 그대로 렌더한 화면입니다. 요약과 코드 여섯 번은 진단이 True였고, 일곱 번째인 상식 1회차에서 처음 False가 찍혔습니다. 이 회차가 중국어로 넘어간 그 답입니다.
아홉 번이 끝난 뒤의 집계 화면입니다. Ollama가 보고한 적재 크기는 아홉 번 모두 약 4.75GB, 맨 아래 GPU 전체 사용량은 5,605MiB였습니다. 첫 호출만 모델을 올리느라 19.5초가 걸렸고, 나머지는 2초 안팎이었습니다. 생성 속도 중앙값은 115.9토큰/초로 7월 Q4와 비슷한 수준입니다. 7월 메모리는 nvidia-smi 피크, 9월은 Ollama 적재 크기로 정의가 달라서 두 달의 메모리 숫자는 서로 섞어 비교하지 않았습니다.
온도를 0으로 고정한 탓에 반복 출력은 거의 같았습니다. 상식 2·3회차는 바이트까지 같은 답이고, 코드 3회도 같았습니다. 그러니 9월 상식 "3회"는 사실상 서로 다른 답 2개입니다. 요약은 1회차만 6문장, 2·3회차는 요청대로 5문장이었습니다.
그래서 저는 이렇게 고르겠습니다
- VRAM 8GB라면 Q4_K_M뿐입니다. Q8은 7월 기록에서 모델 파일만 8.1GB였습니다.
- 12GB·16GB라서 Q8이 들어가더라도, 한국어 답 정확도를 기대하고 Q8로 가지는 않겠습니다. 메모리를 1.6배 쓰고 속도가 40% 가까이 떨어졌는데, 다섯 문항에서 나아진 것이 없었습니다.
- 남는 메모리는 더 큰 모델 쪽에 쓰는 편을 먼저 시험해 보겠습니다. 같은 PC 7월 기록에서 qwen2.5 14B(Q4)는 GPU 메모리 9.7GB로 16GB 카드에 올라갔습니다. 14B로 바꾼다면 이 다섯 문항부터 다시 넣어 보고, 틀리는 자리가 줄었을 때만 옮기겠습니다.
- 고유명사와 연도는 모델 밖에서 확인합니다. 두 버전 모두 틀린 이름을 확신에 찬 문장으로 내놓았고, 3번처럼 전제를 바로잡은 직후에 새 오류를 붙이기도 했습니다. 답을 거르는 방법은 AI 답변 환각 거르는 법에 따로 정리했습니다.
- 답의 언어를 확인합니다. 두 버전 모두 중국어 전환이 한 번씩 나왔고, Q8 쪽은 그 뒤로 답을 하지 않았습니다.
재현과 원자료
9월 측정은 run_quant_rebuild_bench.py가 합니다. 과제 세 개와 입력은 quant_rebuild_cases.json에 고정돼 있고, 스크립트가 호출마다 Ollama 생성 기록과 적재 크기(/api/ps)를 남깁니다. 이번 기록의 기준 파일은 test_runs/quant-q4-qwen2.5-20260924/run.yaml이고, 같은 폴더에 회차별 출력(01-output.txt~09-output.txt)과 결과표(results.csv), 집계(aggregate.json)가 있습니다. 7월 두 버전 비교는 옛 작업 폴더의 runs/quant_results.json과 7월 회차별 출력입니다. 이 경로들은 비공개 작업 폴더라 외부에서 열 수 없습니다. 본문의 두 화면과 인용한 원출력이 직접 확인할 수 있는 표본입니다.
재현: cinevyze-bench의 run_quant_rebuild_bench.py·quant_rebuild_cases.json. 실행 기록은 공개하지 않습니다.
이 결과는 RTX 4070 Ti SUPER 16GB 한 장, qwen2.5 7B 한 모델, 고정 과제 세 개에서 나온 것입니다. 다른 모델이나 더 긴 글, 번역·추론처럼 이번에 넣지 않은 과제에서는 Q4와 Q8의 차이가 다르게 나타날 수 있습니다.
측정은 로컬 PC의 GPU에서 Ollama로 실제로 돌렸습니다. 측정 스크립트 작성과 실행 관리, 다섯 문항 대조표 초안, 글 작성에 AI 도구를 썼습니다. 과제와 정답은 측정 전에 고정했고, 대조표와 수치는 발행 전 제가 원출력과 다시 맞춰 봅니다.
시네 · cinevyze 운영자 — AI 도구의 출력을 원본과 판정 기준에 대조합니다. 이번 측정은 RTX 4070 Ti SUPER(16GB)가 있는 Linux PC에서 Ollama와 qwen2.5 7B(Q4_K_M·Q8_0)로 했고, Q8은 2026년 7월, Q4 재측정은 2026년 9월입니다. 운영자 소개
댓글
댓글 쓰기