Google의 Gemma 3n은 2B/4B 파라미터로 멀티모달 기능을 제공하는 경량 AI 모델입니다. 선택적 파라미터 활성화 기술을 통해 모바일 환경에서도 높은 성능을 발휘할 수 있어, 온디바이스 AI 구현에 최적화되어 있습니다.

이 가이드에서는 Gemma 3n 모델 선택부터 실전 배포까지 개발자가 알아야 할 모든 것을 다룹니다.

Gemma 3n 라인업 완전 분석

모델 선택 가이드

모델 이름 파라미터(효과치) 튜닝 여부 특징 대표 용도
google/gemma-3n-E2B 2B Base 가장 가볍고 빠름 자체 파인튜닝용(엣지·모바일 추론, 작은 연구 실험)
google/gemma-3n-E2B-it 2B Instruct 2B 속도 + 대화식 사용 준비 완료 챗봇, 간단한 이미지 질문답변, 앱 내 어시스턴트
google/gemma-3n-E4B 4B Base 더 높은 정확도·맥락 이해 고품질 파인튜닝(문서 요약, 특화 서비스 백엔드)
google/gemma-3n-E4B-it 4B Instruct 4B 성능 + 즉시 대화 가능 고성능 멀티모달 챗봇, 리서치 프로토타입

E2B/E4BSelective Parameter Activation 덕분에 실제로는 더 큰 모델이지만 2B·4B만 활성화해도 동작합니다. 덕분에 모바일·노트북에서도 원활하게 실행할 수 있습니다.

-it(instruction-tuned)는 추가로 “사람 말을 따라 하는 법”을 학습해 바로 ChatGPT처럼 대화할 수 있게 만들어 둔 버전입니다.

Base vs Instruct 선택 기준

구분 Base(미가공) Instruct(완제품)
기본 동작 “다음 토큰 예측” 중심, 거친 출력 질문하면 친절히 답변, 포맷·안전성 정제
주 용도 • 내 데이터로 파인튜닝
• 특수 태스크(분류, 요약 등) 백엔드 컴포넌트
• 바로 쓰는 챗봇/비서
• 프로토타입, PoC, 데모
장점 • 자유도 높음
• 작은 데이터로 재학습 용이
• 학습 없이도 바로 사용
• 거부·안전 필터 포함
주의점 • 프롬프트만으로는 말 안 들을 수 있음
• 안전필터 없음
• 출력이 과하게 정중할 수도 있음
• 세밀한 제어엔 한계

개발 환경 구축하기

huggingface-gemma-recipes 활용

Hugging Face에서 제공하는 huggingface-gemma-recipes 리포지토리는 Gemma 3n 모델을 위한 원스톱 스타터 킷입니다.

git clone https://github.com/huggingface/huggingface-gemma-recipes.git
cd huggingface-gemma-recipes
pip install -r requirements.txt

리포지토리 구조

경로 내용 중요도
README.md 설치, 단일 함수 추론 데모, 모달리티 예제, Colab 튜너 링크 로컬 테스트 가장 빠른 방법
notebooks/ T4에서 Gemma 3n 파인튜닝, 이미지 파인튜닝, 오디오 파인튜닝, 이미지 TRL 파인튜닝 바로 실행 가능한 레시피
scripts/ 노트북을 미러링하는 CLI 래퍼 CI나 클라우드 트레이너에서 사용
requirements.txt transformers>=4.51, timm, trl, peft, bitsandbytes 모든 레시피를 동일한 의존성으로 유지

빠른 시작 코드

from transformers import AutoProcessor, AutoModelForImageTextToText

model_id = "google/gemma-3n-e4b-it"  # 또는 -e2b-it for 2B
proc = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id).to("cuda")

def chat(messages):
    inputs = proc.apply_chat_template(
        messages, 
        add_generation_prompt=True,
        tokenize=True, 
        return_tensors="pt"
    ).to(model.device)
    
    out = model.generate(**inputs, max_new_tokens=32)
    return proc.decode(out[0], skip_special_tokens=True)

# 사용 예시
messages = [{"role": "user", "content": "프랑스의 수도는 어디인가요?"}]
print(chat(messages))

멀티모달 프롬프팅 팁

  • Gemma 3n(Transformers ≥ 4.53)에서는 <image_soft_token>을 사용합니다.
  • proc.apply_chat_template(...)을 사용하여 모델이 튜닝된 role tags를 볼 수 있도록 합니다.
  • 고해상도 이미지의 경우 do_pan_and_scan=True를 활성화하여 대형 이미지를 자동으로 자릅니다.

파인튜닝 레시피

노트북별 특징

노트북 GPU 요구사항 방법 하이라이트
T4_SFT.ipynb 16GB T4 LoRA/QLoRA 무료 Colab에서 텍스트 전용 또는 혼합 채팅 튜닝
vision_sft.ipynb 4×A100 LoRA 새로운 비전 스킬 추가; mm_tokens_per_image 설정 방법
audio_sft.ipynb 1×A100 LoRA 음성 청크로 전사 및 지시 튜닝
vision_TRL.ipynb 1×T4 TRL+LoRA 이미지에 대한 RLHF 스타일 보상 튜닝

공통 훈련 루프 패턴

from peft import LoraConfig, get_peft_model

peft_cfg = LoraConfig(
    r=16, 
    lora_alpha=32, 
    target_modules="q_proj,k_proj,v_proj"
)
model = get_peft_model(model, peft_cfg)  # 훈련 가능한 어댑터 추가

