Baichuan2 技术报告笔记

Baichuan2技术报告阅读后的笔记

Baichuan2 与其他大模型的对比如下表

在这里插入图片描述

预训练

预训练数据

  • 预训练数据来源包括互联网网页、书籍、研究论文、代码库等,具体分布如下图:

在这里插入图片描述

  • 数据处理:主要关注数据频率和质量。数据频率依赖于聚类和去重。构建了一个支持LSH类特征和稠密向量特征的大规模去重和聚类系统,系统可以在数小时内处理万亿级别的数据。基于聚类,单个文档、段落、句子被去重和评分,这些分数被用于预训练时的数据采样。数据处理不同阶段的训练数据的规模如下图。
    在这里插入图片描述

模型架构

Baichuan2采用Transformer架构

Tokenizer

tokennizer需要平衡两个因素:

  • 为更高效推理的高压缩率
  • 为保证每个词向量得到充分训练的适当大小的词汇表

考虑这两个因素后,Baichuan2将词表大小从Baichuan1的64000扩展到了125696。

  • 使用了SentencePiece包的BPE来tokenize数据
  • 对于输入数据没有应用任何的归一化操作,也没有像Baichuan1一样添加dummy前缀。
  • 为了更好的处理数值数据将整个数字变成单个数字
  • 为了处理代码中的空格,添加了只有空白字符的token
  • 字符覆盖率设为0.9999,罕见的字符则回退到UTF-8字符
  • 为了处理中文长短语,将token的最大长度设为32
  • tokenizer的训练数据来源于Baichuan2的预训练语料,包括了更多代码样例和学术论文。

下表显示对Baichuan2 tokenizer与其他tokenizer的对比

在这里插入图片描述

Positional Embeddings

Baichuan2-7B使用RoPE位置向量,Baichuan2-13B使用AliBi

Acitivations and Normalizations
  • 使用SwiGLU激活函数,并调整隐藏层尺寸从4倍到 8 3 \frac{8}{3} 38,接着取整到128
  • attention层的实现基于xFormers
  • 使用RMSRorm来进行归一化
Optimizations
  • 训练时使用AdamW, β 1 = 0.9 \beta_1=0.9 β1=0.9 β 2 \beta_2 β2=0.95;使用0.1的weight decay,将梯度裁剪到0.5;使用2000的线性warmup使学习率逐渐增加到最大,在应用cosine decay到最小学习率。模型具体参数如下表

在这里插入图片描述

  • 整个模型训练使用BFloat16混合精度,但是因为BFloats对有些操作如位置向量存在问题,对它们使用全精度。

  • 为了训练的稳定性和提升模型性能,将输出向量进行了归一化(即NormHead)

  • 训练中发现LLM的logits非常大, 而大的logis会使Transformers推理时对repetition penalty参数敏感,所以应用了max-z损失来来归一化logits(下式中的z是最大的logit值):
    L m a x − z = 2 e − 4 ∗ z 2   ( 1 ) \mathcal{L}_{max-z} = 2 e^{-4} * z^2 \ \qquad (1) Lmaxz=2e4z2 (1)

  • 训练了一系列的模型来拟合模型的scaling law,结果如下图,拟合的scaling law以很高的准确率预测了haichuan2的最终损失

    在这里插入图片描述

对齐

Baichuan 2 引入了对齐流程生成了两个chat模型:Baichuan2-7B-Chat和Baichuan2-13B-Chat

Supervised Fine-Tuning

prompt的标准与Claude一样被标记为helpful或harmless, 为了验证数据质量,使用交叉验证-由一名可信的标注员检验众包标注员的一批抽样样本,如果不符合质量标准则丢弃整批数据。

标注的SFT的样本超过了100k。

RLHF

RLHF的整个流程如下图

在这里插入图片描述

  • 奖励模型:对所有的prompt划分了三层分类系统,包括6个主要类别,30个第二类别,超过200个第三层类别,保证每个类别里的prompt有足够的多样性。奖励模型的损失函数与 InstructGPT 一致, 奖励模型的性能结论与Lamma2有一致的结论:两个响应之间的得分差异越大,奖励模型的判别准确率越高。
  • PPO:用PPO来训练模型,包括四个模型:actor模型负责生成相应,reference模型用来计算KL惩罚,reward模型对整个响应提供奖励,critic模型用来学习token维度的价值
  • 训练详情:critic模型先进行了20个训练步的warmup,接着critic和actor模型由基本的PPO算法来更新。所有的模型都是用0.5的梯度裁剪, 5 e − 6 5e-6 5e6的学习率, ϵ = 0.1 \epsilon=0.1 ϵ=0.1的PPO裁剪阈值。 KL惩罚的系数为 β = 0.2 \beta=0.2 β=0.2,并随着训练进行衰减到0.005。chat模型一共训练了350个迭代。

安全性

预训练阶段

设计了一个包含规则和模型的系统来去除到有害内容如暴力、色情、种族歧视、仇恨言论等。

构建了一个中英双语数据集包括了几百万声誉良好的网页内容,并提高了这个数据集的采样率

对齐阶段

构建了一个包括6个攻击类型和100+粒度安全值类别的红队流程

参考资料

  1. Baichuan 2: Open Large-scale Language Models
  2. https://github.com/baichuan-inc/Baichuan2/tree/main
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值