0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gemma-4-26B-A4Bのアーキテクチャの解説(Attention、Transformer、KVキャッシュ、MoE、マルチモーダルインプットの仕組み)

0
Last updated at Posted at 2026-09-24

Googleによって作られたオンプレ向けLLM(gemma-4-26B-A4B)のアーキテクチャを解説します。アーキテクチャを解説する過程で、

  • Attentionとは
  • Transformerとは
  • MoEとは
  • マルチモーダルインプットの仕組み
  • パラメータ数を示す「26B-A4B」の意味

についても解説します。計算ロジックに絞って、なるべく具体的に説明することを心掛けました。尚、解説を省略しているものは以下の通りです。

  • 位置エンコーディング

シンプルなニューラルネットワークとLLMの違い

lenet_vs_gemma.png
図1: LeNetとGemma 4


図1の左は、LeNetのような画像認識を行うニューラルネットワークです。入力は固定サイズのピクセル(例えば、$28\times28$)に限定されています。それ以外のサイズを入れることはできません。

図1の右は、gemma-4のようなLLMです。入力サイズが固定されていません。生成したtokenを次の入力に使うことで、次々に文章を生成していくことができます。

gemma-4-26B-A4B の全体アーキテクチャ

gemma-4-26B-A4Bでは、1tokenのデータを2816次元のベクトルとして扱います。アーキテクチャは下のようになっています。

architecture.png

図2: gemma-4-26B-A4B の全体アーキテクチャ


図2の上半分は「token1、token2を入力として、token3を生成する処理」、下半分は、「token1、token2、token3を入力として、token4を生成する処理」に着目したgemma-4-26B-A4Bの全体アーキテクチャです。

gemma-4-26B-A4Bは「Attention、MoEなどから構成されるTransformerという構造」が30層接続したネットワークです。図の中の1層内の、同じ色のブロックは、同じ重みパラメータを持つことを示しています。つまり、

  • 上半分(token3を生成する処理)も下半分(token4を生成する処理)も同じ重みパラメータを使う
  • 「token1の処理を行うMoE」と「token2の処理を行うMoE」と「token3の処理を行うMoE」は同じ重みパラメータを持つ
    • その同じMoEブロックを、上半分、下半分共通で使う
  • 16個のAttentionブロックはすべて異なる重みパラメータを持つ
    • その16個のAttentionブロックを、上半分、下半分共通で使う

となります。16個並列に並んだAttentionのことを16-headのAttentionといいます。30層のTransformerの間で互いに同じ重みパラメータを共有することはありません。

Attention以外のブロックの入力サイズは固定であるのに対して、Attentionブロックの入力サイズは可変です。Attentionブロック以外はtoken毎に独立に処理する(入力は常に2816次元)のに対して、Attentionブロックではtoken間で相互作用があるからです。LLMの入力tokenのサイズが可変なのは、このAttentionによって実現されています。Attentionについては、次の章で詳しく説明します。

NormはNormalizationのことで、正規化処理を表しています。本資料では、重みパラメータの数が0または、とても少ないブロックを白色の箱で記載します。

Attentionブロック と KVキャッシュ

Attention(片方向Attention)は、ターゲットとなるtokenだけでなく、それよりも前のtokenの情報も含めて、どこに注意を向ければよいかを求めて、文脈を反映したベクトルへの変換を行うメカニズムです。gemma-4-26B-A4Bでは、full attention、sliding attentionという2種類のAttentionを併用しています。

full attention sliding attention
何token前まで見るか 262144token前まで 1024token前まで
計算量 大きい 小さい
Transformer何層目に登場するか 6, 12, 18, 24, 30 1~5, 7~11, 13~17, 19~23, 25~29

full attentionとsliding attentionを併用することで、「計算コストの削減」と「長文の文脈理解」の両立を狙っています。6、12、18、24、30層目以外のTransformerに用いられるsliding attentionのアーキテクチャは下の通りです。full attentionも同じ構成ですが、「256」のところが「512」になります。

attention.png
図3: Attentionブロック(sliding attention)


図3の①~④の説明を行います。

  • ①: token1、token2の情報を入力として、文脈を反映したtoken1、token2の情報を返すAttentionブロック
  • ②: token1、token2、token3の情報を入力として、文脈を反映したtoken1、token2、token3の情報を返すAttentionブロック
  • ③と④: ①と②の中身を詳しく書いたもの

