AIGC:【LLM(八)】——Baichuan2技术报告

文章目录

  • 摘要
  • 1. 引言
  • 2. 预训练
    • 2.1 预训练数据(Pre-training Data)
    • 2.2 架构(Architecture)
    • 2.3 令牌化器(Tokenizer)
      • 2.3.1 Positional Embeddings
    • 2.4 激活和规范化(Activations and Normalizations)
    • 2.5 优化(Optimizations)
    • 2.6 规模定律(Scaling Laws)
    • 2.7 基础设施(Infrastructure)
  • 3. 对齐
    • 3.1 监督微调(Supervised Fine-Tuning)
    • 3.2 奖励模型(Reward Model)
    • 3.3 PPO
    • 3.4 训练细节
  • 4. 安全性
    • 4.1 预训练阶段
    • 4.2 对齐阶段
  • 5. 评估
    • 5.1 总体性能
    • 5.2 垂直领域评估
    • 5.3 数学和代码
    • 5.4 多语言
    • 5.5 安全评估
    • 5.6 中间检查点
  • 6. 相关工作
  • 7.限制和道德考虑

摘要

大型语言模型(LLMs)已经在各种自然语言任务上展示了惊人的性能,只需少量自然语言指令的示例,就能减少对大量特征工程的需求。然而,大多数强大的LLM都是闭源的,或者在其能力上受到英语以外的其他语言的限制。在本文技术报告中,我们介绍了百川2号(Baichuan 2),这是一系列大规模的多语言模型,包含70亿和130亿个参数,从0开始训练,共使用2.6万亿个标记。在公共基准测试如MMLU、CMMLU、GSM8K和人为评估中,Baichuan 2与类似大小的其他开源模型相匹配或超过它们。此外,Baichuan 2在医学和法律等垂直领域表现出色。我们将发布所有预训练模型检查点,以利于研究社区更好地理解百川2号的训练动态。

1. 引言

近年来,大型语言模型领域取得了令人充满希望和显著的进步。语言模型的大小已经从数百万参数,如ELMo(Peters等人,2018年)和GPT-1(Radford等人,2018年),增长到数十亿甚至数万亿参数,如GPT-3(Brown等人,2020年)、PaLM(Chowdhery等人,2022年;Anil等人,2023年)和Switch Transformer(Fedus等人,2022年)。规模的增长使得语言模型的能力得到了显著提高,使它们能够执行更多类似于人类的流畅操作,并能够执行一系列多样化的自然语言任务。随着OpenAI推出的ChatGPT(2022年),这些模型生成类似人类文本的能力引起了广泛公众的关注。ChatGPT在各种领域展示了强大的语言熟练程度,从随意交谈到解释复杂概念。这一突破强调了大型语言模型在自动化涉及自然语言生成和理解的任务中的潜力。
尽管大型语言模型已经取得了令人兴奋的突破和应用,但大多数领先的大型语言模型,如GPT-4(OpenAI,2023年)、PaLM-2(Anil等人,2023年)和Claude(Claude,2023年)仍然处于闭源状态。开发人员和研究人员对这些完整模型参数的访问有限,这使得该社区难以深入研究或微调这些系统。围绕LLM的更多开放性和透明度可能加速这个快速发展的领域的研究和负责任的发展。LLaMA(Touvron等人,2023年a)是Meta公司开发的一系列大型语言模型,包含多达650亿个参数,已通过完全开源为LLM研究社区带来了显著的好处。LLaMA的开放式特性以及其他开源LLM,如OPT(Zhang等人,2022年)、Bloom(Scao等人,2022年)、MPT(MosaicML,2023年)和Falcon(Penedo等人,2023年),使研究人员可以自由访问这些模型进行审查、实验和进一步发展。这种透明度和访问将LLaMA与其他专有LLM区分开来。通过提供完全访问,开源LLM已经加速了该领域的研究和发展,产生了新的模型,如Alpaca(Taori等人,2023年)、Vicuna(Chiang等人,2023年)和其他模型(Wang等人,2022年;Zhu等人,2023年;Anand等人,2023年)。

然而,大多数开源大型语言模型主要关注英语。例如,LLaMA的主要数据源Common Crawl只包括LLaMA预训练数据的67%,且仅过滤为英文内容。其他开源LLM,如MPT(MosaicML,2023年)和Falcon(Penedo等人,2023年)也专注于英语,在其他语言中的功能有限。这阻碍了LLM在特定语言(如中文)上的发展和应用。

