概述

AI大模型的训练有很多方式,传统的是指令监督微调(SFT),SFT是在预训练模型基础上,使用带标注的(指令,输入,输出)数据,通过监督学习调整模型参数,使其适配特定任务(如文本分类、问答等)。而对应的形式有全参数微调、部分参数微调(LoRA,即PEFT技术)等形式。

传统的大语言模型训练通常依赖于监督学习方法,特别是在微调阶段。监督学习要求每个输入都有一个明确的"正确答案"作为标签。然而,在许多复杂任务中,如推理、创意写作或开放式对话,很难定义什么是"最优"回答。监督学习主要面临以下局限性:

  1. **标注数据获取困难:**高质量的人工标注数据需要大量专业知识和人力资源,特别是对于复杂推理任务,获取大规模标注数据极其昂贵且耗时。

  2. **优化目标与实际目标不一致:**监督学习通常优化预测下一个token的概率,但这与人类期望的更高层次目标(如推理正确性、有用性、无害性)存在差距。

  3. **无法捕捉多样化的解决方案:**对于许多问题,可能存在多种有效的解决方案或思考路径,而监督学习往往只能学习训练数据中展示的特定路径。

  4. **难以适应长期规划和探索:**推理任务通常需要模型进行长期规划和探索不同解决思路,而监督学习难以有效引导这种能力的发展。

而随着DeepSeek-R1/DeepSeek-R1-Zero大模型的推出,其RL训练方法也随之普及并应用;其提供了一种不同的学习范式,它通过奖励信号而非直接标签来引导模型学习。这种方法在大语言模型训练中具有以下优势:

  1. **基于结果的优化:**强化学习可以直接优化我们真正关心的目标,例如推理的正确性,而不是仅仅优化下一个token的预测。

  2. **自主探索与发现:**模型可以自主探索不同的解决策略,并根据奖励信号来改进其行为,发现人类可能没有预设的解决路径。

  3. **长期规划能力:**强化学习天然适合优化考虑长期后果的决策,这对于复杂推理任务至关重要。

  4. **无需大量标注数据:**只需定义适当的奖励函数,模型可以通过与环境交互来不断学习,减少对大规模标注数据的依赖。

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):智能体的决策函数,决定在给定状态下采取什么动作。在大语言模型中,策略就是模型生成文本的概率分布。

强化学习的基本工作流程如下:

  1. 观察状态:智能体观察当前状态(如输入提示或问题)。

  2. 采取动作:根据当前策略,智能体选择并执行一个动作(生成回答)。

  3. 获取奖励:环境评估智能体的动作并给予奖励(如正确性评分)。

  4. 更新策略:智能体根据获得的奖励调整其策略,提高未来获得高奖励的可能性。

  5. 重复过程:循环上述步骤,不断改进策略。

在大语言模型的强化学习训练中,上述抽象概念具体表现为:

  • 状态:通常是用户提问或任务描述。

  • 动作:模型生成的回答或推理过程。

  • 奖励:可以基于多种因素,如:

  • 回答的正确性(对于数学或编程问题)

  • 回答的有用性(通过人类或模型评判)

  • 回答的无害性(符合安全对齐目标)

  • 格式符合性(如遵循特定输出格式)

  • 策略:就是大语言模型本身,它决定了给定输入后生成文本的概率分布。

数据格式
`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大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