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

相关推荐
ar0123几秒前
AR眼镜赋能远程协作:效率与安全双提升
人工智能·ar
西格电力科技2 分钟前
光伏策略控制服务器如何成为电站智慧转型的中枢与关键一步?
运维·服务器·人工智能·分布式·能源
skywalk81633 分钟前
试试这个模型Qwen3-Coder-30B-A3B-Instruct
人工智能
2301_764441333 分钟前
跨城市人类移动行为预测
人工智能·机器学习·数学建模
前进的李工3 分钟前
AI安全威胁:对抗样本到数据隐私全解析(13种安全威胁及防护)
网络·人工智能·安全·语言模型·网络攻击模型
葡萄城技术团队9 分钟前
Wyn商业智能:问答式自助BI工具如何重塑企业数据分析模式?
人工智能·数据挖掘·数据分析
云霄星乖乖的果冻13 分钟前
02预备知识——李沐《动手学深度学习》个人笔记
人工智能·笔记·深度学习
工藤学编程13 分钟前
零基础学AI大模型之LangChain Retriever
人工智能·langchain
阿杰学AI16 分钟前
AI核心知识47——大语言模型之Data Cleaning(简洁且通俗易懂版)
人工智能·ai·语言模型·aigc·数据清洗·模型训练·data cleaning
AI营销视界16 分钟前
2025金融GEO厂商谁领风骚
人工智能