마지막 수정

Gemma 4 12B를 M4 Mac mini 16GB에서 먼저 돌려본 기록

Gemma 4 12B 공식 모델 카드와 GGUF 후보를 확인한 뒤, M4 Mac mini 16GB와 LM Studio에서 실제로 로드해 본 설정과 X 번역용 모델 선택까지 정리했습니다.

Gemma 4 12B가 올라왔다는 소식을 봤을 때는 솔직히 바로 받아보고 싶었습니다.

“12B면 M4 Mac mini 16GB에서도 어떻게든 되지 않을까?”

이 생각이 먼저 들었습니다. 27B나 31B처럼 아예 무거워 보이지도 않고, 2B나 4B처럼 너무 작아 보이지도 않았습니다. 딱 애매하게 욕심나는 크기였습니다.

그래도 바로 설치 버튼부터 누르지는 않았습니다. 예전에 로컬 LLM을 만지면서 배운 게 하나 있습니다. 모델이 뜨는 것과 매일 쓸 수 있는 것은 다릅니다. 그래서 Hugging Face 모델 카드와 GGUF 후보를 먼저 보고, 그다음 LM Studio에서 실제로 몇 가지를 받아 돌려봤습니다.

막상 해보니 글의 방향도 조금 바뀌었습니다. 이 글은 “Gemma 4 12B가 좋다/나쁘다”를 결론 내리는 벤치마크가 아닙니다. 제 M4 Mac mini 16GB에서 어떤 모델은 너무 느렸고, 어떤 GGUF는 그나마 남겨볼 만했으며, 더 큰 26B-A4B 계열은 로드와 실사용을 따로 봐야 했다는 기록입니다. 마지막에는 Gemma 4 12B 후보와 X 번역용 모델을 결국 분리했습니다.

10초 요약

  • 공식 모델 카드와 community GGUF는 역할을 분리해서 봐야 했습니다. 공식 카드는 출처와 기본 정보를, GGUF는 로컬 실행 후보를 확인하는 용도였습니다.
  • M4 Mac mini 16GB에서 google/gemma-4-12b 계열은 로드는 됐지만 토큰 생성 체감이 너무 느려 우선순위를 낮췄습니다.
  • unsloth/gemma-4-12B-it-qat-GGUF 계열에서는 최종적으로 gemma-4-12b-it-qat-heretic-ud-k-xl을 12B 후보로 남겼습니다.
  • unsloth/gemma-4-26B-A4B-it-GGUF는 context 1024, GPU offload 7 같은 낮은 설정으로 로드까지는 가능했지만, 실제 응답은 제 환경에서 실사용 후보로 보기 어려웠습니다.
  • 다만 12B 후보도 X 게시글 번역용으로 매번 쓰기에는 느렸습니다. 그래서 번역용은 Qwen/Qwen3-4B-Instruct-2507을 우선 쓰기로 정리했습니다.
  • 아직 정량 tokens/sec, 긴 한국어 문서 요약, 반복 품질 비교는 끝내지 않았습니다. 그래서 이 글의 결론은 “12B는 품질 확인용 후보, 반복 번역은 4B급 모델”에 가깝습니다.

확인 환경

이번 기록의 기준 환경은 아래입니다.

기기: Apple M4 Mac mini
메모리: 16GB unified memory
내장 저장공간: 256GB
추가 저장장치: 외장 SSD 2TB
실행 도구: LM Studio
기록 기준일: 2026-06-11

이 사양에서 로컬 LLM을 볼 때 제일 조심해야 하는 것은 “모델이 로드된다”와 “계속 쓰고 싶을 만큼 응답한다”를 같은 말로 취급하는 것입니다. 이번에도 그 차이가 꽤 크게 느껴졌습니다.

왜 모델 카드부터 봤나

로컬 LLM을 처음 만질 때는 모델 이름이 가장 먼저 보입니다.

Gemma 4
12B
GGUF
multimodal
long context
local execution

이 단어들이 붙어 있으면 괜히 바로 받아보고 싶어집니다. 저도 그랬습니다. 특히 12B는 애매하게 매력적인 크기입니다. 27B나 31B처럼 너무 무거워 보이지 않고, 2B나 4B처럼 너무 작아 보이지도 않습니다.

