13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

홈랩 CPU에서 로컬 LLM 3종 실측 비교 — Qwen2.5 vs Gemma 2 vs Llama 3.2 (한국어·속도)

지난 1편에서 GPU 없는 i5 홈랩에 llama.cpp를 올리고 Qwen2.5-3B 하나를 돌려봤습니다. 그러자 당연한 질문이 남습니다 — “그럼 다른 모델은? 어떤 게 제일 나은데?” 그래서 소형 모델 3종을 완전히 같은 조건에서 돌려 속도와 한국어 품질을 실측했습니다. 결론부터 말하면, 한국어로 쓸 거면 Qwen2.5-3B가 1순위입니다. 그런데 그 과정에서 예상 못 한 함정도 하나 밟았습니다(마지막에).

1. 실험 조건 — 공정하게 맞췄다

비교가 의미 있으려면 변수를 통제해야 합니다. 세 모델 모두 아래 조건으로 통일했습니다.

  • 같은 컨테이너: LXC 4코어 / 8GB (1편과 동일)
  • 같은 양자화: Q4_K_M (4비트)
  • 같은 스레드: -t 4
  • 속도는 llama-bench, 품질은 동일 프롬프트를 llama-cli로

대상 모델은 홈랩 CPU에서 현실적인 2~3B급으로 골랐습니다.

모델 파라미터 파일 크기(Q4_K_M)
Qwen2.5-3B-Instruct 3.09B 1.79 GiB
Gemma 2 2B-it 2.61B 1.59 GiB
Llama 3.2 3B-Instruct 3.21B 1.87 GiB

2. 속도 실측 — Gemma가 가장 빠르다

./build/bin/llama-bench \
  -m /root/models/Qwen2.5-3B-Instruct-Q4_K_M.gguf \
  -m /root/models/gemma-2-2b-it-Q4_K_M.gguf \
  -m /root/models/Llama-3.2-3B-Instruct-Q4_K_M.gguf \
  -t 4 -p 512 -n 128
모델 프롬프트 처리 (pp512) 생성 (tg128)
Qwen2.5-3B 58.7 tok/s 13.83 tok/s
Gemma 2 2B 79.9 tok/s 15.07 tok/s
Llama 3.2 3B 58.5 tok/s 13.35 tok/s

예상대로 Gemma 2 2B가 가장 빠릅니다. 파라미터가 2.6B로 가장 작으니 당연한 결과죠. Qwen과 Llama는 둘 다 3B급이라 속도는 사실상 동률(생성 13토큰대)입니다. 즉 속도만 보면 크기 순서 그대로이고, 셋 다 CPU에서 실사용 가능한 범위입니다. 그럼 승부는 품질에서 갈립니다.

3. 한국어 품질 — 여기서 갈린다

세 모델에 똑같은 질문을 던졌습니다.

홈 서버 초보자에게 SSH 키 인증이 비밀번호 방식보다
안전한 이유를 3문장으로 설명해줘.

아래는 각 모델의 실제 출력입니다(발췌, 가공 없음).

Qwen2.5-3B — 자연스럽고 정확

SSH 키 인증은 비밀번호 방식보다 보안이 더 강화되어 있으며, 키는 암호화되어 있어 단방향으로 전송되어야 하므로 공유되는 데이터가 아닌 개인의 비밀로 보호됩니다. 이는 공유된 컴퓨터 환경에서 특히 중요한 요소이며, 악의적인 공격자가 비밀번호를 해독하는 것은 더 어렵습니다.

문장이 매끄럽고 내용도 맞습니다. 3B 소형 모델 치고 한국어 완성도가 확실히 높습니다.

Gemma 2 2B — 무난하고 가볍다

SSH 키 인증은 비밀번호 방식보다 더 안전하며, 이유는 첫째, SSH 키는 개인이 직접 생성하고 유지하며, 둘째, SSH 키는 서버와 사용자 간의 연결을 위한 신뢰도를 높이고, 셋째, 키는 암호화 방식으로 사용하여 비밀을 유지한다는 점 때문이다.

2.6B밖에 안 되는데 한국어가 깔끔합니다. 요청한 “첫째·둘째·셋째” 구조도 잘 지켰고요. 내용 깊이는 Qwen보다 살짝 얕지만, 가장 빠르면서도 한국어가 무너지지 않는다는 게 강점입니다.

Llama 3.2 3B — 한국어가 무너진다

1. mật secret.key는 해킹자가 쉽게 obten할 수 있는 sensitive information이 아니기 때문입니다. …
2. secret.key는 해킹자가 얻어도 사용할 수 있는 information이기 때문에 … (2·3번 문장 거의 동일하게 반복)

가장 크고(3.21B) 유명한 모델인데, 한국어는 셋 중 최악이었습니다. 외국어(“mật”, “obten”, “information”)가 뒤섞이고, 같은 문장을 반복하고, 내용도 부정확했습니다. Llama 3.2는 영어 중심으로 학습돼 소형 버전의 한국어가 약합니다. 영어로 쓸 거면 몰라도, 한국어 용도로는 비추천입니다.

4. 내가 밟은 함정 — Llama 3.2가 메모리를 터뜨렸다

사실 Llama 3.2는 처음에 실행하자마자 죽었습니다. 로그를 보니 Killed, 종료 코드 137(OOM). 8GB나 비어 있는데 왜?

원인은 기본 컨텍스트 길이였습니다. Llama 3.2는 학습 컨텍스트가 128K 토큰이라, 옵션을 안 주면 llama.cpp가 그 거대한 KV 캐시를 통째로 잡으려다 메모리를 초과합니다. Qwen·Gemma는 기본값이 작아 문제없었던 것이죠. 해결은 간단합니다 — 컨텍스트를 명시적으로 제한하면 됩니다.

# -c 로 컨텍스트를 4096으로 제한하면 정상 동작
./build/bin/llama-cli \
  -m /root/models/Llama-3.2-3B-Instruct-Q4_K_M.gguf \
  -c 4096 -p "..." -n 200 -t 4 -st

홈랩처럼 RAM이 넉넉하지 않은 환경에서 큰 컨텍스트 모델을 돌릴 땐 -c를 습관처럼 붙이는 게 안전합니다. 이건 스펙표만 봐선 절대 모르고, 직접 돌려봐야 아는 함정입니다.

5. 결론 — 용도별 추천

우선순위 추천 모델 이유
한국어 품질 Qwen2.5-3B 가장 자연스럽고 정확. 홈랩 한국어 1순위
속도·초경량 Gemma 2 2B 가장 빠르고 가벼우면서 한국어도 무난
영어 전용 Llama 3.2 3B 한국어는 약함. 영어 작업엔 선택지

제 결론은 “한국어 홈랩 CPU 추론이면 Qwen2.5-3B를 기본으로, 더 가볍고 빠르게 가고 싶으면 Gemma 2 2B”입니다. 파라미터 수나 유명세가 아니라, 같은 조건에서 직접 돌려본 결과가 이렇게 갈립니다.

다음 편 예고

이제 쓸 만한 모델을 골랐으니, 다음 편에서는 llama-server로 OpenAI 호환 API를 띄우고, 이걸 n8n 자동화에 연결해 실제로 일을 시키는 과정을 정리하겠습니다. 로컬 LLM이 장난감을 넘어 파이프라인의 부품이 되는 단계입니다.