Files
note_sync/大模型/deepseek/01-基础模型/01-DeepSeek-LLM-2401.02954_abstract.md

166 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DeepSeek LLM:以长期主义扩展开源语言模型
> **原文标题**:DeepSeek LLM: Scaling Open-Source Language Models with Longtermism
> **arXiv**:[2401.02954](https://arxiv.org/abs/2401.02954) | **发布**:2024 年 1 月 5 日(v1)
> **作者/机构**:DeepSeek-AI(Xiao Bi、Deli Chen、Guanting Chen 等,按姓氏字母序排列;DeepSeek 深度求索)
> **原文 PDF**:[01-DeepSeek-LLM-2401.02954.pdf](./01-DeepSeek-LLM-2401.02954.pdf)
## 一、摘要(全文翻译)
开源大语言模型(Large Language Models, LLMs)的快速发展确实令人瞩目。然而,以往文献中所描述的缩放定律(scaling laws)给出了各不相同、彼此矛盾的结论,这为扩展大语言模型蒙上了一层阴影。
我们深入研究缩放定律,并给出了我们独特的发现,这些发现有助于以两种当前被广泛使用的开源配置——7B 与 67B——来扩展大规模模型。
在缩放定律的指导下,我们提出了 DeepSeek LLM,这是一个以长期视角(long-term perspective)致力于推进开源语言模型的项目。为支撑预训练阶段,我们构建了一个目前包含 2 万亿(2 trillion)token 且仍在持续扩充的数据集。我们进一步在 DeepSeek LLM Base 模型上开展有监督微调(Supervised Fine-Tuning, SFT)与直接偏好优化(Direct Preference Optimization, DPO),由此得到 DeepSeek Chat 模型。
我们的评估结果表明,DeepSeek LLM 67B 在一系列基准上超越了 LLaMA-2 70B,尤其是在代码、数学与推理等领域。此外,开放式评估(open-ended evaluation)显示,我们的 DeepSeek LLM 67B Chat 相比 GPT-3.5 展现出更优的表现。
## 二、核心贡献
1. **超参数缩放定律(Scaling Laws for Hyperparameters)**:为批大小(batch size)与学习率建立关于算力预算 $C$ 的幂律关系式,保证不同预算下的模型都落在近最优区间——解决早期工作未交代超参数、无法确认各预算模型是否最优的隐患。
2. **提出新的模型规模表示 $M$**:以非嵌入 FLOPs/token 取代参数量 $N$,把粗糙的 $C=6ND$ 换成 $C=MD$,使模型/数据最优分配与大规模模型泛化损失预测更准(旧表示在小模型上误差可达 50%)。
3. **揭示数据质量会改变最优分配策略**:数据质量越高,新增算力应越多投向模型而非数据,并把分配系数的差异反过来当作评估数据质量的手段——这可能是各研究缩放结论矛盾的根因。
4. **从零训练并开源 DeepSeek LLM 7B / 67B**:在 2 万亿中英双语 token 上预训练,微调数据约 150 万条;67B 在代码、数学、推理及中文基准上超越 LLaMA-2 70B。
5. **对齐流程与开放域表现**:SFT + DPO 得到的 DeepSeek 67B Chat 在中文 AlignBench 上超过 ChatGPT、仅次于两版 GPT-4;英文 MT-Bench 上 DPO 版达 8.76。
6. **工程经验与反「刷榜」立场**:公开两阶段微调、多选数据注入、系统提示(system prompt)缩放效应等发现,并拒绝为提高榜单分数注入多选数据。
## 三、方法与技术要点
### 3.1 数据:去重、过滤、重混与分词器
数据构建分三步:**去重(deduplication)、过滤(filtering)、重混(remixing)**。去重的痛点是只在单个 dump 内去重会遗留大量跨 dump 重复,因此作者把范围扩大到整个 Common Crawl:跨 91 个 dump 统一去重时去重率达 89.8%,而单 dump 仅 22.2%,前者消除的文档量是后者的四倍。过滤阶段从语言与语义两个层面建立质量评估标准,兼顾个体与全局视角以提升信息密度;重混阶段针对数据不平衡,加大代表性不足领域的采样比重。
分词器采用基于 tokenizers 库的字节级字节对编码(Byte-level BPE, BBPE),并像 GPT-2 一样做预分词,避免换行、标点与中日韩(CJK)符号等不同字符类别之间的 token 合并;数字按 LLaMA 做法拆成单个数字位。常规词表规模设为 100000,在约 24 GB 多语种语料上训练,另加 15 个特殊 token 共 100015;模型实际词表配置为 102400,以留出扩展空间。
### 3.2 架构与超参数:微观沿用 LLaMA,宏观刻意加深深层
微观设计大体沿用 LLaMA:Pre-Norm + RMSNorm、FFN 用 SwiGLU 且中间层维度为 $\frac{8}{3}d_{model}$、位置编码用旋转位置编码(Rotary Embedding)。为降低推理开销,67B 用分组查询注意力(Grouped-Query Attention, GQA)替代多头注意力(Multi-Head Attention, MHA)。
宏观设计刻意不同:7B 为 30 层,67B 为 **95 层**;作者没有像多数 GQA 工作那样加宽 FFN 中间维度,而是把 67B 的参数扩张放在网络深度上,以求更好性能,同时保持与其他开源模型相当的参数量,并便于流水线切分。
具体配置(Table 2):
| 模型 | $n_{layers}$ | $d_{model}$ | $n_{heads}$ | $n_{kv\_heads}$ | 序列长度 | 批大小 | 学习率 | 训练 token |
|---|---|---|---|---|---|---|---|---|
| 7B | 30 | 4096 | 32 | 32 | 4096 | 2304 | 4.2e-4 | 2.0T |
| 67B | 95 | 8192 | 64 | 8 | 4096 | 4608 | 3.2e-4 | 2.0T |
初始化标准差 0.006,优化器为 AdamW,$\beta_1=0.9$、$\beta_2=0.95$、weight_decay $=0.1$,梯度裁剪 1.0。**关键替换:用多步(multi-step)学习率调度器替代余弦调度器**——2000 步 warmup 后达到峰值,训练 80% token 后降至峰值的 31.6%,90% 后降至 10%。两者最终性能基本一致,但多步调度器允许扩大训练规模时复用第一阶段结果,便于持续训练(continual training);三段比例调激进虽略优,为兼顾复用比例仍取 80%/10%/10%。
### 3.3 训练基础设施
使用轻量框架 HAI-LLM,集成数据并行、张量并行、序列并行与 1F1B 流水线并行,配合 FlashAttention 与 ZeRO-1(切分优化器状态);工程上重叠计算与通信(如最后 micro-batch 反传与 ZeRO-1 reduce-scatter),并融合 LayerNorm、GEMM、Adam 更新等算子。为稳定训练,以 bf16 计算、fp32 累积梯度;采用原地(in-place)交叉熵,在内核中把 bf16 logits 即时转 fp32 并算出梯度后覆写 logits,降低显存占用。权重与优化器状态每 5 分钟异步保存,最坏只损失 5 分钟进度,并支持换用不同 3D 并行配置恢复;评估时生成式任务用 vLLM,非生成式任务用连续批处理(continuous batching)。
### 3.4 缩放定律:先定超参数,再定模型/数据配比
**超参数缩放定律**:在 1e17 预算的小规模实验上网格搜索批大小与学习率,发现泛化误差在很宽区间内保持稳定;把误差超出最小值不超过 0.25% 的参数视为「近最优」,并借多步调度器复用第一阶段,在 1e17–2e19 训练多组模型拟合得到:
$$
\eta_{\mathrm{opt}} = 0.3118 \cdot C^{-0.1250}, \qquad B_{\mathrm{opt}} = 0.2920 \cdot C^{0.3271}
$$
即算力越大,最优批大小越大、学习率越小。作者坦承该式未考虑算力之外的因素,同等算力下不同配比的最优参数空间亦略有差异。
**新的模型规模表示**:$C=6ND$ 忽略了注意力算子的开销(完整参数版本还计入对容量贡献较小的词表计算),小模型上误差可达 50%。作者改用非嵌入 FLOPs/token $M$:
$$
6N_1 = 72\,n_{layer}\,d_{model}^{2},\quad 6N_2 = 72\,n_{layer}\,d_{model}^{2}+6\,n_{vocab}\,d_{model}
$$
$$
M = 72\,n_{layer}\,d_{model}^{2}+12\,n_{layer}\,d_{model}\,l_{seq}, \qquad C = MD
$$
其中 $6N_1/M$ 在 0.43–0.92、$6N_2/M$ 在 0.81–1.32 之间,偏差具有系统性。优化目标形式化为:
$$
M_{\mathrm{opt}}(C), D_{\mathrm{opt}}(C)=\underset{M,D\ \mathrm{s.t.}\ C=MD}{\mathrm{argmin}} L(N,D)
$$
采用 Chinchilla 的 IsoFLOP profile,取 8 个算力预算(1e17–3e20)、每预算约 10 种配比,超参数由上式确定,泛化误差在含 100M token 的独立验证集上以 bits-per-byte 度量。拟合结果:
$$
M_{\mathrm{opt}} = 0.1715 \cdot C^{0.5243}, \qquad D_{\mathrm{opt}} = 5.8316 \cdot C^{0.4757}
$$
即模型规模指数略大于数据规模指数,算力增长应更多投向模型;该曲线成功预测了 7B/67B 性能(小规模实验可预测 1000 倍算力的模型)。
**数据质量改变缩放行为**:在三套数据上重复拟合后,质量越高则 $a$ 越大、$b$ 越小。直观解释是高质量数据逻辑清晰、充分训练后预测难度更低,更值得扩大模型。
| 方法(数据) | 模型缩放系数 $a$ | 数据缩放系数 $b$ |
|---|---|---|
| OpenAI(OpenWebText2) | 0.73 | 0.27 |
| Chinchilla(MassiveText) | 0.49 | 0.51 |
| 本文(早期内部数据) | 0.450 | 0.550 |
| 本文(当前内部数据) | 0.524 | 0.476 |
| 本文(OpenWebText2) | 0.578 | 0.422 |
### 3.5 对齐:SFT 与 DPO
对齐数据约 150 万条中英指令,覆盖有益性(helpfulness)与无害性(harmlessness):有益数据 120 万条,其中通用语言任务 31.2%、数学题 46.6%、编程练习 22.2%;安全数据 30 万条,覆盖各类敏感话题。
SFT 阶段 7B 微调 4 个 epoch、67B 仅 2 个(67B 过拟合明显),学习率分别为 1e-5 与 5e-6;7B 上 GSM8K 与 HumanEval 持续提升,67B 很快触及上限。作者还用 3868 条中英提示监测「重复率」(生成无法终止、无限重复文本的比例),发现数学 SFT 数据越多重复越高——数学数据推理模式相似,弱模型难以掌握;两阶段微调与 DPO 都能几乎保分并显著降重。DPO 按有益性与无害性构造偏好数据(候选回复由 DeepSeek Chat 生成),训练 1 个 epoch、学习率 5e-6、批大小 512,配合 warmup 与余弦调度,增强开放域生成能力而对标准基准影响不大。
## 四、主要实验结果
| 基准 / 任务 | 本模型 | 对比对象 | 说明 |
|---|---|---|---|
| MATH(4-shot,Base) | 67B:18.7 | LLaMA-2 70B:13.5 | 数学大幅领先 |
| GSM8K(8-shot,Base) | 67B:63.4 | LLaMA-2 70B:58.4 | 同上 |
| HumanEval(0-shot,Base) | 67B:42.7 | LLaMA-2 70B:28.7 | 代码优势最显著 |
| MBPP(3-shot,Base) | 67B:57.4 | LLaMA-2 70B:45.6 | 同上 |
| BBH(3-shot,Base) | 67B:68.7 | LLaMA-2 70B:62.9 | 推理领先 |
| AGIEval(0-shot,Base) | 67B:41.3 | LLaMA-2 70B:37.2 | 标准化考试 |
| MMLU(5-shot,Base) | 67B:71.3 | LLaMA-2 70B:69.0 | 英文知识小幅领先 |
| Pile-test(BPB,Base) | 67B:0.642 | LLaMA-2 70B:0.649 | 越低越好 |
| RACE-High(5-shot,Base) | 67B:50.7 | LLaMA-2 70B:54.3 | 英文阅读理解落后 |
| DROP(F1,1-shot,Base) | 67B:67.9 | LLaMA-2 70B:69.2 | 略有差距 |
| C-Eval(5-shot,Base) | 67B:66.1 | LLaMA-2 70B:51.4 | 中文知识断层领先 |
| CMMLU(5-shot,Base) | 67B:70.8 | LLaMA-2 70B:53.1 | 同上 |
| CHID(0-shot,Base) | 67B:92.1 | LLaMA-2 70B:55.5 | 成语理解 |
| CCPM(0-shot,Base) | 67B:88.5 | LLaMA-2 70B:66.2 | 中文文化 |
| C3(0-shot,Base) | 67B:75.3 | LLaMA-2 70B:61.7 | 中文阅读理解 |
| CMath(3-shot,Base) | 67B:63.0 | LLaMA-2 70B:53.9 | 中文数学 |
| GSM8K(0-shot,Chat) | 67B Chat:84.1 | 67B Base:63.4 | 微调后 +20.7 分 |
| HumanEval(0-shot,Chat) | 67B Chat:73.8 | 67B Base:42.7 | 微调后 +31.1 分 |
| MT-Bench(英文开放域) | 67B Chat DPO:8.76 | GPT-3.5-turbo-0613:8.39;GPT-4-1106-preview:9.26 | 仅次于 GPT-4 |
| AlignBench(中文开放域) | 67B Chat DPO:6.69 | ChatGPT(gpt-3.5-turbo-0613):6.08;gpt-4-1106-preview:8.01 | 超越 ChatGPT,仅次于两版 GPT-4 |
| LeetCode(held-out) | 67B Chat:17.5 | Qwen 72B Chat:12.7;GPT-4:48.4 | 新题泛化仍远逊 GPT-4 |
| 匈牙利高中数学竞赛(held-out) | 67B Chat:58 | Qwen 72B Chat:52;GPT-4:68 | 人工评分 |
| IFEval(指令遵循,held-out) | 67B Chat:55.5 | Qwen 72B Chat:50.8;GPT-4:79.3 | prompt-level loose |
| Do-Not-Answer(安全) | DeepSeek-67B-Chat:97.8 | ChatGPT:97.7;GPT-4:96.5;LLAMA-2-7B-Chat:99.4 | 分数越高越安全 |
| HumanEval(对比代码专精模型) | DeepSeek-LLM-Chat 67B:73.8% | Wizard-Coder 34B:73.2% | 代码数据更少但持平 |
| GSM8K(对比数学专精模型,CoT) | 67B Chat:84.1% | MetaMath 70B:82.3% | 跨语言数学全面领先 |
| GSM8K(工具集成推理,TIR) | 67B Chat:86.7% | ToRA-Code 34B:80.7% | 程序辅助解题优于 CoT |
领先集中在代码、数学、推理与中文任务:67B 相对 LLaMA-2 70B 在 HumanEval(42.7 vs 28.7)、MBPP(57.4 vs 45.6)、MATH(18.7 vs 13.5)、GSM8K(63.4 vs 58.4)、BBH(68.7 vs 62.9)及几乎全部中文基准(C-Eval 66.1 vs 51.4、CHID 92.1 vs 55.5)上明显更好;在 2T 中英双语数据、不如 LLaMA-2 纯英文专注的前提下,英文语言理解基准(HellaSwag 84.0 对 84.0、ARC、OpenBookQA)基本持平。仍有差距的是 RACE-High(50.7 vs 54.3)、DROP(67.9 vs 69.2)、TriviaQA(78.9 vs 79.5)与 WinoGrande(79.8 vs 80.4)。67B 对 LLaMA-2 70B 的优势大于 7B 对 7B,说明「语言冲突」对更小模型伤害更大;LLaMA-2 未专门训练中文却在 CMath 上不俗,说明数学推理等能力可跨语言迁移,而 CHID 这类需大量中文语料浸润的任务则显著落后。对齐后 Chat 模型在数学与代码上提升超过 20 分,知识/推理类基准仅达到「零样本逼近基座少样本」水平,而 HellaSwag 这类完形任务稳定下降。
## 五、结论、局限与影响
- **结论**:作者从头训练了 2 万亿中英双语 token 的 DeepSeek LLM 系列,交代了超参数选择、缩放定律与微调尝试;校准了此前的缩放定律,提出新的最优模型/数据分配策略($a=0.5243$、$b=0.4757$),给出「按算力预算预测近最优批大小与学习率」的方法,并指出缩放定律与数据质量相关——这可能是各研究缩放结论矛盾的根因。作者强调所有训练阶段都避免「榜单装饰」与暗箱操作。
- **局限性**(作者自述):DeepSeek Chat 存在大模型通病:预训练后缺乏持续知识更新、可能给出非事实信息(如未经验证的建议)、易产生幻觉;初始版本中文数据不够完备,部分中文特定话题欠佳;数据以中英为主,其他语言能力较脆弱。作者也承认缩放定律研究尚未考虑算力之外影响最优超参数的因素。
- **影响**:论文把「数据质量 → 最优算力分配」的因果链条公开化,为开源模型的规模决策提供可复用方法论;非嵌入 FLOPs/token 与超参数幂律式成为业界常用的拟合口径。文中预告了后续代码智能与混合专家(Mixture-of-Experts, MoE)报告(目标以稀疏模型达到稠密性能),并称下一版将提升推理、中文知识、数学与代码能力;对齐团队的初步实验证明强化学习可增强复杂推理。论文还暴露了「多选数据能刷高榜单但不能真正提升智能」:加入 2000 万条中文多选数据后 MMLU 49.4→60.9、C-Eval 47.0→71.3、CMMLU 49.7→73.8,而生成式评测 TriviaQA 与 ChineseQA 几乎不变,故预训练与微调阶段都剔除多选数据。
## 六、关键术语对照表
| English | 中文 |
|---|---|
| Scaling Laws | 缩放定律 |
| Longtermism | 长期主义 |
| Non-embedding FLOPs/token ($M$) | 非嵌入每 token 计算量 |
| IsoFLOP Profile | 等算力曲线(轮廓) |
| Compute Budget ($C$) | 算力预算 |
| Supervised Fine-Tuning (SFT) | 有监督微调 |
| Direct Preference Optimization (DPO) | 直接偏好优化 |
| Grouped-Query Attention (GQA) | 分组查询注意力 |
| Multi-Head Attention (MHA) | 多头注意力 |
| Byte-level BPE (BBPE) | 字节级字节对编码 |
| Multi-step Learning Rate Scheduler | 多步学习率调度器 |
| Chain-of-Thoughts (CoT) | 思维链 |
| Tool-Integrated Reasoning (TIR) | 工具集成推理 |
| Held-Out Evaluation | 留出集(防污染)评估 |
| Bits-per-Byte (BPB) | 每字节比特数 |
| Repetition Ratio | 重复率 |
| System Prompt | 系统提示 |
| Contamination / Benchmark Overfitting | 数据污染 / 基准过拟合 |