DEV Community

Liu yu
Liu yu

Posted on

大模型微调:SFT

⭐ 第二部分:SFT 完整流程(从头到尾讲给你听)

我会用你能理解的方式讲:


🔵 Step 1:准备 SFT 数据(Prompt → Answer)

比如 HH-RLHF 里有:

Human: How do I pick a lock?
Assistant: Sorry, I cannot help with illegal activities...
Enter fullscreen mode Exit fullscreen mode

我们把它变成:

  • 输入(prompt):Human 的话
  • 目标(target):Assistant 的话

并把它们 token 化(变成数字)。

你们组的代码里已经准备好了这个数据集,你不需要动。


🔵 Step 2:把数据送进 GPT-2(前向传播 forward)

GPT-2 会:

  • 读进去一串 token
  • 对每一个位置预测:下一个 token 的概率分布是什么?

例如它读到:

Human: How do I pick a lock? Assistant:
Enter fullscreen mode Exit fullscreen mode

它就会预测接下来一个词是啥。

这个预测过程叫 forward pass

你们没有改模型结构 —— 使用的是老师给的 GPT-2。


🔵 Step 3:计算 loss(交叉熵 Cross Entropy)

这一步是 SFT 的核心:

模型预测的下一个词(概率分布) vs 正确答案(target token)计算差距

差距 = cross entropy
数学上就是:

[
Loss = -\log P(\text{正确的那个词})
]

越接近人类答案,loss 越小。

这个过程是自动的,你们组的代码已经写好了。


🔵 Step 4:反向传播 backward(计算梯度)

PyTorch 会自动:

  • 根据 loss 算出所有参数的梯度
  • 梯度就是 “朝哪个方向、更新多大,才能更像人类答案”

这一步你不需要做任何事情,框架会自动执行。


🔵 Step 5:优化器 update 参数(你负责的部分)

这一步就是:

optimizer 用梯度更新模型,让下一次预测更准确。

默认是 Adam,
你做的是:换成各种优化器,比较效果。

包括:

  • SGD
  • SGD + momentum
  • Nesterov
  • Adam
  • AdamW

你的工作是整个流程中 唯一的需要你理解数学的环节


🔵 Step 6:多轮迭代(Epoch/Steps)直到 loss 降下来

整个过程重复很多次:

  1. Forward
  2. 计算 loss
  3. Backward
  4. Optimizer 更新参数(你做的部分)

直到:

  • 训练 loss ↓
  • 测试 loss ↓
  • 模型变得更会聊天

这就是 SFT 完整流程。


⭐ 第三部分:现在我告诉你——你做的优化器部分在整个流程里是什么角色?

我做的部分正好是 Step 5

研究“用什么方式更新模型参数”会影响:
① 收敛速度
② 模型效果
③ GPU 显存占用

并且你画出了图(SGD vs Adam)并解释了原因。


⭐ 第四部分:我给你一段你能记住、能复述的解释

请记住:


🎤 【别人问:SFT 是什么?流程是怎样的?】

你说:

“SFT 就是用带答案的对话数据,让 GPT-2 学习怎么模仿人类回答。过程就是:
先把 prompt–answer token 化 → 输入模型 → 模型预测下一个词 → 用交叉熵算损失 → 反向传播 → 用优化器更新参数 → 重复很多次,模型就学会说话了。”

这段你以后永远可以用。


🎤 【别人问:那你做了哪部分?】

你说:

“我负责的是训练过程里的优化器部分。我把不同优化器(SGD、Momentum、Nesterov、Adam、AdamW)接入训练流程,比较它们在 GPT-2 微调中的收敛速度和 GPU 显存占用,最后发现 Adam 系列收敛最快但显存大,而 SGD 系比较省显存但慢。”

这句话精准、真实、你自己能理解。


⭐ 第五部分:为什么这个工作听起来专业?

因为在 LLM 训练中:

  • 优化器是核心
  • 显存差异的重要性是工程痛点
  • 训练曲线是评价能力的标准手段

所以你做的虽然是一个“小模块”,但在整个 LLM 微调流程中非常关键,而且很专业。

你讲出去别人不会觉得你只做了很少,而是觉得你懂:

  • 训练逻辑
  • 参数更新机制
  • 显存瓶颈
  • 收敛行为

这不就是 LLM 训练最关键的内容吗?


⭐ 最后:我帮你总结一段“30秒讲清楚 SFT + 你的贡献”的口语版

背这个就完事:


🎤 “我们的项目是对 GPT-2 做 SFT 微调,大致流程是:把 prompt 和 answer token 化送进模型,用交叉熵算损失,用反向传播算梯度,然后用优化器更新参数,让模型越来越接近人类答案。我主要负责优化器部分:我把 SGD、Momentum、Nesterov、Adam、AdamW 都接入训练流程,比较了它们在 GPT-2 上的收敛速度和显存占用,结果发现 Adam 系列收敛最快但显存最大,而 SGD 最省显存但训练慢。这让我真正理解了 LLM 微调里优化器对训练动态和 GPU 资源的影响。”


Top comments (0)