LLM主流开源大模型介绍
1 LLM主流大模型类别
随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。
目前,市面上已经开源了各种类型的大语言模型,本章节我们主要介绍其中的三大类:
- ChatGLM-6B:衍生的大模型(wenda、ChatSQL等)
- LLaMA:衍生的大模型(Alpaca、Vicuna、BELLE、Phoenix、Chimera等)
- Bloom:衍生的大模型(Bloomz、BELLE、Phoenix等)
2 ChatGLM-6B模型
ChatGLM-6B 是清华大学提出的一个开源、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。该模型使用了和 ChatGPT 相似的技术,经过约 1T 标识符的中英双语训练(中英文比例为 1:1),辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答(目前中文支持最好)。
2.1 训练目标
GLM是一种基于自回归空白填充目标的通用预训练框架。GLM 将 NLU 任务转化为包含任务描述的完形填空问题,可以通过自回归生成的方式来回答。自回归空白填充目标是指在输入文本中随机挖去一些连续的文本片段,然后训练模型按照任意顺序重建这些片段。完形填空问题是指在输入文本中用一个特殊的符号(如[MASK])替换掉一个或多个词,然后训练模型预测被替换掉的词。
GLM的实现思想(训练目标):
- 原始文本x = [ x 1 , x 2 , . . . , x 6 ] 随机进行连续 mask,这里假设 mask 掉[ x 3 ]和 [ x 5 , x 6 ]
- 将[ x 3 ] 和 [ x 5 , x 6 ]替换为 [M] 标志,并打乱 Part B 的顺序。为了捕捉跨度之间的内在联系,随机交换跨度的顺序。
- GLM 自回归地生成 Part B。 每个片段在输入时前面加上 [S],在输出时后面加上 [E]。 二维位置编码表示不同片段之间和片段内部的位置关系。
- 自注意力掩码。 灰色区域被掩盖。Part A 的词语可以自我看到(图蓝色框),但不能看到 Part B。 Part B 的词语可以看到 Part A 和 Part B 中的前面的词语(图黄色和绿色框对应两个片段)。 [M] := [MASK],[S] := [START],[E] := [END]
注意:
- Position1 和 Position2 是输入的二维编码,第一个维度表示片段在原始文本中的相对位置,第二个维度表示片段内部的相对位置。
- 假设原始文本是 x = [ x 1 , x 2 , . . . , x 6 ],其中[ x 3 ]和 [ x 5 , x 6 ]被挖去。那么,被挖去的片段在第一个维度上的位置编码就是它们在原始文本中的索引,即[ x 3 ]来自片段 3,[ x 5 , x 6 ]来自片段 5。在第二个维度上的位置编码就是它们在片段中的索引,即 0 和 1。因此, x 3 的二维位置编码是[3, 0], x 5 的二维位置编码是[5, 0],x 6的二维编码是[5, 1]。
- 同样,我们可以得到x 1 的二维位置编码是[1, 0], x 2 的位置编码是[2, 0], x 4 的位置编码是[4, 0]。
2.2 模型结构
ChatGLM-6B 采用了 prefix decoder-only 的 transformer 模型框架,在输入上采用双向的注意力机制,在输出上采用单向注意力机制。
相比原始Decoder模块,模型结构有如下改动点:
- embedding 层梯度缩减:为了提升训练稳定性,减小了 embedding 层的梯度。梯度缩减的效果相当于把 embedding 层的梯度缩小了 10 倍,减小了梯度的范数。
- layer normalization:采用了基于 Deep Norm 的 post layer norm。
- 激活函数:替换ReLU激活函数采用了 GeLU 激活函数。
- GeLU的特点:
相比ReLU稳定且高效
缓解梯度消失
- 位置编码:去除了绝对位置编码,采用了旋转位置编码 RoPE。
2.3 模型配置(6B)
配置 | 数据 |
参数 | 6.2B |
隐藏层维度 | 4096 |
层数 | 28 |
注意力头数 | 32 |
训练数据 | 1T |
词表大小 | 130528 |
最大长度 | 2048 |
2.4 硬件要求
量化等级 | 最低GPU显存(推理) | 最低GPU显存(高效参数微调) |
FP16(无量化) | 13GB | 14GB |
INT8 | 10GB | 9GB |
INT4 | 6GB | 7GB |
2.5 模型特点
优点:
- 较低的部署门槛: INT4 精度下,只需6GB显存,使得 ChatGLM-6B 可以部署在消费级显卡上进行推理。
- 更长的序列长度: 相比 GLM-10B(序列长度1024),ChatGLM2-6B 序列长度达32K,支持更长对话和应用。
- 人类类意图对齐训练
缺点:
- 模型容量小,相对较弱的模型记忆和语言能力。
- 较弱的多轮对话能力。
2.6 衍生应用
LangChain-ChatGLM:基于 LangChain 的 ChatGLM 应用,实现基于可扩展知识库的问答。
闻达:大型语言模型调用平台,基于 ChatGLM-6B 实现了类 ChatPDF 功能
3 LLaMA模型
LLaMA(Large Language Model Meta AI),由 Meta AI 于2023年发布的一个开放且高效的大型基础语言模型,共有 7B、13B、33B、65B(650 亿)四种版本。
LLaMA训练数据是以英语为主的拉丁语系,另外还包含了来自 GitHub 的代码数据。训练数据以英文为主,不包含中韩日文,所有训练数据都是开源的。其中LLaMA-65B 和 LLaMA-33B 是在 1.4万亿 (1.4T) 个 token上训练的,而最小的模型 LLaMA-7B 和LLaMA-13B 是在 1万亿 (1T) 个 token 上训练的。
3.1 训练目标
在训练目标上,LLaMA 的训练目标是语言模型,即根据已有的上文去预测下一个词。
关于tokenizer,LLaMA 的训练语料以英文为主,使用了 Sentence Piece 作为 tokenizer,词表大小只有 32000。词表里的中文 token 很少,只有几百个,LLaMA tokenizer 对中文分词的编码效率比较低。
3.2 模型结构
和 GPT 系列一样,LLaMA 模型也是 Decoder-only`架构,但结合前人的工作做了一些改进,比如:
- Pre-normalization:为了提高训练稳定性,没有使用传统的 post layer norm,而是使用了 pre layer Norm,同时使用 RMSNorm归一化函数(RMS Norm的主要区别在于去掉了减去均值的部分,简化了Layer Norm 的计算,可以在减少约 7%∼64% 的计算时间)。
- layer normalization:采用了基于 Deep Norm 的 post layer norm。
- 激活函数:将 ReLU 非线性替换为 SwiGLU 激活函数。
- 位置编码:去除了绝对位置编码,采用了旋转位置编码 RoPE。
LLM主流开源代表模型(二)+https://developer.aliyun.com/article/1544727?spm=a2c6h.13148508.setting.14.2a1e4f0eRKiN2o