LLM学习记录DAY3

news/2025/10/16 21:34:52/文章来源:https://www.cnblogs.com/szhAC/p/19146677

📘今日学习总结

一、语言模型基础能力的建立:预训练

1.1 预训练的核心思想

  • 目标:通过大规模无监督文本学习语言表示。
  • 方式
    • 自回归预测下一个词:

    \[\mathcal{L}_{\text{LM}}(\mathbf{u}) = \sum_{t=1}^{T} \log P(u_t \mid \mathbf{u}_{<t}) \]

    • 使用自然语言指令(prompt)引导模型完成任务。

1.2 多任务学习

  • 形式\(Pr(output∣input,task)\)
  • 痛点:任务形式多样,难以统一。
  • 解决方案:将所有任务转化为自然语言生成问题,统一为文本预测任务。

1.3 无监督预训练为何有效?

  • 预训练建模的是更大空间的文本生成任务 \(Pr(postfix∣prefix)\)
  • 随着数据变化,模型学习多种“任务”,如:
    • 内容补全、数学计算、情感分析、语义推理、知识补全等。

二、预训练数据工程

核心观点:当模型架构与训练方式固定后,数据工程成为关键。

2.1数据采集

2.1.1 采集途径

  1. 已有数据集:如 RefinedWeb、DCLM、Dolma。
  2. Common Crawl
    • 大规模网页爬取数据。
    • 可按查询、域名、规则过滤子集。
  3. 合成数据
    • 使用模型生成文本(如问答对、文档)。
    • 案例:Phi-1、Nemotron-4、WizardLLM 系列。

2.1.2 数据类型

  • 通用文本:网页、书籍(C4、Wikipedia、Books3)
  • 专用文本
    • 多语文本:提升多语言理解
    • 科学文本:arXiv、教材
    • 代码:GitHub、Stack Exchange

2.2 数据预处理

2.2.1 预处理流程

  • 数据采集 → 质量过滤 → 去重 → 隐私保护 → 词元化

2.2.2 质量过滤方法

  • 启发式规则
    • 语种识别、标点分布、句子长度、点赞数、困惑度等。
  • 关键词过滤
    • 过滤HTML标签、垃圾词汇、隐私信息等。
  • 分类器过滤
    • 训练文本分类器判别质量,可集成多个分类器。

2.2.3 敏感内容过滤

  • 过滤PII(如电话、邮箱、IP)
  • 防止模型泄露隐私

2.2.4 数据去重

  • 粒度:句子级、文档级、数据集级
  • 方法
    • 精确匹配(后缀数组)
    • 近似匹配(MinHash)

2.2.5 数据集污染

  • 训练数据与测试数据重叠会导致评估失真
  • 建议开发者和基准维护者检查数据重叠

2.3 词元化(分词)

2.3.1 传统分词问题

  • 分词歧义、低频词多、未登录词问题

2.3.2 子词分词方法

  • BPE(Byte Pair Encoding)
    • 从字符开始,迭代合并高频词对
  • WordPiece
    • 类似BPE,但基于语言模型评分选择合并
  • Unigram
    • 从大词表开始,迭代删除最不重要的词元

2.3.3 分词器选用原则

  • 无损重构
  • 高压缩率
  • 适应领域:如中文需扩词表,数字需统一分词方式

2.4 数据配比

2.4.1 数据规模定律

  • KM Scaling Law:模型规模与数据规模同步增长
  • Chinchilla Scaling Law:建议更多算力分配给数据(约20:1)

2.4.2 配比策略

  • 增加多样性:多源异构数据
  • 优化混合:学习最优数据组成
  • 增强特定能力:如增加代码数据提升编程能力

2.4.4 自动化配比方法

  • DoReMi
    • 使用代理模型优化领域权重
    • 最小化最坏情况损失
  • 数据配比定律
    • 预测不同混合比例下的性能,提前优化配比

2.5 数据课程

2.5.1 定义

  • 按特定顺序或分布安排训练数据,动态调整数据混合

2.5.2 示例

模型 数据课程
CodeLLaMA 2T 通用词元 → 500B 代码密集型词元
CodeLLaMA-Python(Python化) 2T 通用词元 → 500B 代码相关词元 → 100B Python 代码相关词元
Llemma(数学化) 2T 通用词元 → 500B 代码相关词元 → 50∼200B 数学相关词 元

2.5.3 动态批次配比

  • 类似DoReMi,逐批次优化数据配比
  • 粒度更细,提升训练效率

三、继续预训练

3.1 定义与用途

  • 定义:在已有预训练模型基础上,使用新数据进一步训练。
  • 用途
    • 英文转多语(如 Llama 3 中文化)
    • 通用转专用(如 CodeLlama、长文本扩展)