그런데 제 기준에서는 바로 여기서 한 번 멈춰야 했습니다.

이전에 M4 Mac mini 16GB에서 LM Studio로 Gemma를 돌려본 과정과 이슈를 정리하면서 느낀 것은, 로컬 LLM에서는 “모델을 받을 수 있다”와 “매일 쓸 수 있다” 사이에 차이가 있다는 점이었습니다.

모델을 받는 것까지는 어렵지 않았습니다. 한 번 답을 받아보는 것도 됩니다. 문제는 그 다음이었습니다.

- 다시 열었을 때도 잘 로드되는가?
- 첫 응답까지 시간이 너무 길지 않은가?
- 다른 앱을 켜둔 상태에서도 버틸 수 있는가?
- 긴 Markdown 글을 넣었을 때 멈추지 않는가?
- 결과를 실제 블로그 운영에 다시 쓸 수 있는가?

이 질문에 답하기 전까지는 “된다”라고 말하기 어렵습니다.

Hugging Face에서 먼저 확인한 것

처음 확인한 대상은 공식 Google 모델 카드와 community GGUF 후보였습니다.

공식 Hugging Face 모델 카드 기준으로는 Gemma 4 12B 계열이 Gemma 4 family의 일부로 설명되어 있었고, long context와 multimodal 입력 같은 설명도 보였습니다. 모델 카드만 보면 꽤 강하게 느껴집니다.

다만 저는 이 지점에서 바로 “긴 context를 마음껏 써도 된다”고 해석하지 않기로 했습니다. 모델 카드의 최대 context와 제 Mac에서 안정적으로 넣을 수 있는 실제 prompt 길이는 다른 문제입니다. 16GB 환경에서는 context를 크게 잡을수록 KV cache와 메모리 부담이 같이 커질 수 있습니다.

그래서 이 정보는 기대치가 아니라 확인 항목으로 옮겼습니다.

확인된 것: 모델 카드에 long context와 multimodal 설명이 있다.
아직 모르는 것: 내 16GB Mac에서 그 조건을 얼마나 안정적으로 쓸 수 있는가.

GGUF 버전은 공식 모델과 따로 봐야 했다

LM Studio에서 돌리려면 결국 GGUF를 골라야 했습니다. 이번에도 community GGUF가 먼저 눈에 들어왔습니다.

제가 확인한 것은 예를 들면 이런 쪽입니다.

lmstudio-community/gemma-4-12B-it-GGUF
unsloth/gemma-4-12b-it-GGUF
unsloth/gemma-4-12B-it-qat-GGUF

이런 community GGUF는 실제 로컬 실행에서는 매우 편합니다. LM Studio에서 검색하고 받기 쉬운 경우도 있고, QAT나 Q4, Q5 같은 선택지가 있으면 16GB 환경에서 테스트 가능성이 올라갑니다.

하지만 공식 모델과 community quantization은 같은 층위의 정보가 아닙니다.

공식 모델 카드는 모델 자체의 출처와 라이선스, 기본 능력 설명을 확인하는 데 더 적합합니다. 반면 community GGUF는 로컬 실행 가능성과 다운로드 편의성을 확인하는 신호에 가깝습니다.

특히 LM Studio community 모델 카드에는 LM Studio가 해당 모델의 creator, originator, owner가 아니며, community model의 정확성이나 신뢰성을 보장하지 않는다는 disclaimer가 들어가 있었습니다.

이 문구를 보고 오히려 기준이 선명해졌습니다.

공식 모델 카드: 모델의 원 출처와 기본 정보 확인
community GGUF: 내 로컬 환경에서 실행해볼 수 있는 후보 확인
실제 판단: 직접 로드하고 같은 입력으로 테스트한 뒤에만 가능

실제로 돌려본 12B: 공식 계열은 느렸고, QAT GGUF는 후보로 남았다

처음에는 google/gemma-4-12b 계열을 LM Studio에서 로드해 봤습니다. 로드 자체는 가능했습니다. 하지만 토큰 생성 체감이 너무 느려서, 제 작업 흐름에서는 계속 붙잡고 있기 어렵다고 판단했습니다.

여기서 중요한 점은 “로드 실패”가 아니라는 것입니다.

