news 2026/6/13 4:56:51

【阶段四-五:模型训练全过程】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【阶段四-五:模型训练全过程】

大模型基础入门,主要用于个人的学习和整理,方便后期复习。
暂时只有 预训练、继续预训练、SFT、LORA、蒸馏、Model Merging

复习内容

  • 学习内容
  • 一、总览
    • 1.1 什么时候需要从0-1训练大模型
    • 1.2 模型训练全流程
  • 二、预训练(pre-train)
    • 2.1 数据收集与处理
      • 2.1.1 数据来源
      • 2.1.2 数据清洗
        • 2.1.2.1 数据快速去重
      • 2.1.3 数据质量评估
    • 2.2 词表训练与扩展
    • 2.3 分布式训练技术
    • 2.4 预训练全流程
      • 完整代码
  • 三、继续预训练 (continue-pretrain)
    • 3.1 介绍
    • 3.2 实战演练继续预训练 Qwen3 医疗领域 CPT
  • 四、SFT (监督微调)
    • 4.1 介绍
    • 4.2 实战演练
      • 4.2.1 数据 && 训练平台
      • 4.2.2 具体过程
      • 4.2.3 结果

学习内容

1.总览
2.预训练(pre-train)
3.继续预训练 (continue-pretrain)
4.sft (监督微调)
5.


一、总览

1.1 什么时候需要从0-1训练大模型

1.2 模型训练全流程

二、预训练(pre-train)

在LLM能够生成连贯文本之前,它需要先掌握语言的基本规律,这一过程称为预训练。预训练是一个计算密集型任务,涉及大量数据和复杂的模型优化。

2.1 数据收集与处理

训练LLM的第一步是收集海量高质量的文本数据。目标是构建一个多样化且覆盖面广的数据集,以便模型能够学习到丰富的语言知识和上下文关系。

2.1.1 数据来源

个人开发者,可以从开源数据集获取:

  • HuggingFace开源数据集:https://huggingface.co/datasets
  • Common Crawl:https://commoncrawl.org/
  • 中文:WanJuanText-1.0 and WuDaoCorpora-Text
  • 英文:redpajama(网页数据) and FineWeb

现有的数据集一般存在以下的问题:

  • (1)专用数据质量高,但量少,网页数据量大,但比较脏
  • (2)中文与英文存在差距(数量、质量 and so on)
  • (3)知识的密度有差距

2.1.2 数据清洗

主要分成四个阶段 (1)规则过滤 (2)垃圾过滤 (3)去重 (4)质量评估

2.1.2.1 数据快速去重

我们找一组数据里面的相似对,我们可以从头遍历到尾,但是时间复杂度会超高,算力不一定可以match,所以我们才研究算法,牺牲一些精度,换取效率的极大提升。
(1)Jaccard相似度
判断两个集合是否相等,一般使用称之为Jaccard相似度的算法(后面用Jac(S1,S2)来表示集合S1和S2的Jaccard相似度)。举个列子,集合X = {a,b,c},Y = {b,c,d}。那么Jac(X,Y) = 2 / 3 = 0.67。也就是说,结合X和Y有67%的元素相同。下面是形式的表述Jaccard相似度公式:
Jac(X,Y) = |X∩Y| / |X∪Y|
也就是两个结合交集的个数比上两个集合并集的个数。范围在[0,1]之间。

(2)MinHash
MinHash 是一种用于近似集合相似度计算的技术。它被广泛用于大规模数据集中的快速相似度估计,特别是在处理文本、图像和网络数据等领域。
原始问题的关键在于计算时间太长。所以,如果能够找到一种很好的方法将原始集合压缩成更小的集合,而且又不失去相似性,那么可以缩短计算时间。Minhash可以帮助我们解决这个问题。举个例子,S1 = {a,d,e},S2 = {c, e},设全集U = {a,b,c,d,e}。集合可以如下表示:

Minhash算法大体思路是:采用一种hash函数,将元素的位置均匀打乱,然后将新顺序下每个集合第一个元素作为该集合的特征值。比如哈希函数h1(i) = (i + 1) % 5,其中i为行号。作用于集合S1和S2,得到如下结果:

(3)LSH
局部敏感哈希(Locality-Sensitive Hashing,LSH)是一种用于在高维空间中快速搜索相似项的近似搜索技术。它特别适用于处理大规模数据集,其中传统的精确搜索方法可能变得过于昂贵或不可行。
通过MinHash有了原始集合的摘要,但是还是没有解决最初的问题,仍然需要遍历所有的集合对,,才能所有相似的集合对,复杂度仍然是O(n2)。所以,接下来描述解决这个问题的核心思想LSH。其基本思路是将相似的集合聚集到一起,减小查找范围,避免比较不相似的集合。仍然是从例子开始,现在有5个集合,计算出对应的Minhash摘要,如下:

上面的集合摘要采用了12个不同的hash函数计算出来,然后分成了B = 4个区间。前面已经分析过,任意两个集合(S1,S2)对应的Minhash值相等的概率r = Jac(S1,S2)。先分析区间1,在这个区间内,P(集合S1等于集合S2) = r3。所以只要S­1和S2的Jaccard相似度越高,在区间1内越有可能完成全一致,反过来也一样。那么P(集合S1不等于集合S2) = 1 - r3。现在有4个区间,其他区间与第一个相同,所以P(4个区间上,集合S1都不等于集合S2) = (1 – r3)4。P(4个区间上,至少有一个区间,集合S1等于集合S2) = 1 - (1 – r3)4。这里的概率是一个r的函数,形状犹如一个S型,如下:

