Datawhale25年9月组队学习:llm-preview+Task4:微调大模型
1.有监督微调(SFT)
目前我们所使用的 LLM一般经过了预训练、有监督微调、人类反馈强化学习三个步骤的训练。预训练是 LLM 强大能力的根本来源,事实上,LLM所覆盖的海量知识基本都是源于预训练语料。但是,预训练赋予了 LLM 能力,却还需要第二步将其激发出来。经过预训练的LLM好像一个博览群书但又不求甚解的书生,对什么样的偏怪问题,都可以流畅地接出下文,但他偏偏又不知道问题本身的含义,只会“死板背书”。因此,我们还需要第二步来教这个博览群书的学生如何去使用它的知识,也就是 SFT(Supervised Fine-Tuning,有监督微调)。所谓有监督微调,其实就是将输入和输出同时给模型,让他根据输出不断去拟合从输入到输出的逻辑,类似于将问题和答案同时给模型,让模型基于答案学习解决问题的过程。在传统 NLP 时代,我们一般会针对每一个任务对模型进行微调。例如,一个经典的 NLP 任务可能是情感分类,也就是判断一句输入文本是积极情绪还是消极情绪,那么就会构造很多输入文本和其情感判断的数据,让模型去学会如何判断输入文本的情感。
而面对能力强大的LLM,我们往往不再是在指定下游任务上进行微调,而是选择训练模型的“通用指令遵循能力”,也就是一般通过指令微调的方式来进行 SFT。所谓指令微调,即我们训练的输入是各种类型的用户指令,而需要模型拟合的输出则是我们希望模型在收到该指令后做出的回复。例如,我们的一条训练样本可以是:
**input:**告诉我今天的天气预报?
**output:**根据天气预报,今天天气是晴转多云,最高温度26摄氏度,最低温度9摄氏度,昼夜温差大,请注意保暖哦
也就是说,SFT 的主要目标是让模型从多种类型、多种风格的指令中获得泛化的指令遵循能力,也就是能够理解并回复用户的指令。因此,我们使用指令数据对模型进行 SFT 时,需要告知模型用户的指令和模型遵循这个指令所应该的输出。一般 SFT 所使用的指令数据集包括以下三个键:
{
“instruction”:“即输入的用户指令”,
“input”:“执行该指令可能需要的补充输入,没有则置空”,
“output”:“即模型应该给出的回复”
}
2.课后作业
请大家选择一个 NLP 经典任务(例如情感分类、命名实体识别等),收集该任务的经典训练数据对 Qwen3-4B 进行微调,并评估微调后模型在该任务上的效果
未完待续…