google/gemma-4-12b
- 로드: 가능
- 체감: 토큰 생성 속도가 너무 느림
- 판단: 현재 M4 Mac mini 16GB 환경에서는 우선순위 낮춤

그다음에는 unsloth/gemma-4-12B-it-qat-GGUF 계열을 다시 받아서 LM Studio에서 실행해 봤습니다. 이쪽은 체감이 달랐습니다. 아주 빠르다고 말할 정도는 아니지만, 적어도 “12B 후보로는 남겨볼 수 있다”는 수준까지는 확인했습니다.

이 단계에서 최종적으로 남긴 항목명은 gemma-4-12b-it-qat-heretic-ud-k-xl입니다. 이름만 보면 꽤 실전형 후보처럼 보이지만, 제 환경에서는 여전히 가볍지는 않았습니다. 특히 X 게시글을 빠르게 번역하는 용도로는 “가능하긴 한데 매번 기다리기엔 답답하다”는 쪽에 가까웠습니다.

당시 LM Studio 설정은 아래처럼 기록했습니다.

Model: gemma-4-12b-it-qat-heretic-ud-k-xl
Base candidate: unsloth/gemma-4-12B-it-qat-GGUF 계열
Context Length: 4096
GPU Offload: 43
CPU Thread Pool Size: 7
Evaluation Batch Size: 1024
Physical Batch Size: 512
Max Concurrent Predictions: 1
Unified KV Cache: ON
Offload KV Cache to GPU Memory: ON
Keep Model in Memory: ON
mmap: ON
Flash Attention: ON
K/V Cache Quantization: OFF
RoPE: 자동

이 설정에서 제가 얻은 결론은 단순합니다.

12B를 본다면, 지금 환경에서는 gemma-4-12b-it-qat-heretic-ud-k-xl을 먼저 본다.
context는 처음부터 크게 잡지 않고 4096부터 본다.
속도 문제가 생기면 context, GPU offload, batch size, KV cache 설정부터 줄인다.

아직 정량 tokens/sec를 적을 단계는 아닙니다. 하지만 “공식 12B를 그냥 받으면 된다”가 아니라 “내 Mac에서는 어떤 GGUF와 어떤 context 설정으로 버티는지”를 봐야 한다는 기준은 더 분명해졌습니다. 그리고 반복 작업에서는 품질보다 응답 속도가 먼저 발목을 잡을 수 있다는 것도 확인했습니다.

26B-A4B도 열어봤지만, 로드 가능과 실사용 가능은 달랐다

궁금해서 더 큰 unsloth/gemma-4-26B-A4B-it-GGUF도 확인했습니다. 이 모델은 낮은 context와 제한적인 offload 설정에서는 로드까지는 가능했습니다.

제가 남긴 설정은 아래입니다.

Model: unsloth/gemma-4-26B-A4B-it-GGUF
Context Length: 1024
GPU Offload: 7
CPU Thread Pool Size: 7
Evaluation Batch Size: 512
Physical Batch Size: 256
Max Concurrent Predictions: 1
Unified KV Cache: ON
Offload KV Cache to GPU Memory: ON
Keep Model in Memory: OFF
mmap: ON
Experts: 8
Flash Attention: ON
K/V Cache Quantization: OFF
RoPE: 자동

하지만 실제 응답 체감은 실사용 불가에 가까웠습니다. 이 기록은 실패담이라기보다, 앞으로 로컬 LLM 글에서 계속 써야 할 기준을 다시 확인한 사례였습니다.

로드 가능: 모델이 열린다.
실사용 가능: 기다릴 만한 속도로 반복 작업을 맡길 수 있다.
운영 가능: 블로그 운영이나 wiki 정리에 붙여도 사람이 더 피곤해지지 않는다.

M4 Mac mini 16GB에서는 이 세 단계를 따로 봐야 했습니다. 26B-A4B는 “열리긴 했다”는 기록은 남길 수 있지만, 지금 제 환경에서는 운영 후보로 두지 않는 편이 맞겠습니다.

M4 Mac mini 16GB에서 12B를 볼 때의 감각

이전 Gemma 실험에서 남긴 감각은 대략 이랬습니다.

2B: 가볍고 빠르지만 작업 품질은 제한적
4B: 번역처럼 반복되는 짧은 작업에는 현실적
7B 4bit: 실사용과 품질 사이의 균형점
27B: 16GB 환경에서는 부담이 큼

