DeepSeek LLM Scaling Open-Source Language Models with Longtermism
DeepSeek LLM:以长期主义理念扩展开源语言模型

摘要
开源大语言模型的发展速度确实令人瞩目。然而,现有文献中描述的缩放法则呈现出不尽相同的结论,这为大规模语言模型的扩展蒙上了一层阴影。我们深入研究了缩放法则,并针对当前广泛使用的7B与67B两种开源配置,提出了我们独特的发现,以促进大规模模型的扩展。在缩放法则的指导下,我们推出了DeepSeek LLM项目,这是一个致力于从长远视角推进开源语言模型发展的计划。为支持预训练阶段,我们构建了一个目前包含2万亿token且持续扩增的数据集。我们在DeepSeek LLM基础模型上进一步实施了监督微调与直接偏好优化,从而创建出DeepSeek Chat模型。评估结果表明,DeepSeek LLM 67B在多项基准测试中超越了LLaMA-2 70B,尤其在代码、数学和推理领域表现突出。此外,开放式评估显示,我们的DeepSeek LLM 67B Chat模型性能优于GPT-3.5。
1.引言
近年来,基于仅解码器架构的Transformer模型(Vaswani等人,2017)的大型语言模型,日益成为实现通用人工智能的基石与路径。通过预测连续文本中的下一个词,大型语言模型在庞大数据集上进行自监督预训练,从而获得多种目标功能与能力,例如创新生成、文本摘要、代码补全等。后续发展出的监督微调与奖励建模等技术,使大型语言模型能更好地遵循用户意图与指令。这赋予了它们更通用的对话能力,并迅速扩大了其影响力。
本轮浪潮由ChatGPT(OpenAI,2022)、Claude(Anthropic,2023)和Bard(Google,2023)等闭源产品所引发。这些产品依托海量计算资源与高昂标注成本开发而成,极大提升了业界对开源大语言模型能力的期待,从而催生了一系列相关工作(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)尤为突出。它整合了多项研究成果,构建出高效稳定的架构,打造了参数量从70亿至700亿的优质模型。因此,LLaMA系列已成为开源模型在架构与性能方面事实上的基准。
继LLaMA之后,开源社区主要专注于训练固定规模(7B、13B、34B及70B)的高质量模型,往往忽视了对大语言模型缩放定律的研究探索(Hoffmann等人,2022;Kaplan等人,2020)。然而,鉴于当前开源模型仅处于通用人工智能发展的初始阶段,对缩放定律的研究至关重要。此外,早期研究(Hoffmann等人,2022;Kaplan等人,2020)在计算预算增加时对模型与数据规模的缩放得出了不同结论,且未能充分讨论超参数设置。本文中,我们深入探究了语言模型的缩放规律,并将研究成果应用于两种广泛使用的大规模模型配置(即7B与67B)中。本研究旨在为未来开源大语言模型的规模化发展奠定基础,推动该领域的进一步进步。具体而言,我们首先探究了批大小与学习率的缩放定律,并发现了它们随模型规模变化的趋势。在此基础上,我们对数据规模与模型规模的缩放定律进行了全面研究,成功揭示了最优的模型/数据扩展分配策略,并预测了我们大规模模型的预期性能。此外,在研发过程中,我们发现基于不同数据集推导出的缩放定律存在显著差异。这表明数据集的选择会显著影响缩放行为,意味着在跨数据集推广缩放定律时应保持审慎态度。
根据我们的缩放定律指导,我们从零开始构建开源大型语言模型,并尽可能多地发布信息供社区参考。我们收集了2万亿token用于预训练,语料以中文和英文为主。在模型架构层面,我们基本遵循了LLaMA的设计,但将余弦学习率调度器替换为多步学习率调度器,在保持性能的同时便于持续训练。我们从多样化来源收集了超过100万条监督微调实例(Ouyang等,2022)。本文分享了我们在不同监督微调策略上的实践经验及数据消融技术的发现。此外,我们采用直接偏好优化方法(Rafailov等,2023)来提升模型的对话性能。
我们使用基座模型和对话模型进行了全面评估。评估结果表明,DeepSeek LLM 在多项基准测试中均超越 LLaMA-2 70B,尤其在代码、数学和推理领域表现突出。经过监督微调(SFT)和直接偏好优化(DPO)后,DeepSeek 67B 对话模型在中英文开放评估中均优于 GPT-3.5。这凸显了 DeepSeek 67B 在生成高质量回复和进行多语言深度对话方面的卓越性能。此外,安全性评估表明,DeepSeek 67B Chat 在实际应用中能够提供无害的回答。
本文剩余部分结构如下:第二节将首先介绍 DeepSeek 大语言模型的预训练基础概念,包括数据构成、模型架构、基础设施及超参数设置。第三节详细阐述我们所发现的缩放定律及其启示,并基于缩放定律的分析结果,说明预训练超参数选择的依据。第四节探讨我们的微调方法,涵盖微调数据构成以及 SFT 和 DPO 阶段的具体技术方案。第五节呈现 DeepSeek 大语言模型的详细评估结果,包括基础模型和对话模型的性能表现,以及其在开放式评估与安全性评估中的表现。最后,第六节将讨论 DeepSeek 大语言模型当前存在的局限性及未来的发展方向。
2.预训练
2.1. 数据
我们的主要目标是全面增强数据集的丰富性与多样性。我们从(Computer, 2023; Gao et al., 2020; Penedo et al., 2023; Touvron et al., 2023a)等权威来源获得了有价值的洞见。为实现这些目标,我们将方法组织为三个关键阶段:去重、过滤与重组。去重和重组阶段通过对独特实例进行抽样,确保了数据的多样性表征;过滤阶段则提升了信息密度,从而使模型训练更为高效。
我们采用了积极的去重策略,扩大了去重范围。分析表明,对整个Common Crawl语料库进行去重相比仅对单个数据转储文件进行去重,能更有效地移除重复实例。表1显示,跨91个数据转储文件进行去重所剔除的文档数量,是单文件去重方法的四倍。

