一、背景动机
-
开源社区的关注点:LLaMA 之后,开源社区主要关注训练固定规模的高质量 LLM(如 7B、13B、34B 和 70B),而对 LLM 的缩放定律研究探索较少。
-
缩放定律的重要性:当前开源 LLM 仍处于 AGI 发展的初期阶段,因此研究扩展定律对于未来发展至关重要。
-
缩放结论的分歧:早期研究(Hoffmann 等人,2022 年;Kaplan 等人,2020 年)对计算预算增长时的模型和数据扩展提出了不同的结论,并未充分解决超参数的影响。
-
研究目标:本研究广泛探索 LLM 的缩放行为,主要应用于 7B 和 67B 规模的模型,以奠定开源 LLM 未来扩展的基础。
-
关键研究内容:
- 研究 batch size 和 learning rate 随模型规模的缩放规律,发现其趋势。
- 研究数据和模型规模的缩放关系,揭示最佳的模型/数据扩展分配策略,并预测大规模模型的性能。
- 发现不同数据集的缩放定律存在显著差异,表明数据选择对缩放行为影响较大,在跨数据集推广缩放定律时需谨慎。
二、做了什么
- 收集 2 万亿个代币进行预训练,主要使用中文和英文。
- 在模型层面,我们通常遵循 LLaMA 的架构,但用多步学习率调度器取代了余弦学习率调度器,在保持性能的同时促进持续训练。
- 从不同来源收集了超过 100 万个实例用于监督微调 (SFT) (Ouyang et al., 2022)。
- 分享在数据消融技术中不同 SFT 策略和发现的经验
- 利用直接偏好优化 (DPO) (Rafailov et al., 2023) 来提高模型的对话性能。
三、预训练
主要目标: 全面增强数据集的丰富性和多样性
3.1 数据预处理
方法分为三个基本阶段:重复数据删除、过滤和重新混合。
其中,重复数据删除和重新混合阶段通过对唯一实例进行采样来确保数据的多样化表示。过滤阶段提高了信息的密度,从而实现了更高效和有效的模型训练。
重复数据删除
扩大了重复数据删除的范围。因为与在单个转储中删除重复数据相比,对整个 Common Crawl 语料库进行重复数据删除可以提高重复实例的删除率。表 1 表明,与 91 个转储相比,在 91 个转储中消除重复数据删除的文档数量是单个转储方法的四倍。
Note: "转储"(dump) 指的是某个时间点抓取到的完整网页数据的存储文件。例如,Common Crawl 定期抓取互联网上的大量网页,并将这些数据存储在不同时间的快照(转储,dump)中。
单个转储(Single Dump)指的是某次抓取的完整网页数据快照。例如:
2023 年 1 月的 Common Crawl 数据 → 这是一个单独的转储
2023 年 7 月的 Common Crawl 数据 → 这是另一个独立的转储
传统去重方法 主要在单个转储内部执行,即在同一次抓取的数据范围内查找并删除重复的内容。
过滤
在过滤阶段,我们专注于为文档质量评估制定稳健的标准。这涉及结合语言和语义评估的详细分析,从个人和全局角度提供数据质量视图。
重新混合
在重新混合阶段,我们调整了解决数据不平衡的方法,专注于增加代表性不足的域的存在。这项调整旨在实现更加平衡和包容的数据集,确保充分代表不同的观点和信息。
3.2 分词器 (Tokenizer) 设计与实现
实现了基于 Huggingface tokenizers
库 的 BBPE(Byte-level Byte Pair Encoding) 算法(详见;我的另一篇博客:),分词策略与 GPT-2 相似,主要特点如下:
1. 预分词(Pre-tokenization)
目的:防止来自不同字符类别的 token 进行合并,提高分词合理性。
-
防止新行、标点符号和 CJK(中文-日语-韩语)字符合并
例如:"你好,world!"
- 无预分词 可能会生成错误的 token,如
["你好", ",world", "!"]
(错误合并) - 使用预分词,确保
["你好", ",", "world", "!"]
(正确拆分)
- 无预分词 可能会生成错误的 token,如
-
数字拆分为单个字符
2024 → ["2", "0", "2", "4"]
- 这样有助于模型更好地处理数字,而不是将整个数字作为一个 token。
2. 词汇表设计
- 训练数据:分词器在 约 24GB 的多语言语料库 上进行训练,以适应不同语言的文本处理需求。
- 词汇表规模:
- 常规 token 数量:100,000
- 额外增加 15 个特殊标记(例如
[PAD]
,[UNK]
,[CLS]
,[SEP]
等),使最终词汇表达到 100,015。 - 训练时词汇表大小配置为 102,400,为未来的扩展预留空间,提高训练计算效率。
3. 设计考量
- 兼容多语言:预分词策略确保 CJK 语言与拉丁字符的合理处理。
- 优化计算效率:调整词汇表大小(102,400)避免计算资源浪费,并预留扩展空间。
- 对数字的特殊处理:确保数字以单字符 token 形式存储,提高泛化能力。
4. 关键贡献
- 改进了 BBPE 分词策略,在 多语言数据上优化 了分词规则,确保更合理的 token 结构。
- 通过 GPT-2 类似的预分词方式 避免字符类别混合,提高模型的输入质量。
- 设计合理的词汇表大小,在保证计算效率的同时,为未来扩展提供空间。