大模型微调学习(二)

二、Lora微调

q'q'q'q在这里插入图片描述

  • 这页主要说明:对 GPT-3 这种超大模型进行全参数 Fine-tune,成本非常高

  • “噩梦”主要体现在三个方面:

    1. 显存压力大:175B 参数模型全参训练大约需要 96 张 V100 32GB 才能基本放得下。
    2. 存储成本高:每训练一个任务,都可能需要保存接近 1TB 的 Checkpoint
    3. 模型切换慢:不同任务之间切换完整模型,可能需要 1 分钟以上
  • 造成这些问题的核心原因是:全参数 Fine-tune 需要更新并保存模型的全部参数,不仅有模型权重,还需要保存梯度和 Adam 优化器状态,因此显存占用会进一步增加。

  • LoRA 的解决思路很简单:

    • 冻结原来的大模型参数;
    • 只训练少量新增的低秩参数;
    • 每个任务只保存很小的 LoRA 权重。
  • 因此可以理解为:

全参 Fine-tune:整个模型都改;LoRA:大模型基本不动,只改很小一部分参数。

  • 这也是为什么下一步要学习 LoRA、QLoRA 等 PEFT 方法:它们主要解决的就是显存、存储和多任务切换成本过高的问题
    在这里插入图片描述

2.1 Lora算法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.1 BERT模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 Roberta模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 PRFT library

在这里插入图片描述

三、Alpaca模型微调

3.1 alpaca模型概览

在这里插入图片描述

3.2 self-Instruct数据准备

在这里插入图片描述
在这里插入图片描述

3.3 训练Alpaca

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SwiGLU:通过 Gate / Up / Down 三个投影引入门控机制,相比 ReLU/GELU 能更灵活地筛选和增强有效特征。

RoPE:把位置信息直接编码进 Q/KQ/K 的旋转关系中,使注意力天然包含相对位置信息,并方便后续做长上下文扩展。

系统优化:重点是减少显存读写、激活保存和通信等待,例如高效 causal attention、Activation Checkpointing、通信计算重叠等。

一个准确性提醒:FlashAttention 可以作为现代高效实现的代表,但不应表述成“LLaMA 原论文独有创新”。

一句话理解:SwiGLU 决定“怎么变换特征”,RoPE 决定“怎么表示位置”,系统优化决定“怎么把模型高效训起来”。
在这里插入图片描述
这页适合做成“GPU × 模型参数 × Token 的行业速算表”:先看模型权重能不能装下,再看 KV Cache/并发会不会把剩余显存吃完,最后才讨论 Token/s。

权重速算:FP16/BF16 约 2 GB / 1B 参数,INT8 约 1 GB / 1B,INT4 理论约 0.5 GB / 1B,实际还要给量化尺度、运行时和 KV Cache 留余量。

推理显存不只是模型权重,而是 Weights + KV Cache + Activations + Runtime Workspace;上下文越长、并发越高,KV Cache 增长越明显。

速度指标要分开看:TTFT 主要受 Prompt 长度和 Prefill 影响;Decode 的 Token/s 更受模型规模、显存带宽、量化方式和 Batch 影响。

训练不能简单套固定“×18”:Adam 混合精度全参训练通常还要保存梯度、主权重和优化器状态,再叠加激活;ZeRO/FSDP/Checkpointing 会显著改变单卡显存账本。

一个重要修正:405B 模型仅 BF16 权重就约 810 GB,因此 8×80GB GPU 并不能直接装下完整 BF16 权重;这类规模通常需要更多显存、量化或分布式切分。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.4 整体流程

在这里插入图片描述

一、Teacher → Student:用强模型生成训练数据

  • Teacher(如 GPT-4)负责出题、分类判断和生成答案。
  • Student(如 LLaMA、ChatGLM)学习这些高质量指令数据,再通过 LoRA 或全量微调完成能力迁移。

二、好数据看两个标准

  • Instruction 要多样:覆盖不同任务、不同表达方式,避免数据过于单一。
  • Output 要优质:答案尽量准确、完整、格式规范,给学生模型提供可靠监督。

三、完整闭环

