Gemma 徹底解説: Gemma 3 の新機能

2025年4月30日
Ju-yeong Ji Sr. Technical Consultant Gen AI – AI Studio
Ravin Kumar Google Data Scientist Language Applications

Gemma 徹底解説シリーズの前回の記事では、Gemma モデル ファミリーのアーキテクチャを詳しく解説しました。それぞれの投稿へのリンクは以下のとおりです。

今回の投稿では、最新モデル Gemma 3 について説明します。さっそく始めましょう。


Gemma 3

以前のバージョンからの大きな変更点は、Gemma 3 が新たにビジョン言語機能をサポートしていることです。PaliGemma のアーキテクチャに精通している方は、Gemma 3 で使われている SigLIP エンコーダをご存知かもしれませんが、これを今回の実装に合わせて調整しています。

新しいモデルのコアパラメータは次のとおりです。

Core parameters of new Gemma 3 models

Gemma 3 の主な変更点と改善点を確認していきましょう。


主な変更点

Gemma 3 のアーキテクチャは前モデルを継承していますが、以下で説明するような新たな変更も加えられています。


ビジョン言語のサポート

Gemma 3 の大きな機能強化は、新しいビジョン言語理解機能です。4B、12B、27B の各モデルには、カスタム SigLIP ビジョン エンコーダが組み込まれているので、モデルが視覚入力を解釈できます。

ビジョン エンコーダは、896x896 の固定サイズの正方形画像で動作します。異なるアスペクト比や高解像度画像を処理するために、「パン & スキャン」アルゴリズムを使います。つまり、画像の適応的クリッピングを行い、それぞれのサイズを 896x896 に変更したうえでエンコードします。この方法を使うと、特に詳しい情報が重要な場合に、パフォーマンスが向上します。ただし、推論時の計算オーバーヘッドは増加します。

さらに、Gemma 3 は、画像を MultiModalProjector が生成したコンパクトな「ソフトトークン」のシーケンスとして扱います。この技術では、視覚データを 256 個という一定の数のベクトルで表現することで、画像処理に必要な推論リソースを大幅に削減します。

flow image of gemma 3 architecture

ここで、「Gemma 3 と PaliGemma 2 はどう使い分けるべきか?」と疑問に思う方もいるかもしれません。

PaliGemma 2 の強みは、画像セグメンテーションやオブジェクト検出など、Gemma 3 にはない機能にあります。しかし、Gemma 3 は PaliGemma の技術を取り入れて拡張しているので、マルチターン チャット機能や強力なゼロショット性能を持ち合わせており、さまざまな視覚タスクを直接処理できます。

最終的な決定を下す際には、利用できる計算リソースに加えて、長いコンテキストや多言語サポートといった高度な機能の重要性も考慮する必要があります。このような高度な機能では、Gemma 3 が明らかに優れた性能を発揮します。


アーキテクチャの変更でメモリ効率をアップ

アーキテクチャが修正され、長いコンテキストで増加しがちな KV キャッシュ メモリ使用量が減少しています。

5 対 1 インターリーブド アテンション

更新されたモデル アーキテクチャは、インターリーブ ブロックの繰り返しで構成されます。それぞれのブロックに、スライディング ウィンドウが 1024 のローカル アテンション レイヤ 5 つと、1 つのグローバル アテンション レイヤが含まれています。この設計により、モデルが短距離および長距離の両方の依存関係を把握できるので、文脈に即した正確な応答が可能になります。

注: Gemma 1 はグローバル アテンションのみを使っていましたが、Gemma 2 ではローカルとグローバルのアテンション レイヤを交互に利用するハイブリッドなアプローチが導入されました。Gemma 3 は、5 つの専用ローカル アテンション レイヤが組み込まれているので、文脈に即した正確な応答が可能になります。
Gemma 3 local and global attention layers depicted in a table, compared to Gemma 1 and Gemma 2

ソフトキャップなし

Gemma 2 と Gemma 3 はどちらも、RMSNorm による post-norm と pre-norm を組み合わせたグループ化クエリ アテンション(GQA)を使っています。しかし、Gemma 3 は、Gemma 2 のソフトキャップ メカニズムの代わりに QK-norm を採用することで、精度の向上と処理速度の高速化の両方を実現しています。

