
再聊大模型的微调训练——指令监督微调SFT & 强化学习RL
大模型很多技术干货,都可以共享给你们,如果你肯花时间沉下心去学习,它们一定能帮到你!
概述
AI大模型的训练有很多方式,传统的是指令监督微调(SFT),SFT是在预训练模型基础上,使用带标注的(指令,输入,输出)数据,通过监督学习调整模型参数,使其适配特定任务(如文本分类、问答等)。而对应的形式有全参数微调、部分参数微调(LoRA,即PEFT技术)等形式。
传统的大语言模型训练通常依赖于监督学习方法,特别是在微调阶段。监督学习要求每个输入都有一个明确的"正确答案"作为标签。然而,在许多复杂任务中,如推理、创意写作或开放式对话,很难定义什么是"最优"回答。监督学习主要面临以下局限性:
-
标注数据获取困难: 高质量的人工标注数据需要大量专业知识和人力资源,特别是对于复杂推理任务,获取大规模标注数据极其昂贵且耗时。
-
优化目标与实际目标不一致: 监督学习通常优化预测下一个token的概率,但这与人类期望的更高层次目标(如推理正确性、有用性、无害性)存在差距。
-
无法捕捉多样化的解决方案: 对于许多问题,可能存在多种有效的解决方案或思考路径,而监督学习往往只能学习训练数据中展示的特定路径。
-
难以适应长期规划和探索: 推理任务通常需要模型进行长期规划和探索不同解决思路,而监督学习难以有效引导这种能力的发展。
而随着DeepSeek-R1/DeepSeek-R1-Zero大模型的推出,其RL训练方法也随之普及并应用;其提供了一种不同的学习范式,它通过奖励信号而非直接标签来引导模型学习。这种方法在大语言模型训练中具有以下优势:
-
基于结果的优化: 强化学习可以直接优化我们真正关心的目标,例如推理的正确性,而不是仅仅优化下一个token的预测。
-
自主探索与发现: 模型可以自主探索不同的解决策略,并根据奖励信号来改进其行为,发现人类可能没有预设的解决路径。
-
长期规划能力: 强化学习天然适合优化考虑长期后果的决策,这对于复杂推理任务至关重要。
-
无需大量标注数据: 只需定义适当的奖励函数,模型可以通过与环境交互来不断学习,减少对大规模标注数据的依赖。
DeepSeek-R1-Zero的研究表明,通过纯强化学习,模型可以自主发展出长思维链式思考、自我验证和反思等复杂推理行为,而这些能力在传统监督学习方法中很难有效培养。
在此,基于魔搭社区提供的大模型与多模态大模型微调部署框架ms-swift[1],阐述一下微调训练及其在工程领域的实践。
微调训练
轻量级训练
即部分参数微调训练,也就是参数高效微调(PEFT)——冻结大部分预训练参数,仅仅更新一部分参数使得模型获得更好的下游任务性能;也就是轻量级训练方式。
PEFT技术有多种算法实现,不同的算法对应有不同的训练方式,常见常用的有:LoRA、QLoRA、DoRA、LoRA+、ReFT、RS-LoRA、LLaMAPro、Adapter、GaLore、Q-Galore、LISA、UnSloth、Liger-Kernel等轻量微调方式。
在huggingface的transformers类库中,专门封装了peft类,如下所示:
from peft import IA3Config, get_peft_model peft_config = IA3Config(task_type="SEQ_2_SEQ_LM") model = get_peft_model(model, peft_config)
数据格式
在SFT下的指令数据一般就如下几种格式:
-
alpaca类数据集
-
sharegpt类数据集
结构样式一般如下所示:
alpaca: { "instruction":"", "input":"", "output:"" } sharegpt: [{ "conversation":[ { "system": "You are an AI asssistant." "input": "Hello?", "output": "Hello! How can I help you?" }, { "input": "What's the date today?", "output": "Today is Monday, August 14, 2023." }, { "input": "Thank you!", "output": "You are welcome." } ] }, { "conversation":[ { "system": "You are an AI asssistant." "input": "Hello?", "output": "Hello! How can I help you?" }, { "input": "How's the weather today in Rosso?", "output": "The weather in Rosso on Wednesday, August 16th, is going to be cloudy for most of the day, together with moderate rain around noon." }, { "input": "Thank you!", "output": "You are welcome." } ] }]
SFT
虽然训练的方式不一样,但其逻辑都是指令监督微调(SFT),SFT非常依赖数据的高质量标注,而PEFT中的各种算法(LoRA、P-Tuning等)是在更高效的固定冻结部分模型参数,降低训练过程中对原生模型中大规模参数的依赖与影响。
SFT 采用有监督学习的方法,使用包含指令和对应标准答案的数据集进行训练。这个数据集就像是老师给学生的练习题和答案,模型在训练时会根据输入的指令生成自己的输出,然后将其与数据集中的标准答案进行对比。而在比对环节,其技术原理是依赖神经网络中的损失函数与优化器:
-
损失函数: 一般使用交叉熵损失函数来衡量模型生成的输出与标准答案之间的差异。交叉熵损失能够反映出模型预测的概率分布与真实分布的接近程度,损失值越小,说明模型的输出越接近标准答案。
-
优化算法: 使用优化算法(如 Adam、SGD 等)来调整模型的参数,以最小化损失函数。在每一轮训练中,优化器会根据损失函数的梯度信息,对模型的权重进行更新,使得模型在后续的训练中能够生成更准确的响应。
从程序的实现来看,最终都是基于huggingface trainer及其相关类(Seq2SeqTrainer、SFTTrainer)的调用上。
RLHF训练
强化学习
强化学习是机器学习的一个分支,它研究如何通过与环境交互并获得反馈来优化智能体的行为。在强化学习框架中,有几个核心概念:
-
智能体(Agent):在大语言模型场景中,智能体是语言模型本身,负责生成文本输出。
-
环境(Environment):智能体交互的外部世界。在大语言模型的情境中,环境通常包括输入提示、奖励计算机制等。
-
状态(State):环境的当前情况。对于大语言模型,这可以是当前的对话历史或问题上下文。
-
动作(Action):智能体可以采取的行为。对于大语言模型,动作通常是生成的下一个token或一段完整回答。
-
奖励(Reward):环境对智能体行为的反馈信号,用于指导学习。在大语言模型强化学习中,奖励可能来自人类反馈、规则评估或其他模型的判断。
-
策略(Policy):智能体的决策函数,决定在给定状态下采取什么动作。在大语言模型中,策略就是模型生成文本的概率分布。
强化学习的基本工作流程如下:
-
观察状态:智能体观察当前状态(如输入提示或问题)。
-
采取动作:根据当前策略,智能体选择并执行一个动作(生成回答)。
-
获取奖励:环境评估智能体的动作并给予奖励(如正确性评分)。
-
更新策略:智能体根据获得的奖励调整其策略,提高未来获得高奖励的可能性。
-
重复过程:循环上述步骤,不断改进策略。
在大语言模型的强化学习训练中,上述抽象概念具体表现为:
-
状态:通常是用户提问或任务描述。
-
动作:模型生成的回答或推理过程。
-
奖励:可以基于多种因素,如:
-
回答的正确性(对于数学或编程问题)
-
回答的有用性(通过人类或模型评判)
-
回答的无害性(符合安全对齐目标)
-
格式符合性(如遵循特定输出格式)
-
策略:就是大语言模型本身,它决定了给定输入后生成文本的概率分布。
数据格式
`CoT: { "Question": "", "Complex_CoT": "", "Response": "" } { "query": "", "response": "<think>...</think>" } DPO、PPO: { "prompt (Value)": "", "rejected (Value)": "", "chosen (Value)": "" }`
RLHF
RLHF:基于人类反馈的强化学习,ms-swift上称为:人类反馈对齐训练方法。一般比较常用的方法是:DPO、GRPO、RM、PPO、KTO、CPO、SimPO、ORPO等人类对齐训练方法。
最初是OpenAI发布的InstructGPT语言模型,背后的技术就是使用了RLHF,而其中的RL算法是PPO算法;而后基于复杂性等原因,衍生出了DPO算法。这类算法也是RL在AI大模型领域的比较早期的应用集成。
而DeepSeek的R1/R1-Zero模型使用的GRPO RL算法,更是将RL算法训练更快的推到了AI大模型领域。
这些不同的RL算法本质上就是RL in AI的变体算法。
小结
从业务角度来说,训练数据的数据结构,并不是很主要的;数据结构的一个场景是区分单轮对话与多轮对话,即如何更好根据业务场景组织多轮对话的业务数据用于训练。对于训练数据来说,主要是数据的内容质量,再其次就是按单/多轮对话组织数据,其组织形式也决定了Loss计算的效率。
从技术角度来说,训练方法类型的算法也是关键的;总的来说是两类:SFT、RL。前者主要依赖于标注数据,后者则是基于奖励/反馈机制。从本质上来说,这就是微调训练算法类型的差异性。
从模型参数角度来说,要么是全参数要么是部分参数;部分参数的训练方式一般是LoRA;当然还有其量化版本。这也是ms-swift官方放出来的训练能力图的逻辑:
第一行表示训练方式,即对模型参数的处理;第一列表示训练类型方法,采取的是预训练-SFT、RLHF等训练类型。
零基础如何学习AI大模型
领取方式在文末
为什么要学习大模型?
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
大模型典型应用场景
①AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
②AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
③AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
大模型就业发展前景
根据脉脉发布的《2024年度人才迁徙报告》显示,AI相关岗位的需求在2024年就已经十分强劲,TOP20热招岗位中,有5个与AI相关。字节、阿里等多个头部公司AI人才紧缺,包括算法工程师、人工智能工程师、推荐算法、大模型算法以及自然语言处理等。
除了上述技术岗外,AI也催生除了一系列高薪非技术类岗位,如AI产品经理、产品主管等,平均月薪也达到了5-6万左右。
AI正在改变各行各业,行动力强的人,早已吃到了第一波红利。
最后
大模型很多技术干货,都可以共享给你们,如果你肯花时间沉下心去学习,它们一定能帮到你!
大模型全套学习资料领取
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段
二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。
四、LLM面试题
五、AI产品经理面试题
六、deepseek部署包+技巧大全
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
更多推荐
所有评论(0)