在本技术报告中,我们介绍了百川2(Baichuan 2),这是一系列大规模多语言语言模型。Baichuan2有两个单独的模型,分别是拥有70亿参数的Baichuan2-7B和拥有130亿参数的Baichuan2-13B。这两个模型都是在2.6万亿标记上进行训练的,这是我们所知的最大数量,比Baichuan1(Baichuan,2023b,a)的数量多了两倍多。凭借如此庞大的训练数据,Baichuan2相较于Baichuan1实现了显著的改进。在一般的基准测试中,如MMLU(Hendrycks等人,2021a)、CMMLU(Li等人,2023)和C-Eval(Huang等人,2023),Baichuan2-7B的性能比Baichuan1-7B高出近30%。特别地,Baichuan2被优化以提高数学和问题解决性能。在GSM8K(Cobbe等人,2021)和HumanEval(Chen等人,2021)评估中,Baichuan2的成绩几乎比Baichuan1的两倍还要好。此外,Baichuan2在医学和法律领域任务上也展示了强大的性能。在MedQA(Jin等人,2021)和JEC-QA(Zhong等人,2020)等基准测试中,Baichuan2超过了其他开源模型,使其成为特定领域优化的基础模型。
此外,我们还发布了两个聊天模型,Baichuan 2-7B-Chat和Baichuan 2-13B-Chat,经优化后可遵循人类指示。这些模型在对话和上下文理解方面表现出色。我们将详细阐述提高Baichuan 2安全性的方法。通过将这些模型开源,我们希望使社区能够进一步改进大型语言模型的安全性,促进负责任的大型语言模型开发的研究。

此外,本着研究合作和持续改进的精神,我们还发布了Baichuan 2在各个训练阶段的检查点,从2000亿个标记到完整的2.6万亿个标记。我们发现,即使对于70亿参数的模型,在训练超过2.6万亿个标记后,性能仍然继续提高。通过分享这些中间结果,我们希望为社区提供关于Baichuan2训练动态的更多见解。理解这些动态是解开大型语言模型内部工作原理的关键(Biderman等人,2023a;Tirumala等人,2022)。我们相信,发布这些检查点将为这个快速发展领域的进一步进步铺平道路。

在这个技术报告中,我们还将分享一些训练Baichuan 2时的试验、错误和教训。在接下来的部分中,我们将介绍对原始Transformer架构所做的详细修改以及我们的训练方法。然后,我们将描述让我们的基础模型符合人类偏好的微调方法。最后,我们将在一组标准测试中对我们的模型的性能与其他LLM进行基准测试。在整个报告过程中,我们致力于提供我们的过程的透明度,包括不成功的实验,以推动LLMs开发的共同知识。Baichuan 2的基石模型和聊天模型可在https://github.com/baichuan-inc/Baichuan2 上找到,供研究和商业用途。

2. 预训练

这个部分介绍了百川2基础模型的训练过程。在深入了解模型细节之前,我们首先在表1中展示了百川2基础模型与其他开源或非开源模型的整体性能对比。然后,我们描述了我们的预训练数据和数据处理方法。接下来,我们详细解释了百川2的架构和扩展结果。最后,我们描述了分布式训练系统。
AIGC:【LLM(八)】——Baichuan2技术报告_第1张图片

2.1 预训练数据(Pre-training Data)

数据来源:在数据收集过程中,我们的目标是追求数据的全面性和代表性。我们从各种来源收集数据,包括通用互联网网页、书籍、研究论文、代码库等,以构建一个广泛的世界知识系统。训练语料库的组成如图1所示。
AIGC:【LLM(八)】——Baichuan2技术报告_第2张图片
数据处理:在数据处理方面,我们关注数据的频率和质量。数据频率依赖于聚类和去重。我们构建了一个大规模的去重和聚类系统,支持类似LSH的特征和密集嵌入特征。这个系统可以在小时内对万亿规模的数据进行聚类和去重。基于聚类,可以对单个文档、段落和句子进行去重和评分。这些分数然后在预训练过程中用于数据采样。数据处理不同阶段训练数据的大小如图2所示。
AIGC:【LLM(八)】——Baichuan2技术报告_第3张图片

2.2 架构(Architecture)

Baichuan 2的模型架构基于流行的Transformer(Vaswani等人,2017)。然而,我们进行了一些修改,详情如下。

2.3 令牌化器(Tokenizer)

