模型的几个估算问题
有几个数据是需要在模型 学习中必须要搞清楚的
1. 模型的结构
以Qwen/Qwen3.6-35B-A3B-FP8为例, 是一个Moe的多模态模型,以下为模型的config结构
Qwen3_5MoeConfig {
"architectures": [
"Qwen3_5MoeForConditionalGeneration"
],
"image_token_id": 248056,
"model_type": "qwen3_5_moe",
"quantization_config": {
"activation_scheme": "dynamic",
"fmt": "e4m3",
"modules_to_not_convert": [
.......
],
"quant_method": "fp8",
"weight_block_size": [
128,
128
]
},
"text_config": {
"attention_bias": false,
"attention_dropout": 0.0,
"attn_output_gate": true,
"bos_token_id": 248044,
"dtype": "bfloat16",
"eos_token_id": 248044,
"full_attention_interval": 4,
"head_dim": 256,
"hidden_act": "silu",
"hidden_size": 2048,
"initializer_range": 0.02,
"layer_types": [
......
],
"linear_conv_kernel_dim": 4,
"linear_key_head_dim": 128,
"linear_num_key_heads": 16,
"linear_num_value_heads": 32,
"linear_value_head_dim": 128,
"mamba_ssm_dtype": "float32",
"max_position_embeddings": 262144,
"model_type": "qwen3_5_moe_text",
"moe_intermediate_size": 512,
"mtp_num_hidden_layers": 1,
"mtp_use_dedicated_embeddings": false,
"num_attention_heads": 16,
"num_experts": 256,
"num_experts_per_tok": 8,
"num_hidden_layers": 40,
"num_key_value_heads": 2,
"output_router_logits": false,
"pad_token_id": null,
"partial_rotary_factor": 0.25,
"rms_norm_eps": 1e-06,
"rope_parameters": {
"mrope_interleaved": true,
"mrope_section": [
11,
11,
10
],
"partial_rotary_factor": 0.25,
"rope_theta": 10000000,
"rope_type": "default"
},
"router_aux_loss_coef": 0.001,
"shared_expert_intermediate_size": 512,
"tie_word_embeddings": false,
"use_cache": true,
"vocab_size": 248320
},
"tie_word_embeddings": false,
"transformers_version": "5.8.0",
"video_token_id": 248057,
"vision_config": {
"deepstack_visual_indexes": [],
"depth": 27,
"hidden_act": "gelu_pytorch_tanh",
"hidden_size": 1152,
"in_channels": 3,
"initializer_range": 0.02,
"intermediate_size": 4304,
"model_type": "qwen3_5_moe_vision",
"num_heads": 16,
"num_position_embeddings": 2304,
"out_hidden_size": 2048,
"patch_size": 16,
"spatial_merge_size": 2,
"temporal_patch_size": 2
},
"vision_end_token_id": 248054,
"vision_start_token_id": 248053
}
大体流程是
输入文本
Tokenizer (转成 ID) ——>
token_embedding (嵌入层,模型入口) ——>
视觉编码层(ViT, 27层) ——>
投影层 (Projector/Merger) ——>
Transformer × N 层 (核心计算,混合注意力/MoE等) ——>
lm_head (语言模型头,模型出口) ——>
Softmax (生成词表概率分布) ——>
输出下一个 Token
参数量 = vision + text_moe
其中 text_moe = 层数 * 每层参数量
其中层数 = num_hidden_layers = 40
每层参数量 = Attention + MoeFFN(expert + share expert) + Router +LayerNorm
Attention(注意这里不是标准的MHA或者GQA,而是MLA)= Q + K + V + O =