Google Gemma 2 릴리스 노트

Google은 Google DeepMind의 Gemini를 기반으로 한 새로운 오픈-웨이트 대형 언어 모델(LLM) 패밀리인 Gemma 2를 출시했습니다. 이번 릴리스에는 9억(9B) 및 27억(27B) 파라미터 모델 각각에 대한 기본 버전과 인스트럭션 튜닝 버전, 총 네 가지 모델이 포함되어 있으며, 상업적 사용 및 재배포를 허용하는 관용적인 라이선스 하에 최첨단 성능을 제공하도록 설계되었습니다.

모델 사양 및 학습

Gemma 2는 컨텍스트 길이 8,192 토큰을 갖는 두 가지 주요 크기로 제공되며 Rotary Position Embedding(RoPE)를 사용합니다. 모델들은 첫 번째 Gemma 버전보다 훨씬 더 많은 데이터로 학습되었습니다: 27B 모델은 13조 토큰, 9B 모델은 웹 데이터, 코드, 수학을 포함한 8조 토큰으로 학습되었습니다.

  • gemma-2-9b: 기본 9B 모델
  • gemma-2-9b-it: 인스트럭션 튜닝 9B 모델
  • gemma-2-27b: 기본 27B 모델
  • gemma-2-27b-it: 인스트럭션 튜닝 27B 모델

기술 혁신

Gemma 2는 생성 품질 및 학습 안정성을 향상시키기 위해 네 가지 핵심 기술적 진보를 도입합니다:

슬라이딩 윈도우 어텐션

Gemma 2는 하이브리드 어텐션 메커니즘을 사용합니다. 매 번째 레이어마다 슬라이딩 윈도우 어텐션(4,096 토큰 범위)과 전체 이차 글로벌 어텐션(8,192 토큰 범위)을 교차 적용합니다. 이 설계는 긴 컨텍스트 상황에서도 높은 품질을 유지하면서 슬라이딩 윈도우 어텐션의 효율성을 얻는 것을 목표로 합니다.

로짓 소프트 캡핑

로짓이 과도하게 커지는 것을 방지하고 학습을 안정화하기 위해 Gemma 2는 소프트 캡핑을 사용합니다. 로짓은 logits → soft_cap * tanh(logits/soft_cap) 공식을 사용해 고정 범위로 스케일링됩니다.

  • Attention layers: 50.0으로 캡핑
  • Final layer: 30.0으로 캡핑

소프트 캡핑은 현재 학습 중 Flash Attention/SDPA와 호환되지 않으므로, 안정적인 파인튜닝을 위해 eager 어텐션을 권장합니다.

지식 증류

9B 모델은 지식 증류를 사용해 사전 학습되었습니다. 여기서 더 큰 교사 모델이 학생 모델이 학습할 수 있는 풍부한 신호를 제공합니다. 사후 학습에서는 팀이 "on-policy distillation"을 사용했습니다. 이 과정에서 학생은 SFT 프롬프트로부터 완성을 생성하고, 교사와 학생 로짓 간의 KL 발산을 최소화하여 학습-추론 불일치를 감소시킵니다.

WARP를 통한 모델 병합

Gemma 2는 WARP라는 병합 기법을 사용해 모델을 세 단계로 결합합니다:

  1. Exponential Moving Average (EMA): RL 파인튜닝 중 적용.
  2. Spherical Linear intERPolation (SLERP): 여러 정책에 대한 RL 파인튜닝 후 적용.
  3. Linear Interpolation Towards Initialization (LITI): SLERP 단계 이후 적용.

성능 평가

기술 보고서에 따르면 Gemma 2는 다른 오픈 모델들과 비교해 경쟁력 있는 성능을 보여줍니다.

대형 모델 비교

벤치마크 Llama 3 (70B) Qwen 1.5 (32B) Gemma 2 (27B)
MMLU 79.2 74.3 75.2
GSM8K 76.9 61.1 75.1
ARC-c 68.8 63.6 71.4
HellaSwag 88.0 85.0 86.4
Winogrande 85.3 81.5 83.7

소형 모델 비교

벤치마크 Mistral (7B) Llama 3 (8B) Gemma (8B) Gemma 2 (9B)
MMLU 62.5 66.6 64.4 71.3
GSM8K 34.5 45.7 50.9 62.3
ARC-C 60.5 59.2 61.1 68.4
HellaSwag 83.0 82.0 82.3 81.9
Winogrande 78.5 78.5 79.0 80.6

구현 및 배포

프롬프트

인스트럭션 튜닝 버전은 효과를 위해 정확히 재현되어야 하는 특정 대화 구조를 사용합니다:

<start_of_turn>user
[Prompt]<end_of_turn>
<start_of_turn>model
[Response]<end_of_turn>

하드웨어 요구 사항 및 양자화

  • Gemma 2 9B: 약 18 GB의 RAM이 필요합니다.
  • Gemma 2 27B: bfloat16 형식으로 약 56 GB의 RAM이 필요합니다.

메모리 사용량을 줄이기 위해 모델을 4비트 또는 8비트 모드로 로드할 수 있습니다. 4비트로 로드한 27B 버전은 약 18 GB의 메모리를 차지합니다. 27B 인스트럭션 튜닝 모델은 bfloat16을 사용하는 것이 중요하며, float16은 불규칙한 출력을 초래할 수 있습니다.

파인튜닝

파인튜닝은 Hugging Face TRL 라이브러리와 QLoRA를 사용해 수행할 수 있습니다. PEFT를 위해 선형 레이어를 대상으로 할 때는 MLP 레이어보다 어텐션 블록(q_proj, k_proj, v_proj, o_proj)을 대상으로 하는 것이 권장됩니다. MLP 레이어는 희소하고 PEFT와 잘 상호작용하지 않기 때문입니다.

Sources