令牌化器需要在两个关键因素之间取得平衡:高效推理的高压缩率和确保每个词嵌入充分训练的适当大小的词汇表。我们已经考虑了这两个方面。我们将词汇表大小从百川1的64,000扩大到125,696,旨在在计算效率和模型性能之间找到平衡。
我们使用SentencePiece(Kudo和Richardson,2018)中的字节对编码(BPE)对数据进行令牌化。具体来说,我们对输入文本不应用任何规范化,也不像百川1那样添加虚前置。我们将数字拆分成单独的数字以更好地编码数字数据。为了处理包含额外空格的代码数据,我们在令牌化器中添加了仅包含空格的令牌。字符覆盖率为0.9999,稀有字符退回到UTF-8字节。
我们将最大令牌长度设置为32,以适应长的中文短语。百川2的令牌化器的训练数据来自百川2的预训练语料库,具有更多样本的代码示例和学术论文,以提高覆盖率(Taylor等人,2022)。表2显示了百川2的令牌化器与其他令牌化器的详细对比。
AIGC:【LLM(八)】——Baichuan2技术报告_第4张图片

2.3.1 Positional Embeddings

在我们对Baichuan1的基础上,我们为Baichuan 2-7B采用了旋转位置嵌入(RoPE)(Su等人,2021),为 Baichuan 2-13B采用了ALiBi(Press等人,2021)。ALiBi是一种更新的位置编码技术,已经显示出改进的预测性能。然而,大多数开源模型使用RoPE作为位置嵌入,而如Flash Attention(Dao等人,2022; Dao,2023)之类的优化注意力实现目前更适合RoPE,因为它基于乘法,无需将attention_mask传递给注意力操作。然而,在初步实验中,位置编码的选择对模型性能的影响并不显著。为了能够在基于偏置的和基于乘法的注意力上进行进一步研究,我们在Baichuan 2-7B上应用RoPE,并在Baichuan 2-13B上应用ALiBi,这与Baichuan 1保持一致。

2.4 激活和规范化(Activations and Normalizations)

我们使用SwiGLU(Shazeer,2020)激活函数,这是GLU(Dauphin等人,2017)的开关激活变体,显示出了改进的结果。然而,SwiGLU有一个“双线性”层,并包含三个参数矩阵,与具有两个矩阵的常规Transformer的前馈层不同,所以我们将隐藏尺寸从隐藏尺寸的4倍减少到8/3隐藏尺寸,并四舍五入为128的倍数。
对于Baichuan2的注意层,我们采用由xFormers实现的内存高效的注意(Rabe和Staats,2021)。通过利用xFormers的带有偏置功能的优化注意,我们可以在减少内存开销的同时有效地纳入ALiBi的基于偏置的位置编码。这为Baichuan2的大规模训练提供了性能和效率好处。
我们在Transformer块的输入端应用层归一化(Ba等人,2016),这对预热日程(Xiong等人,2020)更具鲁棒性。此外,我们使用了张和Sennrich(2019)引入的RMSNorm实现,它只计算输入特征的方差以提高效率。

2.5 优化(Optimizations)

我们使用AdamW(Loshchilov和Hutter,2017)进行训练。β1和β2分别设置为0.9和0.95。我们使用0.1的权重衰减并将梯度范数限制为0.5。模型使用2,000个线性缩放步骤进行预热,达到最大学习率,然后对最小学习率应用余弦衰减。参数细节和学习率如表3所示。整个模型使用BFloat16混合精度进行训练。与Float16相比,BFloat16具有更好的动态范围,使其在大值方面更加健壮,这对于训练大型语言模型至关重要。但是,BFloat16的低精度在某些情况下会导致问题。例如,在一些公开的RoPE和ALibi实现中,由于整数超过256时发生的碰撞,torch.arange操作失败,阻止了附近位置的微分。因此,我们对一些值敏感的操作(如位置嵌入)使用全精度。
NormHead:为了稳定训练并提高模型性能,我们对输出嵌入(也被称为‘头部’)进行归一化。在我们的实验中,NormHead有两个优点。首先,在我们的初步实验中,我们发现头部的规约很容易不稳定。罕见令牌的嵌入规约在训练过程中变得更小,这扰乱了训练动力学。NormHead可以显著稳定动力学。其次,我们发现语义信息主要由嵌入的余弦相似性而不是L2距离来编码。由于当前的线性分类器通过点积计算日志,这既是L2距离又是余弦相似性的混合。NormHead减轻了计算日志中的L2距离的干扰。更多详情,请参阅附录C。
在训练过程中,我们发现LLM的logit可能变得非常大。虽然softmax函数对绝对logit项值不敏感,因为它只依赖于它们的相对值。大的logit项在推理过程中导致了问题,因为重复罚分的常见实现(如Hugging Face在model.generate中的实现)直接将一个标量(如1.1或1.2)应用于logit项。以这种方式收缩非常大的logit项会显著改变softmax后的概率,使模型对重复罚分超参数的选择敏感。受到NormSoftmax(Jiang等人,2023b)和PaLM的辅助z损失(Chowdhery等人,2022)的启发,我们添加了一个max-z损失来规范logit项:
在这里插入图片描述
其中z是最大logit项值。这有助于稳定训练,并使推断对超参数更健壮。
Baichuan2-7B和Baichuan2-13B的最终训练损失如图3所示。
AIGC:【LLM(八)】——Baichuan2技术报告_第5张图片