trainer = SFTTrainer(model=model, dataset=ds, ...)
trainer.train()
trainer.push_to_hub("my-gemma-3n-custom")

프로덕션 배포: GGUF 활용

Unsloth GGUF 패키지

Unsloth가 공개한 gemma-3n-E4B-it-GGUF 패키지는 다양한 환경에서 바로 실행할 수 있는 올인원 배포판입니다.

핵심 스펙

  • 모델 계열: Gemma 3n E4B-it (4B 활성 파라미터, 현재 텍스트 입력만 지원)
  • 컨텍스트: 32,000 토큰 (장문 PDF 한 권도 처리 가능)
  • 채팅 템플릿: <bos><start_of_turn>user\n…<end_of_turn>\n<start_of_turn>model\n
  • 권장 설정: temperature 1.0, top_k 64, top_p 0.95

양자화 옵션별 가이드

양자화 파일 크기 RAM 요구량 추천 환경
Q4_K_M 4.2GB ≈8.5GB 권장 - 24GB VRAM 이하 GPU
Q5_K_M 4.9GB ≈10GB 균형형 (정확도 우선)
Q6_K 5.7GB ≈12GB 6-bit, 균형형 (속도↑)
Q8_0 7.35GB ≈16GB 8-bit, 정확도 손실 미미
Q3_K_M 3.2GB ≈6GB 라즈베리 Pi급 환경
UD-Q4_K_XL 4.8GB ≈9GB Unsloth Dynamic 2.0 (층별 자동 조정)

실행 방법

Ollama (가장 간단)

ollama run hf.co/unsloth/gemma-3n-E4B-it-GGUF:Q4_K_XL

llama.cpp

./main -m gemma-3n-E4B-it-Q4_K_M.gguf \
       -ngl 32 \
       -c 32000 \
       --temp 1.0 --top-k 64 --top-p 0.95

Transformers

from transformers import pipeline

pipe = pipeline(
    "image-text-to-text",
    model="unsloth/gemma-3n-E4B-it-GGUF",
    model_kwargs={"low_cpu_mem_usage": True}
)

prompt = pipe.tokenizer.apply_chat_template(
    [{"role": "user", "content": "안녕 Gemma!"}], 
    add_generation_prompt=True
)

result = pipe(prompt, max_new_tokens=64)
print(result["generated_text"])

실전 활용 시나리오

용도별 모델 선택

  1. 앱에 바로 집어넣을 대화형 AI
    • 채팅 지원, 이미지 질의응답, 간단 Q&A
    • E2B-it (저전력 기기) 또는 E4B-it (정확도 우선)
  2. 사내/도메인 특화 모델 개발
    • 보험 약관 요약, 의료 리포트 분석, 코드 자동화
    • E2B(메모리 제한) 또는 E4B(성능 중시)를 LoRA·QLoRA로 파인튜닝
  3. 모바일 앱 오프라인 추론
    • → 먼저 E2B로 파인튜닝 후 MLX·Llama.cpp GGUF로 양자화
  4. 서버 사이드 고품질 챗봇
    • E4B-itvLLM·Transformers에 올려 서비스, 필요시 RAG 추가

프레임워크 지원 현황

프레임워크 지원 상태 비고
Transformers ≥4.50 AutoProcessor + Gemma3ForConditionalGeneration
vLLM 0.4+ 서버 대규모 배치 추론
MLX 0.8+ (Apple) iPhone/Mac 온디바이스
Llama.cpp / GGUF int8·int4 양자화, Raspberry Pi/Jetson 등

실전 워크플로우

엔드투엔드 개발 과정

  1. 로컬 드라이런: README 헬퍼로 프롬프트 검증
  2. 노트북 선택: 모달리티에 맞는 노트북을 Colab에 포크, HF 토큰 설정
  3. 데이터셋 교체: 도메인별 데이터셋 로더로 교체
  4. 어댑터 푸시: Hub에 어댑터를 푸시하고 동일한 chat() 헬퍼로 재테스트
  5. 프로덕션 배포: GGUF로 익스포트하거나 vLLM으로 로드

실전 팁

  1. Vision·Audio 입력은 아직 GGUF 컴파일 미지원 → 텍스트 전용 스킬부터 구축
  2. 컨텍스트 32K 이상 요청 시 VRAM 급증 → Q5 이하 양자화 권장
  3. 템플릿 오류로 EOS 토큰이 빠지면 답변 중단 → <end_of_turn> 뒤 개행 유지
  4. Dynamic 2.0 양자화(UD-)는 고정 Q4_K 대비 정확도 10% 향상

마무리

Gemma 3n은 32K 컨텍스트·4B 성능을 8GB RAM에서도 돌릴 수 있는 멀티모달 모델로, 채팅용 즉시 사용과 LoRA 즉시 튜닝이 모두 가능합니다.

핵심 선택 기준:

  • “-it는 지금 바로 대화, Base는 내 입맛대로 재단”
  • 2B는 경량화, 4B는 고정확도
  • GGUF는 배포 최적화, Transformers는 개발 유연성

이제 원하는 양자화 파일을 다운로드하고 위 예시 명령만 복사하면 바로 로컬 챗봇을 실행할 수 있습니다. Gemma 3n으로 더 스마트한 AI 애플리케이션을 구축해보세요!