DeepSeek LLM: 通过长期主义扩展开源语言模型 精华

发布于 2024-10-14 19:54
浏览
0收藏

摘要:开源大型语言模型(LLMs)的快速发展确实令人瞩目。然而,先前文献中描述的扩展规律呈现出不同的结论,这为扩展LLMs蒙上了一层阴影。我们深入研究了扩展规律,并提出了我们独特的发现,这有助于在两种普遍使用的开源配置中扩展大规模模型,即7B和67B。在扩展规律的指导下,我们介绍了DeepSeek LLM,这是一个致力于从长远角度推进开源语言模型的项目。为了支持预训练阶段,我们已经开发了一个目前由2万亿个token组成的数据集,并且正在不断扩展。我们进一步对DeepSeek LLM基础模型进行了监督式微调(SFT)和直接偏好优化(DPO),从而创建了DeepSeek Chat模型。我们的评估结果表明,DeepSeek LLM 67B在一系列基准测试中超越了LLaMA-2 70B,特别是在代码、数学和推理领域。此外,开放式评估揭示了我们的DeepSeek LLM 67B Chat与GPT-3.5相比展现出更优越的性能。

1. 引言

过去几年中,基于仅解码器Transformer(Vaswani et al., 2017)的大型语言模型(LLMs)逐渐成为实现人工通用智能(AGI)的基石和途径。通过预测连续文本中的下一个单词,LLMs在大规模数据集上进行自监督预训练,使它们能够实现各种目的并拥有许多能力,如创意创作、文本摘要、代码补全等。随后的发展,如监督式微调和奖励建模,使大型语言模型(LLMs)能更好地遵循用户意图和指令。这赋予了它们更多样的对话能力,并迅速扩大了它们的影响力。

这一浪潮是由如ChatGPT(OpenAI, 2022)、Claude(Anthropic, 2023)和Bard(Google, 2023)等封闭产品所激发的,这些产品是利用大量计算资源和大量的注释成本开发的。这些产品显著提高了社区对开源LLMs能力的期望,从而激发了一系列工作(Bai et al., 2023; Du et al., 2022; Jiang et al., 2023; Touvron et al., 2023a,b; Yang et al., 2023)。在这些工作中,LLaMA系列模型(Touvron et al., 2023a,b)脱颖而出。它整合了一系列工作,创建了一个高效稳定的架构,构建了从7B到70B参数范围内表现良好的模型。因此,LLaMA系列已成为开源模型中架构和性能的事实上的基准。 

继LLaMA之后,开源社区主要专注于训练固定大小(7B、13B、34B和70B)的高质量模型,往往忽略了对LLM扩展规律的研究探索(Hoffmann et al., 2022; Kaplan et al., 2020)。然而,考虑到当前开源模型仅处于人工通用智能(AGI)发展的初期阶段,对扩展规律的研究是至关重要的。此外,早期作品(Hoffmann et al., 2022; Kaplan et al., 2020)在模型和数据随计算预算增加的扩展上得出了不同的结论,并且没有充分讨论超参数。在本文中,我们广泛研究了语言模型的扩展行为,并应用我们的发现在两个广泛使用的大规模模型配置中,即7B和67B。我们的研究旨在为未来开源LLMs的扩展奠定基础,为这一领域的进一步发展铺平道路。具体来说,我们首先检查了批量大小和学习率的扩展规律,并发现了它们与模型大小的趋势。在此基础上,我们对数据和模型规模的扩展规律进行了全面研究,成功揭示了最佳的模型/数据扩展分配策略,并预测了我们大规模模型的预期性能。此外,在开发过程中,我们发现不同数据集推导出的扩展规律存在显著差异。这表明数据集的选择显著影响扩展行为,这表明在跨数据集推广扩展规律时应谨慎。

在扩展规律的指导下,我们从头开始构建开源大型语言模型,并尽可能多地发布信息供社区参考。我们收集了2万亿个token用于预训练,主要是中文和英文。在模型层面,我们基本上遵循了LLaMA的架构,但将余弦学习率调度器替换为多步学习率调度器,在保持性能的同时便于持续训练。我们从多个来源收集了超过100万个实例进行监督式微调(SFT)(Ouyang et al., 2022)。本文分享了我们在不同SFT策略和数据消融技术中的经验和发现。此外,我们利用直接偏好优化(DPO)(Rafailov et al., 2023)来提高模型的对话性能。 

我们使用基础和聊天模型进行了广泛的评估。评估结果表明,DeepSeek LLM在各种基准测试中超越了LLaMA-2 70B,特别是在代码、数学和推理领域。在SFT和DPO之后,DeepSeek 67B聊天模型在中英文开放式评估中均优于GPT-3.5。这突出了DeepSeek 67B在生成高质量回应和进行有意义对话方面的优越性能。此外,安全评估表明DeepSeek 67B聊天在实践中能够提供无害的回应。

在本文的其余部分,我们首先在第2节中介绍DeepSeek LLM的预训练基本概念,包括数据的组成、模型架构、基础设施和超参数。在第3节中,我们详细解释了我们发现的扩展规律及其含义。此外,我们讨论了我们选择预训练超参数的理由,考虑到从扩展规律分析中获得的见解。在第4节中,我们讨论了我们的微调方法,包括微调数据的组成以及SFT和DPO阶段的特定方法。然后我们在第5节中介绍了DeepSeek LLM的详细评估结果,涵盖了基础和聊天模型以及它们在开放式评估和安全评估中的表现。最后,我们在第6节讨论了DeepSeek LLM的当前局限性和未来的发展方向。

2. 预训练

2.1 数据