表1 | 各Common Crawl数据集的去重率。
在筛选阶段,我们专注于建立稳健的文档质量评估标准。这涉及结合语言学和语义评估的详细分析,从个体与全局双重视角提供数据质量的全景视图。在重组阶段,我们调整策略以应对数据不均衡问题,重点关注提升低代表性领域的覆盖面。这种调整旨在构建更均衡、更具包容性的数据集,确保多元观点和信息得到充分呈现。
在我们的分词器实现中,我们基于tokenizers库(Huggingface Team,2019)采用了字节级字节对编码(BBPE)算法。借鉴GPT-2(Radford等人,2019)的方法,我们使用预分词处理来防止不同字符类别(如换行符、标点符号和CJK字符)之间的 token 合并。同时,参照Touvron等人(2023a,b)的方案,我们选择将数字拆分为独立数位。根据先前经验,我们将常规词汇表 token 数量设定为100000。该分词器在约24 GB的多语种语料上进行训练,最终词汇表额外添加了15个特殊 token,总规模达到100015。为确保训练时的计算效率,并为未来可能需要的额外特殊 token 预留空间,我们在训练时将模型的词汇表容量配置为102400。
2.2. 架构
DeepSeek大语言模型的微观设计基本遵循LLaMA架构(Touvron等人,2023a,b),采用Pre-Norm结构并应用RMSNorm归一化函数(Zhang与Sennrich,2019),前馈网络(FFN)的激活函数选用SwiGLU(Shazeer,2020),其中间层维度为8/3 dmodel。该模型同时采用旋转位置编码(Su等人,2024)。为优化推理成本,670亿参数版本使用分组查询注意力机制(GQA)(Ainslie等人,2023)替代传统的多头注意力机制(MHA)。

表2 | DeepSeek大语言模型系列详细规格说明。我们根据第3节的研究结果选择超参数。
然而在宏观设计层面,DeepSeek LLM略有不同。具体而言,DeepSeek LLM 7B采用30层网络结构,而DeepSeek LLM 67B则包含95层。这些层级调整在保持与其他开源模型参数规模一致的同时,也有助于实现模型流水线切分,从而优化训练与推理过程。
与多数采用分组查询注意力(GQA)的研究不同,我们扩展了670亿参数模型的网络深度,而非通常采用的扩宽前馈网络层中间宽度的做法,以期获得更优性能。详细的网络规格请见表2。
2.3. 超参数
DeepSeek LLM 以 0.006 的标准差进行初始化,并使用 AdamW 优化器进行训练,其超参数设置如下:β1=0.9,β2=0.95β_1 = 0.9,β_2 = 0.95β1=0.9,β2=0.95,权重衰减系数 = 0.1。
在预训练阶段,我们采用了多步学习率调度器,而非常用的余弦调度器。具体而言,模型的学习率在经过2000步预热后达到最大值,随后在处理完80%的训练标记词后降至最大值的31.6%,并在处理完90%的标记词后进一步降至最大值的10%。训练阶段的梯度裁剪阈值设定为1.0。
根据我们的实证研究结果,我们观察到尽管损失减少方面存在差异在训练过程中,多步长学习率调度器的最终表现与余弦调度器基本一致,如图1(a)所示。当保持模型规模不变而调整训练规模时,多步长学习率调度器允许复用第一阶段的训练,这为持续训练提供了独特便利。因此,我们选择多步长学习率调度器作为默认设置。我们在图1(b)中也展示了,调整多步长学习率调度器中不同阶段的比例可以获得稍好的性能。然而,为了平衡持续训练中的复用率与模型性能,我们选择了前述三阶段按80%、10%和10%的比例分布。

图1 | 采用不同学习率调度器或不同调度器参数时的训练损失曲线。模型规模为16亿参数,训练数据集包含1000亿词元。
批处理大小与学习率随模型规模而变化。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中最后微批次的反向传播与归约散射操作的重叠,以及序列并行中GEMM计算与全收集/归约散射操作的重叠。通过融合特定层/算子(包括LayerNorm、尽可能融合的GEMM算子及Adam更新操作)进一步提升训练速度。为增强模型训练稳定性,我们采用bf16精度进行模型训练,同时在fp32精度下累积梯度。为降低GPU内存消耗,我们实施原位交叉熵计算:即在交叉熵CUDA核函数中动态将bf16逻辑值转换为fp32精度(而非在HBM中预先转换),计算对应的bf16梯度,并将逻辑值直接覆盖为其梯度值。
模型权重与优化器状态每5分钟异步保存一次,这意味着在偶发的硬件或网络故障最坏情况下,我们最多仅损失5分钟的训练进度。这些临时模型检查点会被定期清理,以避免占用过多存储空间。同时我们支持从不同的3D并行配置恢复训练,以应对计算集群负载的动态变化。
在评估方面,对于生成式任务我们采用vLLM(Kwon等人,2023),在非生成式任务中则使用连续批处理技术,以避免手动调整批次大小并减少令牌填充。
3.Scaling Laws
关于缩放定律的研究(Hestness等人,2017)早于大型语言模型的出现。缩放定律(Henighan等人,2020;Hoffmann等人,2022;Kaplan等人,2020)表明,随着计算预算C、模型规模N和数据规模D的增加,模型性能可被预测地提升。当模型规模N以参数量表示、数据规模D以token数量表示时,C可近似估算为C = 6N D。因此,在增加计算预算时,如何优化模型规模与数据规模之间的分配,同样是缩放定律研究中的一个关键目标。
大型语言模型的发展(Dai等人,2019;Radford等人,2019),尤其是更大规模的模型取得了出乎意料且显著的性能提升,将缩放定律研究推向了一个新的高峰。缩放定律的研究结果表明,扩大计算预算持续带来显著收益,这进一步激励了模型规模的增加(Brown等人,2020;Smith等人,2022)。
然而,如表4所示,关于最优模型/数据扩展分配策略的早期研究(Hoffmann等人,2022年;Kaplan等人,2020年)得出了不同的结论,这引发了对扩展定律普遍适用性的质疑。此外,这些研究往往未完整描述超参数设置,因而无法确定不同计算预算下的模型是否达到了最优性能。因此,我们在本节中重新审视扩展定律,以解决这些不确定性,并确保我们正沿着高效扩展计算资源的正确路径前进------这反映了长期发展的视角,也是持续开发改进模型的关键。