ここでも、同じ色は同じ重みパラメータを持つブロックであることを示しています。つまり、図3には、「Q、K、Vと書かれた箱」が6個存在しますが、それらは同じ重みパラメータを持つということです。

ここで注目するポイントは、③と④の計算には多くの共通点がある点です。③の計算結果をキャッシュしておけば、④の計算は、token3の計算部分のみ(緑の部分)行えば良いことが分かります。そのキャッシュの仕組みがKVキャッシュと呼ばれます。

MoEブロック

次に、図2の中にあるMoEブロックについて解説します。MoEとは「Mixture of Experts」の略で、入力ごとに最適な「専門家(エキスパート)」のモデル部分だけを動かして処理を行う仕組みのことです。

moe.png

図4: MoEブロック


図4の①②③の説明をします。

  • ①: MoEブロック
  • ②: MoEブロックの中身を詳しくしたもの
  • ③: MoEブロックの中に存在する128のexpertの中で、一つのexpertに着目して詳しく説明したもの

③はゲート付きのニューラルネットワークです。②の中には、異なる重みパラメータを持つexpertブロック(③)が128個並列に並んでいます。オレンジ色のLinearブロックでは、128個のうち 8 experts を選ぶための計算を行っています。灰色でマスクしているexpertブロックは、推論の際に使われない、残りの 120 experts を示しています。

後で計算が出てくるのですが、Attentionブロックよりも、MoEの中のLinearブロックのサイズが非常に大きいです。よって、推論の際に使うexpertの数を8/128にすることで、全体としても、大きな推論速度向上効果が得られます。

前処理

gemma-4-26B-A4Bはマルチモーダル対応のモデルです。ここでは、「マルチモーダル対応がどのように実現されているか」を画像とテキストを入力したときの例で説明します。

preprocess.png
図5: 前処理


gemma-4-26B-A4Bでは、前処理によって、すべての入力データを、その種別(テキスト、画像、動画)に関わらず、2816次元のベクトル$\times$token数に変換します。変換後のベクトルが、図2の左側の入力となります。

テキストのtoken化は、簡単な処理(Embeddingのための巨大なベクトルのうち1列を選択する)によって行われますが、画像のtoken化はメインの処理(図2)と同じように、Transformer(Attention)を使った仕組みで実現されています。

入力画像はまず、画像処理によって16pixel$\times$16pixel$\times$2520patchの単位でまとめられ、それらを入力として27層のTransformerを通ります。メインの処理とは異なり、MoEの仕組みは使われていません。また、重みパラメータの数は、メインの処理よりも小さいです。

このTransformerの中で使われるAttentionは、図3のような片方向のAttentionではなく、双方向のAttentionです。双方向のAttentionは、ターゲットとなるpatchと、その前のpatchだけでなく、前後のpatchの情報も含めて、どこに注意を向ければよいかを求めて、patch(ベクトル)を変換します。前だけでなく後ろのpatchの情報も使うことで、片方向のAttentionよりも、全体の文脈を考慮したベクトル変換が可能となりますが、KVキャッシュは使うことができません。

パラメータ数の計算

「メイン処理」と「前処理」に分けて、パラメータ数の概算を計算してみます。

