指令微调是什么:把会续写的模型调成会办事的助手
讲清基础模型和指令微调模型的差别,以及指令样本、SFT、RLHF 如何改变模型的回答方式。
相关工具
指令微调解决的是“听不听任务”的问题
基础语言模型已经会写字、接话、补全句子,也能从上下文里推断不少信息。但它默认学到的目标是续写文本,不是完成任务。LLM 全教程总结里提到,Base LLM 是基于大量文本训练出来的下一个词预测模型。给它一句“从前,有一只独角兽”,它可能顺着故事往下写;问它“法国的首都是什么”,它也可能接着生成一串和法国有关的问答列表,而不是直接说“巴黎”。
指令微调要解决的就是这个差别。它让模型明白,用户输入的文字很多时候不是文章开头,而是一个要求:请解释、请总结、请翻译、请按格式列出、请判断是否正确。模型不能只顺着语料习惯续写,而要识别任务意图,再给出符合要求的回答。
所以,指令微调不是给模型换一个外壳,也不是简单加几句系统提示。它是在训练阶段用大量“指令和正确回复”的例子调整模型行为,让模型从“语言续写器”更接近“任务助手”。这也是现代聊天模型和早期基础模型最直观的区别。

基础模型容易顺着文本续写,指令微调模型更倾向于识别任务并直接回答。差别不在问题本身,而在模型训练目标。
训练样本通常是一组指令和参考回答
指令微调的核心材料,是一条条任务样本。每条样本通常包含用户指令和参考回答。这里提到,指令微调 LLM 通常基于预训练语言模型,再进一步训练和微调,输入是指令,输出是这些指令的正确回复。这个结构看起来简单,却会改变模型理解输入的方式。
比如,指令可以是“把下面这段话总结成三点”,参考回答就应该是三条摘要;指令可以是“把下面内容翻译成英文”,参考回答就应该是英文译文;指令可以是“从下面文本中提取姓名、时间和地点”,参考回答就应该是结构化信息。模型在反复训练中会学到:不同动词对应不同任务,不同约束对应不同输出形态。
这也是为什么指令样本不能只堆数量。样本要覆盖常见任务,也要覆盖任务的边界。一个只见过“请总结”的模型,遇到“只保留结论,不要解释”可能会不稳定;一个只见过长答案的模型,遇到“用一句话回答”可能还会啰嗦。好的指令微调数据会让模型见到多种任务、多种表达、多种输出格式。

指令和参考回答成对出现,经过有监督训练后,模型会把总结、翻译、提取、格式化回答等输入理解成不同任务。
SFT 是指令微调最常见的训练方式
SFT,也就是有监督微调,是指令微调里最常见的一步。AI 大模型面试题资料里写到,有监督微调用有监督数据,在基础语言模型上继续训练,从而得到 SFT 模型。经过训练后,SFT 模型具备初步的指令理解能力和上下文理解能力,能完成开放领域问题、阅读理解、翻译、生成代码等任务。
这里的“初步”值得多看一眼。SFT 不是把模型一次性训练成完美助手,而是先让它从基础模型变成能完成任务的模型。它开始知道用户是在让它解释、改写、分类、翻译或编写程序,也开始学会根据上下文组织答案。但答案是否足够稳、是否符合人的偏好、是否安全,通常还需要后续对齐。
SFT 的计算量通常比预训练小很多,因为它使用的样本规模远小于预训练语料。资料里也提到,有监督微调阶段通常不需要消耗像预训练那样巨大的计算资源。不过,数据选择对 SFT 效果影响很大。少量高质量样本,往往比大量粗糙样本更有价值。
指令微调和 Prompt 不是一回事
很多人会把指令微调和 Prompt 混在一起,因为它们都在影响模型怎样回答。但两者发生的位置不同。Prompt 是使用时写给模型看的任务说明,当前这次对话有效;指令微调是在训练阶段改变模型参数,让模型以后更习惯按某类任务方式回答。
举个实际场景。如果你只是偶尔让模型把一段文字总结成三点,写清楚 Prompt 就可以。可如果一个产品每天都有大量总结、改写、客服问答,而且希望回答风格、结构、边界长期稳定,只靠每次写提示就容易不稳。这时才会考虑用指令微调把这种行为沉到模型里。
当然,指令微调之后仍然需要 Prompt。模型已经更懂任务,但你仍要告诉它当前任务是什么、材料在哪里、输出格式是什么。比较好的理解是:指令微调让模型更容易听懂任务,Prompt 告诉模型这次具体要做哪件事。前者是长期训练,后者是当次说明。
为什么还需要 RLHF
指令微调能让模型学会按任务回答,但不一定能让它总是回答得让人满意。LLM 全教程总结里提到,为了提高语言模型输出质量,常见做法是让人类对多个输出进行评级,例如是否有用、是否真实、是否无害。然后继续调整语言模型,提高生成高评级输出的概率,这通常会用到 RLHF。
这说明 SFT 和 RLHF 的侧重点不同。SFT 更像教标准做法:看到这个指令,应该怎么答。RLHF 更像教偏好判断:多个回答里,哪个更清楚,哪个更可靠,哪个更少危险,哪个更符合人的真实需求。很多回答都能完成任务,但质量差别很大,偏好对齐就是处理这些细微差别。
AI 大模型面试题资料也提到,RLHF 流程大致包括模型生成答案、使用人类反馈或模型评估映射成奖励,再通过 PPO 等方法训练模型。普通读者不用先钻进算法细节,先记住关系就够了:指令微调让模型会听任务,RLHF 让模型更愿意给出人类认可的回答。