表 4 | 模型缩放系数与数据缩放系数随训练数据分布的变化。
为确保不同计算预算下的模型均能达到最优性能,我们首先研究了超参数的缩放规律。根据实际经验观察,大多数参数在训练过程中的最优值并不会随计算预算的变化而改变。因此,这些参数与第2.3节所述保持一致,在不同计算预算下保持不变。然而,我们重新审视了对性能影响最为显著的两个超参数------批量大小和学习率。
早期研究(Goyal等人,2017;McCandlish等人,2018;Shallue等人,2019;Smith等人,2017;Zhang等人,2019)为批大小和学习率的设置提供了一些经验性观察,但我们在初步实验中发现这些观察的适用性有限。通过大量实验,我们建模了计算预算C与最优批大小及学习率之间的幂律关系。这一关系,我们称之为超参数的缩放定律,为确定最优超参数提供了一个经验框架。该方法确保了不同计算预算下的模型均能接近其最优性能。
随后我们研究了模型规模与数据规模的缩放规律。为降低实验成本与拟合难度,我们采用Chinchilla(Hoffmann等人,2022)提出的IsoFLOP轮廓法来拟合缩放曲线。为更精确地表征模型规模,我们采用了新的模型规模表征方式------非嵌入FLOPs/令牌数M,以取代早期使用的模型参数量N,并将近似计算量公式C = 6ND替换为更精确的C = MD。实验结果揭示了模型与数据规模扩展的最优分配策略及性能预测,并精准预测了DeepSeek LLM 7B和67B模型的预期性能表现。
此外,在探索缩放定律的过程中,我们所使用的数据经历了多次迭代,质量持续提升。我们在多个数据集上尝试拟合缩放曲线,发现数据质量显著影响模型与数据扩展的最佳分配策略。数据质量越高,增加的计算预算就越应倾向于模型规模的扩展。这表明在同等数据规模下,高质量数据能够驱动更大模型的训练。最优模型与数据扩展分配策略的差异,也可作为评估数据质量的一种间接方法。我们将持续密切关注数据质量的变化及其对缩放定律的影响,并在后续工作中提供更多分析。
综上所述,我们在缩放定律方面的贡献与发现可归纳如下:
• 我们建立了超参数的缩放定律,为确定最优超参数提供了经验框架。
• 我们采用非嵌入FLOPs/令牌M而非模型参数N来衡量模型规模,从而得出更精确的模型/数据最优扩展分配策略,并能够更好地预测大规模模型的泛化损失。
• 预训练数据质量会影响模型/数据最优扩展分配策略。数据质量越高,增加的计算预算中应分配给模型扩展的比例就越大。
3.1. 超参数的缩放定律
我们最初在计算预算为1e17的小规模实验中,对批量大小和学习率进行了网格搜索,特定模型规模(177M FLOPs/token)的结果如图2(a)所示。结果表明,在批量大小和学习率的广泛选择范围内,泛化误差保持稳定。这表明在相对较宽的参数空间内可以实现接近最优的性能。

图2 | 训练损失与批量大小和学习率的关系(使用1e17和1e20 FLOPs)。
然后,我们利用上述多步学习率调度器,通过复用第一阶段,有效训练了多个具有不同批次大小、学习率以及计算预算(范围从1e17到2e19)的模型。考虑到参数空间中的冗余性,我们将泛化误差超过最小值不超过0.25%的模型所使用的参数视为近最优超参数。随后,我们针对计算预算C拟合了批次大小B和学习率η。拟合结果如图3所示,揭示了最优批次大小B随计算预算C的增加而逐渐增大,而最优学习率η则逐渐减小。这与缩放模型时对批次大小和学习率的直观经验设定一致。此外,所有近最优超参数均落在一个较宽的带状区间内,表明在该范围内选择近最优参数相对容易。我们最终拟合得到的批次大小和学习率公式如下:
ηopt=0.3118⋅C−0.1250Bopt=0.2920⋅C0.3271\eta_{\mathrm{opt}}=0.3118\cdot C^{-0.1250} B_{\mathrm{opt}}=0.2920\cdot C^{0.3271}ηopt=0.3118⋅C−0.1250Bopt=0.2920⋅C0.3271