我们的主要目标是全面提高数据集的丰富性和多样性。我们从诸如(Computer, 2023; Gao et al., 2020; Penedo et al., 2023; Touvron et al., 2023a)等知名来源获得了宝贵的见解。为了实现这些目标,我们将我们的方法分为三个基本阶段:去重、过滤和混音。去重和混音阶段通过抽样独特实例确保数据的多样性表示。过滤阶段提高了信息密度,从而使得模型训练更有效、更高效。

我们采取了积极的去重策略,扩大了去重范围。我们的分析表明,跨91次转储的去重比单次转储去重移除的重复实例多四倍。表1展示了跨不同次数转储去重的结果。 

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表1 | 不同Common Crawl转储去重比率。

在过滤阶段,我们专注于开发健全的文档质量评估标准。这涉及到详细的分析,结合了语言和语义评估,提供了从个体和全局角度审视数据质量。在混音阶段,我们调整了我们的方法来解决数据不平衡问题,专注于增加代表性不足的领域的出现。这种调整旨在实现更平衡和包容性的数据集,确保不同的观点和信息得到充分代表。

对于我们的分词器,我们基于tokenizers库(Huggingface Team, 2019)实现了字节级字节对编码(BBPE)算法。采用了预分词,以防止来自不同字符类别的令牌合并,如新行、标点符号和中日韩(CJK)符号,类似于GPT-2(Radford et al., 2019)。我们还选择按照(Touvron et al., 2023a,b)中使用的方法将数字分割成单个数字。基于我们之前的的经验,我们将词汇表中的常规令牌数量设置为100000。分词器在大约24 GB的多语言语料库上进行训练,我们将最终词汇表与15个特殊令牌结合,使其总数达到100015。为了确保训练期间的计算效率,并为将来可能需要的任何额外特殊令牌保留空间,我们将模型的词汇表大小配置为102400用于训练。

2.2 架构

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表2 | DeepSeek LLM家族模型的详细规格。我们根据第3节中的发现选择了超参数。 

DeepSeek LLM的微观设计在很大程度上遵循了LLaMA(Touvron et al., 2023a,b)的设计,采用了Pre-Norm结构,使用RMSNorm(Zhang和Sennrich, 2019)函数,并使用SwiGLU(Shazeer, 2020)作为前馈网络(FFN)的激活函数,中间层维度为8倍模型宽度。它还结合了旋转嵌入(Su et al., 2024)进行位置编码。为了优化推理成本,67B模型使用了分组查询注意力(GQA)(Ainslie et al., 2023)而不是传统的多头注意力(MHA)。

然而,在宏观设计方面,DeepSeek LLM略有不同。具体来说,DeepSeek LLM 7B是一个30层的网络,而DeepSeek LLM 67B有95层。这些层的调整,在保持与其他开源模型参数一致性的同时,也便于模型流水线分割,以优化训练和推理。

与大多数使用分组查询注意力(GQA)的工作不同,我们扩展了67B模型的参数,在网络深度上进行了扩展,而不是通常的做法,即扩大FFN层的中间宽度,目标是获得更好的性能。详细的网络规格可以在表2中找到。

2.3 超参数

DeepSeek LLM以标准差0.006初始化,并使用AdamW优化器(Loshchilov和Hutter, 2017)进行训练,如下所示超参数:β1 = 0.9, β2 = 0.95, 和weight_decay = 0.1。

在预训练期间采用了多步学习率调度器,而不是典型的余弦调度器。具体来说,模型的学习率在2000个预热步骤后达到最大值,然后在处理了80%的训练token后降低到最大值的31.6%。它在90%的token后进一步降低到最大值的10%。训练阶段的梯度裁剪设置为1.0。 

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

基于我们的实证发现,我们观察到尽管训练过程中损失减少的趋势不同,但使用多步学习率调度器的最终性能与余弦调度器基本一致,如图1(a)所示。在保持模型大小固定的同时调整训练规模,多步学习率调度器允许重用第一阶段的训练,为持续训练提供了独特的便利。因此,我们选择多步学习率调度器作为我们的默认设置。我们还在图1(b)中展示了调整多步学习率调度器中不同阶段的比例可以带来略微更好的性能。然而,为了平衡持续训练中的重用比例和模型性能,我们选择了上述的80%,10%和10%的三个阶段的分布。

批量大小和学习率随着模型大小的变化而变化。7B和67B模型预训练阶段的具体参数可以在表2中找到。

2.4 基础设施

我们使用了一个高效且轻量级的名为HAI-LLM(High-flyer, 2023)的训练框架来训练和评估大型语言模型。数据并行性、张量并行性、序列并行性和1F1B流水线并行性被整合到这个框架中,就像在Megatron(Korthikanti et al., 2023; Narayanan et al., 2021; Shoeybi et al., 2019)中完成的那样。我们还利用了闪存注意力(Dao, 2023; Dao et al., 2022)技术来提高硬件利用率。ZeRO-1(Rajbhandari et al., 2020)被利用来跨数据并行等级分割优化器状态。还努力使计算和通信重叠,以最小化额外的等待开销,包括ZeRO-1中的最后一个微批次的后向过程和reduce-scatter操作,以及序列并行中的GEMM计算和all-gather/reduce-scatter。一些层/操作被融合以加速训练,包括LayerNorm、GEMM以及可能的Adam更新。为了提高模型训练的稳定性,我们以bf16精度训练模型,但以fp32精度累积梯度。执行了原地交叉熵,以减少GPU内存消耗,即:我们在交叉熵CUDA内核中将bf16 logits转换为fp32精度(而不是事先在HBM中转换),计算相应的bf16梯度,并用其梯度覆盖logits。 