2.6 规模定律(Scaling Laws)

神经网络规模定律,即误差随着训练集大小、模型大小或两者的幂函数而减小,已经在深度学习和大语言模型的训练变得越来越昂贵的情况下确保了性能。在训练数十亿参数的巨型大语言模型之前,我们首先训练一些小型模型,并为训练更大模型制定尺度法则。我们推出了一系列从10M到3B的大小不一的模型,从最终模型大小的1/1000到1/10不等,每个模型都使用来自Baichuan2的一致的超参数和相同的数据集训练至多1万亿个令牌。根据不同模型的最终损失,我们可以获得训练flops到目标损失的映射。为了拟合模型的尺度法则,我们采用了Henighan等人(2020)给出的公式:
在这里插入图片描述
其中L∞是不可减损损失,第一项是形式为幂律缩放项的可减损损失。C是训练flops,LC是该flops下的模型的最终损失。我们使用了SciPy4库中的curve_fit函数来拟合参数。最后的拟合缩放曲线和预测的70亿和130亿参数模型的最终损失如图4所示。我们可以看到,拟合的缩放法则准确地预测了Baichuan2的最终损失。
AIGC:【LLM(八)】——Baichuan2技术报告_第6张图片

2.7 基础设施(Infrastructure)

有效地利用现有的GPU资源在如今训练和部署大型语言模型中起着至关重要的作用。为了实现这一目标,我们开发了一种用于弹性训练框架和智能集群调度策略的协同设计方法。由于我们的GPU在多个用户和任务之间共享,每个任务的具体行为是无法预测的,这通常会导致集群中的GPU节点空闲。考虑到一台配备八块A800 GPU的机器足以满足我们Baichuan7B和Baichuan13B模型的内存需求,我们训练框架的主要设计准则是在机器级别上具有弹性,根据集群状态动态修改任务的资源,从而作为我们智能调度算法的基础。为了满足机器级别的弹性要求,我们的训练框架集成了张量并行(Narayanan等,2021)和ZeRO支持的数据并行(Rajbhandari等,2020),我们在每台机器内部设置张量并行,并对机器之间进行弹性扩展采用ZeRO共享数据并行。
此外,我们采用了一种分割张量的技术(Nie等,2022),我们将某些计算任务进行分割,以减少峰值内存消耗,例如具有大型词汇表的条件交叉熵计算。这种方法使我们能够在没有额外计算和通信的情况下满足内存需求,从而使系统更加高效。为了在不牺牲模型准确性的情况下进一步加速训练,我们实现了混合精度训练,我们在前向和后向计算中使用半精度浮点数(BFloat16),而在优化器更新时使用单精度浮点数(Float32)。此外,为了高效地将我们的训练集群扩展到数千个GPU,我们整合了以下技术以避免通信效率的下降:

  • 拓扑感知分布式训练:在大规模集群中,网络连接经常跨越多个交换机层。我们策略性地安排分布式训练的等级,以最小化跨不同交换机的频繁访问,从而减少延迟并由此提高总体训练效率。
  • 混合和分层ZeRO分区:通过跨GPU划分参数,ZeRO3以额外的全收集通信为代价减少了内存消耗。当扩展到数千个GPU时,这可能会导致严重的通信瓶颈(Jiang等,2023a)。为了解决这个问题,我们提出了一种混合和分层分区方案。具体来说,我们的框架首先在所有GPU上划分优化器状态,然后自适应地决定哪些层需要激活ZeRO3,以及是否分层划分参数。

通过集成这些策略,我们的系统能够在1024个NVIDIA A800 GPU上高效地训练Baichuan2-7B和Baichuan2-13B模型,实现超过180 TFLOPS的计算效率。

3. 对齐

Baichuan2还引入了对齐过程,产生了两个聊天模型:Baichuan2-7B-Chat和Baichuan2-13B-Chat。Baichuan2的对齐过程包括两个主要组成部分:监督微调(SFT)和基于人类反馈的强化学习(RLHF)。

3.1 监督微调(Supervised Fine-Tuning)

在监督微调阶段,我们使用人工标注员对从各种数据源收集的提示进行标注。根据类似于 Claude(2023)的关键原则,将每个提示标记为有益或无害。为了验证数据质量,我们使用交叉验证方法,由权威标注员检查特定众包工作组标注的样本批次的质量,并拒绝任何不符合我们质量标准的批次。
我们收集了超过10万个监督微调样本,并对基础模型进行了训练。接下来,我们通过RLHF方法划分了强化学习过程,以进一步提高结果。RLHF的整个过程,包括RM和RL训练,如图5所示。
AIGC:【LLM(八)】——Baichuan2技术报告_第7张图片

