模型结构与算法
业界主流大语言模型整体结构相似,但是局部设计上各有不同,如表1所示:
模型 |
参数量 |
Hidden size |
Attention Heads Num |
Layers Num |
Decoder |
PE |
Normalization |
Activation |
---|---|---|---|---|---|---|---|---|
LLaMA |
7B |
4096 |
32 |
32 |
Causal |
RoPE |
RMSNorm |
SwiGLU |
13B |
5120 |
40 |
40 |
|||||
33B |
6656 |
52 |
60 |
|||||
65B |
8192 |
64 |
80 |
|||||
chatGLM |
6B |
4096 |
32 |
28 |
Prefix |
RoPE |
Layer Norm |
GeLU |
GLM |
130B |
12288 |
96 |
70 |
Prefix |
RoPE |
DeepNorm |
GeGLU |
GPT |
13B |
5140 |
40 |
40 |
Causal |
Learned |
Pre Layer Norm |
GeLU |
175B |
12288 |
96 |
96 |
|||||
Bloom |
175B |
14336 |
112 |
70 |
Casual |
ALiBi |
Pre Layer Norm |
GeLU |
一般来说,不同的算法选择不影响模型收敛,只会对最终收敛的Loss水平和模型训练效果有影响。业界常使用scaling law来预测一个算法在大模型上的收敛趋势。同时要注意的是,由于大模型代码结构越来越复杂,算法实现错误时有发生,而这会对大模型收敛性有决定性影响。如果使用新设计的实验性模型结构,需要经过反复调试和实验,确保实现没有错误,才能使得模型Loss收敛,并且达到和主流模型匹配甚至更好的性能。
父主题: 大模型精度问题主要来源和现象分析