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 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 で集計し直した
コメント
…