Gemma 3 grouped query attention

長いコンテキスト

以上のアーキテクチャ変更が行われた結果、Gemma 3 は、インターリーブド アテンションでメモリ要件を低減し、コンテキスト長を拡大しています。これにより、文脈を失うことなく、長い文書や会話を分析できるようになります。具体的には、1B モデルでは 32k トークン、大型モデルでは 128k トークンを扱うことができます。

注: 128k トークン コンテキスト ウィンドウは、モデルが典型的な小説(単語数約 80k)と同等の長さのテキストを処理できることを意味します。このウィンドウ サイズは、約 96,000 ワード、198 ページ、画像 500 枚、1 fps で 8 分以上の動画に相当します。
Gemma 3 context window

ビジョン エンコーダと処理

Gemma 3 は、画像入力で双方向アテンションのみを利用します。

通常のアテンション(単方向アテンション)は、読書のようなものです。本を読んでいるところを想像してみてください。それぞれの単語を、それ以前に出てきた単語を踏まえて理解します。これが言語モデルにおける典型的なアテンションの仕組みです。シーケンシャルであり、後ろを見ながらコンテキストを作成しています。

一方、双方向アテンションはパズルを眺めるようなものです。画像をジグソーパズルと考えてみましょう。「画像トークン」は、個々のパズルのピースにあたります。各ピースは位置に関係なく、画像のすべてのピースを「見て」、つながっています。シーケンスだけを見るのではなく、全体像を一度に考慮します。すべての部分が他のすべての部分に関連しているため、全体を完全に理解することができます。

では、なぜ常に双方向にしないのでしょうか。双方向アテンション(コンテキスト全体を見る)の方が効果的に思えますが、テキストで必ず使われているとは限らず、タスク次第です。

  • 理解(双方向の方が優れている)
    テキスト全体が利用でき、それを深く理解する必要があるタスク(BERTなどのモデル)の場合、双方向アテンションが効果を発揮します。

  • 予測(単方向の方が優れている)
    次の単語を予測するタスクや、テキストを生成するタスクでは、単方向(自己回帰)アプローチの方が自然です。次に何が起こるかを予測することは、本質的にシーケンシャルです。また多くの場合、計算の効率も上がります。

主な違いは、双方向アプローチが使われるのはシーケンスを作成しないモデルであることです。

次のビジュアルは、Gemma 3 のアテンション メカニズムを図示しています。

コード:

from transformers.utils.attention_visualizer import AttentionMaskVisualizer
visualizer = AttentionMaskVisualizer("google/gemma-3-4b-it")
visualizer("<start_of_turn>user\n<img>What is this?<end_of_turn>\n<start_of_turn>model\nIt's an image of a cat.<end_of_turn>")

出力:

Attention mechanism in Gemma 3 : Output

また、このアテンション メカニズムが PaliGemma のアテンション メカニズムとどのように異なるかを確認することもできます。この比較に役立つように、背景をお伝えしましょう。PaliGemma は、テキストベースのタスクの説明(プロンプトまたはプレフィックス)と、1 つ以上の画像を受け取ります。そして、その予測をテキスト文字列(回答またはサフィックス)として自己回帰的に生成します。

コード:

visualizer = AttentionMaskVisualizer("google/paligemma2-3b-mix-224")
visualizer("<img> caption en", suffix="a cat standing on a beach.")

出力:

Attention mechanism in PaliGemma : Output

新しいトークナイザー

Gemma 3 は多言語機能が改善されています。データの混合比率を見直し、多言語データ(単一言語と複数言語の両方)を増やしたからです。

Gemma 3 では、トークナイザーも改善しています。語彙サイズは 262k に変更されていますが、同じ SentencePiece トークナイザーを使います。エラーを回避するため、Gemma 3 では新しいトークナイザーをお使いください。これは Gemini と同じトークナイザーであり、英語以外の言語のバランスが向上しています。


Gemma 3 27B