3.2 奖励模型(Reward Model)

我们为所有提示制定了一个三层分类系统,包括6个主要类别、30个次要类别和200多个三级类别。从用户的视角来看,我们希望分类系统全面涵盖所有类型的用户需求。从奖励模型训练的角度来看,每个类别中的提示应该具有足够的多样性,以确保奖励模型可以很好地泛化。
在给定一个提示的情况下,通过不同大小和阶段的Baichuan2模型(SFT,PPO)生成回应,以提高回应的多样性。只有Baichuan2模型家族生成的回应才用于RM的训练。其他开源数据集和专用模型的回应不会提高奖励模型的准确性。这也从另一个角度强调了百川模型系列的内在一致性。
用于训练奖励模型的损失函数与InstructGPT(Ouyang等,2022)中的损失函数一致。从训练中得出的奖励模型展示了与LLaMA 2(Touvron等,2023b)一致的性能,这表明两个回应之间的分数差异越大,奖励模型的鉴别准确性越高,如表4所示。
AIGC:【LLM(八)】——Baichuan2技术报告_第8张图片

3.3 PPO

获得奖励模型后,我们使用PPO(Schulman等,2017)算法训练我们的语言模型。我们使用了四个模型:演员模型(负责生成回应)、参考模型(用于计算与固定参数的KL惩罚)、奖励模型(为整个回应提供一个整体的奖励,具有固定的参数)以及批评者模型(用于学习每个令牌的值)。

3.4 训练细节

在RLHF训练过程中,批评者模型在使用初始的20个提前训练步骤进行预热。然后,演员和评论员模型都通过标准PPO算法更新。对于所有模型,我们使用0.5的梯度剪辑、恒定的5e-6学习率和0.1的PPO剪辑阈值ε。我们设置KL惩罚系数β=0.2,并在步骤中衰减到0.005。我们为所有聊天模型训练350次迭代,从而产生Baichuan2-7B-Chat和Baichuan2-13B-Chat。

4. 安全性

我们认为,模型安全性的改进不仅来自于数据清洗或对齐阶段的规定,还来自于在整个训练阶段利用正面知识和识别负面知识。根据这个概念,我们在百川2系列模型的训练过程中提高了模型的安全性。

4.1 预训练阶段

在预训练阶段,我们密切关注数据安全性。整个预训练数据集经过严格的过滤流程,以提高安全性。我们设计了一套规则和模型来消除有害内容,如暴力、色情、种族歧视、仇恨言论等。
此外,我们还整理了一个包含数百万来自数百个可靠网站的中英文双语数据集,这些网站代表了各种正面的价值领域,包括政策、法律、弱势群体、一般价值观、传统美德等领域。我们还提高了这个数据集的采样概率。

4.2 对齐阶段

我们建立了一个红色团队程序,包括6种攻击类型和100多种细粒度的安全价值类别,初始化时有10名具有传统互联网安全经验的专家标注团队。从预训练数据集中检索相关片段以创建回应,这导致了大约1K个初始化的标注数据。
• 专家标注团队通过红蓝对抗的方式指导一个由50人组成的外包标注团队,以初始化的对齐模型为基础,生成了20万条攻击提示。
• 我们采用专门的多值监督抽样方法,最大限度地利用攻击数据来生成不同安全级别的回应。 在RL优化阶段,我们也把安全放在第一位:
• 在安全强化的开始,我们高效地使用了有限数量的已标注数据来增强针对特定漏洞问题的性能,方法是使用DPO(Rafailov等,2023)方法。
• 通过使用整合有益和无害目标的奖励模型,进行了PPO安全强化训练。

5. 评估

