Google Gemma 2 リリースノート

GoogleはGemma 2をリリースしました。これはGoogle DeepMindのGeminiに基づく新しいオープンウェイト大規模言語モデル(LLM)ファミリーです。リリースには、9億(9B)と27億(27B)パラメータモデルのベース版と指示チューニング版の計4モデルが含まれ、商用利用や再配布が可能な寛容なライセンスで最先端の性能を提供します。

モデル仕様とトレーニング

Gemma 2は主に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は生成品質とトレーニング安定性を向上させるため、4つの主要な技術的進歩を導入しています。

スライディングウィンドウアテンション

Gemma 2はハイブリッドアテンション機構を採用しています。スライディングウィンドウアテンション(4,096トークン)とフル二次的グローバルアテンション(8,192トークン)を交互にレイヤーごとに組み合わせます。この設計は長コンテキストシナリオでの高品質を維持しつつ、スライディングウィンドウアテンションの効率性を活かすことを目的としています。

ロジットソフトキャッピング

ロジットが過度に大きくなるのを防ぎ、トレーニングを安定させるために、Gemma 2はソフトキャッピングを使用します。ロジットは以下の式で固定範囲にスケーリングされます:logits → soft_cap * tanh(logits/soft_cap)

  • アテンション層: 50.0 にキャップ
  • 最終層: 30.0 にキャップ

現在、ソフトキャッピングはトレーニング時のFlash Attention/SDPAと互換性がないため、安定したファインチューニングのために eager アテンションが推奨されます。

知識蒸留

9Bモデルは知識蒸留を用いて事前学習されました。大規模な教師モデルが学生モデルに対してリッチなシグナルを提供します。ポストトレーニングでは「オンポリシー蒸留」を使用しました。このプロセスでは、学生がSFTプロンプトから生成した完了に対し、教師と学生のロジット間のKLダイバージェンスを最小化し、訓練と推論のミスマッチを減らします。

WARPによるモデルマージ

Gemma 2はWARPというマージ手法を用いて、モデルを3段階で統合します:

  1. 指数移動平均(EMA):RLファインチューニング中に適用。
  2. 球面線形補間(SLERP):複数ポリシーのRLファインチューニング後に適用。
  3. 初期化への線形補間(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ビットモードでロード可能です。27Bモデルを4ビットでロードすると約18 GBのメモリで済みます。27B指示チューニングモデルは bfloat16 を使用することが重要で、float16 は不安定な出力を引き起こす可能性があります。

ファインチューニング

ファインチューニングはHugging FaceのTRLライブラリとQLoRAを使用して実行できます。PEFTで線形層を対象とする場合、MLP層よりもアテンションブロック(q_proj, k_proj, v_proj, o_proj)を対象にすることが推奨されます。MLP層はスパースであり、PEFTとの相性が悪いためです。

Sources