Gemma3ForConditionalGeneration(
  (vision_tower): SiglipVisionModel(
    (vision_model): SiglipVisionTransformer(
      (embeddings): SiglipVisionEmbeddings(
        (patch_embedding): Conv2d(3, 1152, kernel_size=(14, 14), stride=(14, 14), padding=valid)
        (position_embedding): Embedding(4096, 1152)
      )
      (encoder): SiglipEncoder(
        (layers): ModuleList(
          (0-26): 27 x SiglipEncoderLayer(
            (self_attn): SiglipSdpaAttention(
              (k_proj): Linear(in_features=1152, out_features=1152, bias=True)
              (v_proj): Linear(in_features=1152, out_features=1152, bias=True)
              (q_proj): Linear(in_features=1152, out_features=1152, bias=True)
              (out_proj): Linear(in_features=1152, out_features=1152, bias=True)
            )
            (layer_norm1): LayerNorm((1152,), eps=1e-06, elementwise_affine=True)
            (mlp): SiglipMLP(
              (activation_fn): PytorchGELUTanh()
              (fc1): Linear(in_features=1152, out_features=4304, bias=True)
              (fc2): Linear(in_features=4304, out_features=1152, bias=True)
            )
            (layer_norm2): LayerNorm((1152,), eps=1e-06, elementwise_affine=True)
          )
        )
      )
      (post_layernorm): LayerNorm((1152,), eps=1e-06, elementwise_affine=True)
    )
  )
  (multi_modal_projector): Gemma3MultiModalProjector(
    (mm_soft_emb_norm): Gemma3RMSNorm((1152,), eps=1e-06)
    (avg_pool): AvgPool2d(kernel_size=4, stride=4, padding=0)
  )
  (language_model): Gemma3ForCausalLM(
    (model): Gemma3TextModel(
      (embed_tokens): Gemma3TextScaledWordEmbedding(262208, 5376, padding_idx=0)
      (layers): ModuleList(
        (0-61): 62 x Gemma3DecoderLayer(
          (self_attn): Gemma3Attention(
            (q_proj): Linear(in_features=5376, out_features=4096, bias=False)
            (k_proj): Linear(in_features=5376, out_features=2048, bias=False)
            (v_proj): Linear(in_features=5376, out_features=2048, bias=False)
            (o_proj): Linear(in_features=4096, out_features=5376, bias=False)
            (q_norm): Gemma3RMSNorm((128,), eps=1e-06)
            (k_norm): Gemma3RMSNorm((128,), eps=1e-06)
          )
          (mlp): Gemma3MLP(
            (gate_proj): Linear(in_features=5376, out_features=21504, bias=False)
            (up_proj): Linear(in_features=5376, out_features=21504, bias=False)
            (down_proj): Linear(in_features=21504, out_features=5376, bias=False)
            (act_fn): PytorchGELUTanh()
          )
          (input_layernorm): Gemma3RMSNorm((5376,), eps=1e-06)
          (post_attention_layernorm): Gemma3RMSNorm((5376,), eps=1e-06)
          (pre_feedforward_layernorm): Gemma3RMSNorm((5376,), eps=1e-06)
          (post_feedforward_layernorm): Gemma3RMSNorm((5376,), eps=1e-06)
        )
      )
      (norm): Gemma3RMSNorm((5376,), eps=1e-06)
      (rotary_emb): Gemma3RotaryEmbedding()
      (rotary_emb_local): Gemma3RotaryEmbedding()
    )
    (lm_head): Linear(in_features=5376, out_features=262208, bias=False)
  )
)
Gemma 3 27B architecture
注: 実際には RoPE(回転位置エンベディング)は SDPA(スケールド ドット積アテンション)の中にありますが、図ではこの点を簡略化しています。詳しくは コードをご覧ください。 アーキテクチャが詳しく説明されています。


Gemma 3 1B