在这一部分,我们报告了预训练基础模型在标准基准上的零样本或少样本结果。我们在自由形式生成任务和多项选择任务上评估Baichuan 2。
自由形式生成:给模型一些示例输入(shot),然后生成延续内容以获得结果,例如用于问答、翻译和其他任务的继续。
多项选择:给模型一个问题和多个选择,任务是选择最合适的选项。 由于任务和示例的多样性,我们将开源评估框架(如lm-evaluation-harness(Gao等,2021)和OpenCompass(OpenCompass,2023)纳入我们的内部实施,以便与其他模型进行公平的基准测试。
我们选择的用于比较的模型大小与Baichuan 2相似,并且是开源的,可以复制结果:

  • LLaMA:Meta在1万亿个标记符上训练的语言模型。上下文长度为2,048,我们评估LLaMA 7B和LLaMA 13B。
  • LLaMA 2 :LLaMA 1的继任者,在2万亿个标记符上训练,并且改善了数据混合。
  • Baichuan1:在1.2万亿个标记符上训练的Baichuan 7B,Baichuan 13B在1.4万亿个标记符上训练。它们都专注于英语和中文。
  • ChatGLM 2-6B :在几个基准上表现良好的聊天语言模型。
  • MPT-7B:一个在1万亿个英语文本和代码标记符上训练的开源LLM。
  • **Falcon-7B **:一系列在1万亿个标记符上训练的LLM,通过精选的语料库进行了增强。它以Apache 2.0许可证发布。
  • Vicuna-13B:通过在ChatGPT生成的对话数据集上微调LLaMA-13B训练的语言模型。
  • Chinese-Alpaca-Plus-13B:通过在ChatGPT生成的对话数据集上微调LLaMA-13B训练的语言模型。
  • XVERSE-13B:在超过1.4万亿个标记符上训练的多语言大型语言模型。

5.1 总体性能

这一部分介绍了Baichuan 2基础模型与其他类似大小的模型的总体性能。我们选择了8个基准进行比较:MMLU(Hendrycks等,2021a)是一个包含各种学术主题多项选择问题的庞大多任务语言理解。C-Eval(Huang等,2023)是一个全面的中文评估基准,包括10k多个多项选择问题。CMMLU(Li等,2023)也是一个专门的评估基准,用于评估LLMs在中文语境和文化中的知识和推理能力。AGIEval(Zhong等,2023)是一个以人类为中心的基准,专门设计用来评估人类的认知和解决问题的能力。Gaokao(Zhang等,2023)是一个使用中国高校入学考试问题的评估框架。BBH(Suzgun等,2022)是一套具有挑战性的BIG-Bench(Srivastava等,2022)任务,语言模型评估并未超过平均人类评分员。GSM8K(Cobbe等,2021)是一个专注于数学的评估基准。HumanEval(Chen等,2021)是一个从文档字符串到代码的数据集,包括164个测试编程逻辑各个方面的编程问题的数据集。对于CMMLU和MMLU,我们采用官方实现并采用5-shot进行评估。对于BBH,我们采用3-shot评估。对于C-Eval、Gaokao和AGIEval,我们只选择有四个候选人的多项选择,以便更好地评估。对于GSM8K,我们采用来自OpenCompass(OpenCompass,2023)的4-shot测试。我们也结合了GPT-4和GPT-3.5-Turbo的结果。除非另外说明,本论文中的结果是使用我们的内部评估工具获得的。总体结果如表1所示。与其他类似大小的开源模型相比,我们的模型具有明显的性能优势。特别是在数学和编程问题上,我们的模型相对于Baichuan 1实现了显著的改进。

5.2 垂直领域评估

我们还在垂直领域对Baichuan 2进行了评估,我们在法律和医疗领域进行了评估,因为近年来这两个领域已经得到了广泛的研究。在法律领域,我们报告了JEC-QA(钟等,2020)的分数,该分数来自中国的国家司法考试。它包含了多项选择和多选题。为了与我们自己的评估套件兼容,我们只测试多项选择题。在医疗领域,我们报告了两个医疗基准MedQA(Jin等,2021)和MedMCQA(Pal等,2022)的分数,以及C-Eval(val)、MMLU和CMMLU(缩写为CMC)中与医疗相关的学科的平均分数。具体来说,MedMCQA来自于美国和中国的专业医学董事会考试,包括三个子集,即USMLE、MCMLE和TWMLE,我们报告了美国医学考试和中华医学考试的多项选择问题的结果,每个问题有五个候选答案;MedMCQA收集自印度的医疗入学考试,我们评估多项选择题并在开发集上报告分数。这些数据集的所有评估都是在5-shot下进行的。如表5所示,Baichuan 2-7B-Base在中国法律领域超过了诸如GPT-3.5 Turbo、ChatGLM 2-6B和LLaMA 2-7B等模型,仅次于GPT-4。与Baichuan 1-7B相比,Baichuan 2-7B-Base显示了将近10个点的改进。在医疗领域,Baichuan 2-7B-Base超过了诸如ChatGLM 2-6B和LLaMA 2-7B等模型,显示出对Baichuan 1-7B的显著改进。同样,Baichuan 2-13B-Base在中国的法律领域超过了除了GPT-4之外的其他模型。在医疗领域,Baichuan 2-13B-Base超过了诸如XVERSE-13B和LLaMA 2-13B等模型。与Baichuan 1-13B-Base相比,Baichuan 2-13B-Base也展示了显著的改进。
AIGC:【LLM(八)】——Baichuan2技术报告_第9张图片

5.3 数学和代码

本节介绍了在数学和编程领域的性能。我们使用GSM8K(Cobbe等人,2021)(4-shot)和MATH(Hendrycks等人,2021年b)(4-shot)来评估模型的数学能力。MATH包含12,500个更难解决的数学问题。为了评估模型的编程能力,我们在HumanEval(Chen等人,2021)(0-shot)和MBPP(Austin等人,2021)(3-shot)中报告分数。

  • HumanEval是一系列编程任务,包括模型的语言理解、推理、算法和简单数学,以评估模型的正确性,并衡量模型的问题解决能力。
  • MBPP由一个包含974个Python短函数和程序文本描述的数据集组成,用于验证其功能的正确性。我们使用OpenCompass来评估模型在数学和编程方面的能力。如表6所示,在数学领域,Baichuan 2-7B-Base超越了许多模型,例如LLaMA 2-7B。在编码域中,它超越了大小相同的模型,例如ChatGLM 2-6B。与Baichuan1-7B模型相比,Baichuan 2-7B-Base展示了显著的改进。在数学方面,Baichuan 2-13B-Base超越了所有相同大小的模型,接近GPT-3.5 Turbo的水平。在编码领域,Baichuan 2-13B-Base超越了像LLaMA 2-13B和XVERSE-13B这样的模型。与Baichuan1-13B-Base相比,Baichuan 2-13B-Base展示了显著的改进。
    AIGC:【LLM(八)】——Baichuan2技术报告_第10张图片

5.4 多语言

我们使用Flores-101(NLLB团队,2022年;Goyal等人,2021年;Guzmán等人,2019年)来评估多语言能力。Flores-101涵盖了世界各地的101种语言。其数据来自各种领域,如新闻、旅行指南和书籍。我们选择了联合国官方语言(阿拉伯语(ar)、中文(zh)、英语(en)、法语(fr)、俄语(ru)和西班牙语(es))以及德语(de)和日语(ja)作为测试语言。我们在Flores-101的七个子任务上进行了8-shot测试,包括zh-en、zh-fr、zh-es、zh-ar、zh-ru、zh-ja和zh-de。评估使用OpenCompass进行。

在多语言领域,如表7所示,Baichuan2-7B-Base在所有七个任务上都超越了所有相同大小的模型,并与Baichuan1-7B相比取得了显著改进。Baichuan2-13B-Base在七个任务中的四个任务上超越了相同大小的模型。在zh-en和zh-ja任务中,它超过了GPT3.5 Turbo,并达到了GPT-4的水平。与Baichuan1-13B-Base相比,Baichuan 2-13B-Base在zh-ar、zh-ru和zh-ja任务上展示了显著的改进。虽然GPT-4在多语言领域仍然占据主导地位,但开源模型正在紧紧赶上。在zh-en任务中,Baichuan 2-13B-Base已经略微超过了GPT-4。
AIGC:【LLM(八)】——Baichuan2技术报告_第11张图片

5.5 安全评估

在第四部分,我们描述了为提高Baichuan 2的安全性所采取的努力。然而,一些先前的研究表明,有帮助和无害是跷跷板的两端——当无害性增加时,有帮助可能会导致一定程度的减少(白等,2022a)。因此,我们在安全性对齐前后评估了这两个因素。

图6显示了Baichuan 2在安全性对齐前后的有帮助和无害性。我们可以看到,我们的安全对齐过程没有损害有帮助性,同时显著提高了无害性。
AIGC:【LLM(八)】——Baichuan2技术报告_第12张图片

然后,我们使用Toxigen(Hartvigsen等人,2022年)数据集对我们的预训练模型的安全性进行评估。与LLaMA 2一样,我们使用来自SafeNLP项目的已清理版本,为13个少数族群区分中立和仇恨类型,形成与原Toxigen提示格式一致的6次射击数据集。我们的解码参数使用温度0.1和top-p 0.9核采样。

我们使用在Toxigen(Hartvigsen等人,2022年)中优化的HateBert版对我们自己的模型进行评估。表8显示,与LLaMA 2相比,Baichuan 2-7B和Baichuan 2-13B模型在某些方面具有安全性优势。
AIGC:【LLM(八)】——Baichuan2技术报告_第13张图片
受到Ji等人的启发(2023),我们构建了百川无害评估数据集(BHED),涵盖偏/歧视、侮辱/粗口、非法/不道德内容、身体健康、心理健康、金融隐私和敏感话题等七大主要安全类别,以评估我们的聊天模型的安全性。为了确保每个类别内的全面覆盖,我们要求人类注编者生成1400个数据样本。我们通过自我指导进一步扩展,并由人类对流利度进行清理,从而产生总共70,000个样本,每个类别有10,000个样本。附录E中显示了那些安全提示和原则的例子。
我们使用这些样本评估不同模型,结果如表9所示。我们可以看到,在安全性评估中,百川2与其他聊天模型相当或超过其他聊天模型。
AIGC:【LLM(八)】——Baichuan2技术报告_第14张图片

5.6 中间检查点

我们还将发布70亿个模型的中间检查点,从2200亿个标记的检查点到2640亿个标记的检查点,这是Baichuan 2-7B-Base的最终输出。我们检查了它们在几个基准测试中的性能,结果如图7所示。
AIGC:【LLM(八)】——Baichuan2技术报告_第15张图片

如图所示,随着训练的进行,百川2的表现一致地得到改善。即使在2,600亿个标记之后,似乎仍有很大的提升空间。这与以前关于规模扩大LLM的工作相一致,表明数据大小是一个关键因素(Hoffmann等人,2022)。在附录D中,我们为70亿和130亿个模型提供了更多的详细训练动态。

6. 相关工作

近年来,语言模型领域经历了一场复兴,主要是由于深度神经网络和Transformer(Vaswani等人,2017)的发展。Kaplan等人(2020)提出了大模型预训练的尺度法则。通过系统地分析模型性能随参数和数据大小的增加,他们为当前大规模模型(具有数百甚至数百亿个参数)的时代提供了一份蓝图。

利用这些尺度法则,像OpenAI、谷歌、Meta和Anthropic这样的组织参与了一场计算军备竞赛,以创建更大的LLM。受到OpenAI的1750亿参数的专有语言模型GPT-3(Brown等人,2020)的鼓舞。LLM的少样本或甚至零样本能力已经改变了大多数自然语言理解任务。从代码生成到数学解决问题,甚至是开放世界场景。专门的科学LLM,如Galactica(Taylor等人,2022),也出现了,展示了大型模型吸收技术知识的潜力。然而,仅仅依靠参数数量并不能决定模型的能力——Chinchilla(Hoffmann等人,2022)表明,根据令牌数量而不是仅仅参数来放大模型容量,可以获得更好的样本效率。

在与私有LLM的发展并行的同时,学术和非营利努力一直在开发开源替代品,如Bloom(Scao等人,2022)、OPT(Zhang等人,2022)和Pythia(Biderman等人,2023b)。尽管一些开源的大型语言模型包含多达1750亿个参数,但大多数是在只有5000亿个令牌或更少的情况下训练的。考虑到这一点,当训练令牌数量超过万亿个时,70亿个参数的模型仍然可以显著提高性能。在这些开源模型中,LLaMA(Touvron等人,2023b)及其后继者LLaMA 2(Touvron等人,2023c)因其性能和透明度而脱颖而出。这很快就被社区优化以提高更好的推理速度和各种应用。

除了那些基础模型之外,还有许多聊天模型被提出来自行遵循人类指令。他们中的大多数都是通过调整基础模型来与人类一致的。那些聊天模型已经证明,理解人类指令和解决复杂任务的性能有了显著的提高(Chiang等人,2023;Xu等人,2023;Sun等人,2023)。为了进一步改善对齐性,Ouyang等(2022)采用了来自人类反馈的强化学习(RLHF)方法。这涉及到通过在人类评级的输出上训练奖励模型来学习人类的偏好。其他方法,如直接偏好优化(DPO)(Rafailov等人,2023)和来自AI反馈的强化学习(RLAIF)(Bai等人,2022b)也被提出,以提高效率和效果。

7.限制和道德考虑

与其他大型语言模型一样,Baichuan 2也面临着伦理挑战。它容易受到偏见和毒性影响,尤其是如果它的大部分训练数据来自互联网的话。尽管我们尽力使用Toxigen(Hartvigsen等人,2022)等基准来减轻这些问题,但这些风险无法消除,而且毒性往往随着模型大小的增加而增加。此外,Baichuan 2模型的知识是静态的,可能会过时或错误,这在需要最新信息的领域(如医学或法律)提出了挑战。虽然经过优化,适用于中文和英文,以确保安全性,但该模型在其他语言中的局限性可能无法充分捕捉到与非中文文化相关的偏见。

还有被滥用的可能性,因为该模型可能被用于生成有害或误导性的内容。尽管我们尽力在安全性和实用性之间取得平衡,但有些安全措施可能看起来像是过度谨慎,影响模型在某些任务中的可用性。我们鼓励用户负责任地、道德地使用Baichuan 2模型。同时,我们将继续优化这些问题,并在未来发布更新版本。

你可能感兴趣的:(LLMs,自然语言处理,前沿技术paper,AIGC)