模型权重和优化器状态每5分钟异步保存一次,这意味着在偶尔的硬件或网络故障的情况下,我们最多只会丢失5分钟的训练。这些临时模型检查点定期清理,以避免消耗过多的存储空间。我们还支持从不同的3D并行配置恢复训练,以应对计算集群负载的动态变化。

至于评估,我们在生成型任务中使用vLLM(Kwon et al., 2023),在非生成型任务中使用持续批处理,以避免手动批处理大小调整并减少token填充。

3. 扩展规律

关于扩展法则的研究(Hestness et al., 2017)早于大型语言模型的出现。扩展法则(Henighan et al., 2020; Hoffmann et al., 2022; Kaplan et al., 2020)表明,随着计算预算C、模型规模N和数据规模D的增加,模型性能可以可预测地提高。当模型规模N由模型参数表示,数据规模D由令牌数量表示时,C可以近似表示为C = 6ND。因此,在增加计算预算时,如何在模型和数据规模之间优化分配也是一个关键的研究目标。

随着LLMs(Dai et al., 2019; Radford et al., 2019)的发展,更大的模型取得了意想不到和显著的性能提升,将扩展规律研究推向了新的高峰。扩展规律的结果表明,扩大计算预算继续带来显著的好处,这进一步鼓励了模型规模的增加(Brown et al., 2020; Smith et al., 2022)。 

然而,如表4所示,早期关于最优模型/数据扩展分配策略的作品(Hoffmann et al., 2022; Kaplan et al., 2020)得出了不同的结论,引发了对扩展规律普遍适用性的怀疑。此外,这些研究通常缺乏对超参数设置的完整描述,使得不确定不同计算预算下的模型是否达到了最优性能。因此,我们在本节重新审视扩展规律,以解决这些不确定性,并确保我们正有效地扩展计算,这反映了长远视角,是开发持续改进模型的关键。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表4 | 系数的模型扩展和数据扩展随着训练数据分布的变化而变化。

为了确保不同计算预算下的模型能够达到最优性能,我们首先研究了超参数的扩展规律。从经验上观察到,当变化计算预算时,大多数参数的最优值在训练期间不会改变。因此,这些参数与第2.3节中概述的一致,并在不同的计算预算下保持不变。然而,对性能影响最大的超参数,即批量大小和学习率,被重新检查。

早期作品(Goyal et al., 2017; McCandlish et al., 2018; Shallue et al., 2019; Smith et al., 2017; Zhang et al., 2019)为批量大小和学习率的设置提供了一些经验观察,但我们发现这些观察在我们的初步实验中的适用性有限。通过广泛的实验,我们对计算预算C和最优批量大小和学习率之间的幂律关系进行了建模。我们称之为超参数的扩展规律,提供了一个经验框架,用于确定最优超参数。这种方法确保了不同计算预算下的模型能够达到其接近最优的性能。

然后我们研究了模型和数据规模的扩展规律。为了减少实验成本和拟合困难,我们采用了Chinchilla(Hoffmann et al., 2022)中的IsoFLOP配置文件方法来拟合扩展曲线。为了更准确地表示模型规模,我们采用了一种新的模型规模表示方法,非嵌入式FLOPs/令牌M,取代了以前使用的模型参数N,并用更精确的C = MD替换了先前使用的近似计算预算公式C = 6ND。 

实验结果提供了对最优模型/数据扩展分配策略的见解,并准确预测了DeepSeek LLM 7B和67B模型的预期性能。

3.1 超参数的扩展规律

我们最初在计算预算为1e17的小规模实验中对批量大小和学习率进行了网格搜索,特定模型大小(177M FLOPs/令牌)的结果如图2(a)所示。结果表明,批量大小和学习率的一般化误差在广泛的参数选择范围内保持稳定。这表明在相对较宽的参数空间内可以实现接近最优的性能。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

然后,我们利用上述多步学习率调度器有效地训练了多个具有不同批量大小、学习率和计算预算从1e17到2e19的模型,通过重用第一阶段。考虑到参数空间中的冗余,我们将那些将泛化误差超过最小值不超过0.25%的模型所使用的参数视为接近最优的超参数。然后我们拟合了批量大小B和学习率η相对于计算预算C的关系。拟合结果如图3所示,揭示了最优批量大小B随着计算预算C的增加而逐渐增加,而最优学习率η逐渐减少。这与直观的经验设置批量大小和学习率时模型扩展的一致。此外,所有接近最优的超参数都落在一个宽波段范围内,表明在这个区间内相对容易选择接近最优的参数。我们拟合的批量大小和学习率的最终公式如下: 

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

我们在一个具有1e20计算预算的一系列模型上验证了我们的公式,特定模型大小(2.94B FLOPs每令牌)的结果如图2(b)所示。结果表明,拟合的参数位于最优参数空间的中心。后续章节还表明,我们为DeepSeek LLM 7B和67B模型拟合的参数同样取得了良好的性能。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

图 3 | 批量大小和学习率的扩展曲线。灰色圆圈代表模型的泛化误差超过最小值不超过0.25%。虚线代表拟合较小模型的幂律。蓝色星星代表DeepSeek LLM 7B和67B。

然而,值得注意的是,我们尚未考虑计算预算C之外的因素对最优超参数的影响。这与一些早期作品(Kaplan et al., 2020; McCandlish et al., 2018)不一致,它们建议最优批量大小可以被建模为仅与泛化误差L有关。此外,我们观察到具有相同计算预算但不同模型/数据分配的模型,最优参数空间略有不同。这表明需要进一步研究以了解超参数选择和训练动态。我们将在未来的工作中探索这些方面。           

