BaiChuan-QWen

news/2025/3/31 20:46:25/

QWen

Tokenizer

  • 选择byte pair encoding (BPE)作为分词方法
  • vacabulary在中文上做了增强,验证增加vocabulary的规模不会为下游任务带来负面影响

Model

在这里插入图片描述

  • Positional embedding:选择RoPE,反向更新时选择FP32的精度而不是FP16或BP16,以提高模型精度
  • Bias:在多数layer中去除了bias,但是在注意力的QKV的layer中,加入了bias,提高模型外推能力
  • RMSNorm: 取代了Pre-Norm
  • Activation function:选择了SwiGLU作为激活函数,把FFN的维度从4倍的hidden size降到了8/3倍

context length

context length受限于Transformer的架构,上下文长度增加会带来巨大的计算量和内存占用
扩展上下文长度主要有两个关键技术去解决:

  • NTK-aware interpolation
  • dynamic NTK-aware interpolation,每个chunk的scale不一样

两个注意力机制:

  • LogN-Scaling, q和v乘以一个系数,context length和training length的长度关系,来保持注意力的稳定
  • window attention,把注意力严格限制在窗口内,防止context length过长

观察到的结论:低层级的layer对context length的扩展更加敏感,相对于高层级

在这里插入图片描述

训练细节

Train阶段

  • context length设置为2048
  • flash attention 加速
  • bf16混合精度训练

SFT阶段
sft也会将next token predict作为训练任务
在system 和user input上算loss

RL阶段
four models: the policy model, valuemodel, reference model, and reward mod

  • we pause the policy model’s updates and focus solely on updating the value model for 50 steps. This approach ensures
    that the value model can adapt to different reward models effectively.

BaiChuan

tokenizer

tokenizer需要平衡两个因素:

  1. 为了高效推理,需要一个高的压缩率
  2. 大小合适的词表
  • 使用byte-pair encoding (BPE),但是没有对输入文本就行任何的归一化,也没有像百川1那样加入dummy prefix
  • split numbers into individual digits
  • 为了解决代码数据中的空格问题,加入了空格作为token
  • maximum token length被设置为32,去解释中文的长短语

model

在这里插入图片描述

  • 7B用的RoPE,13B用的ALiBi,但是最近的实验证明,位置编码方式的选取并不会显著影响模型的性能,分开用是为了后续的研究和百川1进行对比

  • 激活函数用的SwiGLU,从4倍 hidden size减小到8/3 倍。而且四舍五入到128的倍数

  • 注意力层的优化,用的xformer结合ALiBi的位置编码,来减小内存占用

  • RMSNorm,更高效的计算输入变量的方差

  • bf16训练,比fp16有更好的动态范围。但是bf16的低精度也导致了一些问题:

    • RoPE and ALibi 会出现int溢出(超过256),所以位置编码采用全精度
  • NormHead:为了训练稳定和改善模型性能,对output的embediing(称之为head)就行归一化。两个优点:

    • 1)保证训练的稳定性。发现了head的分布不稳定,在训练期间稀少的token的embedding会变得很小,会使得训练中断
    • 2)NormHead减轻了在计算logits时L2距离的干扰。语义信息主要通过嵌入的余弦相似度进行编码,而不是L2距离。由于当前的线性分类器通过点积计算logits,它是L2距离和余弦相似度的混合。
  • 加入max-z loss 去归一化logits。

    在训练过程中,我们发现语言模型(LLMs)的logits可能会变得非常大。然而,softmax函数对于绝对logit值是不敏感的,因为它只依赖于它们的相对值。问题出现在推理过程中,常见的实现直接将重复惩罚应用于logits上。这种收缩非常大的logits的过程可以显着改变softmax后的概率,使模型对重复惩罚超参数的选择变得敏感。

    在这里插入图片描述

  • Scaling low:百川2的缩放规律
    在这里插入图片描述
    我们训练了从1千万到30亿参数的各种模型,使用1万亿个标记进行训练。通过将功耗训练损失拟合到一个幂律项,我们预测了在使用2.6万亿个标记进行训练时,百川2-7B和百川2-13B的训练损失。这个拟合过程准确地预测了最终模型的训练损失(用两颗星标记)。
    在这里插入图片描述


http://www.ppmy.cn/news/1186512.html

相关文章

通过引入插件Grid Masschange实现批量修改交互网格数据

现状描述: 很多时候我们需要对交互式网格进行数据更新,单个或少量的数据还好,一旦数据量过大,APEX现有的原生手动输入就不能满足需求,既浪费人力又浪费时间,白白损失了劳动成本,应对这种情况,有…

随机链表的复制(Java详解)

一、题目描述 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的…

电路的电线的拼接

不积跬步无以至千里,今天小编也是复习今天学习的内容,废话不多说,看博客吧!!! 目录 准备条件 操作 成品 准备条件 操作 将定制的套管插入导线当中,24V或者0V是尖端的端子,后面根…

【Java 进阶篇】Java登录案例详解

登录是Web应用程序中常见的功能,它允许用户提供凭证(通常是用户名和密码)以验证其身份。本文将详细介绍如何使用Java创建一个简单的登录功能,并解释登录的工作原理。我们将覆盖以下内容: 登录的基本概念创建一个简单的…

winodws10系统C盘文件夹目录讲解

背景: 电脑安装系统一段时间后,发现C盘的空间越来越小,于是乎,想了解一下C盘文件目录结构,删除一下非必要的文件,同时增强一些操作系统的知识。 目前我的C盘目录如下: 如果开启显示隐藏文件&…

数据库认证 | Oracle OCP好考吗

数据库对于很多技术人员来说都不陌生,但是你想深入了解的话,那么考个证书也许就是一个不错的选择。 如果能考个Oracle OCP认证的话,那也确实不错。那么Oracle OCP好考吗?下面我们就来了解一下吧。 01 Oracle OCP好考吗 OCP考试还…

基于SSM的航空订票系统

基于SSM的航空订票系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 用户界面 管理员界面 摘要 基于SSM的航空订票系统是一款面向旅客、航空公司和旅…

Android与IOS渲染流程对比

目录 Android CPU计算图元信息 GPU干预 几何阶段等后处理 Android APP通过WindowManager统一提供所有Surface的缓冲区【不管是SurfaceView还是普通的布局流程都会将数据提交到Surface的BufferQuene中】 Java中的Surface是null,最终都是由Native层的Surface处理。…