实战 LLaMA2-7B 指令微调
- 实战 LLaMA2-7B 指令微调
- 大模型训练技术总结
- 以模型训练阶段分类:Pre-Training vs Fine-Tuning
- 以微调权重比例分类:FFT vs PEFT
- 以模型训练方法分类:Fine-Tuning vs Instruction-Tuning
- 以模型训练机制分类:SFT vs RLHF
- 再谈机器学习训练机制
- 实战 LLaMA2-7B 指令微调
- 指令微调格式:Alpaca Format
- 数据集:Databricks Dolly-15K
- 使用 Huggingface TRL SFTTrainer 训练 LLaMA2-7B 模型
实战 LLaMA2-7B 指令微调
大模型训练技术总结
以模型训练阶段分类:Pre-Training vs Fine-Tuning
Pre-Training 和 Fine-Tuning是深度学习,特别是在自然语言处理(NLP)领域中,训练大模型(如LLaMA、GPT、
Gemini等)的两个关键步骤。这两个步骤共同构成了一种有效的策略,用于利用大量未标记数据学习通用知识,然
后通过少量标记数据将这些知识应用于特定任务。
Pre-Training:
Pre-Training是指在大量未标记数据上训练深度学习模型的过程。这一步骤的目的是使模型能够学习到数据的通用特
征和模式,从而捕获语言的基本语法和语义信息。这一阶段不需要人工标记的数据,因此可以使用互联网上可获得的
大规模文本语料库。
Fine-Tuning:
在Pre-Training之后,模型将进行Fine-Tuning,以适应特定的下游任务。在这个阶段,模型使用较小的、针对特定任
务标记过的数据集进行训练。Fine-Tuning的目的是调整和优化预训练语言模型(Pre-Trained LM)的权重,使其能
够在特定任务上表现良好,如情感分析、文本分类、问答等。通过Fine-Tuning,模型能够利用在Pre-Training阶段学
到的通用知识,并将其应用于具体任务。
Pre-Training和Fine-Tuning是紧密相连的两个步骤,构成了当前NLP领域中一种非常流行且有效的模型训练范式。Pre-Training
阶段让模型学习大量通用的语言知识,为模型提供了一个良好的起点和广泛的语言理解能力。Fine-Tuning阶段则是将这些通用
知识适应并优化到特定的应用或任务上,从而达到更好的性能。这种结合使用Pre-Training和Fine-Tuning的方法,使得深度学习
模型能够在有限的标记数据情况下也能实现出色的任务性能,同时也提高了模型训练的效率
以微调权重比例分类:FFT vs PEFT
FFT 和 PEFT都是调整预训练语言模型以适应特定任务的技术。它们的主要区别在于调整模型参数的范围和方式。
Full Fine-Tuning (FFT):
在Full Fine-Tuning中,整个预训练模型的所有参数都会在下游任务的数据上进行调整。这意味着模型的每一层和每
个权重都会根据特定任务的训练数据进行更新,以最小化任务特定的损失函数。FFT通常能够实现很好的性能,因为
它允许模型在整个架构中学习任务相关的调整。然而,这种方法的缺点是计算成本高,尤其是对于大模型,同时也增
加了过拟合的风险,特别是在标注数据有限的情况下。
Parameter-Efficient Fine-Tuning (PEFT):
相比之下,Parameter-Efficient Fine-Tuning专注于只更新模型的一小部分参数,而保持大部分预训练参数固定不变。
这种方法的目的是在保持预训练模型大部分知识不变的同时,通过调整一小部分参数来适应特定任务。 PEFT的实现
方法有多种,包括但不限于:
• Adapter层:在模型的特定层中插入小型的可训练模块,仅训练这些模块的参数。
• Prompt Tuning:调整输入到模型中的一小部分“提示”token的嵌入,而不改变模型本身的权重。
• 低秩逼近(LoRA):对模型参数进行因式分解,并只训练分解后的较小矩阵。
PEFT主流技术
以模型训练方法分类:Fine-Tuning vs Instruction-Tuning
Fine-Tuning和Instruction-Tuning都旨在改善预训练语言模型(如GPT-3等)的性能,但关注点和方法有所不同。
Fine-Tuning:
在Fine-Tuning过程中,模型在一个大型的数据集上进行预训练,学习语言的通用表示。然后,在特定任务的较小数
据集上继续训练(即Fine-Tuning),调整预训练的参数以优化任务特定(Task-specific)的性能。从而提高任务的
准确率和效率。
Instruction-Tuning:
Instruction-Tuning 目标是提高模型对自然语言指令的响应能力,创建一个更加通用的模型。通过在广泛的任务类型
上使用指令性示例来训练模型,使模型能够理解和执行各种各样的指令。与Fine-Tuning针对单一任务不同,这种方
法希望模型不仅能理解任务的指令,还能根据这些指令生成适当的响应格式或输出。
以模型训练机制分类:SFT vs RLHF
Supervised Fine-Tuning 和RLHF 虽然有共同的目标——即利用额外的训练步骤来改善模型在特定任务上的表现,但
它们在实现这一目标的方法上存在显著差异。SFT 依赖于预定义的、清晰标注的训练数据,适用于任务输出相对明确
的情况;而RLHF则通过从人类反馈中学习,更适合输出标准不易量化或多样化的生成式任务。
Supervised Fine-Tuning:
在Supervised Fine-Tuning中,预训练模型在具有明确标签的数据集上进行额外训练,以适应特定的下游任务。这个
过程依赖于传统的监督学习方法,其中模型通过最小化预测输出和实际标签之间的差异(例如,使用交叉熵损失函
数)来进行训练。Supervised Fine-Tuning通常用于各种NLP任务,如文本分类、情感分析、命名实体识别等,它能
够使预训练模型利用在特定任务上的标注数据进行进一步优化。
RLHF (Reinforcement Learning from Human Feedback):
与Supervised Fine-Tuning不同,RLHF使用强化学习方法来训练预训练模型,使其行为更符合人类的偏好或期望。
在这个过程中,模型的输出(或行为)会被人类评估员评价,而这些评价反馈作为奖励信号,指导模型学习。RLHF
特别适用于那些难以明确定义正确输出的任务,如生成式任务(例如,生成自然语言文本、艺术创作等)。RLHF的
目的是使模型生成的输出更加符合人类的质量标准和偏好。
ChatGPT 和 LLaMA2-chat 等模型结合了两者优势,以充分利用监督学习的明确性和强化学习的灵活性。
再谈机器学习训练机制
实战 LLaMA2-7B 指令微调
指令微调格式:Alpaca Format
数据集:Databricks Dolly-15K
databricks-dolly-15k是一个开源数据集,数千名 Databricks 员工按照 InstructGPT论文中概述的类别生成的Instruction 记录。这些行为类别包括头脑风暴、分类、封闭型问答、生成、信息提取、开放型问答和
摘要。
该数据集许可证为 Creative Commons Attribution-ShareAlike 3.0 Unported 。可用于任何目的,无论是学术还是商业。