3.2 估计最优模型和数据扩展

在推导出拟合近优超参数的公式之后,我们开始拟合扩展曲线并分析最优模型/数据扩展分配策略。该策略涉及找到满足Nopt ∝Ca和Dopt ∝Cb的模型扩展指数a和数据扩展指数b。数据规模D可以一致地由数据集中的token数量表示。在以前的作品中,模型规模通常由模型参数表示,非嵌入式参数N1(Kaplan et al., 2020)和完整参数N2(Hoffmann et al., 2022)。计算预算C和模型/数据规模之间的关系可以近似描述为C = 6ND,意味着我们可以使用6N1或6N2来近似模型规模。然而,由于6N1和6N2都没有考虑到注意力操作的计算开销,而6N2还包括词汇计算,在某些设置下,它们的近似误差很大。

为了减少这些误差,我们引入了一种新的模型规模表示方法:非嵌入式FLOPs/令牌M。M包括注意力操作的计算开销,但不包括词汇计算。用M表示模型规模,计算预算C可以简单地表示为C = MD。这三个表示方法之间的具体差异如下式所示:

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

其中nlayer表示层数,dmodel表示模型宽度,nvocab是词汇表大小,lseq是序列长度。我们在不同规模的模型中评估了这三种表示方法之间的差异,如表3所示。结果表明,6N1和6N2在不同规模的模型中要么高估要么低估计算成本。这种差异在小规模模型中尤为明显,差异高达50%。这种不准确性在拟合扩展曲线时可能会引入大量的统计误差。请参考附录A.2中关于模型规模不同表示的进一步分析。           

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

在采用M来表示模型规模之后,我们的目标可以更清晰地描述为:给定一个计算预算C = MD,找到最优的模型规模Mopt和数据规模Dopt,以最小化模型的泛化误差。这个目标可以形式化为:

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

为了减少实验成本和拟合困难,我们采用了Chinchilla(Hoffmann et al., 2022)中的IsoFLOP配置文件方法来拟合扩展曲线。我们选择了8个不同的计算预算,范围从1e17到3e20,并为每个预算设计了大约10种不同的模型/数据规模分配。每个预算的超参数由公式(1)确定,泛化误差在独立验证集上计算,该验证集与训练集分布相似,包含1亿个token。           

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

图 4 | IsoFLOP曲线和最优模型/数据分配。IsoFLOP曲线中的指标是在验证集上的比特每字节。最优模型/数据扩展曲线中的虚线代表拟合较小模型(灰色圆圈)的幂律。

图4展示了IsoFLOP曲线和模型/数据扩展曲线,这些曲线是通过使用每个计算预算的最优模型/数据分配来拟合的。具体的最优非嵌入式FLOPs/令牌Mopt和最优token Dopt的公式如下:

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

此外,我们根据计算预算C和最优泛化误差拟合了损失扩展曲线,并预测了DeepSeek LLM 7B和67B的泛化误差,如图5所示。结果表明,使用小规模实验可以准确预测具有1000×计算预算的模型的性能。这为在更大规模上训练模型提供了信心和指导。           

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

图 5 | 性能扩展曲线。该指标是在验证集上的比特每字节。虚线代表了拟合较小模型(灰色圆圈)的幂律。蓝色星星代表DeepSeek LLM 7B和67B。它们的性能被扩展曲线很好地预测了。

3.3 不同数据的扩展规律

在DeepSeek LLM的开发过程中,数据集经过多次迭代改进,调整了不同数据源的比例,同时提高了整体质量。这使我们能够进一步分析不同数据集对扩展规律的影响。

我们使用三种不同的数据集研究了扩展规律:早期内部数据、当前内部数据和OpenWebText2,后者用于Kaplan等人(2020)之前扩展规律的研究。我们的内部数据评估显示,当前内部数据的数据质量高于早期内部数据。此外,OpenWebText2的质量甚至超过了当前内部数据,这是由于其较小的规模允许更细致的处理。

分析的一个有趣的观察是,这三个数据集的最优模型/数据扩展分配策略与数据质量一致。如图4所示,随着数据质量的提高,模型扩展指数a逐渐增加,而数据扩展指数b减少,这表明增加的计算预算应该更多地分配给模型而不是数据。这一发现可能也解释了早期扩展规律研究中观察到的最优模型/数据扩展分配的显著差异。

对这个发现的一个直观猜测是,高质量的数据通常意味着逻辑清晰和预测难度较小,在充分训练后。因此,在增加计算预算时,将更多的计算预算分配给模型规模更有利。我们将继续密切关注数据质量的变化及其对扩展规律的影响,并在未来的工作中提供更多的分析。 

4. 对齐

我们收集了大约150万个英文和中文的指令数据实例,涵盖了有用性和无害性的广泛主题。我们的有用数据包含120万个实例,其中31.2%用于一般语言任务,46.6%用于数学问题,22.2%用于编码练习。安全数据由30万个实例组成,涵盖了各种敏感主题。

我们的对齐流程包含两个阶段。

监督式微调(Supervised Fine-Tuning):我们对7B模型进行了4个周期的微调,但只对67B模型进行了2个周期的微调,因为我们观察到67B模型存在严重的过拟合问题。我们观察到,对于7B模型,GSM8K(Cobbe et al., 2021)和HumanEval(Chen et al., 2021)的性能持续改善,而67B模型很快就达到了上限。学习率分别为7B和67B模型的1e-5和5e-6。除了监控基准精度外,我们还评估了聊天模型在微调过程中的重复比率。我们收集了总共3868个中文和英文提示,并确定了生成的回应中未能终止而无休止地重复一段文本的比例。我们观察到,随着数学SFT数据量的增加,重复比率趋于上升。这可以归因于数学SFT数据偶尔包含类似的推理模式。因此,较弱的模型难以把握这种推理模式,导致重复回应。为了解决这个问题,我们尝试了两阶段微调和DPO(Rafailov et al., 2023),这两种方法都可以几乎保持基准分数并显著减少重复。