图3 | 批次大小与学习率的缩放曲线。灰色圆点表示泛化误差超过最小值不超过0.25%的模型。虚线代表对较小模型进行拟合的幂律。蓝色星形代表DeepSeek LLM 7B和67B。
我们在1e20计算预算的一系列模型上验证了我们的公式,图2(b)展示了特定模型规模(每token 2.94B FLOPs)的结果。结果表明拟合参数位于最优参数空间中心。后续章节也表明,我们为DeepSeek LLM 7B和67B模型拟合的参数同样取得了良好性能。
然而,值得注意的是,我们尚未考虑计算预算C以外的因素对最优超参数的影响。这与早期一些研究(Kaplan等人,2020;McCandlish等人,2018)不一致,这些研究认为最优批量大小可以建模为仅与泛化误差L相关。此外,我们观察到,在具有相同计算预算但不同模型/数据分配比例的模型中,最优参数空间存在细微差异。这表明需要进一步研究以理解超参数的选择与训练动态。我们将在未来的工作中探讨这些方面。
3.2. 估算最优模型与数据缩放
在推导出拟合近最优超参数的公式后,我们开始拟合缩放曲线并分析最优的模型/数据扩展分配策略。该策略涉及寻找满足Nopt∝CaN_{opt}∝ C^aNopt∝Ca和Dopt∝CbD_{opt} ∝ C^bDopt∝Cb的模型缩放指数a与数据缩放指数b。数据规模D可以统一用数据集中的令牌数量表示。在以往的研究中,模型规模通常以模型参数表示,包括非嵌入参数N1N_1N1(Kaplan等人,2020)和完整参数N2N_2N2(Hoffmann等人,2022)。计算预算C与模型/数据规模之间的关系可近似描述为C = 6ND,这意味着我们可以使用6N1N_1N1或6N2N_2N2来近似模型规模。然而,由于6N1和6N2均未考虑注意力运算的计算开销,且6N2N_2N2还包含了词汇计算(其对模型能力的贡献较小),因此在某些设定下两者均存在显著的近似误差。
为减轻这些误差,我们引入了一种新的模型规模表示方式:非嵌入FLOPs/词元M。M包含注意力操作的计算开销,但未计入词汇计算。以M表示模型规模后,计算预算C可简化为C = M D。6N1N_1N1、6 N2N_2N2与M之间的具体差异如下列公式所示:
6N1=72nlayer dmodel26N_1=72n_\mathrm{layer~}d_{\mathrm{model}}^26N1=72nlayer dmodel2
6N2=72nlayer dmodel2+6nvocab dmodel6N_2=72n_\mathrm{layer~}d_{\mathrm{model}}^2+6n_\mathrm{vocab~}d_{\mathrm{model}}6N2=72nlayer dmodel2+6nvocab dmodel
M=72nlayer dmodel2+12nlayer dmodel lseqM=72n_\mathrm{layer~}d_\mathrm{model}^2+12n_\mathrm{layer~}d_\mathrm{model~}l_\mathrm{seq}M=72nlayer dmodel2+12nlayer dmodel lseq
其中nlayern_{layer}nlayer表示层数,dmodeld_{model}dmodel表示模型宽度,nvocabn_{vocab}nvocab表示词汇表大小,lseql_{seq}lseq表示序列长度。我们评估了这三种表示在不同规模模型中的差异,如表3所示。结果表明,6N1和6N2均在不同规模的模型中高估或低估了计算成本。这种差异在小规模模型中尤为明显,差异可达50%。此类不准确性会在拟合缩放曲线时引入显著的统计误差。关于模型规模的不同表示形式,请参见附录A.2进行进一步分析。

表3 | 非嵌入参数N1和完整参数N2相对于非嵌入FLOPs/词元M的模型规模表示差异与偏差
采用M表示模型规模后,我们的目标可以更清晰地描述为:给定计算预算C = M D,找到最优模型规模MoptM_{opt}Mopt和数据规模DoptD_{opt}Dopt,使得模型的泛化误差最小化。这个目标可以形式化为:
Mopt(C),Dopt(C)=argminM,D s.t. C=MDL(N,D)M_{\mathrm{opt}}(C),D_{\mathrm{opt}}(C)=\underset{M,D\mathrm{~s.t.~}C=MD}{\operatorname*{\operatorname*{argmin}}}L(N,D)Mopt(C),Dopt(C)=M,D s.t. C=MDargminL(N,D)
为降低实验成本和拟合难度,采用了Chinchilla(Hoffmann等人,2022)中的IsoFLOP轮廓方法对缩放曲线进行拟合。我们选取了8种不同的计算预算范围从1e17到3e20,并为每个预算设计了大约10种不同的模型/数据规模分配。每个预算的超参数由公式(1)确定,泛化误差在一个独立验证集上计算,该验证集的分布与训练集相似,包含1亿个词元。
图4展示了IsoFLOP曲线以及模型/数据缩放曲线,这些曲线是通过对每个计算预算采用最优模型/数据分配进行拟合得到的。最优非嵌入FLOPs/词元MoptM_{opt}Mopt与最优词元数DoptD_{opt}Dopt的具体公式如下:
Mopt=Mbase⋅Ca,Mbase=0.1715,a=0.5243M_{\mathrm{opt}}=M_{\mathrm{base}}\cdot C^a,\quad M_{\mathrm{base}}=0.1715,\quad a=0.5243Mopt=Mbase⋅Ca,Mbase=0.1715,a=0.5243
Dopt=Dbase⋅Cb,Dbase=5.8316,b=0.4757D_\mathrm{opt}=D_\mathrm{base}\cdot C^b,\quad D_\mathrm{base}=5.8316,\quad b=0.4757Dopt=Dbase⋅Cb,Dbase=5.8316,b=0.4757

图4 | IsoFLOP曲线与最优模型/数据分配。IsoFLOP曲线中的指标是验证集上的每字节比特数。最优模型/数据缩放曲线中的虚线表示拟合较小模型(灰色圆圈)的幂律。
此外,我们根据计算预算C和最优泛化误差拟合了损失缩放曲线,并预测了DeepSeek LLM 7B和67B的泛化误差,如图5所示。结果表明,利用小规模实验可以准确预测1000倍计算预算下模型的性能。这为在更大规模上训练模型提供了信心和指导。

图5 | 性能缩放曲线。指标为验证集上的每字节比特数。虚线表示拟合较小模型(灰色圆圈)的幂律。蓝色星标代表DeepSeek LLM 7B和67B。它们的性能可由缩放曲线很好地预测。
3.3. 不同数据下的缩放定律
在DeepSeek LLM的开发过程中,数据集经过多次迭代优化,调整了不同数据来源的比例,同时提升了整体质量。这使我们能够进一步分析不同数据集对缩放定律的影响。
我们使用三种不同的数据集研究了缩放定律:早期的内部数据、当前的内部数据以及此前缩放定律研究中使用的OpenWebText2(Kaplan等人,2020年)。我们内部数据的评估表明,当前内部数据的数据质量高于早期内部数据。此外,OpenWebText2的质量甚至超过了当前的内部数据,这是因为其规模较小,从而允许更精细的处理。

