핵심 요약
Ollama를 사용하면 Gemma 4를 로컬에서 실행하는 데 5분도 걸리지 않습니다. Ollama를 설치하고 명령 하나만 실행하면, API 비용 없이, 데이터 유출 걱정 없이, 그리고 Apache 2.0 라이선스에 따른 사용 제한 없이 본인의 하드웨어에서 완벽한 성능의 AI 모델을 실행할 수 있습니다. E2B 모델은 모든 노트북에서 실행 가능합니다. 26B MoE 모델은 단일 RTX 4090에 적합하며, 활성 parameter 수가 10x 더 많은 모델과 경쟁할 수 있는 품질을 제공합니다.
Gemma 4 로컬 실행: 전체 가이드
왜 Gemma 4를 로컬에서 실행해야 할까요?
설정을 시작하기 전에, 2026년에 로컬 inference가 중요한 이유는 다음과 같습니다:
- Privacy — 데이터가 기기를 절대 떠나지 않습니다. 외부 서버로 prompt가 전송되지 않습니다. 독점 코드, 법률 문서, 의료 데이터 또는 모든 민감한 정보에 필수적입니다.
- Cost — 일회성 하드웨어 투자 후에는 per-token 비용이 0입니다. 헤비 유저의 경우 API 가격 대비 매달 수백 달러를 절약할 수 있습니다.
- Latency — 네트워크 왕복이 없습니다. E2B 및 E4B 모델은 최신 하드웨어에서 ms 단위로 응답합니다.
- Reliability — API 속도 제한, 중단, 제공업체의 정책 변경이 없습니다. 모델을 항상 사용할 수 있습니다.
- Customization — Apache 2.0 라이선스에 따라 모델을 자유롭게 fine-tune, quantization 및 수정할 수 있습니다.
- Offline access — 모델을 다운로드한 후에는 인터넷 연결 없이도 작동합니다.
Gemma 4는 Google이 소형 모델을 edge 및 온디바이스 용도로 특별히 설계했기 때문에 로컬 배포에 매우 적합합니다. E2B 및 E4B 모델은 구색 맞추기용이 아니라 로컬 하드웨어의 제약 조건에 최적화된 최고 수준의 모델입니다.
Prerequisites
모델별 하드웨어 요구 사항
| 모델 | 최소 RAM | 권장 VRAM | CPU 전용 가능 여부? | 디스크 공간 |
|---|---|---|---|---|
| E2B (4-bit) | 5 GB | 4 GB | 예 | ~1.5 GB |
| E4B (4-bit) | 5 GB | 4 GB | 예 | ~2.8 GB |
| E4B (FP16) | 9 GB | 9 GB | 느림 | ~9 GB |
| 26B MoE (4-bit) | 18 GB | 16 GB | 매우 느림 | ~15 GB |
| 26B MoE (FP16) | 52 GB | 48 GB | 아니요 | ~52 GB |
| 31B Dense (4-bit) | 20 GB | 18 GB | 매우 느림 | ~18 GB |
| 31B Dense (FP16) | 62 GB | 48 GB+ | 아니요 | ~62 GB |
핵심 요약: 2022년 이후에 제작된 노트북을 보유하고 있다면 E2B 또는 E4B를 실행할 수 있습니다. RTX 4090 (24GB VRAM)이나 32GB 이상의 RAM을 탑재한 Apple M-series Mac을 보유하고 있다면 26B MoE 또는 31B Dense를 4-bit quantization으로 실행할 수 있습니다.
소프트웨어 요구 사항
- Operating system: macOS, Linux, 또는 Windows
- Ollama: 버전 0.6+ (ollama.com에서 다운로드)
- GPU drivers (선택 사항): NVIDIA GPU의 경우 NVIDIA CUDA 12+ 필요, Apple Silicon의 경우 별도의 드라이버 필요 없음
1단계: Ollama 설치
macOS
ollama.com/download에서 다운로드하거나 Homebrew를 사용하세요:
brew install ollama
Linux
한 줄 설치 스크립트:
curl -fsSL https://ollama.com/install.sh | sh
Windows
ollama.com/download에서 설치 프로그램을 다운로드하여 실행하세요. Ollama는 Windows에서 백그라운드 서비스로 실행됩니다.
설치 확인
ollama --version
ollama version 0.6.x 이상의 버전이 표시되어야 합니다. 버전 번호가 보이면 Ollama가 올바르게 설치된 것입니다.
2단계: Gemma 4 모델 가져오기
하드웨어에 맞는 모델을 선택하세요:
노트북 및 가벼운 작업을 위한 경우
# 가장 작은 모델 — 모든 최신 노트북에서 실행 가능 (5GB RAM)
ollama pull gemma4:e2b
# 더 넓은 기능을 갖춘 소형 모델 (5-9GB RAM)
ollama pull gemma4:e4b
전용 GPU가 있는 데스크탑의 경우
# 최고의 효율성 — 3.8B 활성 parameter로 플래그십 품질 제공 (18GB RAM)
ollama pull gemma4:26b-moe
# 최고 품질 — 전체 31B parameter (20GB RAM)
ollama pull gemma4:31b
Quantization 지정
기본적으로 Ollama는 각 모델에 권장되는 quantization(일반적으로 품질과 크기의 균형이 좋은 Q4_K_M)을 가져옵니다. 다른 quantization을 지정할 수도 있습니다:
# 더 높은 품질, 더 큰 크기
ollama pull gemma4:31b-q5_K_M
# 더 작은 크기, 약간 낮은 품질
ollama pull gemma4:31b-q3_K_M
# Full precision (훨씬 더 많은 RAM 필요)
ollama pull gemma4:31b-fp16
다운로드 시간은 인터넷 연결 상태에 따라 수 분 정도 소요됩니다. 모델 크기는 약 1.5GB (E2B 4-bit)에서 62GB (31B FP16) 사이입니다.
3단계: Gemma 4 실행
대화형 채팅
ollama run gemma4:e4b
대화형 채팅 세션이 열립니다. prompt를 입력하고 Enter를 누르세요:
>>> What are the key differences between REST and GraphQL APIs?
모델이 터미널에서 즉시 응답합니다. 종료하려면 /bye를 입력하세요.
단일 prompt (비대화형)
echo "Explain the Builder design pattern in Python with an example" | ollama run gemma4:26b-moe
Thinking Mode 사용
Gemma 4는 복잡한 작업을 위해 구성 가능한 thinking mode를 지원합니다. system prompt를 추가하여 활성화하세요:
ollama run gemma4:31b --system "Think step by step before answering. Show your reasoning process."
수학, 논리 및 복잡한 분석 작업의 경우, thinking mode는 답변 품질을 크게 향상시킵니다. 모델은 최종 답변을 내놓기 전에 4,000개 이상의 internal reasoning tokens를 생성합니다.
4단계: 로컬 API 사용
Ollama는 OpenAI API 형식과 호환되는 REST API를 localhost:11434에서 제공합니다. 즉, OpenAI의 API를 지원하는 모든 도구나 라이브러리는 URL만 변경하여 로컬 Gemma 4에 연결할 수 있습니다.
curl로 API 테스트
curl http://localhost:11434/api/generate -d '{
"model": "gemma4:26b-moe",
"prompt": "Write a Python function to parse CSV files with error handling",
"stream": false
}'
OpenAI 호환 Endpoint
curl http://localhost:11434/v1/chat/completions -d '{
"model": "gemma4:26b-moe",
"messages": [
{"role": "user", "content": "Explain async/await in JavaScript"}
]
}'
5단계: 애플리케이션에 통합
Python
import requests
def ask_gemma(prompt, model="gemma4:26b-moe"):
response = requests.post(
"http://localhost:11434/api/generate",
json={
"model": model,
"prompt": prompt,
"stream": False
}
)
return response.json()["response"]
# 사용 예시
answer = ask_gemma("What is the time complexity of merge sort?")
print(answer)
Python (OpenAI SDK 사용)
from openai import OpenAI
# OpenAI 대신 로컬 Ollama를 가리킴
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # Ollama는 실제 API key가 필요하지 않음
)
response = client.chat.completions.create(
model="gemma4:26b-moe",
messages=[
{"role": "system", "content": "You are a helpful coding assistant."},
{"role": "user", "content": "Write a React hook for debounced search"}
]
)
print(response.choices[0].message.content)
Node.js / TypeScript
const response = await fetch("http://localhost:11434/v1/chat/completions", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "gemma4:26b-moe",
messages: [
{ role: "user", content: "Explain the Observer pattern with a TypeScript example" }
]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
LangChain과 함께 사용
from langchain_community.llms import Ollama
llm = Ollama(model="gemma4:26b-moe")
response = llm.invoke("Summarize the key principles of clean architecture")
print(response)
LlamaIndex와 함께 사용
from llama_index.llms.ollama import Ollama
llm = Ollama(model="gemma4:26b-moe", request_timeout=120.0)
response = llm.complete("What are the SOLID principles in software engineering?")
print(response)
Quantization 옵션 설명
Quantization은 모델 가중치를 나타내기 위해 낮은 정밀도의 숫자를 사용하여 모델 크기와 메모리 사용량을 줄입니다. 품질과 자원 사용량 사이의 절충안은 다음과 같습니다:
| 양자화 | 가중치당 비트수 | 품질 영향 | 메모리 절약 | 용도 |
|---|---|---|---|---|
| FP16 | 16 bits | 없음 (최고 품질) | 기준점 | VRAM이 충분한 서버 |
| Q8_0 | 8 bits | 무시할 수 있음 | ~50% | 고품질 로컬 inference |
| Q6_K | 6 bits | 매우 미미함 | ~62% | 품질 중심의 로컬 사용 |
| Q5_K_M | 5 bits | 미미함 | ~69% | 좋은 균형 |
| Q4_K_M | 4 bits | 작음 | ~75% | 권장 기본값 |
| Q3_K_M | 3 bits | 보통 | ~81% | 제한된 하드웨어 |
| Q2_K | 2 bits | 상당함 | ~87% | 극도로 제한된 환경 |
대부분의 사용자에게는 Q4_K_M이 가장 적합합니다. FP16과의 품질 차이가 매우 작아 대부분의 작업에서 결과물을 구별하기 힘들 정도인 반면, 75%의 메모리 절약은 "서버 필요"와 "내 노트북에서 실행 가능"의 차이를 만들어냅니다.
적절한 Quantization 선택하기
Gemma 4 E2B/E4B: 기본값(Q4_K_M)을 사용하세요. 이 모델들은 이미 충분히 작기 때문에 더 높은 quantization을 사용해도 사용자 경험이 크게 변하지 않습니다.
Gemma 4 26B MoE: Q4_K_M은 18GB RAM에 적합하며, 이는 RTX 4090의 24GB VRAM 내에서 KV cache를 위한 여유 공간을 두고 충분히 돌아갑니다. 48GB 이상의 VRAM (A6000, 듀얼 GPU)을 보유하고 있다면 약간 더 나은 품질을 위해 Q8_0을 고려해 보세요.
Gemma 4 31B Dense: 20GB인 Q4_K_M은 RTX 4090에서 아슬아슬하게 적합합니다. Q5_K_M은 약간 더 나은 결과를 제공하지만 약 24GB가 필요하여 사용 가능한 모든 VRAM을 소모합니다. 32GB 이상의 VRAM (RTX 5090, A6000)을 보유하고 있다면 Q6_K 또는 Q8_0으로 업그레이드할 가치가 있습니다.
Performance Tuning
GPU Offloading
Ollama는 VRAM이 사용 가능할 때 모델 레이어를 GPU로 자동 offload합니다. 모델의 일부만 VRAM에 맞는 경우, Ollama는 GPU와 CPU 간에 분할합니다. 이를 제어할 수 있습니다:
# 모든 레이어를 GPU로 강제 전송 (VRAM 부족 시 실패)
OLLAMA_NUM_GPU=999 ollama run gemma4:26b-moe
# CPU만 사용하도록 강제 (테스트용으로 유용)
OLLAMA_NUM_GPU=0 ollama run gemma4:e4b
Context Window 구성
기본적으로 Ollama는 효율성을 위해 2048 tokens의 context window를 사용합니다. Gemma 4의 전체 context 기능을 활용하려면 다음과 같이 하세요:
# context window를 32K tokens로 설정
ollama run gemma4:26b-moe --num-ctx 32768
# context window를 128K tokens로 설정 (더 많은 RAM 필요)
ollama run gemma4:26b-moe --num-ctx 131072
중요: context window가 클수록 KV cache를 위해 더 많은 RAM을 소비합니다. 31B 모델에서 128K context window를 사용하면 모델 가중치 외에 8-16GB의 추가 RAM이 필요할 수 있습니다. 32K로 시작하여 사용 사례에 필요한 경우에만 늘리세요.
Concurrent Requests
Ollama는 여러 요청을 동시에 처리하는 것을 지원합니다:
# 최대 4개의 동시 요청 허용
OLLAMA_NUM_PARALLEL=4 ollama serve
각 동시 요청은 KV cache를 위한 메모리 오버헤드를 추가합니다. Q4_K_M (~18GB)에서 26B MoE를 실행하는 24GB GPU의 경우 약 6GB의 여유 공간이 있으며, 이는 짧은 context를 가진 2-3개의 동시 요청에 충분한 양입니다.
Keep-Alive 설정
기본적으로 Ollama는 마지막 요청 후 5분 동안 메모리에 모델을 로드된 상태로 유지합니다. 사용 사례에 맞게 이를 조정하세요:
# 모델을 1시간 동안 로드된 상태로 유지
OLLAMA_KEEP_ALIVE=3600 ollama serve
# 모델을 무기한으로 로드된 상태로 유지
OLLAMA_KEEP_ALIVE=-1 ollama serve
# 각 요청 직후에 즉시 언로드 (메모리 절약)
OLLAMA_KEEP_ALIVE=0 ollama serve
NVIDIA RTX Optimization
NVIDIA는 RTX GPU를 위한 Gemma 4 최적화 빌드를 출시했습니다. 이러한 최적화에는 다음이 포함됩니다:
- Gemma 4의 attention 메커니즘을 위한 커스텀 CUDA kernels
- 더 빠른 inference를 위한 TensorRT-LLM 통합
- 긴 context inference 중 메모리 사용량 감소를 위한 Flash Attention 지원
- 더 나은 throughput을 위한 최적화된 KV cache 관리
최적화된 NVIDIA Gemma 4 설치하기
RTX 4000 또는 5000 시리즈 GPU를 보유하고 있다면:
# GPU 확인
nvidia-smi
# NVIDIA 최적화 버전 가져오기 (Ollama에서 사용 가능한 경우)
ollama pull gemma4:31b-nvidia
또는 최고의 성능을 위해 NVIDIA의 AI Workbench 또는 TensorRT-LLM을 직접 사용하세요. NVIDIA 최적화 버전은 표준 Ollama 빌드에 비해 RTX GPU에서 30-50% 더 빠른 inference를 제공할 수 있습니다.
실세계 Performance Benchmarks
일반적인 하드웨어 구성에서 측정된 값입니다:
Tokens per Second (생성 속도)
| 모델 | RTX 4090 (24GB) | RTX 3090 (24GB) | M3 Max (36GB) | CPU Only (32GB) |
|---|---|---|---|---|
| E2B (Q4) | ~150 tok/s | ~120 tok/s | ~100 tok/s | ~30 tok/s |
| E4B (Q4) | ~100 tok/s | ~80 tok/s | ~70 tok/s | ~15 tok/s |
| 26B MoE (Q4) | ~40 tok/s | ~30 tok/s | ~25 tok/s | ~3 tok/s |
| 31B Dense (Q4) | ~30 tok/s | ~20 tok/s | ~20 tok/s | ~2 tok/s |
참고: 인간의 읽기 속도는 초당 약 4-5 tokens입니다. 10 tok/s 이상을 생성하는 모든 모델은 대화형 사용 시 "즉각적"인 느낌을 줍니다. E2B 및 E4B 모델은 거의 모든 하드웨어에서 실시간 스트리밍이 가능할 만큼 빠릅니다.
Time to First Token (Latency)
| 모델 | RTX 4090 | M3 Max | CPU Only |
|---|---|---|---|
| E2B | <100ms | <200ms | <500ms |
| E4B | <200ms | <300ms | ~1s |
| 26B MoE | ~500ms | ~1s | ~5s |
| 31B Dense | ~800ms | ~1.5s | ~8s |
대화형 애플리케이션의 경우 생성 속도보다 time to first token이 더 중요합니다. E2B 및 E4B 모델은 CPU에서도 거의 즉시 생성을 시작하므로 실시간 채팅 인터페이스에 이상적입니다.
일반적인 Use Cases
로컬 코딩 어시스턴트
코드를 외부 서버로 절대 보내지 않는 개인용 코딩 어시스턴트로 Gemma 4를 사용하세요:
ollama run gemma4:26b-moe --system "You are an expert software engineer. When given code, analyze it for bugs, suggest improvements, and explain your reasoning. Be concise and practical."
Ollama를 백엔드로 지원하는 Continue 또는 Twinny와 같은 VS Code 확장 프로그램과 연동하여 사용하세요.
문서 분석
민감한 문서를 로컬에서 처리하세요:
echo "Analyze this contract clause and identify potential risks: [paste clause]" | ollama run gemma4:31b
256K context를 갖춘 31B 모델은 약 750페이지 분량의 문서를 처리할 수 있으며, 이는 대부분의 계약서, 연구 논문 및 기술 문서에 충분한 양입니다.
로컬 RAG (Retrieval-Augmented Generation)
Gemma 4를 로컬 vector database와 결합하여 완전한 프라이빗 RAG 시스템을 구축하세요:
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
# embeddings와 생성 모두에 Gemma 4 사용
embeddings = OllamaEmbeddings(model="gemma4:e4b")
llm = Ollama(model="gemma4:26b-moe")
# 문서에서 vector store 생성
vectorstore = Chroma.from_documents(documents, embeddings)
# RAG로 쿼리
retriever = vectorstore.as_retriever()
docs = retriever.get_relevant_documents("What is our refund policy?")
context = "\n".join([doc.page_content for doc in docs])
response = llm.invoke(f"Based on this context:\n{context}\n\nAnswer: What is our refund policy?")
애플리케이션에 AI 기능 빌드하기
AI 기능을 갖춘 애플리케이션을 빌드하는 개발자에게 Ollama의 API를 통해 Gemma 4를 로컬에서 실행하는 것은 작동하는 프로토타입을 만드는 가장 빠른 방법입니다. OpenAI 호환 API 덕분에 개발 시에는 로컬 Gemma 4를 사용하고, 운영 시에는 애플리케이션 코드 변경 없이 클라우드 API로 전환할 수 있습니다.
ZBuild와 같은 플랫폼은 프런트엔드, 백엔드, 인증, 데이터베이스 등의 애플리케이션 인프라를 처리할 수 있으며, 개발자는 AI 통합 레이어에만 집중하면 됩니다. 개발 중에는 애플리케이션의 AI endpoint를 localhost:11434로 지정하고, 확장이 준비되면 클라우드 endpoint로 교체하세요.
Troubleshooting
"Out of memory" 오류
메모리 오류가 발생하는 경우:
- 더 낮은 quantization을 시도하세요:
ollama pull gemma4:31b-q3_K_M - context window를 줄이세요:
--num-ctx 4096 - 다른 GPU 집약적 애플리케이션을 종료하세요.
- 더 작은 모델로 전환하세요: 26B MoE는 더 낮은 메모리 비용으로 31B에 근접한 품질을 제공합니다.
느린 생성 속도
생성 속도가 예상보다 느린 경우:
- GPU 사용량을 확인하세요:
nvidia-smi(높은 GPU 사용량이 표시되어야 함) - 모델이 VRAM에 완전히 맞는지 확인하세요. 일부를 CPU로 offloading하면 속도가 크게 저하됩니다.
- 계산을 위한 VRAM 공간을 확보하기 위해
--num-ctx를 줄이세요. - 다른 프로세스가 GPU를 사용 중인지 확인하세요.
모델을 찾을 수 없음
ollama run gemma4:26b-moe가 실패하는 경우:
# 사용 가능한 모델 목록 확인
ollama list
# Gemma 4 모델 검색
ollama search gemma4
# 특정 모델 가져오기
ollama pull gemma4:26b-moe
API 연결 거부
애플리케이션이 localhost:11434에 연결할 수 없는 경우:
# Ollama가 실행 중인지 확인
ollama list
# Ollama 서버를 수동으로 시작
ollama serve
# 포트 확인
curl http://localhost:11434/api/tags
모델 선택 의사결정 트리
이 트리를 사용하여 적합한 모델을 빠르게 선택하세요:
16GB 이상의 VRAM을 갖춘 전용 GPU가 있습니까?
- 예 → 최고 품질을 원하십니까, 아니면 최고의 효율성을 원하십니까?
- 최고 품질 →
gemma4:31b(Q4_K_M, 20GB 필요) - 최고의 효율성 →
gemma4:26b-moe(Q4_K_M, 18GB 필요)
- 최고 품질 →
- 아니요 → 8GB 이상의 RAM이 있습니까?
- 예 →
gemma4:e4b(Q4_K_M, 더 나은 품질) - 아니요 →
gemma4:e2b(Q4_K_M, 5GB에서 실행 가능)
- 예 →
최신 데스크탑 또는 게이밍 PC를 보유한 대부분의 개발자: gemma4:26b-moe로 시작하세요. 전체 Gemma 4 제품군 중 품질 대비 자원 비율이 가장 뛰어납니다.
빌드할 수 있는 것들
Gemma 4를 로컬에서 실행하면 비용 부담 없는 AI 백엔드를 통해 다음을 수행할 수 있습니다:
- 대화의 Privacy가 완벽히 보장되는 채팅 애플리케이션
- 독점 코드베이스에서 작동하는 코드 분석 도구
- 민감한 데이터를 위한 문서 처리 파이프라인
- 오프라인에서 작동하는 로컬 AI 어시스턴트
- 클라우드 API 비용을 지불하기 전의 프로토타입 AI 기능
- 특정 도메인 작업에 특화된 Fine-tuned 모델 (Apache 2.0 라이선스로 자유롭게 가능)
Apache 2.0 라이선스는 당신이 빌드한 모든 것이 당신의 소유임을 의미합니다. 사용 제한도, 수익 공유도, 승인 절차도 필요 없습니다. 로컬에서 실행하고, 서버에 배포하고, 제품에 내장하세요. 이것이 진정으로 열려 있는 AI의 모습입니다.
Sources
- Gemma 4 Announcement - Google Blog
- Gemma 4 on Ollama
- Ollama Installation Guide
- Ollama API Documentation
- NVIDIA Gemma 4 RTX Optimization
- Gemma 4 Technical Report - Google DeepMind
- Gemma 4 Hugging Face Models
- Continue.dev - Local AI Code Assistant
- LangChain Ollama Integration
- Google AI for Developers - Gemma