Gemma3ForCausalLM(
  (model): Gemma3TextModel(
    (embed_tokens): Gemma3TextScaledWordEmbedding(262144, 1152, padding_idx=0)
    (layers): ModuleList(
      (0-25): 26 x Gemma3DecoderLayer(
        (self_attn): Gemma3Attention(
          (q_proj): Linear(in_features=1152, out_features=1024, bias=False)
          (k_proj): Linear(in_features=1152, out_features=256, bias=False)
          (v_proj): Linear(in_features=1152, out_features=256, bias=False)
          (o_proj): Linear(in_features=1024, out_features=1152, bias=False)
          (q_norm): Gemma3RMSNorm((256,), eps=1e-06)
          (k_norm): Gemma3RMSNorm((256,), eps=1e-06)
        )
        (mlp): Gemma3MLP(
          (gate_proj): Linear(in_features=1152, out_features=6912, bias=False)
          (up_proj): Linear(in_features=1152, out_features=6912, bias=False)
          (down_proj): Linear(in_features=6912, out_features=1152, bias=False)
          (act_fn): PytorchGELUTanh()
        )
        (input_layernorm): Gemma3RMSNorm((1152,), eps=1e-06)
        (post_attention_layernorm): Gemma3RMSNorm((1152,), eps=1e-06)
        (pre_feedforward_layernorm): Gemma3RMSNorm((1152,), eps=1e-06)
        (post_feedforward_layernorm): Gemma3RMSNorm((1152,), eps=1e-06)
      )
    )
    (norm): Gemma3RMSNorm((1152,), eps=1e-06)
    (rotary_emb): Gemma3RotaryEmbedding()
    (rotary_emb_local): Gemma3RotaryEmbedding()
  )
  (lm_head): Linear(in_features=1152, out_features=262144, bias=False)
)

1B モデルはテキスト専用です。モバイルや組み込みシステムで高度な AI にアクセスできるように、オンデバイスでの利用に特化して最適化されています。ネットワーク接続が限られている場合や、まったく利用できない場合でも、AI 搭載アプリケーションを効率的に動作させることができるため、アクセシビリティ、プライバシー、パフォーマンスに大きな影響を与えることになります。


主な知見

テクニカル レポートに詳しく記載されていますが、Gemma 3 から得られた主な知見は次のとおりです。

  • 同じサイズで優れたパフォーマンス:
    Gemma 3 モデルは、事前トレーニング済みのバージョンとインストラクション チューニング バージョンの両方において、さまざまなベンチマークで Gemma 2 よりも優れたパフォーマンスを達成しており、1 つのコンシューマー GPU または TPU ホストに収まるものの中では、最高のモデルです。2025 年 4 月 12 日時点で、Gemma 27B IT モデルは LM Arena のトップ 10 モデルにランクされており、はるかに大きなオープンモデルを上回り、Gemma 2 よりもかなり高い Elo スコアを実現しています。

  • KV キャッシュ メモリの削減:
    Gemma 3 のアーキテクチャの変更により、長いコンテキストで推論する際の KV キャッシュのメモリ オーバーヘッドが、Gemma 1 のグローバルのみや Gemma 2 のローカル / グローバル比 1 対 1 のアテンション メカニズムよりもかなり削減されます。

  • 効果的なロング コンテキスト ハンドリング:
    Gemma 3 モデルは、事前トレーニング時に RoPE を再スケーリングすることで、128k のコンテキスト長に対応できるようになっています。グローバル セルフアテンション レイヤでは RoPE の基準周波数を 10k から 1M に上げ、ローカルレイヤでは 10k の周波数を維持します。

  • 多言語能力の向上:
    Gemma 3 は、Gemini と同じトークナイザーを利用しています。このトークナイザーは、英語以外の言語のバランスが向上しています。また、多言語能力を向上させるために、事前トレーニングのデータ混合比率と事後トレーニングのプロセスも変更しました。

  • ビジョン エンコーダ解像度の影響:
    ビジョン エンコーダの解像度が高くなれば、視覚タスクのパフォーマンスは向上します。パン & スキャン手法を使うと、非正方形のアスペクト比、高解像度画像、画像内のテキスト読み取りなどのタスクのパフォーマンスがさらに向上します。


まとめ

Gemma 3 のアーキテクチャ、とりわけ以前のバージョンとは異なる新機能について詳しく説明しました。こういったアーキテクチャを選んだことで、Gemma 3 は、多言語能力が改善し、画像インタラクションなどの幅広いタスクのパフォーマンスが向上しています。それと同時に、標準的なハードウェアで動作し、リソース フレンドリーで機能的なマルチモーダル言語モデルに向かう道が開かれています。

研究者やデベロッパーは、Gemma 3 のイノベーションによって、強力で効率的な次世代のマルチモーダル言語モデルを作成できるようになると確信しています。

お読みいただき、ありがとうございました!



参考文献

論文


コードサンプル


📋 The complete Gemma architecture series

  • Gemma 徹底解説: Gemma 3 の新機能