表4 | 模型缩放和数据缩放的系数随训练数据分布而变化。
分析中一个有趣的发现是,在这三个数据集上最佳的模型/数据扩展分配策略与数据质量表现出一致性。如表4所示,随着数据质量的提升,模型扩展指数a逐渐增大,而数据扩展指数b则减小,这表明增加的计算预算应更多地分配给模型而非数据。这一发现或许也能解释早期缩放定律研究中观察到的模型/数据扩展分配存在显著差异的现象。
对这一发现的直观推测是,高质量数据通常意味着逻辑清晰性,并且在充分训练后预测难度较低。因此,在增加计算预算时,扩大模型规模更为有利。我们将继续密切关注数据质量的变化及其对缩放定律的影响,并在未来工作中提供更多分析。
4.对齐
我们收集了约150万条英文和中文的指令数据实例,涵盖了广泛的实用性与无害性主题。其中,实用性数据包含120万条实例,分布为:通用语言任务占31.2%,数学问题占46.6%,编程练习占22.2%。安全性数据包含30万条实例,覆盖多种敏感话题。
我们的对齐流程包含两个阶段。监督微调:我们对7B模型进行了4个epoch的微调,但对67B模型仅进行了2个epoch,因为我们发现67B模型上的过拟合问题较为严重。我们观察到,7B模型在GSM8K(Cobbe等,2021)和HumanEval(Chen等,2021)上持续提升,而67B模型很快达到了性能上限。7B模型和67B模型的学习率分别为1e-5和5e-6。除了监控基准准确率外,我们还在微调过程中评估了对话模型的重复率。我们收集了共3868个中英文提示词,并确定了生成回复中无法终止而无限重复文本序列的比例。我们发现,随着数学SFT数据量的增加,重复率趋于上升。这可以归因于数学SFT数据中偶尔包含相似的推理模式,导致较弱的模型难以掌握这些推理模式,从而产生重复回复。为解决此问题,我们尝试了两阶段微调和DPO(Rafailov等,2023),这两种方法都几乎能保持基准分数,同时显著降低重复率。
DPO:为了进一步提升模型能力,我们采用了直接偏好优化算法(Rafailov等,2023),该方法已被证明是一种简单但有效的LLM对齐技术。我们从有益性和无害性两个维度构建了用于DPO训练的偏好数据。在有益性数据方面,我们收集了涵盖创意写作、问答、指令遵循等类别的多语言提示,然后使用我们的DeepSeek Chat模型生成回答作为候选响应。无害性偏好数据的构建采用了类似的操作。我们进行了一个epoch的DPO训练,学习率为5e-6,批量大小为512,并采用了学习率预热和余弦学习率调度器。我们发现DPO能够增强模型的开放生成能力,而在标准基准测试中仅产生微小差异。
5.评估
5.1. 公共基准评估
我们基于内部评估框架,在英语和中文的一系列公开基准上评估我们的模型。
多学科多项选择数据集包括MMLU(Hendrycks等,2020)、C-Eval(Huang等,2023)和CMMLU(Li等,2023)。语言理解与推理数据集包括HellaSwag(Zellers等,2019)、PIQA(Bisk等,2020)、ARC(Clark等,2018)、OpenBookQA(Mihaylov等,2018)和BigBench Hard(BBH)(Suzgun等,2022)。闭卷问答数据集包括TriviaQA(Joshi等,2017)和NaturalQuestions(Kwiatkowski等,2019)。阅读理解数据集包括RACE(Lai等,2017)、DROP(Dua等,2019)和C3(Sun等,2019)。指称消解数据集包括WinoGrande(Sakaguchi等,2019)和CLUEWSC(Xu等,2020)。语言建模数据集包括Pile(Gao等,2020)。中文理解与文化数据集包括CHID(Zheng等,2019)和CCPM(Li等,2021)。
数学数据集包括GSM8K(Cobbe等人,2021)、MATH(Hendrycks等人,2021)和CMath(Wei等人,2023)。代码数据集包括HumanEval(Chen等人,2021)和MBPP(Austin等人,2021)。标准化考试包括AGIEval(Zhong等人,2023)。
我们采用基于困惑度的评估方法,应用于需要从多个选项中选择答案的数据集。这些数据集包括HellaSwag、PIQA、WinoGrande、RACE-Middle、RACE-High、MMLU、ARC-Easy、ARC-Challenge、OpenBookQA、CHID、C-Eval、CMMLU、C3和CCPM。此处的基于困惑度的评估是指计算每个选项的困惑度,并选择困惑度最低的选项作为模型预测。对于ARC和OpenBookQA,我们采用无条件归一化(Brown等人,2020)计算困惑度;对于其他数据集,则使用长度归一化。
我们对 TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、HumanEval、MBPP、BBH、AGIEval、CLUEWSC 以及 CMath 采用了基于生成的评估方法。此处的基于生成评估是指让模型生成自由文本,并从生成的文本中解析结果。在进行基于生成的评估时,我们使用了贪心解码。我们对 Pile-test 采用了基于语言建模的评估,即计算测试语料上的每字节比特数。针对不同基准测试,我们将最大序列长度设为 2048 或 4096。评估格式的详细信息请参见附录 A.6。
5.1.1. 基础模型
表5展示了评估基准的主要结果。尽管DeepSeek模型在2T双语语料库上进行了预训练,但在英语语言理解基准上的表现与同样消耗2T token但专注于英语的LLaMA2模型相当。此外,DeepSeek 67B在MATH、GSM8K、HumanEval、MBPP、BBH以及中文基准上的表现显著优于LLaMA2 70B。我们在附录A.3中展示了基准曲线。可以看出,随着模型规模的扩大,某些任务的性能得到提升,例如GSM8K和BBH。鉴于我们在同一数据集上训练了7B和67B模型,这种改进的出现可归因于大模型强大的少样本学习能力。然而,随着数学数据比例的增加,小模型与大模型之间的差距可能会缩小。
一个有趣的观察是,DeepSeek 67B相对于LLaMA2 70B的优势大于DeepSeek 7B相对于LLaMA2 7B的优势。这一现象突显了语言冲突对较小模型影响更大。此外,尽管LLaMA2并未针对中文数据进行专门训练,但它在某些中文任务(如CMath)上表现出色。这表明某些基本能力(例如数学推理)可以有效地跨语言迁移。然而,像CHID这类涉及评估中文成语使用情况的任务,要求模型在预训练期间消耗大量中文词元。在此情况下,LLaMA2的表现显著逊于DeepSeek LLM。