人工种子 → 指令生成 → 任务分类 → 分类/非分类实例生成 → Filtering → 合格数据回流 Task Pool → Student 微调

一句话总结:
Self-Instruct 本质上可以看成一个“强模型造数据 → 数据反哺小模型”的自动化知识迁移闭环。

3.5 具体流程

3.5.1 Instruction Generation

在这里插入图片描述
Self-Instruct 第一步的本质:不是让模型“凭空想任务”,而是先构造一个高质量 Few-shot Prompt,让模型沿着已有示例继续自回归生成新的 Instruction。

Prompt 构造方式:从 Task Pool 中动态抽取 8 个 Example,示意为 6 条人工种子指令 + 2 条模型已生成指令,再让模型续写第 9 个新任务。

人工种子的作用:稳定格式、难度、任务边界与指令质量,相当于给生成过程提供“锚点”。

模型新生成样本的作用:不断把新任务重新放回 Task Pool,增加题型、语义和表达方式的多样性,推动长尾探索。

形成自举飞轮175 条人工种子 → 混合采样 → Prompt → 新指令生成 → 回填 Task Pool → 再次采样,让任务池持续扩张。

核心思想:用“大比例优质种子固底 + 小比例新颖样本探路”同时解决 生成质量任务多样性 两个问题,为后续大规模 Self-Instruct 数据构造打基础

3.5.2 判断是否是分类型Instruction

在这里插入图片描述

一、判定标准:是不是“有限标签分类”
  • 核心看输出是不是有限、固定、离散的标签
  • 例如“适合 / 不适合”属于分类任务。
  • 开放式故事生成、实体补全等,通常不属于分类任务。
二、判定方式:Few-shot 提示词
  • Prompt 中先给几个 Yes / No 示例
  • 再把 Step 1 新生成的 Instruction 填进去。
  • 让大模型直接判断并输出:Yes 或 No
三、作用:决定下一步怎么生成数据
  • Yes → Output-first:先确定标签,再生成对应输入,减少类别不平衡。
  • No → Input-first:先生成输入,再生成开放式回答。
四、总结
创新点 1:模型“自己给自己造训练数据”

核心思想非常简单:

Pretrained LLM
      ↓
自己生成 Instruction Data
      ↓
过滤
      ↓
用这些数据 Fine-tune 自己
      ↓
更会 Follow Instructions

这其实是一种 Bootstrapping / Self-training 思想。

但是与普通 self-training 不同:

普通 Self-training:

已有Task
+
未标注样本
↓
Pseudo Label

Self-Instruct:

连 Task 本身
都让模型生成

所以它是:

Task-level Bootstrapping。

论文也特别指出,它不是针对某一个指定任务,而是从头生成多种新的任务。


创新点 2:把数据生成拆成 Instruction 和 Instance 两个阶段

不是一句 Prompt:

“给我生成训练数据。”

然后完事。

而是:

先生成 Task / Instruction
           ↓
再理解这个任务
           ↓
生成 Input + Output

这种解耦非常重要。

因为:

Task Diversity

Instance Correctness

其实是两个不同的问题。

3.5.3 非分类/开放式任务的实例生成

在这里插入图片描述

一、核心思路:顺向生成
  • 对于非分类任务,不需要先定标签。
  • 模型直接按照自然顺序生成:
    Instruction → Input(可为空)→ Output
  • 这就是 Input-first / Direct Generation
二、输入可以有,也可以没有
  • 如果任务本身信息已经完整,可以直接生成 Output
  • 如果任务需要材料或上下文,模型会先生成 Input,再生成对应的 Output
三、Few-shot 示例的作用
  • Prompt 里先放几个示例,告诉模型该怎么写。

  • 示例可以帮助模型学会:

    • 输出格式要规范
    • 回答要简洁清晰
    • 不同任务可以对应不同的表达形式
四、最后得到什么
  • 这一步会产出一个完整样本:
    ⟨Instruction, Input, Output⟩
  • 然后进入 Step 4(Filtering),做去重和格式检查。

一句话总结:
对于开放式任务,Self-Instruct 采用“顺向生成”方式,直接从指令出发,生成输入(可选)和输出,形成完整训练样本。

