본문 바로가기
IT/AI

[AI] Ollama로 Mac mini에서 Gemma 4 26B 실행: Flash Attention 최적화 가이드

by 수누다 2026. 4. 14.

Mac mini에서 로컬 LLM을 돌려보겠다고 마음먹은 날

솔직히 말씀드리면, 처음 Gemma 4 26B 모델 스펙을 봤을 때 '이거 Mac mini에서 돌아가긴 하나?' 싶었거든요. 26B라는 파라미터 수가 주는 압박감이 있잖아요. 근데 Apple Silicon(애플 실리콘)이 메모리 대역폭 면에서 워낙 독보적이라, 혹시나 하는 마음에 직접 돌려봤습니다. 결론부터 말씀드리면 — 됩니다. 생각보다 훨씬 잘 됩니다.

저는 지금 홈랩에 Mac mini M4 Pro(48GB 유니파이드 메모리)를 두고 각종 온디바이스 AI 실험을 하고 있는데요. Ollama로 로컬 LLM을 세팅하면서 삽질을 꽤 했습니다. 이 글에서는 그 과정을 그대로 보여드릴게요. Ollama와 Gemma 4 26B를 Mac mini에서 최적화해서 실행하는 방법, 처음부터 끝까지 같이 따라가 봅시다.

Mac mini M4 Pro에서 Ollama와 Gemma 4 26B 로컬 LLM 전체 구성 아키텍처 다이어그램

▲ Mac mini M4 Pro 기반 Ollama 로컬 LLM 전체 구성 개요 — Gemma 4 26B 모델이 유니파이드 메모리를 통해 GPU와 CPU를 통합 활용하는 구조입니다.

Ollama와 Gemma 4 26B가 뭔지 먼저 짚고 넘어갑시다

Ollama란?

Ollama는 로컬 LLM(대규모 언어 모델)을 아주 쉽게 실행할 수 있게 해주는 오픈소스 런타임입니다. 복잡한 파이썬 환경 세팅 없이 명령어 한 줄로 AI 모델을 내 컴퓨터에서 돌릴 수 있다는 게 가장 큰 장점이에요. Docker처럼 이미지 개념으로 모델을 관리한다고 생각하면 편합니다.

Apple Silicon 환경에서는 Metal(메탈, Apple의 GPU 가속 API)을 자동으로 활용해서 GPU 연산을 극대화해줍니다. 이게 핵심이거든요.

Gemma 4 26B란?

Google DeepMind에서 공개한 Gemma 시리즈의 최신 모델입니다. 26B는 260억 개의 파라미터(매개변수)를 가졌다는 뜻인데, 로컬 실행 가능한 모델 중에서는 꽤 상위권에 속해요. 특히 멀티모달(텍스트+이미지 처리) 능력이 강화됐고, 한국어 성능도 이전 세대 대비 눈에 띄게 좋아졌더라고요.

항목 Gemma 4 26B Gemma 3 12B Llama 3.3 70B
파라미터 수 26B 12B 70B
권장 VRAM/메모리 32GB+ 16GB+ 48GB+
한국어 성능 ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
멀티모달 ✅ 지원 ✅ 지원 ❌ 미지원
Mac mini M4 Pro 48GB 실행 ✅ 원활 ✅ 매우 원활 ⚠️ 느림

사전 준비: 하드웨어 요구사항 확인

여기서 중요한 포인트! Mac mini에서 Gemma 4 26B를 돌리려면 메모리가 핵심입니다. Q4 양자화(Quantization, 모델 정밀도를 줄여 용량과 메모리를 절약하는 기법) 기준으로 약 18~20GB의 메모리가 필요해요.

  • 최소 사양: Mac mini M4 (24GB 유니파이드 메모리) — 가능하긴 한데, 시스템 메모리와 경쟁해서 좀 빡빡합니다
  • 권장 사양: Mac mini M4 Pro (48GB 유니파이드 메모리) — 여유롭게 돌아갑니다
  • macOS 버전: Sequoia 15.0 이상 권장
  • 저장 공간: Gemma 4 26B Q4 기준 약 17GB 여유 공간 필요

저는 M4 Pro 48GB 모델을 쓰고 있어서 비교적 여유롭게 진행했는데요. 24GB 모델에서도 가능하니까 일단 따라와 보세요.

