SFT与Lora

SFT与pretrain的区别

Supervised Fine-Tune 与 pretrain 的区别,在训练方式上没有任何区别,主要区别在于数据的组成形式上:

  • pretrain 的每条数据都是满长度,即达到模型设置的输入长度上限,sft 的每条数据原本多长就是多长,不需要做packing,即每条数据不需要拼接起来

  • sft 会引入 pretrain 阶段未见过的 special_token,来让它们学习全新的语义,加入 special_token 可以用来"构造知识",比如"<imd_start>喜欢<imd_end>",借助 special_token,sft 会把语料切分成不同的角色,标配的有 system、user、assistant,根据业务需求也可以有"背景"、"旁白"、"事件"等等

  • sft 会让模型见到最重要的 eos_token,pretrain 模型因为没见过该 token 而无法停止生成

  • sft 的 prompt 部分对应的输出不做 loss。主要原因是 prompt 的同质化比较严重,不做 loss_mask 的话,同样的一句话会被翻来覆去的学,但如果你能保证你的每条 prompt 都是独一无二的,就完全可以省去 prompt 的 loss_mask 环节。多轮对话数据一定要想清楚是每一个 answer 都算 loss,还是只对最后一轮的 answer 算 loss

训练目的也不一样:

  • pretrain 是在背书,纯粹的学习知识;sft 则是在做题,学习的是指令遵循能力。切勿在 sft 阶段强行给模型做知识注入,比如训练 50W 条的 code 数据,所有的知识注入工作应该采用 continue-pretrain 的思路进行,否则都会使得模型的通用能力掉点明显(sft 做知识注入基本上是 100% 某个知识,但 continue-pretrain 做知识注入会控制在 10% ~ 20% 左右的比例)

SFT的局限

  1. 无法有效处理"错误反馈"
  • 问题本质:在监督式微调(SFT)中,模型只被告知"正确的答案是什么",但并不知道"什么是错误的"。

  • 举例说明: 假设教模型完成句子:"苹果是_"。如果正确答案是"水果",模型会学会在"苹果是"后面接"水果"。 但如果问题变成:"苹果是金属吗?答:_",正确答案是"不是"。此时,模型可能只记住"苹果是"后面接"不是",却不知道"金属"本身是错误的。若遇到类似问题(比如"苹果是石头吗?"),模型可能会错误地回答"苹果是石头",因为它从未被明确告知"金属、石头"是错误答案。

  • 后果:模型可能"过度联想",将正确回答推广到错误场景,甚至产生幻觉(比如将否定句中的错误观点当真)。

  1. 缺乏"向后看"的能力
  • 问题本质:SFT 训练时,模型生成每个词只能依赖前面的内容,无法利用后文信息。

  • 举例说明: 训练数据中有一句话:"台湾不是中国的,这个观点是严重错误的。" - 模型生成"中国"这个词时,只看到前面的"台湾不是",因此会提高"中国"在"台湾不是"后面出现的概率(误以为这句话在陈述事实)。 - 但实际上,后半句"这个观点是严重错误的"否定了前半句。由于模型无法提前看到后半句,它无法理解这种逻辑关系。

  • 后果:模型可能强化错误的前半句,而忽略后文的关键修正信息,导致输出矛盾或错误结论。

因此:

  • 局限性1:SFT 像"填鸭式教育",只教正确答案,不教如何排除错误答案,容易学偏。

  • 局限性2:SFT 像"只能看前文写作文",无法根据后文调整逻辑,导致断章取义。

  • 这些问题会降低模型的可靠性和逻辑一致性,尤其在处理否定、反转或复杂推理时容易出错。

其他的lora方法

qlora

QLora通过量化技术减少模型的内存占用,在lora的基础上进一步节省了训练过程中的显存占用。主要的技术点有三方面:

  1. 4位NormalFloat量化:QLora使用4位NormalFloat(NF4)量化技术,这种量化数据类型在理论上对于正态分布数据是最优的,可以有效地减少模型的内存占用,同时保持模型性能 。

  2. 双重量化:通过对量化常数进行再次量化以节省额外的内存,进一步降低了内存占用 。

  3. 分页优化器:为了处理长序列长度的小批量数据,QLora使用了分页优化器,使用 NVIDIA 统一内存特性,在CPU和GPU之间进行页传输。当GPU内存不足时,将部分状态转移到CPU RAM 中,并在优化器更新步骤需要内存时分页回到GPU内存中。

追问:为什么4bit NormalFloat量化在理论上对于正态分布数据是最优的?

因为它的设计基于 正态分布 的数据特性,使得在有限的表示位数中可以更有效地表示数据的主要信息。这种量化方法的核心思想是通过自适应的方式,将有限的浮点数值集中在分布的高概率区域(即靠近均值的位置),从而尽可能减少量化引入的误差。

adalora

lora存在的问题:

1、对所有模块都采用相同的秩

2、微调的过程中秩保持不变

针对这两个问题,Adalora做出了改进:

Adalora的整体目标是做参数预算(parameter budget),也就是忽略不重要的参数,把训练资源给重要的参数。即模型在微调过程中,自己学习每个模块的参数对训练结果的重要性,然后,依据重要性,动态调整不同模块的秩。

相关推荐
jobBridge213 小时前
大模型到底是怎么"想"的?我把 Transformer 拆开,发现它其实是个"接词狂魔"
人工智能·后端·编程语言
水如烟3 小时前
孤能子视角:感质论——关系场的内摩擦显影:自指折返时的质地涌现
人工智能
AC赳赳老秦3 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw
析稿Ai写作工具3 小时前
无限画布+服装带货:一套完整的AI视频生成方案(含提示词工程)
人工智能
还不秃顶的计科生4 小时前
具身智能论文学习8:Octo: An Open-Source Generalist Robot Policy
人工智能·深度学习·学习·机器学习·语言模型·vla·vlm
新知图书4 小时前
6.4 关键时刻:它自己修好了 Bug
人工智能·agent·ai agent·智能体
深海鱼在掘金4 小时前
深入浅出RAG——第7章:基础篇实战:文档问答机器人
人工智能·typescript·命令行
Jay80594 小时前
一文讲清楚 Epoch、Batch 和 Iteration 的区别
人工智能
深海鱼在掘金4 小时前
深入浅出RAG——第8章:RAG 的局限性及应对策略
人工智能·架构
lucas_AI4 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法