3.5.4 分类任务的实例生成

在这里插入图片描述

一、核心思路:标签先行
  • 对于分类任务,先不给模型自由生成输入。
  • 而是先指定一个 Class Label,再让模型生成符合这个标签的输入内容。
  • 这就是 Output-first
二、Few-shot 提示词怎么起作用
  • Prompt 里先给几个示例:
    标签是什么 → 对应输入应该长什么样

  • 比如:

    • mixed → 生成带有正反两面的句子
    • Promotion → 生成促销邮件
  • 这样模型就会学会“按标签反推输入”。

三、这样做有什么价值
  • 可以让每个类别都被主动生成到。
  • 能减少模型总是偏向某一类的问题。
  • 从而缓解 类别失衡(Class Imbalance),让数据更均衡。
四、最后得到什么
  • 生成完成后,会得到标准样本:
    ⟨Instruction, Input, Output⟩
  • 然后进入 Step 4(Filtering),做去重和格式检查。

一句话总结:
这个设计非常值得学。作者发现:如果所有任务都:

Instruction
   ↓
先生成 Input
   ↓
再生成 Output

对于分类任务会出现明显的 Label Bias

例如:

判断一句话是否存在语法错误

模型可能总喜欢生成:

语法正确的句子

导致标签分布不均衡。

所以作者先进行:

Classification Task Identification

然后:

Classification
      ↓
Output-first

Non-classification
      ↓
Input-first

这是整篇论文中一个非常重要的工程创新。

3.5.5 过滤与质检

在这里插入图片描述

一、ROUGE-L 去重
  • 新指令会和 Task Pool 中已有指令进行比较。
  • ROUGE-L < 0.7:保留;≥ 0.7:删除。
  • 主要作用是减少重复指令,保持任务多样性。
二、过滤不可执行任务
  • 删除包含 imagepicturegraph 等内容的指令。
  • 因为纯文本模型无法真正处理图片或图表,避免生成无效训练数据。
三、检查逻辑一致性
  • 如果出现相同/相似 Input,却对应矛盾 Output 的情况,需要过滤。
  • 避免标签噪声影响模型训练。
四、过滤长度异常样本
  • 太短:可能内容残缺、信息不足。
  • 太长:可能出现重复生成或无关内容。
  • 最终只保留长度合理、格式完整的高质量样本。

一句话总结:
Step 4 就是 Self-Instruct 的“质量守门员”:通过去重、规则过滤、冲突检查和长度控制,确保只有高质量、多样化的数据进入最终训练集。

四、模型评估

在这里插入图片描述

4.1、四种常见评测方式

  • 人工评测:最可靠,但成本最高。
  • LLM-as-a-Judge:速度快、成本低,适合大规模评测。
  • 传统指标:如 BLEU、ROUGE、EM,适合有标准答案的任务。
  • Benchmark / A/B Test:用于综合能力和真实线上效果验证。

4.1.1、核心问题:机评能不能代替人评?

不能直接相信大模型打分,需要先做一次人机一致性校准

4.1.2、四步校准闭环

抽取 100 条样本 → 专家评分 S₁ → LLM 评分 S₂ → 比较相关性并修改 Judge Prompt

如果人评和机评分数差距较大,就继续调整 Prompt,直到二者高度一致。

4.1.3、最终目的

校准完成后,就可以把评测 Prompt 扩展到剩余的大规模测试集,实现:

少量人工校准 + 大规模自动评测

一句话总结:
先用少量人工评分把“LLM 裁判”校准好,再让它替代人工完成大规模评测,在成本、效率和可信度之间取得平衡。

4.2 传统NLP评价指标的两大致命缺陷:字面匹配≠语义理解

在这里插入图片描述

4.2.1、问题 1:语义相同,却被打低分

  • Mike really loves drinking tea.
  • Mike adores sipping tea.
  • 两句话意思几乎一样,但词面重合较少,BLEU / ROUGE 可能给低分

4.2.2、问题 2:语义相反,却被打高分

  • Mike does not drink coffee.
  • Mike does drink coffee.
  • 两句话只差一个 not,字面很像,但意思完全相反,传统指标却可能给高分