Ollama 설치부터 Gemma 4 26B 실행까지: 단계별 가이드

1단계: Ollama 설치

공식 사이트에서 받거나, Homebrew로 설치하면 됩니다. 저는 Homebrew를 선호해요. 관리가 편하거든요.

# Homebrew로 Ollama 설치
brew install ollama

# 또는 공식 설치 스크립트 사용
curl -fsSL https://ollama.com/install.sh | sh

설치 완료 후 버전 확인:

ollama --version
# ollama version is 0.6.x (2025년 기준)

2단계: Ollama 서비스 시작

# Ollama 서버 백그라운드 실행
ollama serve &

# 또는 macOS 서비스로 등록 (재부팅 후에도 자동 시작)
brew services start ollama

저는 항상 brew services로 등록해두는 편이에요. 재부팅할 때마다 수동으로 켜는 게 귀찮아서요 ㅎㅎ

3단계: Gemma 4 26B 모델 다운로드

여기서 선택지가 생깁니다. 양자화 방식에 따라 성능과 메모리 사용량이 달라지거든요.

# Q4_K_M 양자화 버전 (권장 — 품질과 속도의 균형)
ollama pull gemma4:27b

# 특정 양자화 버전 지정
ollama pull gemma4:27b-instruct-q4_K_M

# 더 높은 품질 (메모리 여유 있을 때)
ollama pull gemma4:27b-instruct-q8_0

💡 : Ollama에서는 Gemma 4 26B를 '27b'로 표기하기도 합니다. 실제 파라미터 수 반올림 때문인데, 같은 모델이에요. 헷갈리지 마세요!

다운로드에는 네트워크 속도에 따라 10~30분 정도 걸립니다. 저는 기가 인터넷인데도 17GB 받는 데 꽤 걸렸어요.

Mac mini 터미널에서 Ollama로 Gemma 4 26B 모델 다운로드 진행 화면

▲ Mac mini 터미널에서 Ollama로 Gemma 4 26B 모델을 다운로드하는 화면 — Q4_K_M 양자화 버전 기준 약 17GB를 받습니다.

4단계: 기본 실행 테스트

# 대화형 모드로 실행
ollama run gemma4:27b

# 단일 질의 모드
ollama run gemma4:27b "안녕하세요, 간단히 자기소개 해주세요"

처음 실행할 때 모델 로딩에 30초~1분 정도 걸릴 수 있어요. 두 번째부터는 메모리에 캐시돼서 훨씬 빨라집니다.

5단계: 성능 최적화 설정 (핵심!)

여기서부터가 진짜입니다. 기본 설정으로 돌리면 생각보다 느릴 수 있어요. 환경 변수로 세밀하게 튜닝해봅시다.

# GPU 레이어 수 설정 (Apple Silicon은 전체 GPU 활용)
export OLLAMA_GPU_LAYERS=99

# 병렬 요청 처리 수 (홈랩에서 혼자 쓴다면 1로 충분)
export OLLAMA_NUM_PARALLEL=1

# 로드된 모델 수 제한 (메모리 효율)
export OLLAMA_MAX_LOADED_MODELS=1

# 플래시 어텐션 활성화 (메모리 효율 향상, 속도 3배 증가)
export OLLAMA_FLASH_ATTENTION=1

이 설정을 ~/.zshrc~/.bash_profile에 추가해두면 영구 적용됩니다.

# ~/.zshrc에 추가
echo 'export OLLAMA_GPU_LAYERS=99' >> ~/.zshrc
echo 'export OLLAMA_FLASH_ATTENTION=1' >> ~/.zshrc
echo 'export OLLAMA_MAX_LOADED_MODELS=1' >> ~/.zshrc
source ~/.zshrc

6단계: Modelfile로 커스텀 모델 프로파일 만들기

Modelfile은 Ollama에서 모델 동작 방식을 세부 조정하는 설정 파일입니다. Docker의 Dockerfile처럼 개념이 비슷해요.

# ~/ollama-models/Modelfile.gemma4 파일 생성
mkdir -p ~/ollama-models
cat > ~/ollama-models/Modelfile.gemma4 << 'EOF'
FROM gemma4:27b

