核心论文:
- Scaling Laws for Neural Language Models(Kaplan et al., 2020)arXiv:2001.08361
- Training Compute-Optimal Large Language Models / Chinchilla(Hoffmann et al., 2022)arXiv:2203.15556
- LLaMA: Open and Efficient Foundation Language Models(Touvron et al., 2023)arXiv:2302.13971
- The Llama 3 Herd of Models(Grattafiori et al., 2024)arXiv:2407.21783
- DeepSeek-V3 Technical Report(DeepSeek-AI, 2024)arXiv:2412.19437
- Language Models are Few-Shot Learners / GPT-3(Brown et al., 2020)arXiv:2005.14165
目录
- 一、预训练的本质:在文本海洋中学习世界模型
- 二、训练数据:规模、质量与配比
- 三、Scaling Laws:规模法则是 LLM 时代的基石
- 四、优化器与训练动力学
- 五、分布式训练:如何在数千张 GPU 上训练 LLM
- 六、训练稳定性:Loss Spike 与恢复策略
- 七、训练数据的多轮过滤与合成数据
- 八、预训练结果评估:困惑度与 Benchmark
- 九、LLaMA 3 预训练:最完整的公开案例
- 十、预训练的本质局限与后训练的必要性
一、预训练的本质:在文本海洋中学习世界模型
预训练(Pre-training)是 LLM 能力的根基。直觉上,这个过程是让模型在互联网规模的文本上,通过预测每个 token 来”压缩”人类的知识和语言规律。
从信息论的角度看,一个完美的语言模型等价于一个完美的世界模型:要准确预测”爱因斯坦在哪个大学工作”这句话的下一个词,模型必须储存关于爱因斯坦的历史知识;要预测一段 Python 代码的下一行,模型必须理解 Python 语法和编程逻辑。
这就是为什么预训练后的模型(基础模型)具有如此广泛的能力——并非因为特别设计,而是因为准确预测自然语言在数学上等价于理解语言背后的世界。
预训练任务的形式化表达:
$$\mathcal{L}_{\text{pretrain}} = -\sum_{i=1}^{T} \log P_\theta(x_i | x_1, x_2, \ldots, x_{i-1})$$
模型参数 $\theta$ 通过最小化这个损失(最大化训练语料的对数似然)来更新。
二、训练数据:规模、质量与配比
2.1 数据来源
现代 LLM 的训练数据通常来自以下几类来源,按规模从大到小:
网页文本(主体,60-80%)
Common Crawl 是最大的公开网页爬取数据集,包含了对整个互联网的历史抓取,数据量达 PB 级别。但原始爬取数据质量极低(包含大量垃圾内容、重复内容、低质量页面),必须经过严格过滤。
主要过滤步骤(以 LLaMA 3 技术报告披露为参考):
- 语言过滤:使用 fastText 等语言识别器,保留高置信度的目标语言
- 质量过滤:训练一个分类器区分高质量(类似 Wikipedia)和低质量内容,过滤低分样本
- 安全过滤:过滤包含个人身份信息(PII)、有害内容的页面
- 去重:在文档级别和段落级别做哈希去重,避免记忆特定文本
经过过滤后,Common Crawl 的数据量通常缩减 70-90%,但质量大幅提升。
代码(5-20%)
代码对 LLM 的推理能力贡献极大,这一发现来自 Codex 论文(Chen et al., 2021)和后续大量实验。代码的结构化特性(函数、类、注释、变量命名)帮助模型学习逻辑推理。
来源包括 GitHub 公开代码库(各种编程语言)。DeepSeek-V3 技术报告特别提到,他们在训练数据中加入了大量高质量代码,并发现这显著提升了数学推理能力。
书籍(5-10%)
书籍提供了长篇、结构化、高质量的文本。Books3(Pile 数据集的一部分)和 Project Gutenberg 是常用来源。书籍的平均文本质量高于网页,有助于模型学习长程连贯性。
学术论文(1-5%)
arXiv、PubMed 等学术数据库提供的科学论文,对提升科学推理能力有重要作用。
Wikipedia 和百科全书类(2-5%)
Wikipedia 是高质量、结构化事实知识的重要来源,通常在训练中被过采样(给予比其实际比例更高的权重)。
多语言数据
现代 LLM 普遍在多语言数据上训练,英语通常占 60-75%,中文、德语、法语、西班牙语等其他语言占剩余部分。LLaMA 3 特别提到他们增加了超过 100 种语言的数据。
2.2 数据配比(Data Mixture)
不同类型数据按比例混合。LLaMA 3 技术报告是目前公开细节最详细的,披露了其 15T token 数据集的大致配比:
| 数据类型 | 占比 |
|---|---|
| 通用英语网页 | ~50% |
| 多语言数据 | ~5% |
| 代码 | ~17% |
| 高质量数据(书籍/Wiki/论文) | ~28% |
关键实践:高质量数据通常被过采样。例如,Wikipedia 在互联网数据中的实际比例可能不足 1%,但在训练中可能给予 2-5% 的权重(即训练时多次”复习”这些数据)。
但过采样有风险:如果一个数据集被过多地重复(通常超过 4 轮),模型会开始”记忆”这些文本而不是学习泛化规律,表现在测试集上的 perplexity 反而上升。
DeepSeek-V3 的一个重要贡献是使用了数学推理过滤器:通过一个专门训练的分类器,识别并保留训练数据中具有推理价值的片段,有针对性地提升模型的数学能力。
2.3 分词:BPE 的完整流程
Byte Pair Encoding(BPE) 是最广泛使用的分词算法,由 Sennrich et al.(2016)引入 NLP 领域(原始算法来自数据压缩领域)。
训练阶段:
- 初始化词汇表为所有字节(256 个,或所有 Unicode 字符)
- 统计所有相邻字节对的出现频率
- 将频率最高的字节对合并为一个新 token,加入词汇表
- 重复步骤 2-3,直到词汇表大小达到预设值
例如,如果”e”和”r”频繁相邻出现,则合并为”er”;如果”er”和”s”频繁相邻,则合并为”ers”。
推理阶段:使用贪心算法将文本分割为已知 token 的组合,最长匹配优先。
GPT-4 使用的 cl100k_base tokenizer 包含约 100K token;LLaMA 3 扩展到 128K token,主要是增加了更多的多语言 token 和代码相关 token,这使得相同文本所需的 token 数量减少,提高了处理效率。
三、Scaling Laws:规模法则是 LLM 时代的基石
3.1 Kaplan et al. 2020 的 Scaling Laws
论文: Scaling Laws for Neural Language Models(Kaplan et al., OpenAI, 2020)arXiv:2001.08361
这篇论文首次系统地研究了 LLM 的性能如何随以下三个因素扩展:
- $N$:模型参数量
- $D$:训练数据量(tokens)
- $C$:计算量(FLOPs)
核心发现(幂律关系):
$$L(N) \approx \left(\frac{N_c}{N}\right)^{\alpha_N}, \quad \alpha_N \approx 0.076$$
$$L(D) \approx \left(\frac{D_c}{D}\right)^{\alpha_D}, \quad \alpha_D \approx 0.095$$
$$L(C) \approx \left(\frac{C_c}{C}\right)^{\alpha_C}, \quad \alpha_C \approx 0.050$$
其中 $L$ 是验证集上的交叉熵损失,$N_c$、$D_c$、$C_c$ 是拟合的常数。
这意味着什么: 每增加 10 倍的参数量,损失降低 $10^{0.076} \approx 1.19$ 倍;每增加 10 倍的数据量,损失降低 $10^{0.095} \approx 1.24$ 倍。
错误的结论(被 Chinchilla 推翻): Kaplan 等人基于上述规律得出结论:在固定计算预算下,应优先扩大模型参数量,数据可以相对较少(即大模型用较少 tokens 训练)。这导致了 GPT-3(175B 参数,300B tokens)等”训练不足的大模型”。
3.2 Chinchilla 的修正
论文: Training Compute-Optimal Large Language Models(Hoffmann et al., DeepMind, 2022)arXiv:2203.15556
Chinchilla 论文发现,Kaplan 的实验存在方法论问题:他们在比较不同规模模型时,没有统一训练到最优。通过更严格的实验设计,Chinchilla 得出了完全不同的结论:
Chinchilla Scaling Laws 的核心方程:
对于给定的计算预算 $C = 6ND$(假设每个 token 每个参数约 6 次 FLOPs),最优模型参数量 $N_{opt}$ 和训练数据量 $D_{opt}$ 满足:
$$N_{opt} \propto C^{0.5}, \quad D_{opt} \propto C^{0.5}$$
核心结论: 最优的参数量和 token 数量比例约为 1:20,即每个参数应该见到约 20 个训练 tokens。
验证: 在同等计算预算下,训练了参数量是 Gopher(280B)四分之一但 tokens 数量四倍多的 Chinchilla 模型(70B 参数,1.4T tokens),结果 Chinchilla 在几乎所有 benchmark 上超越了 Gopher。
对后续模型的影响:
- LLaMA 1(2023):7B 参数模型训练了 1T tokens(比 Chinchilla 最优的 140B tokens 多得多),证明了”超出最优比例继续训练对推理效率有利”——推理时参数量决定成本,而不是训练时的 tokens 量
- LLaMA 3(2024):更极端地用 15T tokens 训练了各尺寸模型,明显”过训练”(相对 Chinchilla 最优比例),但推理效率更高
- DeepSeek-V3(2024):用 14.8T tokens 训练
深层含义: Chinchilla 定律适合”训练一次、推理多次”的场景。如果你的目标是得到一个最终模型用于大规模推理,应该训练一个比 Chinchilla 最优更小的模型但用更多 tokens。这样推理成本更低,而性能几乎不受影响。
四、优化器与训练动力学
4.1 AdamW 优化器
现代 LLM 训练普遍使用 AdamW(Loshchilov & Hutter, 2017)。
Adam 更新规则:
$$m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \quad \text{(一阶矩,梯度的指数移动平均)}$$
$$v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \quad \text{(二阶矩,梯度平方的指数移动平均)}$$
$$\hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \quad \text{(偏差修正)}$$
$$\theta_t = \theta_{t-1} - \frac{\alpha \hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}$$
Adam 的直觉: 使用梯度的历史信息来自适应地调整每个参数的学习率。梯度持续指向同一方向的参数会被更大幅度更新(累积动量),而梯度噪声大(方向多变)的参数更新幅度会被抑制。
AdamW 的修正: 原始 Adam 将权重衰减(weight decay)纳入梯度更新,但这与 Adam 的自适应学习率机制相互干扰。AdamW 将权重衰减独立出来:
$$\theta_t = \theta_{t-1} - \alpha \left(\frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} + \lambda \theta_{t-1}\right)$$
这样权重衰减不受自适应学习率的影响,相当于纯粹的 L2 正则化。
典型超参数(以 LLaMA 3 为参考):
- $\beta_1 = 0.9$(一阶矩衰减系数)
- $\beta_2 = 0.95$(二阶矩衰减系数,比常用的 0.999 更小,因为 LLM 训练梯度噪声更大)
- $\epsilon = 10^{-8}$(数值稳定性项)
- $\lambda = 0.1$(权重衰减系数)
- 梯度裁剪(gradient clipping):最大范数 1.0
4.2 学习率调度
Warmup + Cosine Decay 是标准配置。
Warmup 阶段: 训练初期,学习率从极小值线性增加到峰值学习率。这是因为初始参数是随机的,梯度噪声很大,如果一开始就用大学习率,容易让训练发散。
$$\text{lr}(t) = \text{lr}_{max} \cdot \frac{t}{T_{warmup}} \quad \text{for } t \leq T_{warmup}$$
Cosine Decay 阶段: Warmup 之后,学习率按余弦曲线从峰值降到最小值:
$$\text{lr}(t) = \text{lr}_{min} + \frac{1}{2}(\text{lr}_{max} - \text{lr}_{min})\left(1 + \cos\frac{\pi (t - T_{warmup})}{T_{total} - T_{warmup}}\right)$$
典型峰值学习率:
- 较小模型(7B):$3 \times 10^{-4}$
- 较大模型(70B):$1 \times 10^{-4}$(通常更大模型用更小学习率)
- LLaMA 3 405B:$8 \times 10^{-5}$
学习率的选择经验法则:模型越大,峰值学习率越小;Warmup 步数通常是总步数的 1-3%。
4.3 梯度裁剪(Gradient Clipping)
在训练过程中,某些时刻梯度可能突然变得非常大(梯度爆炸),导致参数更新过大,破坏训练稳定性。梯度裁剪将梯度的全局范数限制在阈值内:
$$g_{clipped} = g \cdot \frac{\min(\text{max\_norm}, \|g\|)}{\|g\|}$$
LLM 训练中通常使用 max_norm = 1.0。
4.4 批次大小(Batch Size)与线性缩放法则
批次大小(tokens per step)是重要的训练超参数。批次越大:
- 梯度估计的方差越小(信噪比越高)
- 每步更新更稳定
- GPU 利用率更高
但批次过大会导致泛化性下降(有研究表明超过某个”临界批次大小”后,额外增大批次对最终性能没有帮助)。
线性缩放法则(Linear Scaling Rule):当批次大小增大 $k$ 倍时,学习率也应增大 $k$ 倍(或等效地,训练步数减少 $k$ 倍)。这在小批次时通常成立,在极大批次时可能需要调整。
LLaMA 3 405B 的训练批次大小为 16M tokens per step(16,384 sequences × 8,192 tokens per sequence)。
五、分布式训练:如何在数千张 GPU 上训练 LLM
训练一个 405B 参数的模型需要数千张 A100/H100 GPU,单张 GPU 远不够放置模型参数,更别提梯度和优化器状态。分布式训练解决了这个问题。
5.1 数据并行(Data Parallelism)
最简单的并行策略:每个 GPU 有完整的模型副本,处理不同的数据批次,然后对梯度求平均。
每个 GPU 需要存储:
- 模型参数(fp16):$2N$ bytes
- 梯度(fp16):$2N$ bytes
- 优化器状态(fp32,包括参数副本 + Adam 的一阶矩 + 二阶矩):$12N$ bytes
总计约 $16N$ bytes。对于 70B 参数模型:$16 \times 70 \times 10^9 = 1120$ GB,远超单张 GPU 的 80GB 显存。
5.2 ZeRO:Zero Redundancy Optimizer
论文: ZeRO: Memory Optimizations Toward Training Trillion Parameter Models(Rajbhandari et al., 微软, 2020)arXiv:1910.02054
ZeRO 将数据并行中的冗余存储分片化:
ZeRO Stage 1: 分片优化器状态($12N$ bytes 分给 $K$ 个 GPU,每个 GPU 存储 $3N/K$ 的优化器状态)
ZeRO Stage 2: 分片梯度(额外减少 $2N/K$ 每 GPU 内存)
ZeRO Stage 3: 分片模型参数(每个 GPU 只存储 $2N/K$ 的参数)
ZeRO Stage 3 时,每个 GPU 只需要 $16N/K$ bytes($K$ 是 GPU 数量),理论上可以无限扩展。代价是需要额外的 GPU 间通信来收集完整的参数用于前向/反向传播。
PyTorch FSDP(Fully Sharded Data Parallel) 是 Meta 对 ZeRO 的开源实现,用于训练 LLaMA 系列模型。
5.3 张量并行(Tensor Parallelism)
论文: Megatron-LM(Shoeybi et al., NVIDIA, 2019)arXiv:1909.08053
将单个矩阵运算(如 $Q = XW^Q$)分割到多个 GPU 上并行执行。
对于注意力层,将 $h$ 个头分给 $K$ 个 GPU,每个 GPU 处理 $h/K$ 个头。对于 FFN 层,将内层维度 $d_{ff}$ 按列/行切分。
张量并行需要频繁的 GPU 间 all-reduce 通信(每层都需要),因此通常只在同一台机器的 GPU 之间(NVLink 速度快)使用,而不跨机器。
5.4 流水线并行(Pipeline Parallelism)
将模型的不同层分配到不同 GPU。GPU 0 处理第 1-20 层,GPU 1 处理第 21-40 层,以此类推。
问题: 朴素流水线并行中,每个 GPU 必须等待前一个 GPU 完成才能开始计算,导致大量”气泡”(bubble,GPU 空闲时间)。
GPipe / PipeDream 通过微批次(micro-batch)流水线调度来减少气泡:将一个大批次分成若干微批次,GPU 1 处理微批次 1 时,GPU 2 已经开始处理微批次 2 的前向传播。
5.5 3D 并行
在大规模训练中,通常同时使用数据并行 + 张量并行 + 流水线并行(Megatron-LM v3 论文,Narayanan et al., 2021)。
以 LLaMA 3 405B 训练为例(16K H100 GPU):
- 张量并行:8(同一节点内 8 张 GPU)
- 流水线并行:16(跨节点)
- 数据并行:16K / (8 × 16) = 128
5.6 FP8 混合精度训练(DeepSeek-V3 的创新)
传统做法: 前向和反向传播用 BF16 或 FP16,优化器状态用 FP32(”混合精度”,Mixed Precision Training,Micikevicius et al., 2018)。
DeepSeek-V3 的创新: 首次在顶级模型训练中大规模应用 FP8(8位浮点数)精度,将主要的矩阵乘法(GEMM)降低到 FP8,而保持累加(accumulation)为 FP32,实现了几乎无损的精度同时将计算量减半。
FP8 有两种格式:
- E4M3(1 位符号,4 位指数,3 位尾数):范围较小但精度较高,用于前向传播的激活值
- E5M2(1 位符号,5 位指数,2 位尾数):范围更大但精度较低,用于梯度
DeepSeek-V3 技术报告详细描述了他们如何解决 FP8 训练中的数值稳定性问题(主要通过细粒度量化和高精度累加)。这使得他们的训练成本只有约 550 万美元(2.788M H800 GPU 小时),远低于同类模型的估计训练成本。
六、训练稳定性:Loss Spike 与恢复策略
大规模训练中,训练损失偶尔会突然上升(Loss Spike),这是一个已知的工程挑战。
Loss Spike 的表现: 训练损失在某个时刻突然跳升,然后逐渐恢复。如果不处理,可能导致训练发散。
可能的原因:
- 特定批次包含异常数据(极长序列、特殊 token 分布)
- 学习率过大导致某次更新过于激进
- 梯度估计不准确(批次太小时随机性大)
工程应对策略(来自各技术报告的实践):
- 梯度裁剪(最常见):防止单次更新过大
- 从检查点恢复(Checkpoint Recovery):如果 Loss Spike 严重,从上一个正常检查点重新开始,跳过导致问题的数据
- 数据过滤后处理:识别并从数据集中删除导致 Loss Spike 的数据批次
Meta 在 LLaMA 3 报告中提到,他们在 405B 模型训练期间遇到了若干 Loss Spike,通过跳过训练步骤(skip problematic training batches)和从检查点恢复来解决。
DeepSeek-V3 的工程进步: 整个训练过程只需要从检查点恢复不超过 3 次(相比之前模型训练经历更多次)。
七、训练数据的多轮过滤与合成数据
7.1 数据质量过滤的多层次设计
单次过滤不够,现代 LLM 训练通常采用多轮数据过滤:
第一轮(规则过滤):
- 去除长度异常的文档(过短或过长)
- 去除包含超过阈值的特殊字符比例的文档
- 去除重复 n-gram 比例过高的文档(文档内部重复)
第二轮(模型过滤):
- 用一个已训练的小型 LLM 给每个文档打分(困惑度)
- 困惑度过高的文档可能是乱码或非自然语言,过滤掉
- 困惑度过低可能是高度重复的模板文本,也过滤
第三轮(去重):
- MinHash LSH(局部敏感哈希)用于文档级别模糊去重
- 精确哈希用于段落/句子级别精确去重
LLaMA 3 技术报告披露,他们通过三轮过滤将原始的 Common Crawl 数据从约 100T tokens 压缩到约 10T tokens(丢弃了 90%),最终使用其中的 15T tokens(包含部分高质量数据的重复)。
7.2 合成数据(Synthetic Data)
合成数据的动机: 高质量的人工标注数据获取成本极高,且有天花板。用已有的 LLM 生成高质量训练数据(用大模型生成数据训练小模型,或自迭代)已成为主流做法。
在预训练中的应用(较新):
DeepSeek 技术报告和 LLaMA 3 技术报告都提到,在预训练数据中加入了一定比例的合成数学推理数据和代码数据。
具体做法(以代码为例):
- 用一个已有的代码模型(如 DeepSeek-Coder)生成大量代码样本
- 用静态分析器或运行测试来验证代码的正确性
- 将通过验证的代码加入预训练数据集
这类”可验证正确性”的合成数据质量较高,对提升模型的代码和数学能力有显著效果。
Self-Instruct 和 Constitutional AI 中的合成数据(用于后训练,详见第 03、04 篇)
八、预训练结果评估:困惑度与 Benchmark
8.1 困惑度(Perplexity)
困惑度是评估语言模型质量最基本的指标,定义为测试集上的指数化平均交叉熵损失:
$$\text{PPL}(X) = \exp\left(-\frac{1}{T} \sum_{t=1}^T \log P_\theta(x_t | x_{ 直觉上,PPL 可以理解为模型在预测每个 token 时平均有多少个等可能的选项。PPL=1 表示模型完美预测,PPL=10 表示平均有 10 个等概率候选。 对于英语文本,现代大型 LLM 的 PPL(在 WikiText-2 等标准测试集上)通常在 3-6 之间。 重要注意: 困惑度是模型无关的,不同分词方式的困惑度无法直接比较(字符级 vs 词级 vs BPE)。在比较模型时,必须使用相同的分词器。 重要说明: 随着越来越多的基准被用于评测,研究者发现模型可能在这些评测集上过拟合(benchmark contamination,基准污染)——如果训练数据包含了评测集的数据,评测结果就失去参考价值。 这是目前评测 LLM 能力的一个重要挑战。解决方案包括:使用新题目(如 GPQA Diamond),或采用人类评估(如 Chatbot Arena 的 ELO 评分)。 LLaMA 3 技术报告是目前公开披露预训练细节最完整的文档,以下是关键数据点(来源:arXiv:2407.21783): 训练数据: 405B 模型超参数: 训练基础设施: 训练稳定性: 预训练完成后,模型具备了丰富的语言知识和理解能力,但它仍然只是一个”下一个 token 预测器”——它会照着训练数据的分布生成内容,这意味着: 这就是后训练(Post-training)的必要性,包括指令微调(SFT)和强化学习对齐(RLHF/DPO/Constitutional AI),这是第 03 篇和第 04 篇的主题。 预训练提供了能力(capability),后训练决定了行为(behavior)。两者同等重要,缺一不可。 现代 LLM 预训练普遍使用混合精度。数值格式对比: BF16(Brain Float 16,Google 为 TPU 设计)与 FP32 共享相同的指数位宽(8 位),动态范围一致,无需 loss scaling 即可直接训练。LLaMA 3、DeepSeek-V3 全部使用 BF16。 混合精度流程: 前向传播用 BF16 矩阵乘法(速度快、显存减半);权重主副本保持 FP32 精度;反向传播用 BF16 计算梯度,FP32 更新权重。FP16(非 BF16)额外需要 loss scaling——将梯度放大后缩小,防止小梯度在 FP16 中下溢为 0。 预训练数据与评测基准的重叠(contamination)是 LLM 评估的核心挑战——模型可能在”考试”前已见过”题目”。 检测方法: N-gram 重叠检测(提取 8-gram 或 13-gram,检测精确匹配)、语义嵌入去重(sentence embedding 检测语义高度相似的段落)、最长公共子串(LCS)匹配。 LLaMA 3 技术报告披露:对训练数据与所有已知评测基准(MMLU、HellaSwag、ARC 等)进行了严格的 n-gram 去污,删除任何显著重叠的文档。DeepSeek-V3 也执行了类似去污流程。 BPE Tokenizer 本身需要在预训练之前训练。训练过程(以 LLaMA 3 128K 词汇表为例): 词汇表大小的权衡: 大词汇表(128K)每个 token 含更多信息 → 推理更快,但嵌入矩阵 $|V| \times d_{model}$ 更大。小词汇表(32K)嵌入矩阵小,但序列更长 → 注意力 $O(n^2)$ 成本更高。LLaMA 3 从 32K 扩到 128K,将多语言文本的 token 数量减少了约 30%。8.2 主要评测 Benchmark
评测集
能力
说明
MMLU
世界知识+推理
57 个学科的选择题,涵盖数学/科学/人文等
HellaSwag
常识推理
选择正确的句子延续
HumanEval
代码生成
164 个 Python 编程问题
MATH
数学推理
AMC/AIME 级别数学题,需要多步推理
GSM8K
小学数学
8500 道小学数学应用题
ARC-Challenge
科学推理
小学/中学难度科学问题
TruthfulQA
真实性
测试模型是否输出虚假信息
BBH (BIG-Bench Hard)
复杂推理
23 个需要多步推理的任务子集
九、LLaMA 3 预训练:最完整的公开案例
十、预训练的本质局限与后训练的必要性
十一、混合精度训练与数据质量保证
BF16/FP16 混合精度训练
格式
总位数
指数位
尾数位
动态范围
FP32
32
8
23
$\sim 10^{38}$
FP16
16
5
10
$\sim 65504$
BF16
16
8
7
$\sim 10^{38}$
数据去污(Decontamination)
Tokenizer 训练

