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),也就是忽略不重要的参数,把训练资源给重要的参数。即模型在微调过程中,自己学习每个模块的参数对训练结果的重要性,然后,依据重要性,动态调整不同模块的秩。

相关推荐
K姐研究社2 小时前
怎么用AI制作电商口播视频,开拍APP一键生成
人工智能·音视频
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
传说故事3 小时前
【论文阅读】MotuBrain: An Advanced World Action Model for Robot Control
论文阅读·人工智能·具身智能·wam
北京耐用通信3 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
火山引擎开发者社区3 小时前
TRAE × 火山引擎 Supabase:为你的 AI 应用装上“数据引擎”
人工智能
weixin_446260853 小时前
[特殊字符] 视觉Transformer (ViT) 原理及性能突破:从CNN到大规模自注意力机制的迁移
深度学习·cnn·transformer
小a彤3 小时前
GE 在 CANN 五层架构中的位置
人工智能·深度学习·transformer
前端若水4 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Upsy-Daisy4 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
企学宝4 小时前
企学宝5月专题课程丨《OpenClaw AI 智能体实战营:从零基础部署到全场景自动化落地》
人工智能·ai·企业培训