当前位置: 首页 > news >正文

《Llama: The Llama 3 Herd of Models》预训练数据篇——论文精读笔记

论文链接:arxiv.org/pdf/2407.21783

本博客只针对Llama3中的训练数据做阅读笔记。后续会单独对Llama1-3的模型做总结。

摘要

  • 多语言支持
  • 工具使用能力
  • 最大模型参数达到 405B,采用稠密的 Transformer 架构,而非更常见的混合专家(MOE)架构。
  • 上下文窗口长度为 128K。

 导言

预训练与后训练

  • Llama 系列模型在预训练阶段使用了大量的多语言数据,达到 15TB 的规模。
  • 后训练则采用了简单的监督微调(Supervised Fine Tuning,SFT),并通过算法如拒绝采样(Reject Sampling)和 DPO(Direct Preference Optimization)进行对齐。

关键因素

  • 数据规模:Llama 系列模型坚持使用大量数据,强调数据质量与数量的平衡。
  • 模型规模:Llama 3.1 在参数规模上达到了 405B,展示了模型的强大能力。
  • 设计选择:模型在设计上选择了标准的稠密 Transformer,不采用 MOE(混合专家)架构。

 性能评估

  • 性能数据:模型在不同规模下(8B、70B、405B)的评估结果表明,随着模型规模增加,在多个评估任务上的性能确实有显著提升。
  • 模型表现:在知识面上,405B 模型显示出更强的记忆能力,但在根据指令执行时,70B 模型表现相对不错,且成本效益更高。


3 Pre-Training

语言模型的预训练包括以下几个方面:

(1) 大规模训练语料的整理和筛选;

(2) 模型架构的开发以及相应的规模法则,用于确定模型的大小;

(3) 开发高效的大规模预训练技术;

(4) 制定预训练的完整方案。

3.1 预训练数据

数据收集及来源

数据集由多种来源构成,包括公共网络数据(如爬取的网页内容)和特定领域的文档(如代码和数学相关内容)。

数据清理

PII过滤:去除包含大量个人可识别信息(PII)和已知成人内容的网站。这是为了保护用户隐私和确保模型安全性。

HTML处理:自定义解析器用于从原始HTML中提取干净文本,优化了对于广告和导航栏的去除。

数学和代码的保留:在处理包含数学公式和代码的网页时,保留了其结构和重要的内容,尤其是图片标签中的文本描述,以确保信息的完整性。

 数据去重

URL级别去重:保留每个URL的最新版本。

文档级别去重:通过MinHash算法去除近似重复的文档。

行级别去重:删除在每组3000万个文档中出现超过6次的行,以减少常见的冗余内容(如导航菜单、广告等)。

什么是哈希函数

哈希函数(Hash Function)是一种将输入数据(通常是任意长度的数据)映射为固定长度的输出数据(称为哈希值或哈希码)的函数。

什么是MinHash?

MinHash的核心思想是通过哈希函数将集合映射到一个较小的特征空间,从而实现对集合相似度的高效估计。

具体步骤如下:

  • 集合表示:首先,将每个文档表示为一个集合,通常是其特征(如单词、短语等)的集合。例如,文档D1的特征集合可以表示为{w1, w2, w3, ...}。

  • 哈希函数:选择多个哈希函数,将集合中的元素映射到哈希值。每个哈希函数会为集合中的每个元素生成一个哈希值。

  • 最小哈希值:对于每个哈希函数,找出集合中元素的最小哈希值。这些最小哈希值构成了该集合的MinHash签名。

  • 相似度计算:两个集合的相似度(通常是杰卡德相似度)可以通过比较它们的MinHash签名来估计。如果两个集合的MinHash签名相似,那么它们的原始集合也很可能相似。

数据的最终构成比例为:

  • 50%:通用知识
  • 25%:数学和推理相关内容
  • 17%:代码
  • 8%:多语言文本

多语言处理

在多语言数据处理上,Llama采取了以下策略:

  • 语言识别:使用fasttext模型识别176种语言,确保多语言数据的质量。
  • 去重与质量检测:针对不同语言实施文档和行级别的去重,并应用特定的质量过滤器。

数据混合与优化

为了获得高质量的语言模型,需谨慎决定不同数据源在预训练数据中的比例:

  • 知识分类:使用分类器对网页数据进行分类,以有效控制各类信息的比例,避免某些类别(如娱乐)过度代表。
  • Scaling Law实验:通过小模型在不同数据混合上的表现预测大模型的性能,反复调整数据比例。

什么是scaling law?

Scaling law(比例法则)实验是指在机器学习,尤其是在深度学习和自然语言处理领域中,通过试验和观察模型性能与模型规模(如参数量、数据量等)之间的关系,以获取关于如何扩展模型和优化其表现的规律和指导。

退火数据

通过对少量高质量代码和数学数据进行退火,可以提高模型在特定基准测试上的分数。这意味着在模型训练完成后,使用高质量数据进行再训练以增强特定能力。

什么是退火
通常情况下,深度学习中的退火指的学习率退火,训练过程中逐步降低学习率。初始阶段使用较高的学习率来快速收敛,然后逐渐降低学习率,使得模型能够更细致地调整参数,从而提高最终的收敛效果,减少震荡。

这里对少量高质量代码和数学数据进行退火是指:在模型的初始训练阶段,通常会使用大量的、可能存在多样性和噪声的数据,以帮助模型建立起对各种输入的基本理解。一旦初步训练完成,退火过程就会使用高质量的数据进行微调,以便使模型更好地适应新的数据特点。

http://www.lryc.cn/news/587261.html

相关文章:

  • html-input 系列
  • ConcurrentHashMap笔记
  • ROS2中的QoS(Quality of Service)详解
  • 【基础算法】倍增
  • 从“被动巡检”到“主动预警”:塔能物联运维平台重构路灯管理模式
  • 动态规划题解_将一个数字表示成幂的和的方案数【LeetCode】
  • 《夏重庆》——一场暴雨的立体诗篇(DeepSeek赏析)
  • SQL140 未完成率top50%用户近三个月答卷情况
  • Flask中的路由尾随斜杠(/)
  • Kafka——Kafka 线上集群部署方案怎么做?
  • 代理模式:控制对象访问
  • AutoLabor-ROS-Python 学习记录——第二章 ROS通信机制
  • CATIA许可价格高,设计部门如何精细化分配?
  • Python 数据挖掘之数据探索
  • 鸿蒙选择本地视频文件,并获取首帧预览图
  • 【算法】贪心算法:柠檬水找零C++
  • 密码学系列文(1)--密码学基础概念详解
  • 密码学系列文(2)--流密码
  • ansible自动化部署考试系统前后端分离项目
  • 在 C# 中调用 Python 脚本:实现跨语言功能集成
  • MySQL逻辑删除与唯一索引冲突解决
  • C++高频知识点(九)
  • 39.Sentinel微服务流量控制组件
  • 【一起来学AI大模型】部署优化推理加速:vLLM
  • word中多行合一功能实现
  • comfyUI-ControlNet-姿势控制深度控制
  • Java 8 LocalDate 日期操作全攻略
  • CS课程项目设计1:交互友好的井字棋游戏
  • 【多线程】 线程池设多大才合理?CPU 密集型和 I/O 密集型的终极公式
  • 深度学习图像分类数据集—七种树叶识别分类