4.2.3、为什么会这样?

  • BLEU、ROUGE 主要看词和 n-gram 的重合程度
  • 它们不真正理解同义改写、否定关系、逻辑和事实含义
  • 所以开放式生成更适合结合 BERTScore、语义相似度或 LLM-as-a-Judge

一句话总结:
传统 Metric 只能看“像不像”,却不一定知道“对不对”,因此大模型评测必须进一步关注深层语义。

4.3 n-gram基础概念补充

在这里插入图片描述

4.3.1、什么是 n-gram?

  • n-gram:把一句话按连续的 n 个词进行切分。
  • n=1Unigramn=2Bigramn=3Trigram
  • n 越大,对局部语序和词组搭配越敏感。

4.3.2、简单例子

句子:The dog lay on the rug

  • 1-gramThedoglayontherug
  • 2-gramThe dogdog laylay onon thethe rug
  • 3-gramThe dog laydog lay on……

本质上就是一个滑动窗口切词的过程。

4.3.3、它和 BLEU / ROUGE 有什么关系?

  • BLEU:主要看预测文本和参考答案之间的 n-gram 匹配程度。
  • ROUGE-1 / ROUGE-2:分别关注 1-gram、2-gram 的重合情况。
  • 所以它们擅长判断“字面像不像”,但不一定真正理解“语义对不对”。

一句话总结:
n-gram 是传统文本评价指标的基础:先把句子切成连续词片段,再统计预测结果和参考答案之间有多少片段能够匹配。

4.4 ROUGE-1(基于 Unigram)计算原理与示例推导

在这里插入图片描述

4.4.1、先看词有没有匹配

参考答案:It is cold outside.
模型输出:It is very cold outside.

  • Reference 一共 4 个词
  • Output 一共 5 个词
  • 匹配词数:4 个

4.4.2、ROUGE-1 怎么算

  • Recall = 4 / 4 = 1.0
    看参考答案里的信息有没有被覆盖完整。
  • Precision = 4 / 5 = 0.8
    看模型生成内容里有多少是“有效匹配”的。
  • F1 ≈ 0.89
    综合平衡 Precision 和 Recall。

4.4.3、它的问题在哪里?

  • very 虽然不影响整体语义,但因为 Reference 里没有,仍然会被“机械扣分”。
  • 所以 ROUGE-1 本质上还是在看词面重合度,并不真正理解句子含义。

一句话总结:
ROUGE-1 就是先做 Unigram 匹配,再用 Recall、Precision 和 F1 衡量“覆盖多少、匹配多准、整体多平衡”。

4.5 ROUGE-1的致命盲区

在这里插入图片描述

4.5.1、事实完全错,但 ROUGE-1 还是很高

  • Reference:It is cold outside.
  • Generated:It is not cold outside.
  • 人类一看就知道意思完全相反,但 4 个词仍然匹配。

4.5.2、为什么还能得到 0.89?

  • Recall = 4 / 4 = 1.0
  • Precision = 4 / 5 = 0.8
  • F1 ≈ 0.89
  • ROUGE-1 只看到多了一个 not,却不知道这个词把整句话的语义翻转了。

4.5.3、这说明什么?

  • ROUGE-1 本质上只是做词面重合统计
  • 它不理解否定、逻辑和事实关系
  • 所以大模型评测不能只依赖 BLEU / ROUGE,还需要结合 BERTScore、NLI 或 LLM-as-a-Judge

一句话总结:
一句话只多了一个 not,语义已经完全相反,但 ROUGE-1 仍可能给出高分,这正是纯字面指标最大的盲区。

4.6 ROUGE-2(基于 Bigram)计算原理与实例推导:更加关注“局部语序”

在这里插入图片描述

4.6.1、ROUGE-2 看的是相邻词对

参考答案:It is cold outside.
模型输出:It is very cold outside.

  • Reference Bigram:It isis coldcold outside
  • Output Bigram:It isis veryvery coldcold outside
  • 最终只匹配 2 个 Bigram

4.6.2、ROUGE-2 怎么算

  • Recall = 2 / 3 ≈ 0.67
  • Precision = 2 / 4 = 0.50
  • F1 ≈ 0.57