表5 | 主要结果。我们报告的评估结果基于内部评估框架。加粗数字表示4个模型中的最佳结果。对于Pile-test,我们报告每字节比特数(BPB);对于DROP,我们报告F1分数;对于其他任务,我们报告准确率。请注意,测试样本数为最大值,由于上下文长度有限或阅读 comprehension 任务(如RACE)中同一段落可用的少样本示例有限,可能会应用更少的样本。
5.1.2. 对话模型
表6展示了DeepSeek Chat模型的结果,显示调优后大多数任务的整体性能有所提升。然而,在少数情况下,某些任务的表现有所下降。知识方面:我们观察到基础模型和聊天模型在知识相关任务(如TriviaQA、MMLU和C-Eval)中的波动。然而,我们认为这种微小波动并不表示在监督微调(SFT)后获得了或丢失了知识。SFT的价值在于使聊天模型能够学习,从而在零样本设置下达到与基础模型少样本设置相近的分数,这符合实际场景。例如,聊天模型的零样本MMLU性能与基础模型的五样本MMLU性能相当。
推理:由于大部分SFT实例采用CoT格式(Wei等人,2022),聊天模型在BBH和NaturalQuestions等推理任务上略有提升。然而,我们认为SFT阶段并未习得推理能力,而是学会了推理路径的正确格式。

表6 | 基础模型与聊天模型的比较。我们在MMLU、GSM8K、MATH、C-Eval和CMMLU上采用零样本评估聊天模型,而基础模型的结果仍在小样本设置下获得。
性能下降任务:无论模型规模或所选预训练检查点如何,总有少数任务在微调后表现持续下降。这些特定任务通常涉及完形填空或句子补全类任务,例如HellaSwag。我们有理由认为纯语言模型更适合处理此类任务。
数学与代码:我们的模型在微调后,数学与代码任务的表现显著提升。例如,HumanEval与GSM8K的分数提高了超过20分。对此我们的解释是,基础模型最初在这些任务上拟合不足,而SFT阶段通过大量SFT数据额外学习了编码与数学方面的知识。但需要注意的是,该模型的能力可能主要集中在代码补全与代数问题上。为了形成对数学与编码的全面理解,在预训练阶段纳入多样化数据至关重要,这留待未来工作。我们已在附录A.4中对代码与数学任务进行了详细分析。
在7B模型微调中,我们首先使用所有数据对模型进行微调。随后引入第二阶段,排除数学和代码数据。这一方法的动机在于,第一阶段模型表现出2.0%的重复率,该比率降低至1.4%。在第二阶段调优后,同时保持基准得分。对于67B模型,第一轮微调后重复率已低于1%,而第二阶段会损害模型在基准上的得分。因此,67B模型仅进行一轮SFT。
5.2. 开放性评估
对于聊天模型,除了观察标准基准的指标外,在开放领域和开放性问题中生成结果的质量直接影响实际用户体验。因此,我们分别测试了聊天模型在中文和英文任务中的开放性生成能力。
5.2.1. 中文开放式评估
对于中文开放式评估,我们在高质量开放式问题测试集AlignBench(Liu等人,2023)上测试了聊天模型在不同领域的综合能力。AlignBench共包含8个主类、36个子类,涵盖683个问题。对于每个问题,除提示外,AlignBench还提供了专业的参考答案和评分模板,供GPT-4评判回答质量。
我们使用了官方AlignBench GitHub代码仓库来实施模型评估。我们严格对齐了关键的温度参数与原始设置:对于角色扮演、写作能力和开放式问题,生成温度设置为0.7;而对于其他任务,生成温度设置为0.1。
表7展示了AlignBench排行榜。我们发现,我们的DeepSeek 67B Chat模型超越了ChatGPT及其他基线模型,仅落后于两个版本的GPT-4。这表明,与其他开源或专有中文大语言模型相比,我们的模型在各种中文任务中表现卓越。DPO模型在几乎所有指标上均有所提升,这证明了DPO训练过程对模型对齐的积极影响。