# 시스템 프롬프트 설정
SYSTEM """
당신은 친절하고 정확한 AI 어시스턴트입니다.
한국어로 질문하면 한국어로 답변하고,
영어로 질문하면 영어로 답변합니다.
"""

# 컨텍스트 길이 설정 (토큰 수)
PARAMETER num_ctx 8192

# 온도 설정 (0~1, 낮을수록 일관된 답변)
PARAMETER temperature 0.7

# Top-P 샘플링
PARAMETER top_p 0.9

# 반복 패널티 (같은 말 반복 방지)
PARAMETER repeat_penalty 1.1
EOF

# 커스텀 모델 생성
ollama create gemma4-ko -f ~/ollama-models/Modelfile.gemma4
# 커스텀 모델 실행
ollama run gemma4-ko

⚠️ 삽질 기록: 이런 문제들이 있었습니다

문제 1: 첫 실행 시 메모리 부족 오류

24GB Mac mini에서 Q8 버전을 돌리려다가 OOM(Out of Memory, 메모리 부족) 오류를 만났어요. 증상은 Ollama가 조용히 죽어버리는 거였는데, 처음엔 이게 메모리 문제인지도 몰랐습니다.

# 해결: Activity Monitor에서 메모리 압박 확인
# 또는 터미널에서 확인
vm_stat | grep -E "Pages (free|active|inactive|wired)"

# 메모리 여유가 부족하면 더 낮은 양자화 버전으로
ollama pull gemma4:27b-instruct-q4_0  # Q4_0은 더 가벼움

문제 2: 응답 속도가 예상보다 느림

처음 기본 설정으로 돌렸을 때 토큰 생성 속도가 5~8 tok/s(토큰/초) 정도밖에 안 나왔어요. OLLAMA_FLASH_ATTENTION=1 설정 후 15~20 tok/s로 올라갔습니다. 이거 진짜 효과 있더라고요.

문제 3: Ollama 서버가 외부에서 접근이 안 됨

홈랩 내 다른 기기에서 API로 접근하려는데 안 되는 거예요. 기본적으로 Ollama는 localhost만 바인딩하거든요.

# 외부 접근 허용 (홈랩 내부 네트워크용)
export OLLAMA_HOST=0.0.0.0:11434

# 또는 특정 IP만 허용
export OLLAMA_HOST=192.168.1.100:11434

⚠️ 주의: 이 설정 시 방화벽 설정도 꼭 같이 확인하세요. 외부 인터넷에 노출되지 않도록 라우터/방화벽에서 포트 11434를 내부 네트워크로만 제한해야 합니다.

문제 4: 한국어 응답이 갑자기 영어로 바뀜

한국어로 대화하다 보면 중간에 영어 섞인 답변이 나오는 경우가 있었어요. Modelfile에 시스템 프롬프트를 명시적으로 지정해두니까 훨씬 일관되게 한국어로 답변하더라고요. 위에 소개한 Modelfile 설정이 이 문제 해결용이기도 합니다.

API 활용: Open WebUI로 ChatGPT처럼 사용하기

터미널에서만 쓰면 아무래도 불편하잖아요. Open WebUI를 연결하면 ChatGPT 같은 웹 인터페이스로 쓸 수 있습니다.

# Docker로 Open WebUI 실행
docker run -d \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

이제 브라우저에서 http://localhost:3000으로 접속하면 됩니다. 🎉

REST API로 직접 호출하고 싶다면:

# curl로 API 테스트
curl http://localhost:11434/api/generate \
  -d '{
    "model": "gemma4-ko",
    "prompt": "파이썬으로 피보나치 수열을 구현해줘",
    "stream": false
  }'

# 스트리밍 응답 (실시간 출력)
curl http://localhost:11434/api/chat \
  -d '{
    "model": "gemma4-ko",
    "messages": [
      {"role": "user", "content": "안녕하세요!"}
    ]
  }'

실제 성능 측정 결과

드디어 됐다! 싶었을 때 바로 벤치마크를 돌려봤습니다. Mac mini M4 Pro 48GB 기준 실측 수치예요.

Mac mini M4 Pro에서 Ollama Gemma 4 26B 토큰 생성 속도 및 메모리 사용량 성능 벤치마크 대시보드

▲ Mac mini M4 Pro 48GB에서 Ollama Gemma 4 26B 실행 성능 벤치마크 — 토큰 생성 속도, 메모리 사용량, GPU 활용률을 시각화한 결과입니다.

