大模型微调
大模型微调是连接通用预训练模型与特定应用场景的关键技术。本文深入探讨了全量微调、参数高效微调(PEFT)如LoRA、Adapter、Prefix-tuning,以及指令微调和对齐技术(如RLHF)。这些方法旨在优化大模型在特定任务上的性能,同时降低计算和存储成本,并确保模型行为符合人类意图和安全准则。理解这些微调策略对于开发者有效利用大模型至关重要。
# 2.1 全量微调 (Full Fine-tuning)
浅层理解
全量微调就是把预训练好的大模型所有参数都拿来,用我们自己的数据再训练一遍。
- 原理:全量微调是指在预训练模型的基础上,更新模型的所有参数。它将预训练模型作为一个初始化点,然后使用特定任务的标注数据进行端到端的训练。
- 适用场景:
- 当目标任务与预训练任务差异较大时。
- 当有充足的、高质量的标注数据可用时。
- 追求在特定任务上达到最佳性能时。
- 优点:
- 通常能达到最佳性能,因为模型可以充分利用预训练知识并完全适应新任务。
- 缺点:
- 计算资源需求高:需要大量的计算资源(GPU显存和计算力),因为要更新所有参数。
- 存储需求高:需要存储完整的模型副本。
- 容易过拟合:如果标注数据量不足,模型容易在小数据集上过拟合,泛化能力下降。
- 部署成本高:每个微调后的模型都需要独立部署。
# 2.2 参数高效微调 (Parameter-Efficient Fine-tuning, PEFT)
浅层理解
PEFT 就像给大模型“打补丁”,只修改或添加少量参数,就能让模型适应新任务,省钱又省力。
参数高效微调(PEFT)是一系列方法的总称,旨在通过只更新模型的一小部分参数,或引入少量额外参数进行训练,来大幅降低大模型微调的计算和存储成本,同时保持甚至提升性能。
核心思想:冻结大部分预训练模型的参数,只训练少量新增或修改的参数。
适用场景:
- 标注数据量较小。
- 计算资源有限。
- 需要快速迭代或部署多个定制化模型。
- 希望减少模型存储和部署成本。
常见方法:
# 2.2.1 LoRA (Low-Rank Adaptation)
- 原理:在Transformer的注意力层中注入低秩矩阵。具体来说,对于预训练权重矩阵 $W_0$,LoRA引入两个较小的矩阵 $A$ 和 $B$,使得 $W_0$ 的更新变为 $W_0 + BA$,其中 $B$ 的维度为 $d \times r$, $A$ 的维度为 $r \times k$,且 $r \ll \min(d, k)$。在微调时,只训练 $A$ 和 $B$,而 $W_0$ 保持冻结。
- 优点:
- 参数量极少:只训练 $A$ 和 $B$ 矩阵,参数量远小于全量微调。
- 显存效率高:训练时只需计算和存储 $A$ 和 $B$ 的梯度。
- 推理高效:推理时 $BA$ 可以与 $W_0$ 合并,不增加推理延迟。
- 模型切换方便:可以轻松切换不同的LoRA适配器,实现多任务部署。
- 应用:广泛应用于各种LLM的微调,如文本生成、代码生成等。
# 2.2.2 Adapter (适配器)
- 原理:在Transformer层的内部(如在多头注意力和前馈网络之间)插入小型神经网络模块(Adapter层)。在微调时,只训练这些Adapter层的参数,而原始Transformer层的参数保持冻结。
- 优点:
- 参数量少:Adapter层的参数量远小于整个模型。
- 模块化:可以为不同任务训练不同的Adapter,方便组合。
- 缺点:推理时会增加额外的计算层,可能引入少量延迟。
# 2.2.3 Prefix-tuning / Prompt-tuning
- 原理:在输入序列前添加可训练的连续型前缀(Prefix)或提示(Prompt)。在微调时,只训练这些前缀/提示的参数,而LLM的参数保持冻结。
- Prefix-tuning:在每一层Transformer的输入中都添加可训练的连续型前缀。
- Prompt-tuning:只在输入层添加一个短的连续型提示。
- 优点:参数量极少,甚至比LoRA更少。
- 缺点:通常需要更大的预训练模型才能达到较好的效果,且对任务的适应性可能不如LoRA和Adapter。
# 2.3 指令微调 (Instruction Tuning)
浅层理解
指令微调就是教大模型“听懂人话”,让它能更好地理解和执行各种指令。
- 原理:通过在各种任务上进行指令格式的训练,使模型更好地理解和遵循人类指令,提高模型的泛化能力和零样本/少样本学习能力。
- 数据格式:将任务描述、输入和期望输出组织成指令形式。例如:“请总结以下文本:[文本内容] -> [总结]”。
- 目标:让模型学会“听懂人话”,执行用户意图,而不是简单地续写文本。这使得模型能够更好地泛化到未见过的任务。
- 重要性:是构建通用型、可控性LLM的关键步骤,如InstructGPT、ChatGPT等都经过了指令微调。
# 2.4 对齐 (Alignment)
浅层理解
对齐就是让大模型的行为和输出更符合人类的价值观、偏好和安全准则,让它“学好不学坏”。
对齐是指确保AI系统(特别是大模型)的行为和输出与人类的意图、价值观、偏好和安全准则保持一致。这是构建负责任AI的关键环节。
核心问题:预训练模型可能生成有害、有偏见或不符合用户期望的内容。对齐旨在解决这些问题。
主要技术:
# 2.4.1 人类反馈强化学习 (Reinforcement Learning from Human Feedback, RLHF)
- 原理:RLHF是目前最主流的对齐技术,它通过引入人类的偏好数据,训练一个奖励模型,然后使用强化学习算法微调LLM,使其生成更高奖励的输出。
- RLHF流程:
- 监督微调 (Supervised Fine-tuning, SFT):首先在高质量的人类演示数据(Prompt-Response对)上微调预训练LLM,使其能够遵循指令并生成有帮助的回答。
- 奖励模型训练 (Reward Model Training, RM):收集人类对LLM多个输出的偏好数据(例如,人类标注员对模型生成的不同回答进行排序),然后训练一个奖励模型来预测人类的偏好分数。
- 强化学习 (Reinforcement Learning):使用训练好的奖励模型作为奖励函数,通过PPO(Proximal Policy Optimization)等强化学习算法微调LLM。LLM的目标是最大化奖励模型给出的分数,从而生成更符合人类偏好的回答。
- 优点:能够有效地将复杂的人类偏好融入到模型训练中,显著提升模型的有用性、无害性和诚实性。
- 应用:ChatGPT、Claude等模型的成功都离不开RLHF。
# 2.4.2 其他对齐方法
- Constitutional AI:Anthropic提出,通过一系列原则和规则来指导模型行为,减少有害输出,减少对人类标注的依赖。
- 偏见缓解:通过数据去偏、模型架构调整、后处理等方法,减少模型输出中的偏见。
- 可控性:通过Prompt工程、约束解码等方法,增强对模型生成内容的控制。
总结
大模型微调是连接通用预训练模型与特定应用场景的关键环节。PEFT技术极大地降低了微调成本,使得大模型能够更广泛地应用。指令微调和对齐技术则确保了模型能够更好地理解人类意图,并生成安全、有益的回答,是构建负责任AI的重要保障。