Google DeepMind의 경량 오픈소스 모델 Gemma 2. Gemini 기술을 기반으로 2B·9B·27B 크기로 제공되며, 온디바이스부터 클라우드까지 다양한 환경에서 배포할 수 있습니다.
Gemma는 Google DeepMind가 2024년 출시한 경량 오픈소스 LLM입니다. Gemini 모델과 동일한 연구와 기술을 기반으로 만들어졌으며, 상업적 사용이 가능한 라이선스로 제공됩니다.
| 모델 | 파라미터 | 컨텍스트 | 특징 |
|---|---|---|---|
| Gemma 2 2B | 2B | 8192 | 온디바이스, 빠른 추론 |
| Gemma 2 9B | 9B | 8192 | 범용 고성능 |
| Gemma 2 27B | 27B | 8192 | 최고 성능 |
Gemma는 Gemma 사용 약관에 동의해야 합니다. Hugging Face에서 모델 다운로드 전 Google 계정으로 승인 요청이 필요합니다 (보통 즉시 승인). Ollama는 이 과정 없이 바로 사용 가능합니다.
ollama run gemma2 # 9B (기본)
ollama run gemma2:2b # 2B 경량
ollama run gemma2:27b # 27B 고성능pip install transformers torchfrom transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "google/gemma-2-2b-it" # it = instruction-tuned
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [{"role": "user", "content": "Python 제너레이터를 설명해줘"}]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to("cuda")
outputs = model.generate(input_ids, max_new_tokens=512)
print(tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True))from transformers import pipeline
pipe = pipeline(
"text-generation",
model="google/gemma-2-2b-it",
device_map="auto",
)
result = pipe(
[{"role": "user", "content": "k6로 부하 테스트하는 방법을 알려줘"}],
max_new_tokens=256,
)
print(result[0]["generated_text"][-1]["content"])pip install transformers peft trl datasetsfrom transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig
from trl import SFTTrainer, DataCollatorForCompletionOnlyLM
from datasets import load_dataset
model = AutoModelForCausalLM.from_pretrained("google/gemma-2-2b-it")
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b-it")
peft_config = LoraConfig(
r=16, lora_alpha=32,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
task_type="CAUSAL_LM",
)
training_args = TrainingArguments(
output_dir="./gemma-finetuned",
per_device_train_batch_size=4,
num_train_epochs=3,
learning_rate=2e-4,
)
trainer = SFTTrainer(
model=model,
args=training_args,
peft_config=peft_config,
train_dataset=load_dataset("your/dataset", split="train"),
)
trainer.train()