그 사이에 있는 12B는 그래서 흥미롭습니다.

너무 작은 모델은 아니고, 그렇다고 27B처럼 바로 포기할 크기도 아닙니다. 하지만 이번 1차 실행을 지나고 나니, 12B라는 숫자 자체보다 GGUF 종류와 실행 설정이 더 중요하다는 쪽으로 생각이 바뀌었습니다.

제가 앞으로 12B를 볼 때 먼저 확인할 조건은 아래입니다.

- QAT 또는 Q4 계열 GGUF가 있는가?
- context 4096에서 로드와 응답이 안정적인가?
- 첫 응답까지 기다릴 만한가?
- 같은 입력을 두 번 넣었을 때 품질이 크게 흔들리지 않는가?
- 긴 raw를 넣기 전에 짧은 운영 작업부터 통과하는가?
- 번역처럼 반복 실행할 작업이라면 4B급 모델보다 확실히 나은 이유가 있는가?

특히 마지막 항목이 중요했습니다. 모델 카드에 긴 context가 있다고 해서 처음부터 100K 이상의 긴 raw를 넣고 싶어지지만, 실제 운영에서는 그게 꼭 좋은 방식은 아닐 수 있습니다.

Daejin Lab에서는 긴 raw를 한 번에 밀어 넣기보다, 먼저 작게 쪼개고, 요약 기준을 고정하고, 사람이 마지막 판단을 보는 쪽이 더 안전했습니다.

X 번역용은 Qwen3 4B로 분리했다

이번 테스트에서 가장 빨리 결론이 난 건 X 게시글 번역이었습니다.

처음에는 욕심이 있었습니다. 12B 모델 하나로 번역도 하고, 요약도 하고, 글쓰기 보조까지 다 맡기면 좋겠다고 생각했습니다. 모델을 여러 개 나눠 쓰는 것보다 깔끔해 보였기 때문입니다.

그런데 몇 번 돌려보니 그 생각은 접었습니다. 품질이 나쁘다는 얘기는 아닙니다. 문제는 기다리는 시간이었습니다. X 게시글 번역은 한 번 멋지게 답하는 것보다, 짧은 문장을 여러 번 빠르게 처리하는 쪽이 더 중요했습니다.

긴 글 요약 / 품질 확인: 12B 후보를 계속 테스트
X 게시글 번역: 빠르게 여러 번 돌릴 수 있는 4B급 모델 우선

그래서 X 번역용으로는 Qwen/Qwen3-4B-Instruct-2507을 쓰기로 했습니다. 이 결정은 “Qwen3 4B가 모든 면에서 Gemma 4 12B보다 낫다”는 뜻이 아닙니다. 제 작업에서는 짧은 게시글을 빨리 번역하고, 어색한 문장만 사람이 다시 보는 흐름이 더 현실적이었다는 뜻입니다.

Gemma 4 12B는 버린 모델이 아닙니다. 다만 매번 번역 버튼을 누를 때마다 기다리기엔 조금 답답했습니다. 그래서 지금은 아래처럼 역할을 갈라두는 편이 제일 덜 피곤했습니다.

gemma-4-12b-it-qat-heretic-ud-k-xl
- 12B 품질 후보
- 긴 입력과 글쓰기 보조 테스트용
- 속도 때문에 반복 번역용으로는 보류

Qwen/Qwen3-4B-Instruct-2507
- X 게시글 번역용 1차 선택
- 짧은 입력을 여러 번 처리하는 작업에 우선 투입
- 품질은 사람이 최종 확인

여기서 제가 얻은 기준은 조금 현실적입니다. 로컬 LLM을 하나 고르는 문제가 아니라, 작업별로 모델을 나누는 문제에 가깝습니다. 무거운 모델 하나를 억지로 모든 곳에 쓰기보다, 느려지는 순간 바로 더 작은 모델로 분리하는 편이 실제 운영에는 낫습니다.

M4 Mac mini 16GB에서 Gemma 4 12B 후보는 품질 확인용으로, Qwen3 4B는 X 번역용으로 분리한 요약 카드

직접 테스트 기록을 공개용으로 요약한 카드입니다. 정량 벤치마크가 아니라, 제 환경에서 작업별 모델 역할을 나눈 1차 판단 기준입니다.