3.2 挑战:灾难性遗忘

  • 现象:新训练损害原有能力(如英文能力下降)
  • 原因
    • 参数已收敛,新数据分布不同
    • 新数据质量或适配性不佳

3.3 解决方案

  • 合成高质量数据:增强中英文数理能力
  • 设计数据课程:保持原有能力的同时引入新知识

3.4 面向特定学科的数据合成

3.4.1 流程

  1. 种子语料筛选:从网页数据中提取科学相关语料(如 StackExchange)
  2. Prompt 设计:基于种子语料生成问答对
  3. 小模型合成:降低推理成本

3.4.2 示例:科学问答合成

  • 输入:网页片段
  • 输出:结构化问答对(Problem + Solution)

3.5 Llama3-SynE 案例

3.5.1 数据配比

数据类型 词元数
网页 45.18B
百科全书/图书 4.92B
问答 15.74B
学术论文/数学语料/代码 X 4.92B
合成数据 X 7.93B
总计 100B

3.5.2 数据课程(粗粒度)

  • 阶段1:双语适配
    • 中:英 = 2:8
    • 按 PPL 排序
  • 阶段2:合成增强
    • 中:英:合成 = 1:7:2

3.5.3 数据课程(细粒度)

  • PPL 动态调整
    • 计算每类 PPL 变化
    • 动态调整采样比例
  • 合成数据阶段:随机采样,不排序

3.5.4 评测结果

  • 中文、数学、科学能力显著提升
  • 英文能力基本保持

3.6 YuLan-Mini 案例

3.6.1 模型特点

  • 2.4B 参数,1.08T 高质量词元
  • 数据全开放,流程高效

3.6.2 数据策略

  • 严格过滤:去重、质量打分、主题分类、去污染
  • 合成数据:数学、代码、科学三大类
  • 数据课程:三段式训练
    • 热身(10B)
    • 稳定(990B)
    • 退火(80B)

3.6.3 退火训练

  • 引入高质量数据、长文本、指令数据
  • 学习率逐步衰减

3.6.4 评测结果

  • 在多项基准(MATH, MBPP, MMLU 等)上表现优异
  • 训练效率高,数据使用高效

四、训练优化技术

4.1 优化器设置

image-20251016210423822

4.2 3D 并行训练

  • 数据并行:复制模型,分数据,合并梯度
  • 模型并行
    • 张量并行:参数拆分,多卡计算
    • 流水线并行:层拆分,串行计算

4.3 激活重计算

  • 前向传播时不保存所有激活值,反向时重新计算
  • 显著减少显存占用

4.4 混合精度训练

  • 前向/反向:FP16
  • 优化器:FP32
  • 显存减半,速度提升

五、模型参数量估计