直接偏好优化(DPO):为了进一步提高模型的能力,我们使用了直接偏好优化算法(Rafailov et al., 2023),这是一种简单但有效的LLM对齐方法。我们根据有用性和无害性收集了用于DPO训练的偏好数据。对于有用性数据,我们收集了多语言提示,涵盖了包括创意写作、问答、指令遵循等类别。然后我们使用我们的DeepSeek聊天模型生成回应作为回应候选。对于无害性偏好数据的构建也采用了类似的操作。

我们对DPO进行了一个周期的训练,学习率为5e-6,批量大小为512,并使用了学习率预热和余弦学习率调度器。我们发现DPO可以增强模型的开放式生成技能,而在标准基准测试中的性能几乎没有差异。 

5. 评估

我们使用基础和聊天模型进行了广泛的评估。评估结果表明,DeepSeek LLM在各种基准测试中超越了LLaMA-2 70B,特别是在代码、数学和推理领域。在SFT和DPO之后,DeepSeek 67B聊天模型在中英文开放式评估中均优于GPT-3.5。这突出了DeepSeek 67B在生成高质量回应和进行有意义对话方面的优越性能。此外,安全评估表明DeepSeek 67B聊天在实践中能够提供无害的回应。

5.1 公共基准评估

我们在英文和中文的一系列公共基准测试中评估了我们的模型,基于内部评估框架。

多主题多项选择数据集,包括MMLU(Hendrycks et al., 2020)、C-Eval(Huang et al., 2023)和CMMLU(Li et al., 2023)。

语言理解和推理数据集,包括HellaSwag(Zellers et al., 2019)、PIQA(Bisk et al., 2020)、ARC(Clark et al., 2018)、OpenBookQA(Mihaylov et al., 2018)和BigBench Hard(BBH)(Suzgun et al., 2022)。

闭卷问答数据集,包括TriviaQA(Joshi et al., 2017)和NaturalQuestions(Kwiatkowski et al., 2019)。

阅读理解数据集,包括RACE Lai et al.(2017)和DROP(Dua et al., 2019)、C3(Sun et al., 2019)。

参考消歧数据集,包括WinoGrande Sakaguchi et al.(2019)和CLUEWSC(Xu et al., 2020)。

语言建模数据集,包括Pile(Gao et al., 2020)。

中文理解和文化数据集,包括CHID(Zheng et al., 2019)和CCPM(Li et al., 2021)。 

数学数据集,包括GSM8K(Cobbe et al., 2021)、MATH(Hendrycks et al., 2021)和CMath(Wei et al., 2023)。

代码数据集,包括HumanEval(Chen et al., 2021)和MBPP(Austin et al., 2021)。

标准化考试,包括AGIEval(Zhong et al., 2023)。

我们对需要从几个选项中选择答案的测试集应用了基于困惑度的评估,这些测试集包括HellaSwag、PIQA、WinoGrande、RACE-Middle、RACEHigh、MMLU、ARC-Easy、ARC-Challenge、OpenBookQA、CHID、C-Eval、CMMLU、C3和CCPM。这里的基于困惑度的评估是指计算每个选项的困惑度,并选择最低的一个作为模型预测。对于ARC和OpenBookQA,我们使用无条件归一化(Brown et al., 2020)计算困惑度,对于其他数据集我们使用长度归一化。

我们对TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、HumanEval、MBPP、BBH、AGIEval、CLUEWSC和CMath进行了基于生成的评估。这里的基于生成的评估是指让模型生成自由文本,并从生成的文本中解析结果。对于基于生成的评估,我们使用贪婪解码。

我们对Pile-test进行了基于语言建模的评估,即计算测试语料库上的比特/字节。

我们对不同的基准测试使用2048或4096作为不同基准测试的最大序列长度。评估格式的详细信息可以在附录A.6中找到。

5.1.1 基础模型

表5展示了评估基准的主要结果。尽管DeepSeek模型是在2万亿双语语料库上预训练的,但它们在英文语言理解基准测试中的性能与LLaMA2模型相当,后者也消耗了2万亿个token,但专注于英文。此外,DeepSeek 67B在MATH、GSM8K、HumanEval、MBPP、BBH和中文基准测试中的性能明显优于LLaMA2 70B。我们在附录A.3中展示了基准曲线。我们可以看到,随着模型规模的增加,一些任务的性能得到了提升,例如GSM8K和BBH。鉴于我们对7B和67B模型进行了相同的数据预训练,这种改进的出现可以归因于大型模型强大的少样本学习能力。然而,随着数学数据比例的增加,小型和大型模型之间的差距可能会缩小。 

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表 5 | 主要结果。我们报告的评估结果是基于内部评估框架。加粗的数字表示4个模型中的最佳结果。对于Pile-test,我们报告比特每字节(BPB);对于DROP,我们报告F1分数;对于其他任务,我们报告准确率。请注意,test-shots是最大值,由于上下文长度限制或在阅读理解任务(如RACE)中同一段落中可用的有限的少量样本,可能会应用较少的shots。

