Baichuan
- Baichuan 2: Open Large-scale Language Models
- 数据处理: 采用聚类和去重方法,基于 LSH 和 dense embedding 技术,以提高数据的质量和频率评价。
- Tokenizer: 实现了更好的压缩率,对数字进行分位处理,添加了空格 token 以优化编码效率。
- 位置编码 :
- 7B 版本采用了 Rope 编码。
- 13B 版本采用了 ALiBi 编码,以提高模型的表达能力和性能。
- 激活函数: 使用了 SwiGLU 激活函数,引入了门控矩阵,优化了模型的效率和性能。
- Attention 机制: 基于 xFormers 框架进行优化,提高了模型的效率和性能。
- 归一化: 使用 RMSNorm 对 Transformer block 的输入进行 Layer Norm,并对输出 embedding 和 header 进行归一化处理,以提高模型的稳定性和效果。
- 优化器: 采用了 AdamW 优化器,提高训练的稳定性和模型的性能。
- Loss: 引入了 max-z loss,以解决在训练过程中 logits 值偏大和重复惩罚参数敏感性的问题。
- 训练策略: 结合了监督学习微调和 RLHF,以提高模型的安全性和对人类反馈的适应性。
- Baichuan v1 7B
- 数据: 利用开源中英文和互联网数据,并通过启发式过滤、去重和质量评分策略来筛选和优化数据集。
- Tokenizer: 重新训练了 BPE 模型,以实现更好的压缩比,并分开处理数字以保证一致性。此外,支持 UTF- 8 字符的 byte 编码,确保未知词的全覆盖。
- 模型: 与 LLama 模型保持一致,包括 Rope 位置编码、SwiGLU 激活函数以及基于 RMSNorm 的 Pre-Norm 结构,以提高模型的性能和效率。
- Baichuan v1 13B
- 位置编码: 采用了 ALiBi 编码,以提高模型的表达能力和性能。
- 数据: 使用了更多的训练数据,进一步提升模型的能力和效果。
ChatGLM
ChatGLM1
- 采用了 GLM 预训练框架, 包含自编码思想和自回归思想。
- 使用二维位置编码技术, 同时设计了复杂的注意力掩码机制。
[MASK]
: 跟普通的 bert 一样[gMASK]
: 后续为 auto-regressive 生成, 就是前面 Part A 后面接 Part B 时要加上。[sMASK]
: 句子级别 masksop
表示每个 auto-regressive 补全片段的开始,eop
表示补全片段的结束。
- 支持多目标预训练, 包括文档级别和句子级别的生成任务。
- RMSNorm
- 在微调阶段, 将下游 NLU 任务转换为填空生成任务, 以适应预训练目标。
ChatGLM2
- 更长的上下文
- 基于 FlashAttention 技术, 将基座模型的上下文长度从 ChatGLM-6B 的 2K 扩展到了 32K
- 在对话阶段使用 8K 的上下文长度进行训练
- 发布了 ChatGLM2-6B-32K 模型, 在 LongBench 评测中表现出色, 在同等级别开源模型中具有竞争力
- 更强大的性能
- 基于 ChatGLM 初代模型的开发经验, 全面升级了 ChatGLM2-6B 的基座模型
- 采用了 GLM 的混合目标函数, 经过了 1.4T 中英标识符的预训练和人类偏好对齐训练
- 相比初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%)、BBH(+60%) 等数据集上取得了显著的性能提升
- 在同尺寸开源模型中具有较强的竞争力
- 更高效的推理
- 采用了 Multi-Query Attention 技术, 提升了推理速度和降低了显存占用
- 在官方实现下, 推理速度相比初代提升 42%
- INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K
ChatGLM3
- 词表的大小从 ChatGLM 的 150528 缩小为 65024(一个直观的体验是 ChatGLM2、3 加载比 ChatGLM 快不少)
- 位置编码从每个 GLMBlock 一份提升为全局一份
- SelfAttention 之后的前馈网络有不同。ChatGLM 用 GELU(Gaussian Error Linear Unit)做激活;ChatGLM 用 Swish- 1 做激活。而且 ChatGLM2、3 应该是修正了之前的一个 bug,因为 GLU(Gated Linear Unit)本质上一半的入参是用来做门控制的,不需要输出到下层,所以 ChatGLM2、3 看起来前后维度不一致(27392->13696)反而是正确的。
- 加入了 function call 功能
LLama
- LLaMA
- LLaMA 采用了 Decoder-only 的架构, 而不是传统的 Encoder-Decoder 结构
- 侧重于数据质量和过滤, LLaMA 的训练数据选择和过滤工作非常重视, 以确保数据质量
- 模型参数 1.4T token
- 采用了 RoPE、preNorm、RMSNorm 和 SwiGLU 激活函数等技术改进
- LLama 2:Chat Models
- 与 llama 一样使用 RMSNorm, SwiGLU,RoPE, PreNorm,BPE 不同点:
- 增加 GQA(group query attention):但是在 7B 和 13B 上没有增加 GQA,70B 上使用的 GQA。
- 数据增加 40%,max_seq_len: 2048 变为 4096
- 进行有监督微调和 RLHF。
- 使用 3w 高质量 SFT 数据进行 llama2-chat。
Qwen
- 预训练
- 预训练数据共 3TB, 涵盖公共网络文档、百科全书、书籍、代码等多语种内容, 以中文和英文为主
- 采用了一套全面的数据预处理程序, 包括从 HTML 中提取文本、删除重复数据、过滤低质量数据、人工审查等步骤, 以确保数据质
- Tokenizer
- 使用开源快速 BPE 分词器 tiktoken, 在 cl100k 基础词库上增加了中文字词和其他语言词汇, 将数字字符串拆分, 最终词表大小为 152K
- Embedding 和 output projection 不进行权重共享
- 使用 RoPE 作为位置编码,FP32 精确度的逆频率矩阵
- 在 QKV 注意力层添加偏差, 增强模型外推能力
- 采用预归一化和 RMSNorm 提高训练稳定性
- 使用 SwiGLU 激活函数, 减小了隐藏层维度
- 外推能力扩展
- 利用简单非训练计算, 在推理过程中扩展上下文长度
- 动态 NTK 感知插值, 对位置信息动态缩放
- LogN-Scaling, 根据上下文长度调整注意力值熵
- Window Attention, 限制注意力在局部上下文窗口内
Inference
[2] ChatGLM2 解读
[3] ChatGLM 系列模型架构
正文完