1.4 训练方法
本书所涉及的大语言模型大多是预训练模型。在相关语境中,训练(Training)和微调(Fine-Tuning)这两个概念的界限比较模糊,提及“训练”时往往指的是“微调”。但预训练(Pre-training)和微调则完全不同,预训练是指训练出一个已经掌握了各种语言特征规律及人类知识的模型,并且用参数来固定这些已学到的知识。而微调是指调整大语言模型的参数以适应特定任务的过程,是通过在与任务相关的数据集上训练模型来完成的。微调的基本原理是在训练开始时对预训练模型中的权重进行初始化,然后在训练过程中逐步调整这些权重,以适应新的下游任务,如对话、翻译、文本分类、写摘要等。举例来说,ChatGPT使用的模型是在基础模型davinc上微调形成的,GLM基础模型在微调后生成对话模型ChatGLM。
微调过程虽然复杂,但相对于训练一个全新模型而言,它只涉及对参数进行细微调整。此外,微调所使用的数据集通常相对较小。目前主流的微调方法有FFT、RLHF、P-Tuning和LoRA等。与训练一个预训练模型需要海量的语料不同,微调的数据量较小,一般由52000个任务数据组成。
1.4.1 FFT
FFT(Full Fine Tuning,全量微调)是一种对整个预训练模型的所有参数进行微调的方法,预训练模型的所有层和参数都可能会被更新和优化,以适应新加入的语料。这种微调方法通常适用于微调任务和预训练模型之间存在很大差异的情况。比如,预训练模型是一个基础模型,只包含常规的知识和语法结构,而微调的目标是让其能用于金融服务。全微调需要较多的算力资源和时间,但可以获得比较好的效果。
1.4.2 RLHF
RLHF是Reinforcement Learning from Human Feedback(人类反馈强化学习)的缩写,是指基于人类反馈对大语言模型进行强化学习,让大模型生成的结果更符合人类的期望。RLHF是ChatGPT模型训练的手段之一。RLHF训练流程分为以下三步。
❍ 监督微调(Supervised Fine-Tuning,SFT):使用人工精选的问题与答案,对预训练的语言模型进行微调,形成多个预选模型。
❍ 奖励模型微调(Reward Model Fine-Tuning,RW):用多个模型(初始模型、微调模型)给出问题的多个回答,然后人工对这些问答按一些标准(可读性、无害、正确性)进行排序,训练一个奖励模型/偏好模型来进行打分。
❍ RLHF训练:利用近端策略优化(Proximal Policy Optimization,PPO)算法,根据RW模型的奖励反馈进一步微调S F T模型。
实践RLHF微调并不需要很高的算力,可以在消费级的推理卡上进行,Deepspeed-chat[7]给出了完整的RLHF三阶段微调方法和示例。
1.4.3 P-Tuning
P-Tuning是ChatGLM模型专用的微调方式,是在微调方法的基础上进行改进而形成的一种参数高效的微调方法。P-Tuning过程中只有少量参数参与微调,训练计算复杂度相对较小,其原理是将人工提示词模板转换成可学习的连续向量,通过学习下游任务来优化这些向量,从而自动生成效果良好的自动提示模板。P-Tuning v2对该方法进行了适当优化,使其在各种规模的模型中普遍有效。优化后的提示调整策略在中小型模型和序列标注任务上实现了与传统微调相当的性能。
1.4.4 LoRA
LoRA[8](Low-Rank Adaptation of large language model,大语言模型的低秩适配)的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的基础上向模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数的数量较少,这样不仅微调的成本显著下降,还能获得和全模型参数参与微调类似的效果。在实践过程中,经过LoRA微调的模型,对新加入的语料知识进行学习的效果显著,是一种低算力、低成本但效果较好的微调方法。