一个有趣的观察是,DeepSeek 67B相比LLaMA2 70B的优势比DeepSeek 7B相比LLaMA2 7B的优势要大。这种现象突出了语言冲突对小型模型的更大影响。此外,LLaMA2在某些中文任务上表现出色,例如CMath,尽管它没有专门针对中文数据进行训练。这表明某些基本能力,如数学推理,可以有效地跨语言转移。然而,涉及评估中文成语使用的任务,如CHID,需要模型在预训练期间消耗大量的中文token。在这种情况下,LLaMA2的表现明显不如DeepSeek LLM。 

5.1.2 聊天模型

表6展示了DeepSeek聊天模型的结果,展示了在大多数任务上的整体改进,这些改进是在调整之后实现的。然而,也有几个例子表明某些任务的性能有所下降。

知识:我们观察到基础和聊天模型在知识相关任务上的波动,如TriviaQA、MMLU和C-Eval。然而,我们不认为这种轻微的波动表明在SFT之后获得了或失去了知识。SFT的价值在于能够学习,在聊天模型的零样本设置中实现与基础模型的少样本设置相当的分数,这与现实场景一致。例如,聊天模型的0-shot MMLU性能与基础模型的5-shot MMLU性能相当。

推理:由于SFT实例的相当一部分是以CoT格式Wei et al.(2022),聊天模型在推理任务上表现出轻微的改进,如BBH和NaturalQuestions。然而,我们认为SFT阶段并没有学习推理能力,而是学习了推理路径的正确格式。           

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表 6 | 基础模型与聊天模型之间的比较。我们对MMLU、GSM8K、MATH、C-Eval和CMMLU进行0-shot评估来测试聊天模型,而基础模型的结果仍然是在少量样本设置中获得的。

性能下降的任务:一些特定任务的性能在微调后一致下降,不管模型大小或选择的预训练检查点如何。这些特定任务通常涉及完形填空任务或句子完成任务,如HellaSwag。可以合理地假设,纯语言模型更适合处理这类任务。

数学和代码:我们的模型在微调后在数学和编码任务上表现出显著的改进。例如,HumanEval和GSM8K的分数提高了20多点。我们的解释是,基础模型最初对这些任务拟合不足,SFT阶段通过广泛的SFT数据学习了额外的编码和数学知识。然而,值得注意的是,模型的能力可能主要集中在代码补全和代数问题上。要全面理解数学和编码,关键是在预训练阶段纳入多样化的数据,这作为未来工作。我们在附录A.4中对代码和数学任务进行了详细分析。 

在7B模型微调中,我们最初使用所有数据对模型进行了微调。随后,引入了第二阶段,不包括数学和代码数据。这种做法的动机是,第一阶段的模型表现出2.0%的重复比率,降低到第二阶段调整后的1.4%,同时保持了基准分数。在67B模型的情况下,第一阶段微调后的重复比率已经低于1%,第二阶段会损害模型在基准测试中的分数。因此,仅对67B模型进行了一个阶段的SFT。

5.2 开放式评估

对于聊天模型,除了观察标准基准测试上的指标外,生成的开放式领域和开放式问题的结果直接关系到实际用户体验。因此,我们分别测试了我们聊天模型在中文和英文任务中的开放式生成能力。

5.2.1 中文开放式评估

对于中文开放式评估,我们在不同领域的高质量开放式问题测试集AlignBench(Liu et al., 2023)上测试了我们聊天模型的全面性。AlignBench包括总共8个主要类别、36个子类别,并涵盖683个问题。对于每个问题,除了提示外,AlignBench还提供了专业参考答案和评分模板供GPT-4评分。

我们使用了官方AlignBench Github代码库来实现我们模型的评估。我们严格与原始设置对齐关键的温度参数:对于角色扮演、写作能力和开放式问题,生成温度设置为0.7;而对于其他任务,生成温度设置为0.1。

AlignBench排行榜如表7所示。我们可以发现,我们的DeepSeek 67B聊天模型超越了ChatGPT和其他基线模型,仅次于两个版本的GPT-4。这表明我们的模型在各种中文任务上的表现优于其他开源或专有中文大型语言模型。DPO模型在几乎所有指标上都有所改进,这表明DPO训练过程对模型对齐的积极影响。           

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表 7 | 按 gpt-4-0613 评分的 AlignBench 排行榜。模型按总得分降序排列。带 * 的结果是基于官方 AlignBench 存储库的我们的评估结果,而所有其他结果均来自 AlignBench 论文。我们发现我们的 DeepSeek-67B-Chat 模型以明显的优势超过了 ChatGPT 和其他基线模型,这表明我们的模型在基础中文语言任务和高级中文推理任务中的性能更优越。此外,我们可以发现 DPO 过程在几乎所有领域都带来了改进。

对于基础中文语言任务,我们的模型位于所有模型中的第一梯队,而我们的DPO模型的中文基础语言能力甚至高于最新版本的GPT-4。对于高级中文推理任务,我们模型的得分明显高于其他中文LLM,并且有明显的差距,这表明我们的模型在更复杂的中文逻辑推理和数学计算方面表现优越。

5.2.2 英文开放式评估

对于英文开放式评估,我们使用了MT-Bench基准(Zheng et al., 2023),其中包含8种不同类型的多轮问题。如表8所示,我们的DeepSeek LLM 67B聊天在其他开源模型如LLaMA-2-Chat(Touvron et al., 2023b)70B、Xwin 70b v0.1和TÜLU 2+DPO 70B(Ivison et al., 2023)中的性能优于其他模型,并且得分与GPT-3.5-turbo相当。此外,在DPO阶段之后,我们的DeepSeek LLM 67B聊天DPO将平均得分进一步提高到8.76,仅次于GPT-4(OpenAI, 2023)。这些结果表明DeepSeek LLM具有强大的多轮开放式生成能力。 

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