表7 | 基于gpt-4-0613评分的AlignBench排行榜。模型按总分降序排列。带*的结果是我们根据官方AlignBench仓库评估得出的,其余结果均来自AlignBench论文。我们发现,我们的Deepseek-67B-Chat模型以明显优势超越了ChatGPT及其他基线模型,这表明该模型在基础中文语言任务和高级中文推理任务中均表现出色。此外,可以看出DPO过程几乎在所有领域都带来了提升。
对于基础中文语言任务,我们的模型在所有模型中处于第一梯队,且我们的DPO模型在中文基础语言能力上甚至超越了最新版本的GPT-4。在高级中文推理任务中,我们的模型得分以明显优势显著高于其他中文大语言模型,展现出我们的模型在更复杂的中文逻辑推理与数学计算中的卓越性能。
5.2.2. 英语开放式评价
对于英文开放式评估,我们采用了MT-Bench基准(Zheng等人,2023),该基准包含8个不同类别的多轮问题。如表8所示,我们的DeepSeek LLM 67B Chat在性能上超越了其他开源模型,如LLaMA-2-Chat(Touvron等人,2023b)70B、Xwin 70b v0.1和TÜLU 2+DPO 70B(Ivison等人,2023),并取得了与GPT-3.5-turbo相当的8.35分。此外,在DPO阶段之后,我们的DeepSeek LLM 67B Chat DPO将平均分进一步提升至8.76,仅次于GPT-4(OpenAI,2023)。这些结果展示了DeepSeek LLM强大的多轮开放式生成能力。

表8 | MT-Bench评估。标有∗的结果来自Ivison等人(2023)。
5.3. 留出法评估
数据污染和基准过拟合是评估大语言模型时的两个挑战。一种常见做法是使用近期发布的测试集来评估模型,作为留出测试集。
LeetCode:为评估模型的编程能力,我们使用了LeetCode周赛中的题目(第351-372场周赛、第108-117场双周赛,时间跨度为2023年7月至2023年11月)。我们通过爬取LeetCode数据获取了这些题目,共包含126道题,每道题有超过20个测试用例。采用的评估指标与HumanEval类似。在此方面,若模型输出能通过所有测试用例,则认为该模型已有效解决问题。模型的编码能力如下图所示,其中纵轴表示在领域内人工评估测试中的pass@1得分,横轴表示在领域外LeetCode周赛题目中的pass@1得分。LeetCode测试数据将随DeepSeek Coder技术报告一同发布。
匈牙利国家高中考试:与Grok-1一致,我们使用匈牙利国家高中考试评估了模型的数学能力。该考试包含33道题目,模型得分通过人工标注确定。我们依据solution.pdf中的评分标准对所有模型进行评估。
指令跟随评估:2023年11月15日,谷歌发布了一个指令跟随评估数据集(Zhou et al., 2023)。他们识别了25种可验证的指令类型,并构建了约500条提示,每条提示包含一个或多个可验证指令。我们采用提示级松散指标来评估所有模型。

表9 | 留出数据集评估
我们对本模型与多种不同规模的基线模型进行了比较分析,这些模型包括Qwen 72B Chat (Bai et al., 2023)、ChatGLM3 (Du et al., 2022)、Baichuan2 (Yang et al., 2023)以及Yi-34B Chat。观察结果表明,在这些保留数据集上,大型模型与小型模型之间存在显著的性能差距,即便某些小型模型在传统基准测试中取得了令人瞩目的成绩。例如,ChatGLM3在代码测试集MBPP上得分为52.4,接近DeepSeek 67B;然而,在新基准评估中,其性能远不及DeepSeek 67B。数学数据集上也呈现出类似趋势:ChatGLM3在GSM8K上表现强劲(72.3),但其匈牙利考试分数却逊于大型模型。此外,指令跟随能力表明,总计算量起着至关重要的作用。
DeepSeek 7B和67B模型采用相同的训练流程,但其性能存在显著差距。通过我们的主观评估,当模型规模扩展至67B时,在各类任务中观察到明显的智能差异。尽管DeepSeek 7B在标准基准测试中落后于其他较小语言模型,但其在保留任务上的表现相较于其他模型则相对出色。
5.4. 安全性评估
我们深刻认识到通用人工智能安全的重要性。构建真正有益的人工智能模型的前提,在于其具备与人类一致的价值观,并表现出对人类的友善。我们在整个模型训练过程中------包括预训练、SFT和DPO阶段------均融入安全保障机制。
为了验证我们模型的安全性,我们组建了一个由20名专家组成的团队,他们来自不同的学科领域,构建了一套符合人类价值观的安全内容分类体系(安全评估分类如表10所示)。随后,专家团队为每个安全子类别手动构建了数十个高质量测试用例。除了关注安全内容领域的多样性,我们还注重安全内容格式的多样性。臭名昭著的"祖母"漏洞表明,模型可能因查询的表面格式而被欺骗,从而提供不安全的响应。因此,在设计问题时,专家团队也注重提问方式的多样化。他们通过诱导、角色扮演、多轮对话、预设立场等方式构建多样化的安全问题。最终,我们获得了一个包含2400个问题的安全测试集。此外,专家团队为每种不同的内容类型和格式类型构建了基本的安全审查指南章程。

表10 | 我们的安全评估分类体系。该表最右列列出了每个类别的测试用例总数以及我们的模型(DeepSeek-67B-Chat)提供的安全答案数量。测试题目的标注及生成结果的评估均由专业人工团队完成。我们可以观察到,我们的模型在各类安全测试集中均展现出强大的安全性。
对于我们的模型在该测试集上的输出结果,我们对其安全性进行了人工审查。我们的评审团队训练有素,且对标注结果进行了交叉验证。标注人员对每个问题执行三类标注:安全、不安全以及模型拒绝回答。我们对DeepSeek 67B聊天模型的安全性进行了测试,结果见表10。表中列出了每个安全类别的测试题数量以及我们的模型通过的安全测试数量。我们将安全回答与模型拒绝回答的测试用例均标记为安全响应。结果表明,我们的模型在众多安全测试类别中展现了良好的安全性能。
作为对我们现有安全方法的补充,我们进一步利用"Do-Not-Answer"数据集(Wang et al., 2023)丰富了评估内容,以检验DeepSeek 67B聊天模型的安全机制。该数据集包含939个按风险分类的提示,有效凸显了我们模型的增强能力。如表11所示,DeepSeek 67B聊天模型展现出卓越性能,得分97.8,高于ChatGPT和GPT-4。这一分数不仅衡量了模型安全处理敏感查询的能力,也使其在该领域领先模型中具备竞争力。

