zai-org/GLM-5.3 解析記録

要旨

  • 規模:約7,533億個の数値(パラメータ)から成る。保存ファイルの大きさは約756GB。
  • 構成:入力のたびに、256個の専門家(エキスパート)から8個だけを選んで用いる混合エキスパート(MoE)モデルである。全体約7,533億のうち、1回の計算で用いられるのは約413億である。パラメータの約96%は専門家群(エキスパート)、約2%は文脈を参照する部分(アテンション)、約1%は先読み予測部(MTP)に割り当てられている。
  • 日本語の扱い:日本語では1トークンに約1.3文字が収まる。英語では1トークンに約4.3文字が収まる。同じ文字数を処理するのに、日本語は英語の約3.2倍のトークンを要する。語彙約15万語のうち、かな・漢字を含む語は29,521語である。
  • 一度に扱える長さ:config に書かれた上限(max_position_embeddings)は1,048,576トークンであり、上の固定の文と同じ割合で換算すると、日本語でおよそ1,400,000字、英語でおよそ4,500,000字に相当する。
  • 数値の偏り:モデル内部の数値は6,144個を1組として流れる。そのうち番号3203と4386の位置は、全78層すべてで、外れ値(極端に大きな値)が多く現れる位置に入っていた。番号3203と4386は、正規化層の重みが極端な値をとる位置の集計にも現れた(355個の正規化層のうち、3203は93個、4386は138個)。この種の偏りは、一般に、モデルを圧縮(量子化)した際の精度低下の要因とされる。

一行要約:MoE(256エキスパート中8個稼働)、glm_moe_dsa、78層、総パラメータ 753.33B、稼働 41.25B、MLA、文脈長 1,048,576、語彙 154,880

基本情報

  • モデル:zai-org/GLM-5.3(リビジョン aca966e4e027、config.json)
  • ライセンス:glm-5.3
  • base_model の宣言:なし
  • 保存形式:F8_E4M3 751.23B、BF16 2.10B、F32 45.87M

仕組み(段階0)

部位別パラメータ数

safetensors のヘッダにある形状から数えた値(実測)。

部位別パラメータ数

部位 パラメータ数 割合
エキスパート 724,775,731,200 96.21%
アテンション 13,068,337,152 1.73%
MTP(先読み予測) 9,952,920,576 1.32%
共有エキスパート 2,831,155,200 0.38%
出力層 951,582,720 0.13%
埋め込み 951,582,720 0.13%
FFN(密) 679,477,248 0.09%
ルーター 117,984,000 0.02%
正規化 1,169,664 0.00%

構造

config.json の値。

項目 値
model_type / architectures glm_moe_dsa / GlmMoeDsaForCausalLM
層数 78
隠れ次元 6,144
FFN 中間次元 12,288
アテンション方式 MLA
ヘッド数 / KV ヘッド数 / ヘッド次元 64 / 64 / 192
MLA の設定 q_lora_rank=2048, kv_lora_rank=512, qk_rope_head_dim=64, qk_nope_head_dim=192, v_head_dim=256
スライディングウィンドウ —(use_sliding_window=—)
層の種類(layer_types) —
RoPE θ 8,000,000
RoPE スケーリング {'rope_theta': 8000000, 'rope_type': 'default'}
部分回転(partial_rotary_factor) —
文脈長(max_position_embeddings) 1,048,576
入出力埋め込みの共有 いいえ
活性化関数 silu
正規化の ε 1.000e-05

MoE の構成

エキスパート数は config とテンソル名の両方から(MTP の層は除く)。稼働パラメータ数は「全体 − MTP − エキスパート部分 + エキスパート部分×稼働数÷エキスパート数」で計算した値(計算)。

項目 値
エキスパート数(config) 256
エキスパート数(テンソル名から数えた数:層数) 256:75層
1トークンあたりの稼働数 8
共有エキスパート 1
MoE 層の数 75
先頭の密な層(first_k_dense_replace) 3
エキスパート部分のパラメータ数 724.78B
稼働パラメータ数 41.25B
MTP のパラメータ数(稼働数から除いた分) 9.95B

config と実体の突き合わせ

config.json の値と、実際のテンソル形状を並べたもの(実測)。