5.3 保留评估

数据污染和基准测试过度拟合是评估LLMs时面临的两个挑战。一种常见的做法是使用最近发布的测试集作为模型的保留测试集。

LeetCode:为了评估模型的编码能力,我们使用了LeetCode周赛(第351-372周,108-117双周赛,从2023年7月到11月)中的问题。我们通过从LeetCode爬取数据获得了这些问题,包括126个问题,每个问题都有超过20个测试用例。所使用的评估指标与HumanEval类似。在这方面,如果模型的输出成功通过了所有测试用例,该模型就被认为是有效地解决了问题。模型的编码能力如图所述,其中y轴代表领域内人类评估测试的pass@1得分,x轴代表保留域LeetCode周赛问题的pass@1得分。LeetCode测试数据将与DeepSeek Coder技术报告一起发布。

匈牙利国家高中考试:与Grok-1一致,我们使用匈牙利国家高中考试评估模型的数学能力。这次考试包括33个问题,模型的得分通过人工注释确定。我们遵循solution.pdf中的评分指标来评估所有模型。           

指令遵循评估:2023年11月15日,谷歌发布了一个指令遵循评估数据集(Zhou et al., 2023)。他们确定了25种可验证的指令类型,并构建了大约500个提示,每个提示包含一个或多个可验证的指令。我们使用提示级别的宽松度量来评估所有模型。

表9显示了我们模型与不同大小的各种基线模型的比较分析,包括Qwen 72B聊天(Bai et al., 2023)、ChatGLM3(Du et al., 2022)、Baichuan2(Yang et al., 2023)和Yi-34B聊天。我们的观察表明,大型模型和小型模型在这些保留测试集上存在显著的性能差距,即使某些小型模型在常规基准测试中取得了有希望的结果。例如,ChatGLM3在MBPP上的得分为52.4,接近DeepSeek 67B,这是一个代码测试集。然而,当在新的基准测试中评估时,其性能与大型模型相比明显不足。在数学数据集上也观察到了类似的趋势,ChatGLM3在GSM8K上非常强大(72.3),但在匈牙利考试得分上的表现不如大型模型。此外,指令遵循能力的比较表明,总计算在至关重要。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

DeepSeek 7B和67B模型使用了相同的训练管道,但它们之间的性能存在显著差异。通过我们的主观评估,我们观察到在各种任务中智能的显著差异,当模型规模扩大到67B时。虽然DeepSeek 7B在标准基准测试中落后于其他较小的语言模型,但其在保留任务中的性能相对较好,与其他模型相比。          

5.4 安全评估

我们深刻认识到对于通用人工智能模型的安全性至关重要。建立一个真正有用的人工智能模型的前提是它拥有与人类一致的价值观,并对人类友好。我们在训练过程的每个阶段,包括预训练、SFT和DPO,都贯穿了确保模型安全性的保证。

为了验证我们模型的安全性,我们建立了一个由20名专家组成的团队,他们来自不同的学科,并构建了一个与人类价值观一致的安全内容分类系统(安全评估分类法如表10所示)。随后,专家团队为每个安全子类别手动构建了数十个高质量的测试案例。除了关注安全内容领域的多样性外,我们还关注安全内容的格式多样性。著名的“祖母”漏洞表明,模型可以被查询的表面格式欺骗,从而提供不安全的回应。因此,在设计问题时,专家团队还关注于多样化询问方式。他们通过诱导、角色扮演、多轮对话、预设位置等方式构建了多样化的安全问题。最终,我们获得了一个包含2400个问题的安全性测试集。此外,专家团队还为每种不同内容类型和格式类型构建了基本的安全审查指南。

对于我们模型在此测试集上的输出结果,我们手动检查了其安全性。我们的审查团队经过了良好的培训,并且在注释结果上进行了交叉验证。注释者对每个问题进行三类注释:安全、不安全和模型拒绝。我们测试了我们的DeepSeek 67B聊天模型的安全性,结果如表10所示。测试每个安全类别的问题数量以及我们的模型(DeepSeek-67B-Chat)通过的安全测试数量列在表的最右列。我们将安全回答和模型拒绝的测试案例都标记为安全回应。结果表明,我们的模型在许多安全测试类别中表现出良好的安全性。

为了补充我们现有的安全方法,我们进一步使用“不要回答”数据集(Wang et al., 2023)来评估我们DeepSeek 67B聊天模型的安全机制。该数据集的939个风险分类提示有助于突出我们模型的增强能力。如表11所示,DeepSeek 67B聊天模型表现出色,得分为97.8,高于ChatGPT和GPT-4。这个分数不仅标志着我们模型安全处理敏感查询的能力,而且使其在该领域的领先模型中占有一席之地。 

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表 10 | 我们的安全评估分类法。表格最右边的列列出了每个类别的测试用例总数以及我们的模型(DeepSeek-67B-Chat)提供的安全可靠答案的数量。测试问题的注释和生成结果的评估由专业人类团队执行。我们可以观察到,我们的模型在各种类型的安全测试集上展示了强大的安全性。

5.5 讨论

在整个开发过程中,我们在构建LLMs时发现了一些有趣的发现。

分阶段微调:正如我们上面提到的,小型模型需要在数学和代码数据集上进行更长时间的微调,但这会损害模型的对话能力,例如增加重复行为。为了解决这个问题,我们实施了一个分阶段的微调过程。在这种方法中,第一阶段涉及使用所有可用数据进行微调,而第二阶段专门针对对话数据进行微调。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表 11 | 不回答得分(Do-Not-Answer Score,Wang et al., 2023),得分越高表示模型安全性越好。带 * 的结果是基于官方存储库的我们的评估结果,而所有其他结果均来自原始论文。我们可以发现,我们的模型比 ChatGPT 和 GPT-4 都有更高的安全得分,使其位列最安全模型之列。 