指令微调模型先生成多个回答,人类按有用、真实、无害等标准评分,奖励模型再帮助后续 RLHF 调整回答倾向。
指令微调也会受数据边界限制
指令微调依赖样本。样本覆盖得好,模型就更容易在相似任务上稳定发挥;样本偏窄,模型就可能只会某几类固定回答。比如训练样本大多是短问短答,模型面对长文档整理时可能抓不住结构;样本大多是中文,模型在跨语言任务上可能变弱;样本里总是给详细解释,模型被要求只输出结论时也可能不够干脆。
资料里强调微调数据要干净、有代表性,prompt 要多样,多任务训练要注意数据量平衡。这些要求放到指令微调里尤其重要。因为模型学的不只是知识点,还在学习怎样理解任务、怎样组织语气、怎样遵守格式。样本一旦混乱,模型会把混乱也当成可学习的模式。
所以,指令微调不是“多喂一点指令”这么简单。更好的做法是先明确你希望模型稳定完成哪些任务,再围绕这些任务准备示例、反例、边界条件和评测集。训练之前不想清楚,训练之后就很难判断模型到底是变好了,还是只是在样本上看起来更像。
普通使用者需要怎样理解它
如果你只是使用 ChatGPT、DeepSeek、通义千问或其他聊天模型,不需要掌握训练代码,也能从指令微调里学到一件很实际的事:模型更擅长处理清楚的任务。指令微调让模型具备了理解任务的基础,但它仍然要靠当前输入来判断你到底想要什么。
这也是为什么好 Prompt 仍然重要。你给出的任务越明确,模型越容易调动训练中学到的模式。比如“写一段介绍”很宽泛;“用面向新手的语气,用三段解释什么是 Token,每段不超过 120 字”就清楚得多。指令微调模型会更愿意遵循这类约束,因为它训练时见过大量类似任务。
换句话说,指令微调不是让模型替用户读心,而是让模型更擅长执行清楚的指令。你把任务说清,它就更容易按你要的方式工作;你只给一个模糊方向,它仍然会根据概率和上下文猜。理解这一点,日常使用模型会稳很多。
可以这样记住指令微调
预训练让模型学会语言规律,指令微调让模型学会把人的输入当任务。基础模型看到文字,习惯继续往下写;指令微调模型看到文字,会尝试判断这是提问、总结、翻译、改写、抽取,还是格式化输出。
SFT 是指令微调的常见做法,用指令和参考回答训练模型,让它先具备任务完成能力。RLHF 或类似偏好对齐方法,则继续把回答往有用、真实、无害的方向调。它们连起来,才形成今天常见的助手式大语言模型。
如果一句话概括:指令微调不是让模型知道更多,而是让模型更会按要求使用已有能力。这个概念搞清楚,再看 Prompt 工程、RLHF、DPO、RAG 和长期记忆,就会更容易区分它们各自在解决什么问题。
常见问题
指令微调和普通微调有什么区别?
普通微调可以针对很多目标,指令微调更强调用指令和参考回答训练模型,让它学会把用户输入当任务处理,并生成符合要求的回复。
指令微调之后还需要写 Prompt 吗?
需要。指令微调让模型更容易理解任务,Prompt 仍然负责说明当前这次具体要做什么、依据什么资料、按什么格式输出。
为什么 SFT 后还要 RLHF?
SFT 让模型先学会完成任务,RLHF 进一步根据人类偏好调整回答质量,比如更有用、更真实、更安全。两者目标不同,常常是连续关系。