5.1 LLaMA 参数量:

  • Transformer 层数 \(L\)
  • 隐含层维度 \(H\)
  • 中间状态维度 \(H'\)
  • 注意力头数 \(N\)
  • 上下文窗口长度 \(T\)
  • 词表大小 \(V\)
    image-20251016210648505

5.2 组成部分:

  • 词嵌入层:\(VH\)
  • 输出层:\(VH\)
  • 归一化层:\((2L+1)H\)
  • 注意力层:\(4LH^2\)
  • 前馈网络:\(3LHH'\)

5.3 示例:LLaMA 7B

  • V=32000,L=32,H=4096,H′=11008V=32000,L=32,H=4096,H′=11008
  • 参数量 ≈ 6.74B

5.4训练显存估计

5.4.1 显存组成:

  • 模型参数 + 优化器:16P 字节(P 为参数量)
  • 激活值:每层输入 + softmax 输入
  • 其他:框架、ZeRO、中间结果、碎片

5.4.2 激活值显存:

  • 每层输入:\(2BTH\)
  • softmax 输入:\(4BTV\)
  • 总计:\(2LBTH+12BTV\)

5.4.3 单卡显存公式(使用 ZeRO-3):

image-20251016211507213

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你的程序为何卡顿?从LINUX I/O三大模式寻找答案

你的程序为何卡顿?从LINUX I/O三大模式寻找答案I/O交互流程 在LINUX中,内核空间和用户空间都位于虚拟内存中。LINUX采用两级保护机制:0级供内核使用,3级供用户程序使用。每个进程都有独立的用户空间(0~3G),对其…

日总结 13

BP 神经网络(Back Propagation Neural Network)是一种基于误差反向传播算法训练的多层前馈神经网络,核心是通过反向传播误差来调整网络权重,从而实现对复杂非线性关系的学习与拟合,是深度学习的基础模型之一。 一…

开源许可协议 gpl vs mit?

大一点的项目用GPL,与社区个人共享劳动过程与成果,保护劳动果实不被商业公司吸血、完全抄袭与窃取。 小项目或者纯依赖库,用MIT,方便你我他接手,续上代码更新。

二进制警报器

二进制警报器 在线解决以下问题:给定长度为 \(n\) 的数组,\(q\) 次操作:单点加(或多点加,视为多次单点加)设置警报器 \((S,v)\),当集合 \(S\) 对应位置的和达到 \(v\) 时报警。为了区分,我们将原问题中的报警称…

题解:P8019 [ONTAK2015] OR-XOR

思路 题目要求我们把序列分成 \(m\) 段,使得每段区间的异或和的结果按位或后的结果尽可能地小。那么就有一个显然的贪心,从高到低枚举二进制位,尽可能划分使高位按位或后为 \(0\) 的区间,这么做得到的答案是最优的…

DP 思维好题(转载)

转载自 https://www.luogu.com.cn/discuss/1174071 P3881, P3170, P3179, P3190, P3272, P3290, P3336, P3351, P3600, P3724, P5075, P1721, P1924, P1933, P2145, P3685, P2304, P2289, P2612, P2703, P4365, P4383,…

常见问题处理 --- win卡任务栏 设置无法打开 桌面重启

常见问题处理 --- win卡任务栏 设置无法打开 桌面重启解决方法 下载autoruns在微软官网 https://learn.microsoft.com/en-us/sysinternals/downloads/ 打开后找到explore 取消所有黄色的勾选 如果无法操作切换账户即可…

python sse的是什么?

python sse1.sse是什么?是一个通信协议。最主要的是, 服务器必须发送一个 Content-Type 为 text/event-stream 的响应头,这告诉客户端:“接下来我发送的不是普通的 HTML 或 JSON,而是一个事件流。” ============…

万字长文详述单据引擎原理、流程、单据管理 - 智慧园区

本文将为你深入剖析单据引擎的原理、架构、设计以及管理方法,帮助你构建一个高效、灵活且可靠的单据处理系统。 前言 单据引擎是做什么的?为什么要了解单据引擎? B端产品,一不小心就会变成项目,一个个定制交付,…

windows 链接共享打印机出现错误0x00000709?打印机0x0000011b错误?0x0000bcd、0x00000709、0x00000011b

安装 点击这里获取:所有修复工具都放这里了 ​​ 图片 第一款:全能打印机问题修复工具 ​​功能都在图片上面了,如果还需要安装其它支持的程序,会自动提示安装第二款:打印机共享维护工具等4个文件 WIN10 2H22和WI…

解码Linux文件IO目录检索与文件属性

目录检索的核心需求 当需要批量访问某个路径下的多个文件时,手动调用open函数逐个处理效率极低。Linux 系统将目录视为特殊文件,提供了一套专门的目录操作接口,可高效实现目录的创建、删除、打开、读取,以及文件属…

p66实验题

""" CIFAR-10 图像分类简化版(使用 sklearn) 在安装 TensorFlow 之前可以先运行这个版本 """ import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import fe…

20251016

10.16今天体育课体测,让我发现自己BMI指数居然是25.7,这令我非常不能接受。因此,我要开始为期两个半月的减脂,控制自己,打造健康强壮身体,于是我今天下午直接到操场跑步3公里,我感觉我现在状况非常好。未来我会…

C# - 串口助手

串口通信工具准备 (1)sscom5.13.1.exe: 串口调试工具 (2)VSPD: 是一种虚拟串口驱动程序,用于模拟和创建多个虚拟串口,以便在计算机间进行串口通信 VSPD 串口介绍Sent: 0 Bytes表示从该串口发送出去的数据字节数为…

虚拟线程的pinned问题终于被jdk25完美解决了

虚拟线程是一个非常有用的特征,但是JDK25以前,一直存在pinned问题,一些场景下会导致平台线程被占用无法释放。 比如下面的代码,在JDK 21下运行时,会卡住:import java.time.Duration; import java.util.concurren…

077_尚硅谷_单分支基本使用

077_尚硅谷_单分支基本使用1.单分支基本介绍2.例题判断是否18岁

【比赛记录】2025NOIP 冲刺模拟赛合集I

2025CSP-S模拟赛64A B C D Sum Rank50 0 0 - 50 7/7挂 155pts,挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂挂…

12 继承--instanceof和类型转换

12 继承--instanceof和类型转换多态 父类的引用指向子类的类型 Father f = new Son(); 而能执行的方法只看左边的类型. 父类可以指向子类,但不能调用子类独有的方法 如果非要调用,可以进行强制类型转换.注意事项:多态是…