|
2 | 2 |
|
3 | 3 | # 07.大模型参数设置 |
4 | 4 |
|
5 | | -Author by: XXXX |
6 | | -欢迎您贡献技术文章和技术原理解读哦 |
| 5 | +Author by: 张志达 |
| 6 | + |
| 7 | +## 大模型参数说明 |
| 8 | + |
| 9 | +我们常见的大模型的参数量级, 主要受如下参数的影响, |
| 10 | + |
| 11 | +### Dense模型 |
| 12 | + |
| 13 | +Dense模型, 即每次推理时激活的参数为100%的模型, 常见的模型以Qwen3-32B等为代表。 影响最终模型参数量级如下: |
| 14 | + |
| 15 | +#### vocab_size |
| 16 | + |
| 17 | +表示当前模型中 tokenizer模块能识别的**唯一token数量**。比如Qwen3系列为vocab_size 为 151936, 表示Qwen3系列模型的词汇表包含约15.2万个唯一token |
| 18 | + |
| 19 | +模型的词汇表的个数与 模型embedding层的shape相关, embedding层的shape为(vocab_size, hidden_size), embedding层就是一个map逻辑,根据具体的token,通过tokenizer 找到对应的索引, 再到embedding 查找出对应的向量 |
| 20 | + |
| 21 | +#### hidden_size |
| 22 | + |
| 23 | +hidden_size(也常被成为d_model), 是embedding层中token的向量维度。embedding层流程 |
| 24 | +``` |
| 25 | +1. 输入一个tokenID |
| 26 | +2. 查表(embedding 矩阵)得到 1×hidden_size 的向量 |
| 27 | +3. 后续所有层(注意力,FFN, 残差, LayerNorm)都在 hidden_size维的向量上做运算 |
| 28 | +``` |
| 29 | + |
| 30 | +**hidden_size越大, 表示能力越强, 参数与计算量也 上涨** 常见取值: 512、768、1024、2048、4096、5120、8192 |
| 31 | + |
| 32 | +#### head_dim & num_attention_heads |
| 33 | + |
| 34 | +见前文, 在进行attention计算时, **会进行多头并行计算** 遂会将hidden_size 拆成 num_attention_heads * head_dim。实际 使用时的步骤如下: |
| 35 | + |
| 36 | +```py |
| 37 | +# 1. hidden_size乘 wq,wk wv 获取 qkv矩阵 |
| 38 | +qkv = qkv_proj(hidden_states) |
| 39 | +q, k, v = qkv.split([q_size, kv_size, kv_size], dim=-1) |
| 40 | +# 2. 将qkv的hidden_size为 num_heads * head_dim |
| 41 | +q = q_norm(q.view(-1, num_attention_heads, head_dim)) |
| 42 | +k = k_norm(k.view(-1, num_kv_heads, head_dim)) |
| 43 | +v = v.view(-1, num_kv_heads, head_dim) |
| 44 | +# 3. 应用位置编码 |
| 45 | +q,k = rotary_emb(positions, q, k) |
| 46 | +# 4. 维度转换, 从(B,S,H,d) ->(B, H, S, d),方便后续做并行的多头计算 |
| 47 | +q = q.permute(0, 2, 1, 3) # (B, H, S, d) |
| 48 | +k = k.permute(0, 2, 1, 3) # (B, H, S, d) |
| 49 | +v = v.permute(0, 2, 1, 3) # (B, H, S, d) |
| 50 | +``` |
| 51 | + |
| 52 | +#### intermediate_size |
| 53 | + |
| 54 | +前馈神经网络(FFN)中间层的维度大小 |
| 55 | +FFN是Transformer中的一个关键组件,通常包含两个线性层和激活函数。intermediate size是第一个线性层的输出维度。 |
| 56 | + |
| 57 | +举例:Qwen3-0.6B的intermediate size为3072,表示FFN的中间层有3072个神经元 |
| 58 | + |
| 59 | +#### num_hidden_layers |
| 60 | + |
| 61 | +隐藏层的数量, 即transformer block(layer)的叠加数量 |
| 62 | + |
| 63 | +eg: 在Qwen3-0.6B中此配置为28,代表模型执行时是 |
| 64 | + |
| 65 | +#### num_kv_heads |
| 66 | + |
| 67 | +key和value 的头数 |
| 68 | +在GQA的机制中, KV头数少于注意力的头数, 用于减少计算量。 |
| 69 | + |
| 70 | +如在Qwen3-0.6B的模型中, num_key_value_heads的值为8, num_attention_heads的值为16。表示模型会将16个注意力头分组为8个组, 每个组共享相同的Key和Value。 |
| 71 | + |
| 72 | + |
| 73 | +以Qwen3举例如下: |
| 74 | +| Model | head_dim | hidden_act | hidden_size | intermediate_size | max_position_embeddings | max window layers | attention heads | num_hidden_layers | num_kv_heads | vocab_size | |
| 75 | +| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | |
| 76 | +| Qwen3-0.6B | 128 | silu | 1024 | 3072 | 40960 | 28 | 16 | 28 | 8 | 151936 | |
| 77 | +| Qwen3-1.7B | 128 | silu | 2048 | 6144 | 40960 | 28 | 16 | 28 | 8 | 151936 | |
| 78 | +| Qwen3-4B | 128 | silu | 2560 | 9728 | 40960 | 36 | 32 | 36 | 8 | 151936 | |
| 79 | +| Qwen3-8B | 128 | silu | 4096 | 12288 | 40960 | 36 | 32 | 36 | 8 | 151936 | |
| 80 | +| Qwen3-14B | 128 | silu | 5120 | 17408 | 40960 | 40 | 40 | 40 | 8 | 151936 | |
| 81 | +| Qwen3-32B | 128 | silu | 5120 | 25600 | 40960 | 64 | 64 | 64 | 8 | 151936 | |
| 82 | + |
| 83 | + |
| 84 | +Qwen3-32B 结构示意 |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | + |
| 89 | +### MOE 模型 |
| 90 | + |
| 91 | +MOE模型, 即每次推理时激活的参数为局部参数, 常见的模型以Deepseek-V3,KIMI-K2,Qwen3-235B-A22B等为代表。 影响最终模型参数量级如下: |
| 92 | + |
| 93 | +#### moe_intermediate_size |
| 94 | + |
| 95 | +MoE(混合专家)中间层的维度大小 |
| 96 | +在MoE架构中,每个专家内部有一个中间层。moe intermediate size表示这个中间层的维度。例如,Qwen3-30B-A3B的moe intermediate size为768,表示每个专家的中间层有768个神经元。 |
| 97 | + |
| 98 | +#### num_experts |
| 99 | + |
| 100 | +每层中专家的总数 |
| 101 | +MoE架构中,每层包含多个专家,num experts表示每层的专家总数。例如,Qwen3-30B-A3B有128个专家,表示每层有128个不同的专家网络。 |
| 102 | + |
| 103 | +#### n_shared_experts |
| 104 | + |
| 105 | +共享专家数量 |
| 106 | +在MoE架构中,有些专家是所有token共享的,n_shared_experts表示共享专家的数量。 |
| 107 | + |
| 108 | +| model | head_dim | hidden_act | hidden_size | intermediate_size | max position embeddings | max window_layers | moe_intermediate_size | attention_heads | num_experts | num_experts_per_token | n\_shared\_experts | num_hidden_layers | num_kv_heads | vocab_size | |
| 109 | +| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | |
| 110 | +| Qwen3-30B-A3B | 128 | silu | 2048 | 6144 | 40960 | 48 | 768 | 32 | 128 | 8 | / | 48 | 4 | 151936 | |
| 111 | +| Qwen3-235B-A22B | 128 | silu | 4096 | 12288 | 40960 | 94 | 1536 | 64 |128 | 8 | / | 94 | 4 | 2151936 | |
| 112 | +| DeepSeek-V2-236B | 128 | silu | 5120 | 12288 | 163840 | / | 1536 | 128 | 160 | 6 | 2 | 60 | 128 | 102400 | |
| 113 | +| DeepSeek-V3-671B | 128 | silu |7168 | 18432 | 163840 | / |2048 | 128 | 256 | 8 | 1 | 61 | 128 | 129280 | |
| 114 | + |
| 115 | + |
| 116 | +Qwen3-235B-A22B 结构示意 |
| 117 | + |
| 118 | + |
7 | 119 |
|
8 | | -XXX |
9 | 120 |
|
10 | 121 | ## 本节视频 |
11 | 122 |
|
|
0 commit comments