# 성능 측정 명령어
ollama run gemma4-ko --verbose "한국의 역사를 간략히 설명해줘"
측정 항목 기본 설정 Flash Attention 최적화 후
토큰 생성 속도 (tok/s) 6~8 16~22 (3배 향상)
첫 토큰 응답 시간 (TTFT) 3~5초 1~2초
메모리 사용량 ~22GB ~19GB
GPU 활용률 60~70% 85~95%
CPU 사용률 30~40% 10~15%

최적화 전후 차이가 꽤 크죠? 특히 Flash Attention 활성화 후 메모리 효율이 올라가면서 GPU가 더 많이 활용되는 게 핵심이었습니다. 16~22 tok/s면 일반적인 대화에서 거의 실시간으로 느껴지는 속도예요.

자주 묻는 질문 (FAQ)

Q. Mac mini M4 24GB에서도 Gemma 4 26B 실행이 가능한가요?

가능합니다. Q4_0 양자화 버전(약 14GB)을 사용하면 실행은 되는데, 시스템 메모리와 경쟁하다 보면 속도가 8~12 tok/s 수준으로 떨어질 수 있어요. macOS 자체가 메모리를 좀 쓰거든요. 여유롭게 쓰려면 48GB를 권장합니다.

Q. Ollama 모델 파일 저장 위치를 바꿀 수 있나요?

네, 가능합니다. 기본 경로는 ~/.ollama/models인데, 용량이 큰 외장 SSD로 옮기고 싶다면:

export OLLAMA_MODELS=/Volumes/ExternalSSD/ollama-models

이 환경 변수를 설정하고 Ollama를 재시작하면 됩니다.

Q. Gemma 4 26B로 이미지도 분석할 수 있나요?

Gemma 4는 멀티모달을 지원하는데, Ollama에서 이미지 입력은 API나 Open WebUI를 통해 가능합니다. 터미널 대화 모드에서는 아직 제한적이에요.

Q. 여러 모델을 동시에 로드할 수 있나요?

메모리가 충분하다면 가능합니다. 하지만 26B 모델 하나가 20GB 가까이 먹으니까 48GB에서 두 개 동시 로드는 어렵고요. OLLAMA_MAX_LOADED_MODELS=1로 설정해서 한 번에 하나만 로드하는 게 안정적입니다.

Mac mini Apple Silicon Ollama 로컬 LLM 최적화 전후 성능 비교 인포그래픽

▲ Mac mini Apple Silicon에서 Ollama 로컬 LLM 최적화 전후 비교 인포그래픽 — 환경 변수 설정과 Modelfile 커스터마이징으로 달라지는 성능 지표를 한눈에 정리했습니다.

정리하며: 로컬 LLM, 이제 진입 장벽이 많이 낮아졌습니다

13년 동안 인프라 일을 하면서 AI 붐을 여러 번 봤는데요. 이번엔 진짜 다르다는 느낌이 납니다. 불과 2~3년 전만 해도 26B 파라미터 모델을 로컬에서 돌린다는 건 고사양 워크스테이션이 있어야 가능한 얘기였거든요. 근데 지금은 Mac mini 하나로 이게 돼요. 온디바이스 AI가 현실이 된 거죠.

핵심 정리해드리면:

  • ✅ Ollama 설치 → brew install ollama로 간단하게
  • ✅ Gemma 4 26B 다운로드 → ollama pull gemma4:27b
  • ✅ Flash Attention 활성화 → OLLAMA_FLASH_ATTENTION=1로 토큰 생성 속도 3배 향상
  • ✅ Modelfile로 한국어 시스템 프롬프트 고정
  • ✅ Open WebUI 연결로 ChatGPT처럼 사용

다음 글에서는 Ollama API를 활용해서 홈랩 자동화 스크립트와 연동하는 방법을 다룰 예정이에요. LLM이 서버 로그를 분석해서 이상 징후를 알려주는 파이프라인인데, 생각보다 만들기 어렵지 않습니다. 기대해 주세요!

혹시 세팅 중에 막히는 부분이 있으시면 댓글로 남겨주세요. 제가 겪은 삽질이 여러분의 시간을 아껴드릴 수 있으면 좋겠습니다. 😊