表11 | Do-Not-Answer评分(Wang等,2023),分数越高表示模型安全性越强。标有*的结果是基于官方代码库的我们的评估结果,而其他所有结果均源自原始论文。我们可以发现,我们的模型相比ChatGPT和GPT-4具有更高的安全评分,跻身最安全模型之列。
5.5. 讨论
在整个开发过程中,我们在构建大语言模型时发现了一些有趣的发现。
阶段性微调:如上所述,小型模型需要在数学和代码数据集上进行更长时间的微调,但这会损害模型的对话能力,例如增加重复行为。为了解决这个问题,我们实施了一个阶段性微调流程。在该方法中,第一阶段使用所有可用数据进行微调,而第二阶段则专门针对对话数据进行微调。

表12 | 两阶段微调结果。重复率在温度为0时计算,重复率越低越好。IFEval结果为提示级宽松准确率。
表12展示了从两阶段训练过程中获得的结果。这些结果清楚地表明,第二阶段在降低重复行为并增强指令遵循能力的同时,并未损害模型在代码和数学方面的熟练程度。
多项选择题:使用多项选择形式的评估数据(如MMLU、AGI Eval和C-Eval)测试模型是一种常见做法。多项选择题要求模型不仅具备相应知识,还需理解选项所指代的内容。在对齐阶段,我们测试了增加2000万道中文多项选择题的效果,性能如表13所示。需特别说明的是,我们对C-Eval验证集和CMMLU测试集进行了去重处理,以防止数据污染。

表13 | 增加多选题数据的影响
纳入额外的2000万道多选题(MC)数据已被证明不仅有益于中文多选题基准测试,也有助于提升英文基准测试的表现。这表明模型解决多选题的能力得到了增强。然而,我们观察到这一改进并未延伸至其他非多选题格式的评估中,例如TriviaQA及我们内部的中文QA测试集------这些均为生成式评估基准。这意味着用户在交互式对话中可能不会感觉到模型变得更加智能,因为此类交互涉及生成回答,而非解决多选题。
因此,我们选择在预训练和微调阶段均排除MC数据,因为包含这些数据会导致对基准的过拟合,且无助于模型实现真正的智能。
预训练中的指令数据:众所周知,在预训练阶段后期加入指令数据能提升基础模型在基准任务上的表现。本研究中,我们在预训练最后10%的阶段整合了500万条指令数据,其中主要为多选题。我们观察到基础模型在基准测试上确实表现出改善。然而,最终结果与在SFT阶段加入相同数据所取得的结果几乎一致。我们得出结论:尽管该方法增强了基础模型在基准测试上的性能,但其总体潜力与不加入这些指令数据相当。若指令数据规模较大,将其纳入预训练过程是可以接受的。由于我们倾向于排除多选题,且拥有的非多选题数量有限,因此我们决定不在预训练过程中加入指令数据。
系统提示:一个设计良好的系统提示应有效引导模型生成既有帮助又尊重的回复。我们对LLaMA-2引入的提示稍作修改,作为我们的系统提示。
系统提示:你是DeepSeek Chat,一个由DeepSeek开发的有益、尊重且诚实的AI助手。你的训练数据知识截止日期为2023年5月。始终在确保安全的前提下尽可能提供有帮助的回答。你的回答不得包含任何有害、不道德、种族歧视、性别歧视、有毒、危险或非法内容。请确保你的回答在社交层面保持中立且积极正面。如果问题毫无意义或缺乏事实连贯性,请解释原因而非给出错误回答。如果你不知道问题的答案,请不要分享虚假信息。
我们观察到一个有趣的现象:当引入系统提示时,7B大语言模型的性能会出现轻微下降。然而,当使用67B大语言模型时,添加提示则能显著提升结果,如表14所示。我们对这一差异的解释是:较大的模型能够更好地理解系统提示的潜在意图,从而更有效地遵循指令并生成更优的响应。相反,较小的模型难以充分理解系统提示,训练与测试之间的不一致性可能对其性能产生负面影响。

表14 | 添加系统提示的影响
6. 结论、局限性与未来工作
我们推出了DeepSeek大语言模型,这是一系列从头开始训练的开源模型,训练数据包含中英文共计2万亿词元。本文深入阐述了超参数选择、缩放定律以及我们进行的各种微调尝试。我们校准了前人工作中的缩放定律,并提出了一种新的最优模型/数据缩放分配策略。此外,我们提出了一种方法,能在给定计算预算下预测接近最优的批量大小和学习率。我们进一步得出,缩放定律与数据质量相关,这可能是在不同工作中缩放行为出现差异的根本原因。在缩放定律的指导下,我们以最优超参数进行了预训练,并提供了全面的评估。我们在所有训练阶段均避免了基准测试修饰和隐藏秘密。
DeepSeek Chat存在与其他大语言模型共有的已知局限性,包括预训练后无法持续更新知识、可能生成未经核实建议等非事实信息,以及容易产生幻觉的问题。此外需特别指出,我们的中文数据初始版本尚不完备,可能导致在某些中文特定主题上表现欠佳。由于数据主要来源于中文和英文资源,该模型在其他语言上的能力仍显脆弱,使用时需保持审慎。
DeepSeek LLM是一个长期致力于推进开源语言模型的项目。• 很快,我们将分别发布关于代码智能和混合专家模型(MoE)的技术报告。它们展示了我们如何为预训练创建高质量的代码数据,以及如何设计稀疏模型以实现密集模型的性能。• 目前,我们正在为下一版本的DeepSeek LLM构建一个更大、更优质的数据集。我们希望在下一个版本中,推理、中文知识、数学和代码能力能得到显著提升。• 我们的对齐团队致力于研究如何向公众提供有用、诚实且安全的模型。我们的初步实验证明,强化学习能够提升模型的复杂推理能力。