이번 테스트에서 아직 비워둔 것

이번 기록은 실행 후보를 좁히는 1차 확인입니다. 그래서 아직 비워둔 항목이 꽤 있습니다.

- 정확한 tokens/sec 측정
- cold start와 warm 실행 시간 분리
- 같은 입력 3개에 대한 반복 품질 비교
- 긴 한국어 Markdown 요약 안정성
- 블로그 초안/FAQ/내부 링크 후보 생성 품질
- LM Studio 서버 API로 붙였을 때의 응답 안정성
- X 게시글 번역에서 Qwen3 4B와 12B 후보의 체감 차이

이 항목을 숨기면 글은 더 깔끔해질 수 있습니다. 하지만 나중에 같은 조건에서 다시 테스트할 때 기준이 흐려집니다. 그래서 이번 글에서는 “나쁘지 않음”과 “실사용 불가” 같은 체감 표현을 쓰되, 정량 성능표처럼 보이게 만들지는 않았습니다.

제가 설치 후 다시 정한 체크리스트

처음에는 설치 전 체크리스트를 만들었습니다. 실제로 돌려본 뒤에는 체크리스트가 조금 바뀌었습니다.

1. 공식 모델과 community 모델을 분리하기

공식 모델: 출처와 기본 정보 확인
community GGUF: 실행 후보 확인

공식 모델은 출처 확인용입니다. community GGUF는 실행 후보입니다. 둘을 섞어서 “공식 모델이 있으니 이 GGUF도 같은 수준으로 검증됐다”고 말하지 않습니다.

2. 로드 가능과 실사용 가능을 분리하기

이번에 제일 크게 남은 기준입니다.

로드 가능: 모델이 열린다.
실사용 가능: 기다릴 만한 속도로 답한다.
운영 가능: 반복 작업에 붙여도 검수 부담이 줄어든다.

unsloth/gemma-4-26B-A4B-it-GGUF는 첫 번째에는 들어갔지만, 두 번째와 세 번째 기준에서는 보류했습니다.

3. context 욕심을 줄이기

Gemma 4 모델 카드에서 long context가 언급되더라도, 제 작업에서는 처음부터 긴 context를 쓰지 않을 생각입니다.

먼저 아래처럼 작게 보겠습니다.

입력 1: 작업 로그 20줄 요약
입력 2: Markdown 글 목차 만들기
입력 3: 기존 글에서 FAQ 후보 찾기

이 정도를 안정적으로 처리하면 그 다음에 긴 raw 요약으로 넘어갈 수 있습니다. 반대로 이 작은 테스트에서 느리거나 흔들리면, 긴 context는 아직 의미가 없습니다.

4. 블로그 운영에 실제로 도움이 되는지 보기

제가 로컬 LLM을 만지는 이유는 “최신 모델을 돌려봤다”는 말을 하려는 게 아닙니다. Daejin Lab 글쓰기와 운영에 실제로 붙일 수 있는지 보려는 쪽에 가깝습니다.

그래서 이번에는 기준을 이렇게 잡았습니다.

- wiki raw 요약을 줄여주는가?
- 글 목차 후보를 빠르게 만들어주는가?
- 내부 링크 후보를 찾는 데 도움이 되는가?
- 최종 판단은 사람이 하게 남겨두는가?

이 기준을 통과하지 못하면, 아무리 모델이 핫해도 제 운영에는 아직 쓸모가 작습니다.

다음 실험 계획

다음 단계에서는 모델을 하나로 묶지 않고, 용도별로 나눠서 볼 생각입니다. gemma-4-12b-it-qat-heretic-ud-k-xl은 글쓰기 보조와 긴 입력 쪽을 보고, Qwen/Qwen3-4B-Instruct-2507은 X 번역처럼 짧고 반복적인 작업에 먼저 붙입니다.

테스트 1: X 게시글 5개를 한국어로 빠르게 번역하기
테스트 2: 작업 로그 20줄을 5줄로 요약하기
테스트 3: 블로그 초안에서 빠진 체크리스트 찾기
테스트 4: 기존 Daejin Lab 글 3개에 맞는 내부 링크 후보 제안하기

그리고 결과는 아래 항목으로 나누겠습니다.