項目 config 実体 一致 実体の出どころ
vocab_size 154,880 154,880 はい model.embed_tokens.weight
hidden_size 6,144 6,144 はい model.embed_tokens.weight
num_hidden_layers 78 78 はい 最大の層番号+1(MTP層を除く)
intermediate_size 12,288 12,288 はい model.layers.0.mlp.gate_proj.weight
tie_word_embeddings(出力層テンソルが無い) いいえ いいえ はい テンソル一覧
num_experts 256 256 はい テンソル名

トークナイザ

固定の日本語文・英語文(測定条件を参照)を、特殊トークンを付けずに分割した結果(実測)。「文字の途中で切れたトークン」は、1トークン単独で復号すると壊れた文字(U+FFFD)になるトークンの割合。

文 文字数 トークン数 文字/トークン バイト/トークン 文字の途中で切れたトークン 復号で元に戻る
日本語 449 336 1.336 4.003 6.0% はい
英語 1,201 282 4.259 4.358 0.0% はい

語彙 154,856 個のうち、かな・漢字を1文字以上含むもの 29,521 個(19.06%)、2文字以上含むもの 24,483 個(読み込み:tokenizers)。

特殊トークンとチャット書式

特殊トークン 18 個。BOS:None、EOS:<|endoftext|>。チャットテンプレート:あり(10734 文字、sha256 先頭 3740abcea51c)。 思考タグ:はい、ツール呼び出し:はい、FIM:いいえ、画像用トークン:いいえ(特殊トークン名とテンプレート中の文字列を探した結果)。

特殊トークン一覧

<|endoftext|>, [MASK], [gMASK], [sMASK], <sop>, <eop>, <|system|>, <|user|>, <|assistant|>, <|observation|>, <|begin_of_image|>, <|end_of_image|>, <|begin_of_video|>, <|end_of_video|>, <|begin_of_audio|>, <|end_of_audio|>, <|begin_of_transcription|>, <|end_of_transcription|>

重み(段階1)

全 118,629 テンソルのうち 59,585 個を解析(計算時間 11.8 分)。各テンソルを fp32 に変換して計算した。 解析の対象外としたテンソル:FP8 の倍率(重みではない)(59044 個)。 MTP(先読み予測)の部分(層 78)のテンソル 791 個は、解析はしたが、本体の層だけを数えるため、以下の層ごとの推移・突出チャネル・正規化層・埋め込み・エキスパート間の似かた・極端値の集計からは除いた。 FP8 で保存された重み(59,044 個)は、128×128 ブロックごとの倍率を掛けて fp32 に戻してから計算した。

層ごとの推移

RMS は要素の二乗平均の平方根。最大絶対値÷RMS は、最も大きい要素が典型的な大きさの何倍か。超過尖度は分布の裾の重さで、正規分布なら 0(いずれも実測)。

RMS

最大絶対値÷RMS

超過尖度

最大値を取った行列:最大絶対値÷RMS 165.785(model.layers.60.mlp.shared_experts.gate_proj.weight)、超過尖度 291.449(model.layers.66.self_attn.indexer.weights_proj.weight)、外れ値の割合 0.781%(model.layers.23.mlp.gate.e_score_correction_bias)。

外れ値と突出チャネル

外れ値は、同じ行列の標準偏差の 6 倍を超える要素。隠れ次元を入力に取る行列ごとに外れ値の多い列(上位 16 列)を拾い、同じ列が何層に現れたかを数えた(実測)。

隠れ次元の列 現れた層数(全 78 層中)
3203 78
4386 78
2232 70
4801 70
506 66
2588 61
3257 54
2305 53
2674 52
447 50

正規化層の重み

正規化層 355 個それぞれで、中央値から最も離れた次元(上位 16 個)を拾い、同じ次元が何個の正規化層に現れたかを数えた(実測)。

次元 現れた正規化層の数
4386 138
3203 93
4801 88
2232 78
506 61
1806 57
3015 55
2674 53
2906 48
5722 48

上の突出チャネル上位10列と重なる次元:506, 2232, 2674, 3203, 4386, 4801。

実効ランク

安定ランク=(フロベニウスノルムの二乗)÷(最大特異値の二乗)。行列の短辺で割り、0〜1 にそろえた。最大特異値はべき乗法(30 回)で求めた近似値(推定)。

実効ランク

部位ごとの安定ランク÷短辺:

部位 行列数 最小 中央値 最大 最小の行列
エキスパート 57600 0.0086 0.1642 0.4243 model.layers.66.mlp.experts.161.gate_proj.weight
MTP(先読み予測) 781 0.0108 0.0541 0.3518 model.layers.78.mlp.experts.200.down_proj.weight
アテンション 453 0.0064 0.0598 0.4419 model.layers.10.self_attn.indexer.wq_b.weight
共有エキスパート 225 0.0202 0.054 0.247 model.layers.77.mlp.shared_experts.up_proj.weight
ルーター 75 0.0211 0.0269 0.0299 model.layers.62.mlp.gate.weight
FFN(密) 9 0.0348 0.1236 0.2698 model.layers.0.mlp.gate_proj.weight
出力層 1 0.0031 0.0031 0.0031 lm_head.weight
埋め込み 1 0.0216 0.0216 0.0216 model.embed_tokens.weight

埋め込みの行

語彙ごとの埋め込み行ベクトルの長さ(ノルム)の分布と、ノルムの小さい行(下位 0.1%)(実測)。

lm_head.weight(154,880 行)

最小 下位0.1% 下位1% 中央値 上位1% 最大
0.4223 0.426 0.7756 1.5125 1.9259 5.0758

ノルムの小さい行(下位 0.1% の 155 行のうち小さい順に20件):154289:'\u17fd'(0.4223)、154160:'\u0ffb'(0.4227)、154136:'\u0fe3'(0.4237)、154157:'\u0ff8'(0.424)、151330:'�'(0.4242)、154287:'\u17fb'(0.4246)、78632:' ForCanBeConvertedToF'(0.4248)、35118:'�'(0.4249)、61976:'�'(0.425)、24755:'�'(0.4251)、149816:'ással'(0.4252)、154131:'\u0fde'(0.4252)、91117:'�'(0.4253)、151336:'�'(0.4253)、149537:'ürlü'(0.4253)、148604:'астроф'(0.4254)、151338:'�'(0.4254)、83279:'$PostalCodesNL'(0.4255)、44002:'�'(0.4255)、151337:'�'(0.4256)

model.embed_tokens.weight(154,880 行)

最小 下位0.1% 下位1% 中央値 上位1% 最大
0.0032 0.0033 0.237 0.7195 0.8588 0.9481

ノルムの小さい行(下位 0.1% の 155 行のうち小さい順に20件):106175:'1997'(0.0032)、154832:'<|begin_of_video|>'(0.0032)、106213:' 2007'(0.0032)、106699:'1996'(0.0032)、106975:'1994'(0.0032)、126736:' 1988'(0.0032)、120130:'1937'(0.0032)、154872:''(0.0032)、104669:' 2010'(0.0032)、121308:'4500'(0.0032)、125447:' 52'(0.0032)、104054:' 2012'(0.0032)、119202:'1100'(0.0032)、125051:' 58'(0.0032)、133221:' ۲'(0.0032)、108932:' 2003'(0.0033)、121657:'1959'(0.0033)、124429:' 95'(0.0033)、123929:'1954'(0.0033)、113375:' 36'(0.0033)

ノルムが小さいことは、そのトークンが重要でない、あるいは学習されていないことを意味しない。

エキスパートどうしの似かた

同じ層・同じ種類の行列について、エキスパート間のコサイン類似度を 32×32 のランダム射影で推定した(推定)。全層の平均:4.3924e-04。

エキスパート類似度

測定条件

  • mbscope 0.2.8(結果の形式 v1)、Python 3.14.4、torch 2.13.0+cu130、safetensors 0.8.0、huggingface_hub 0.36.2、tokenizers 0.21.4、transformers 4.49.0
  • 推定の基準:outlier_sigma=6.0、embed_low_pct=0.1、power_iters=30、sketch_dim=32、top_channels=16、seed=20261002
  • FP8(F8_E4M3)の重みは、同名の _scale_inv(ブロックごとの倍率)を掛けて fp32 に戻してから計算
  • 入力文:ja(夏目漱石『吾輩は猫である』冒頭(青空文庫 789_ruby_5639、底本:夏目漱石全集1 ちくま文庫)、sha256 先頭 5d6b40f79b6a)、en(Jane Austen, Pride and Prejudice, Chapter 1 冒頭(Project Gutenberg eBook #1342)、sha256 先頭 0a714a270435)
  • 計算は GPU NVIDIA GeForce RTX 3090(CUDA 13.0、TF32 無効)・fp32
  • 測定は mbscope 0.2.7。測定値はそのままに、mbscope 0.2.8 で集計し直した

コメント

…

コメントは公開されます。個人情報は書かないでください。不適切なものは削除することがあります。

← 記録の一覧へ