输入层
参数组成是Embedding的词表总和
transformer层
参数组成包括归一化参数、QKV的参数、输出全连接线性变换参数、FFN投影参数
输出层
归一化参数、全连接线性变换参数
我们以QwQ-32B为例,计算32B参数组成
QwQ-32B
架构 :使用了 RoPE(旋转位置编码)、SwiGLU、RMSNorm 和带有偏置项的注意力 QKV
各参数维度参考modelscope文件:
名称 | 大小 | |
---|---|---|
token词表大小 | vocab_size | 152064 |
词向量维度 | hidden_size | 5120 |
中间维度 | intermediate_size | 27648 |
KV共享 | num_key_value_heads | 8 |
Q | num_heads | 40 |
头维度 | head_dim | 128 |
层数 | transformer block | 64 |
输入层
词表参数:vocab_size * hidden_size = 152064 * 5120
transformer层
Q的参数:hidden_size * hidden_size = 5120 * 5120
K的参数:由于KV是GQA,总共8个头,所以分成5组,hidden_size * (hidden_size / 5) = (5120 * 5120 / 5)
V的参数:和K一样,hidden_size * (hidden_size / 5) = (5120 * 5120 / 5)
输出后全连接线性转换参数:hidden_size * hidden_size = 5120 * 5120
FFN上投影:intermediate_size * hidden_size = 27648 * 5120
FFN下投影:intermediate_size * hidden_size = 27648 * 5120
SwiGLU门控参数:intermediate_size * hidden_size = 27648 * 5120
两个RMSNorm归一化:2 * hidden_size = 2 * 5120
输出层
归一化忽略不计,全连接线性变换:vocab_size * hidden_size = 152064 * 5120
总参数量
输入层 +(transformer层 * 64 )+ 输出层