- cold start 시간
- warm 실행 체감
- 첫 토큰까지 걸린 시간
- 답변이 끊기는지 여부
- 한국어 번역과 문장 자연스러움
- 사람이 고쳐야 하는 양

이렇게 해야 “핫한 모델을 받았다”에서 끝나지 않고, 실제 운영 기준으로 남길 수 있습니다.

이번에 정한 기준

Gemma 4 12B를 보면서 다시 정한 기준은 하나입니다.

로컬 LLM은 모델명보다 실행 조건이 먼저다.

모델 카드가 좋아 보여도, 내 환경에서 반복 실행이 안 되면 운영 도구가 되기 어렵습니다. 반대로 작은 모델이라도 매번 같은 방식으로 결과를 남겨주면 블로그 운영에는 더 쓸모 있을 수 있습니다.

이번에는 공식 모델 카드와 GGUF 후보를 확인한 뒤, LM Studio에서 12B와 26B-A4B 계열을 실제로 열어봤습니다. 결론은 “가장 큰 모델을 억지로 여는 것”보다 “작업별로 모델을 나누는 것”이 지금 제 환경에 더 맞다는 쪽입니다.

12B 쪽은 gemma-4-12b-it-qat-heretic-ud-k-xl을 남겨두되, X 번역용은 Qwen/Qwen3-4B-Instruct-2507로 분리했습니다. 다음 글에서는 같은 입력을 기준으로 실제 응답 시간과 수정량을 남겨보겠습니다. 그때도 목적은 모델 홍보가 아니라, Daejin Lab 운영에 붙일 수 있는지 확인하는 것입니다.

확인한 자료와 기록

위 출처는 모델 카드와 실행 후보를 확인하기 위한 자료입니다. 이 글의 실행 결과는 제 M4 Mac mini 16GB 환경에서 남긴 1차 기록일 뿐, 다른 기기에서 같은 속도나 품질을 보장하지 않습니다.

FAQ

Gemma 4 12B는 M4 Mac mini 16GB에서 바로 돌릴 수 있나요?

“로드 가능”만 보면 가능성이 있습니다. 하지만 제 환경에서는 google/gemma-4-12b 계열은 너무 느리게 느껴졌고, gemma-4-12b-it-qat-heretic-ud-k-xl 쪽이 12B 후보로 남았습니다. 아직 정량 속도와 긴 입력 안정성은 따로 봐야 합니다.

공식 모델과 GGUF 모델은 같은 건가요?

같은 원 모델을 기반으로 할 수는 있지만, 확인 목적이 다릅니다. 공식 Google 모델 카드는 원 출처와 기본 정보를 확인하는 기준이고, community GGUF는 로컬 실행을 위한 변환·양자화 후보로 봐야 합니다.

26B-A4B는 16GB Mac에서 쓸 수 있나요?

이번 기록에서는 unsloth/gemma-4-26B-A4B-it-GGUF가 낮은 context와 제한적인 offload 설정으로 로드까지는 가능했습니다. 다만 실제 응답 체감은 실사용 불가에 가까웠기 때문에, 현재 제 환경에서는 운영 후보로 보지 않습니다.

왜 성능 비교를 바로 하지 않았나요?

같은 입력, 같은 설정, 같은 실행 조건으로 반복 측정을 아직 끝내지 않았기 때문입니다. 속도나 품질을 말하려면 cold start와 warm 실행, 한국어 품질, 긴 입력 안정성을 따로 봐야 합니다.

이 모델을 블로그 운영에 쓸 수 있을까요?

가능성은 있지만 아직 작은 보조 작업부터 확인해야 합니다. Daejin Lab 기준으로는 긴 raw 요약, 목차 후보 생성, 내부 링크 후보 제안처럼 사람이 검수할 수 있는 작은 작업부터 테스트하는 것이 맞습니다.

왜 X 번역용은 Qwen3 4B로 바꿨나요?

12B 후보가 품질 확인용으로는 남을 수 있지만, 짧은 X 게시글을 반복해서 번역하는 용도로는 제 환경에서 느리게 느껴졌기 때문입니다. 번역처럼 자주 돌리는 작업은 응답이 빨라야 계속 쓰게 됩니다. 그래서 Qwen/Qwen3-4B-Instruct-2507을 번역용 1차 선택으로 분리했습니다.