「メイン処理」のパラメータ数の計算

  • 1Transformerあたりのパラメータ数

    • Attention(sliding attention)

      • Q生成行列: 2816(in) * 256(out) * 16(Attentionのhead数)
      • K生成行列: 2816(in) * 256(out) * 8(Attentionのhead数/2)
      • V生成行列: 2816(in) * 256(out) * 8(Attentionのhead数/2)

      /2しているのは、2headが1つの重みを共有しているため。この仕組みは、GQA(Grouped Query Attention)と呼ばれます。

      パラメータ数の合計は23,068,672

    • Attention(full attention)

      • Q生成行列: 2816(in) * 512(out) * 16(Attentionのhead数)
      • K生成行列: 2816(in) * 512(out) * 2(Attentionのhead数/8)
      • V生成行列: Kと重みが共有されている
        /8しているのは、GOAによって8headが1つの重みを共有しているため。

      パラメータ数の合計は25,952,256

    • Attention(sliding attention)の出口のLinear

      • 4096(in) * 2816(out)

      パラメータ数の合計は11,534,336

    • Attention(full attention)の出口のLinear

      • 8192(in) * 2816(out)

      パラメータ数の合計は23,068,672

    • MoEの中のrouterのLinear

      • 2816(in) * 128(out)

      パラメータ数の合計は360,448

    • MoEの中のdense

      • 2816(in) * 2112(out) * 2
      • 2112(in) * 2816(out)

      パラメータ数の合計は17,842,176

    • MoEの中の全expert

      • 2816(in) * 704(out) * 2 * 128(expert)
      • 704(in) * 2816(out) * 128(expert)

      パラメータ数の合計は761,266,176

    • MoEの中のアクティブになるexpert

      • 2816(in) * 704(out) * 2 * 8(expert)
      • 704(in) * 2816(out) * 8(expert)

      パラメータ数の合計は47,579,136

  • 30Transformersのパラメータ数

    全パラメータ数は、

    \begin{align}
    &(23,068,672 + 11,534,336 + 360,448 + 17,842,176 + 761,266,176) \times 25 \\
    +& (25,952,256 + 23,068,672 + 360,448 + 17,842,176 + 761,266,176) \times 5 \\
    = & 814,071,808 \times 25 + 828,489,728 \times 5\\
    = & 24,494,243,840 = 24.49B
    \end{align}
    

    推論時にアクティブになるパラメータ数は、

    \begin{align}
    &(23,068,672 + 11,534,336 + 360,448 + 17,842,176 + 47,579,136) \times 25 \\
    +& (25,952,256 + 23,068,672 + 360,448 + 17,842,176 + 47,579,136) \times 5 \\
    = & 100,384,768 \times 25 + 114,802,688 \times 5\\
    = & 3,083,632,640 = 3.08B
    \end{align}
    

  • 30Transformers通過後のLinearのパラメータ数

    • 2816(in) * 262,144(out)

    パラメータ数は$738,197,504 = 0.74B$

「前処理」のパラメータ数の計算

テキストのEmbeddingは、メイン処理の「30Transformers通過後のLinearのパラメータ」と重みを共有しているため、新たなカウントは0となります。また、動画の前処理のパラメータは、画像の前処理と共通化されています。よって、画像の前処理に絞ってカウントします。

  • 1Transformerあたりのパラメータ数

    • Attention

      • Q生成行列: 1152(in) * 72(out) * 16(head数)
      • K生成行列: 1152(in) * 72(out) * 16(head数)
      • V生成行列: 1152(in) * 72(out) * 16(head数)

      パラメータ数の合計は3,981,312


    • Attentionの出口のLinear

      • 1152(in) * 1152(out)

      パラメータ数の合計は1,327,104


    • FFN

      • 1152(in) * 4304(out) * 2
      • 4304(in) * 1152(out)

      パラメータの合計は14,874,624

  • 27Transformersの全パラメータ数

    $(3,981,312 + 1,327,104 + 14,874,624) \times 27 = 544,942,080 = 0.54B$。

  • 27Transformers通過前のLinearのパラメータ数

    • 768(in) * 1152(out)

    パラメータ数は$884,736 = 0.0009B$

  • 27Transformers通過後のLinearのパラメータ数

    • 1152(in) * 2816(out)

    パラメータ数は$3,244,032 = 0.003B$

まとめると下のようになります。

全ての重みパラメータの数 アクティブのみの重みパラメータの数
前処理 0.54B 0.54B
メイン処理 25.23B 3.82B
合計 25.77B 4.36B

全ての重みパラメータの数が約26B、推論時にアクティブになる重みパラメータの数が約4Bとなり、モデル名「gemma-4-26B-A4B」と一致します。また、https://huggingface.co/google/gemma-4-26B-A4B にも下の記載があり、これは、上表の「メイン処理部」の値と一致します。

Property	26B A4B MoE
Total Parameters	25.2B
Active Parameters	3.8B

なお、サイズが小さいため計算を省略した重みパラメータがあります。

まとめ

gemma-4-26B-A4Bは、Attentionによる可変長token処理、sliding/full attentionの使い分けとKVキャッシュによる計算効率化、MoEによる疎な推論(128 expertから8個のみ活性化)、双方向Attentionを使った前処理によるマルチモーダル対応、という仕組みを組み合わせたモデルです。

パラメータ数は全体で約26B、推論時にアクティブになるのは約4Bであり、モデル名「26B-A4B」の由来と一致することを確認しました。

参考

https://huggingface.co/google/gemma-4-26B-A4B
(特に、https://huggingface.co/google/gemma-4-26B-A4B/blob/main/config.json)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?