大模型Baichuan、ChatGLM、LLama、Qwen总结

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

  1. 采用了 GLM 预训练框架, 包含自编码思想和自回归思想。
  2. 使用二维位置编码技术, 同时设计了复杂的注意力掩码机制。
  • [MASK]: 跟普通的 bert 一样
  • [gMASK]: 后续为 auto-regressive 生成, 就是前面 Part A 后面接 Part B 时要加上。
  • [sMASK]: 句子级别 mask
  • sop 表示每个 auto-regressive 补全片段的开始,eop 表示补全片段的结束。
  1. 支持多目标预训练, 包括文档级别和句子级别的生成任务。
  2. RMSNorm
  3. 在微调阶段, 将下游 NLU 任务转换为填空生成任务, 以适应预训练目标。

ChatGLM2

  1. 更长的上下文
  • 基于 FlashAttention 技术, 将基座模型的上下文长度从 ChatGLM-6B 的 2K 扩展到了 32K
  • 在对话阶段使用 8K 的上下文长度进行训练
  • 发布了 ChatGLM2-6B-32K 模型, 在 LongBench 评测中表现出色, 在同等级别开源模型中具有竞争力
  1. 更强大的性能
  • 基于 ChatGLM 初代模型的开发经验, 全面升级了 ChatGLM2-6B 的基座模型
  • 采用了 GLM 的混合目标函数, 经过了 1.4T 中英标识符的预训练和人类偏好对齐训练
  • 相比初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%)、BBH(+60%) 等数据集上取得了显著的性能提升
  • 在同尺寸开源模型中具有较强的竞争力
  1. 更高效的推理
  • 采用了 Multi-Query Attention 技术, 提升了推理速度和降低了显存占用
  • 在官方实现下, 推理速度相比初代提升 42%
  • INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K

ChatGLM3

  1. 词表的大小从 ChatGLM 的 150528 缩小为 65024(一个直观的体验是 ChatGLM2、3 加载比 ChatGLM 快不少)
  2. 位置编码从每个 GLMBlock 一份提升为全局一份
  3. SelfAttention 之后的前馈网络有不同。ChatGLM 用 GELU(Gaussian Error Linear Unit)做激活;ChatGLM 用 Swish- 1 做激活。而且 ChatGLM2、3 应该是修正了之前的一个 bug,因为 GLU(Gated Linear Unit)本质上一半的入参是用来做门控制的,不需要输出到下层,所以 ChatGLM2、3 看起来前后维度不一致(27392->13696)反而是正确的。
  4. 加入了 function call 功能

LLama

  1. LLaMA
  • LLaMA 采用了 Decoder-only 的架构, 而不是传统的 Encoder-Decoder 结构
  • 侧重于数据质量和过滤, LLaMA 的训练数据选择和过滤工作非常重视, 以确保数据质量
  • 模型参数 1.4T token
  • 采用了 RoPE、preNorm、RMSNorm 和 SwiGLU 激活函数等技术改进
  1. 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

  1. 预训练
  • 预训练数据共 3TB, 涵盖公共网络文档、百科全书、书籍、代码等多语种内容, 以中文和英文为主
  • 采用了一套全面的数据预处理程序, 包括从 HTML 中提取文本、删除重复数据、过滤低质量数据、人工审查等步骤, 以确保数据质
  1. Tokenizer
  • 使用开源快速 BPE 分词器 tiktoken, 在 cl100k 基础词库上增加了中文字词和其他语言词汇, 将数字字符串拆分, 最终词表大小为 152K
  • Embedding 和 output projection 不进行权重共享
  • 使用 RoPE 作为位置编码,FP32 精确度的逆频率矩阵
  • 在 QKV 注意力层添加偏差, 增强模型外推能力
  • 采用预归一化和 RMSNorm 提高训练稳定性
  • 使用 SwiGLU 激活函数, 减小了隐藏层维度
  1. 外推能力扩展
  • 利用简单非训练计算, 在推理过程中扩展上下文长度
  • 动态 NTK 感知插值, 对位置信息动态缩放
  • LogN-Scaling, 根据上下文长度调整注意力值熵
  • Window Attention, 限制注意力在局部上下文窗口内

Inference

[1] 通义千问 -Qwen 技术报告细节分享

[2] ChatGLM2 解读

[3] ChatGLM 系列模型架构

正文完
 1
admin
版权声明:本站原创文章,由 admin 2024-04-07发表,共计2552字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请联系tensortimes@gmail.com。
评论(没有评论)
验证码