其实归根到底,这个minhash +lsh 组合就是先把元素分块,再利用hash算出来代表元素,分组(桶哈希)然后利用lsh 比较要是两组都一样那么就相似。

2.1.3 数据质量评估

主要是利用LLM对数据集的质量进行打分,本质上是构建一个自动化 的“数据质量评估员”。这个过程的核心是将模糊的“质量好坏”概念,转化为大模型可以理解和执行的、具体的、结构化的指令。
主要分为以下几个步骤:

  1. 定义质量维度与评分标准 (Scoring Rubric)
  2. 制定评分标准(Rubric)
  3. 设计高效的提示词
  4. 执行获得结果
  5. 校准与验证

2.2 词表训练与扩展

在神经网络能够处理文本之前,文本需要被转换为数值形式。这一转换过程称为分词(Tokenization)。分词的作用是将单词、子词或字符映射为唯一的数值token。这些token是语言模型的基本构建单元,是模型理解和处理语言的核心组件。

2.3 分布式训练技术

2.4 预训练全流程

完整代码

三、继续预训练 (continue-pretrain)

3.1 介绍

继续预训练是预训练和微调的中间部分,主要是利用专业无标准的专业领域数据集,主要是提升模型对专业问题的能力,和微调相比因为使用的是无标注的数据集,成本更低,也更方便训练。

3.2 实战演练继续预训练 Qwen3 医疗领域 CPT

四、SFT (监督微调)

4.1 介绍

SFT(监督微调)是后训练的第一步,也是最直观的一步:给模型大量高质量的(指令,回答)对,用标准的交叉熵损失训练模型去模仿这些示范回答。从优化角度看,SFT 只对回答部分计算损失,让模型学习规范化表达,把话说得更通顺。本质上就是在预训练模型的基础上,通过标注数据调整参数,让它从"会接话"变成"会听话"。

4.2 实战演练

4.2.1 数据 && 训练平台

数据来源于:https://huggingface.co/datasets/Mxode/I_Wonder_Why-Chinese (中文百科开放问答,120w)
卡:4张4080 跑了4h

4.2.2 具体过程

  1. 原始数据 → 统一对话格式 JSONL
    这一部分主要是数据处理,主要是基于FormatHandler 写的两个ChineseInstructLiteFormatHandler和IdentityFormatHandler类分别用来处理parquet格式的数据集 和JSON 格式的数据集。最后都变成这种json格式,方便后续处理。

  2. JSONL → tokenize → 训练 → 保存模型
    就是常规操作,租卡训练就行。

  3. 拿训好的模型在测试集上评估

4.2.3 结果


ft-baike-qwen-0.1B/ 是训练完成后手动保存的最终模型,而 checkpoint-12000 和 checkpoint-12632 则是我在 TrainingArguments 中通过save_steps=2000 和 save_total_limit=2 配置的断点存档——前者是倒数第二次定期保存,后者是 2 个 epoch 跑完时的最终检查点。保留这两个checkpoint 的核心目的是容灾兜底:一旦训练中途因 OOM、机器重启或进程异常退出而崩盘,可以直接从最近的 checkpoint加载权重恢复训练,避免从头重跑导致算力和时间全部白费。

参考文献:
https://zhuanlan.zhihu.com/p/32208170972
https://www.cnblogs.com/bourneli/archive/2013/04/04/2999767.html
https://blog.csdn.net/weixin_37763484/article/details/148711878

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 4:52:01

可靠性:MSTP + VRRP 配置试验

一、拓扑:二、配置说明: 1. PC1/PC2 的地址分别为:192.168.1.1/24 和 192.168.2.1/24,对应网关分别为:192.168.1.254 和 192.168.2.254 2. ACC1/2、Core1/2 分别起用 vlan 10、20,并且在口字型链路上配置…

作者头像 李华
网站建设 2026/6/13 4:49:52

MobaXterm 隐藏玩法:用自定义快捷键打造你的专属终端武器库

MobaXterm 隐藏玩法:用自定义快捷键打造你的专属终端武器库在终端工具的世界里,效率就是生命线。MobaXterm 作为一款集成了多种功能的终端神器,其真正的威力往往被大多数用户低估。那些隐藏在配置菜单深处的快捷键定制功能,就像一…

作者头像 李华
网站建设 2026/6/13 4:48:16

双向(循环)链表深度精讲,从零手写完整双链表、头尾高效增删、指针逻辑、优劣对比与面试考点全解

0. 前言我们完整吃透了 STL 二分查找全套算法,掌握了有序数据 O(logn) 极致检索能力,明白了有序结构随机访问的性能优势。第五十六天的单链表学习,让我们熟练掌握了链式存储的核心思想,也清晰发现了单链表的致命短板。单链表所有结…

作者头像 李华
网站建设 2026/6/13 4:37:56

青龙面板京东脚本推荐及配置

目前(2024年)仍在活跃维护的京东脚本库主要有以下几个,其中 KR库 是目前社区公认最稳定、更新最及时的仓库之一 。 主流脚本仓库推荐 仓库名称/别名仓库地址状态与特点KR库https://github.com/KingRan/KR.git强烈推荐。脚本更新及时&#x…

作者头像 李华
网站建设 2026/6/13 4:37:55

钢结构焊缝表

钢结构焊缝表达 一、常用焊缝代号 1.1基本符号

作者头像 李华