🤖 AI/ML

Gemma

Google의 오픈 소스 경량 언어 모델

📖 상세 설명

Gemma는 Google DeepMind가 공개한 오픈소스 경량 언어 모델 제품군입니다. Gemini를 만든 동일한 연구 기술로 제작되었지만, 누구나 무료로 다운로드하여 로컬 환경에서 실행하고 상업적으로 활용할 수 있습니다.

2024년 2월 첫 출시 이후, 2025년에 Gemma 3가 발표되며 오픈소스 LLM 생태계를 뒤흔들었습니다. Gemma 3 27B 모델은 단일 GPU에서 실행 가능하면서도 Llama 3 405B, DeepSeek-V3 등 훨씬 큰 모델들을 LMArena 벤치마크에서 능가하는 성능을 보여줍니다.

모델 라인업은 270M, 1B, 4B, 12B, 27B 5가지 크기로 제공됩니다. 128K 토큰 컨텍스트 윈도우, 35개 이상 언어 지원, 텍스트+이미지 멀티모달, Function Calling까지 지원합니다. 특히 Gemma 3n은 모바일 최적화 버전으로 스마트폰에서 실시간 AI를 구현할 수 있습니다.

실무에서 Gemma는 API 비용 없이 자체 서버에서 LLM을 운영하고 싶을 때 최선의 선택입니다. 2025년 8월 기준 2억 회 이상 다운로드되었으며, Hugging Face에서 가장 인기 있는 오픈소스 LLM 중 하나입니다. 민감한 데이터를 다루는 금융/의료 분야에서 특히 선호됩니다.

💻 코드 예제

# Gemma 3 로컬 실행 예제 (Hugging Face Transformers)
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# 1. 모델 로드 (4B 모델 - 8GB VRAM이면 충분)
model_id = "google/gemma-3-4b-it"  # instruction-tuned 버전
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,  # 메모리 절약
    device_map="auto"  # GPU 자동 할당
)

# 2. 텍스트 생성
prompt = """user
한국어로 간단한 FastAPI 서버 코드를 작성해줘.
헬스체크 엔드포인트 포함해서.
model
"""

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
    **inputs,
    max_new_tokens=500,
    temperature=0.7,
    do_sample=True
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

# 3. vLLM으로 고성능 서빙 (프로덕션용)
# pip install vllm
from vllm import LLM, SamplingParams

llm = LLM(model="google/gemma-3-12b-it", tensor_parallel_size=1)
sampling_params = SamplingParams(temperature=0.7, max_tokens=512)

prompts = [
    "Python에서 비동기 처리의 장단점을 설명해줘",
    "React와 Vue의 주요 차이점은?"
]
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    print(f"Prompt: {output.prompt[:50]}...")
    print(f"Response: {output.outputs[0].text}\n")

# 4. Ollama로 간편 실행 (로컬 개발용)
# 터미널: ollama run gemma3:27b
import requests
response = requests.post("http://localhost:11434/api/generate", json={
    "model": "gemma3:12b",
    "prompt": "Kubernetes와 Docker의 관계를 설명해줘",
    "stream": False
})
print(response.json()["response"])

🗣️ 실무에서 이렇게 말하세요

💬 회의에서
"고객 데이터가 외부로 나가면 안 되는 상황이니까, Gemma 3 12B를 자체 서버에 올려서 쓰겠습니다. RTX 4090 한 장이면 충분하고, API 비용도 제로입니다."
💬 면접에서
"Gemma는 Gemini와 동일한 아키텍처 기반이지만 오픈소스로 공개된 경량 버전입니다. 27B 모델이 Llama 405B보다 높은 벤치마크 점수를 기록하는 건 Google의 학습 데이터 품질과 효율적인 아키텍처 덕분입니다."
💬 기술 토론에서
"QAT(Quantization-Aware Training) 버전 써보세요. 4bit 양자화해도 성능 손실이 거의 없어서, 8GB VRAM 노트북에서도 12B 모델 돌릴 수 있어요."

⚠️ 흔한 실수 & 주의사항

base 모델을 그대로 사용

Gemma base 모델은 채팅용이 아닙니다. 반드시 "-it" (instruction-tuned) 버전을 사용하세요. 예: gemma-3-4b-it

프롬프트 포맷 무시

Gemma 3는 특정 턴 포맷을 사용합니다. <start_of_turn>user/model 태그 없이 입력하면 품질이 급격히 떨어집니다.

올바른 방법: vLLM 또는 Ollama로 서빙

Transformers로 직접 로드하면 느립니다. 프로덕션에서는 vLLM(고성능), 개발 테스트는 Ollama(간편함)를 권장합니다. 토큰/초가 5배 이상 차이납니다.

🔗 관련 용어

📚 더 배우기