相比 ROUGE-1 的 0.89,分数明显下降。

4.6.3、为什么下降这么多?

  • ROUGE-2 开始考虑局部语序,比 ROUGE-1 更严格。
  • 插入一个 very,不仅新增了词,还会把原来的 is cold 拆开。
  • 所以它更能发现词序变化,但也容易误伤正常的修饰和改写。

一句话总结:
ROUGE-2 用 Bigram 检查“相邻两个词是否一致”,比 ROUGE-1 更关注语序,但也对插词和改写更加敏感。

4.7 ROUGE-L(基于 LCS)-计算原理与实例推导:用最长公共子序列衡量句子结构相似度

在这里插入图片描述

4.7.1、ROUGE-L 看什么?

  • ROUGE-L 的 LLCS(最长公共子序列)
  • 它不要求词必须连续,只要求前后顺序保持一致
  • 所以它比 ROUGE-2 对中间插词更宽容。

4.7.2、标准算例怎么计算?

Reference:It is cold outside.
Output:It is very cold outside.

标准 LCS 是:It → is → cold → outside,长度为 4

  • Recall = 4 / 4 = 1.0
  • Precision = 4 / 5 = 0.8
  • F1 ≈ 0.89

4.7.3、和 ROUGE-1 / ROUGE-2 有什么区别?

  • ROUGE-1:看单词是否出现,不管顺序。
  • ROUGE-2:看相邻两个词,局部语序最严格。
  • ROUGE-L:看整句的相对顺序和骨干结构,更有弹性。

一句话总结:
ROUGE-L 就是在两句话里寻找“顺序一致的最长共同词序列”,比 ROUGE-2 更能容忍插词,但仍然不真正理解深层语义。

4.8 字面指标的两大致命漏洞:复读机作弊&乱序假满分 ---- 以及截断匹配(Clipped)修正与局限

在这里插入图片描述

4.8.1、漏洞 1:复读也可能“刷高分”

Reference:It is cold outside.
Output:cold cold cold cold

如果只做最朴素的词匹配,4 个 cold 都可能被重复计数,看起来 Precision 很高。

4.8.2、怎么修?——Clipped / Modified Precision

  • cold 在 Reference 中只出现 1 次
  • 所以即使 Output 写了 4 次,也最多只算 1 次有效匹配
  • 修正后:Precision = 1 / 4 = 0.25

这样可以有效惩罚“复读机”式退化输出。

4.8.3、但还有一个问题:语序

Output:outside cold it is

  • 4 个词都来自 Reference,Unigram 仍可能得到很高分。
  • 但句子语序已经完全乱掉。
  • 说明 Clipping 能防重复,却不能解决 Unigram 不看词序的问题

一句话总结:
Clipped Precision 能堵住“重复刷分”的漏洞,但只要还停留在 Unigram 层面,就依然看不懂语序,因此还需要 Bigram、ROUGE-L 或更强的语义评测方法。

4.9 GPT、Alpaca、Vicuna关系图谱:羊驼家族的“师承”与“进化”

在这里插入图片描述

4.9.1、四者是什么关系?

  • GPT:闭源强模型,提供能力参考,也曾被用来生成训练数据。
  • LLaMA:Meta 的基础模型,是 Alpaca、Vicuna 的“底座”。
  • Alpaca / Vicuna:都是在 LLaMA 上继续做指令微调得到的对话模型。

4.9.2、Alpaca 和 Vicuna 最大区别

  • Alpaca:主要用约 52K 条机器合成指令数据进行 SFT,更像“让 LLaMA 学会听指令”。
  • Vicuna:主要使用 ShareGPT 多轮真实对话数据训练,更强调自然对话和多轮交互。

4.9.3、可以怎么理解?

可以把它看成:

GPT → 提供能力/数据参考
LLaMA → 提供基础模型
LLaMA + Alpaca 数据 → Alpaca
LLaMA + ShareGPT 对话 → Vicuna

一句话总结:
GPT 更像“老师”,LLaMA 是“基础学生”,Alpaca 和 Vicuna 则是在同一底座上、用不同教材训练出来的两种指令模型。

五、总计

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值