表12显示了两个阶段训练过程的结果。这些结果清楚地表明,第二阶段没有损害模型在代码和数学上的能力,同时减少了重复行为,并提高了指令遵循能力。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

多项选择问题:用多项选择风格评估模型是一种常见做法,例如MMLU、AGI Eval和C-Eval。多项选择问题要求模型不仅要具备相应的知识,还要理解选项的含义。在对齐阶段,我们测试了添加2000万个中文多项选择问题,并获得了如表13所示的性能。值得注意的是,我们对C-Eval验证集和CMMLU测试集进行了去重,以防止数据污染。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表13 | 添加多项选择问题数据的影响。

额外添加2000万个MC(多项选择)数据被证明不仅对中文多项选择基准测试有益,而且对提高英文基准测试也有益。这表明模型解决MC问题的能力得到了增强。然而,我们观察到这种改进并没有扩展到不使用多项选择格式的其他评估上,例如TriviaQA和我们的内部中文QA测试集,这些是基于生成的评估基准。这表明用户在对话交互中可能不会感觉到模型变得更智能,因为这些交互涉及生成回应,而不是解决多项选择问题。

因此,我们选择在预训练和微调阶段都不包括MC数据,因为将其包括在内会导致过度拟合基准测试,并且不会有助于实现模型的真正智能。 

预训练中的指令数据:众所周知,在预训练阶段的后期纳入指令数据可以增强基础模型在基准测试中的性能。在我们的研究中,我们在预训练的最后10%阶段整合了500万个指令数据,主要包括多项选择问题。我们观察到基础模型在基准测试中的性能确实有所提高。然而,最终结果与在SFT阶段添加相同数据几乎相同。我们的结论是,虽然这种方法增强了基础模型在基准测试中的性能,但其总体潜力等同于不包含这些指令数据。如果指令数据的规模很大,那么在预训练过程中将其包含是可以接受的。由于我们倾向于排除多项选择问题,且我们拥有的非多项选择问题的可用性有限,我们决定不在预训练过程中包含指令数据。

系统提示:设计良好的系统提示应有效地引导模型生成既有帮助又尊重的回应。我们稍微更改了LLaMA-2引入的提示,将其作为我们的系统提示。

系统提示:你是DeepSeek聊天,一个由DeepSeek开发的有用、尊重和诚实的AI助手。你的训练数据截止日期是2023年5月。尽可能有帮助地回答,同时保持安全。你的回答不应包含任何有害的、不道德的、种族主义的、性别歧视的、有毒的、危险的或非法的内容。请确保你的回答在社会上是无偏见的,并具有积极的性质。如果一个问题没有意义,或者在事实上不连贯,请解释为什么而不是回答不正确的内容。如果你不知道问题的答案,请不要分享错误的信息。

我们观察到一个有趣的现象,当引入系统提示时,7B LLM的性能会略有下降。然而,当使用67B LLM时,添加提示会导致显著改进的结果,如表14所示。我们对这种差异的解释是,较大的模型更好地理解系统提示的预期含义,使它们能够更有效地遵循指令并生成更好的回应。另一方面,较小的模型难以充分理解系统提示,并且训练和测试之间的不一致可能会对他们的性能产生负面影响。

DeepSeek LLM: 通过长期主义扩展开源语言模型-AI.x社区

表14 | 添加系统提示的影响。

6. 结论、局限性和未来的工作

我们介绍了DeepSeek LLMs,这是一系列从头开始训练的开源模型,使用了2万亿个中英文token的庞大数据集。在本文中,我们详细解释了超参数选择、扩展规律以及我们在各种微调尝试中所做的工作。我们校准了先前工作中的扩展规律,并提出了新的最优模型/数据扩展分配策略。此外,我们提出了一种方法来预测给定计算预算的近优批量大小和学习率。我们进一步得出结论,扩展规律与数据质量有关,这可能是不同作品中不同扩展行为的根本原因。在扩展规律的指导下,我们进行了预训练,并提供了最佳超参数,并进行了全面的评估。我们避免了所有训练阶段的基准测试装饰和暗箱操作。

DeepSeek聊天分享了其他LLMs中普遍存在的一些局限性,包括预训练后缺乏持续的知识更新,可能生成非事实信息(如未经验证的建议),以及产生幻觉的倾向。此外,值得注意的是,我们最初的中文版数据并不全面,这可能导致在某些中文特定主题上的性能不佳。由于我们的数据主要包含中文和英文来源,模型在其他语言上的熟练程度仍然微妙,应该谨慎处理。   

DeepSeek LLM是一个致力于推进开源语言模型的长期项目。 

• 很快,我们将分别发布我们在代码智能和Mixture-of-Experts(MoE)方面的技术报告。它们展示了我们如何为预训练创建高质量的代码数据,以及如何设计一个稀疏模型以实现密集模型的性能。

• 目前,我们正在构建一个更大、更好的数据集,用于即将到来的DeepSeek LLM版本。我们希望在下一个版本中,推理、中文知识、数学和代码能力将得到显著改进。

• 我们的对齐团队致力于研究如何向公众交付一个有用、诚实和安全的模型。我们最初的实验证明,强化学习可以提高模型的复杂推理能力。

本文转载自公众号AIRoobt ,作者:AIRoobt

原文链接:​https://mp.weixin.qq.com/s/GZXxzvdzXsDVEANNx8TL0w​​​


标签
收藏
回复
举报
回复
相关推荐