大模型开发 - 一文搞懂Fine-tuning(大模型微调)
一、Fine-tuning的本质
Fine-tuning(微调):通过特定领域数据对预训练模型进行针对性优化,以提升其在特定任务上的性能。
- 一、微调的定义大模型微调是利用特定领域的数据集对已预训练的大模型进行进一步训练的过程。它旨在优化模型在特定任务上的性能,使模型能够更好地适应和完成特定领域的任务。
- 二、微调的核心原因定制化功能:微调的核心原因是赋予大模型更加定制化的功能。通用大模型虽然强大,但在特定领域可能表现不佳。通过微调,可以使模型更好地适应特定领域的需求和特征。领域知识学习:通过引入特定领域的数据集进行微调,大模型可以学习该领域的知识和语言模式。这有助于模型在特定任务上取得更好的性能。
- 三、微调与超参数优化微调过程中,超参数的调整至关重要。超参数如学习率、批次大小和训练轮次等需要根据特定任务和数据集进行调整,以确保模型在训练过程中的有效性和性能。
Hugging Face:一个提供丰富预训练模型和工具的领先平台,助力自然语言处理(NLP)任务的快速开发与部署。
- 一、公司介绍
- Hugging Face 是一家专注于自然语言处理(NLP)模型训练和部署的平台公司。
- 二、平台特点
- 提供多种 NLP 任务的模型库,如语言翻译、文本生成和问答。
- 提供了在特定数据集上微调预训练模型的工具。
- 提供了访问和利用应用程序中预训练模型的 API。
- 提供了构建定制模型并将其部署到云端的工具。
- 三、使用优势模型多样性:提供大量预训练的 NLP 模型,满足不同任务需求。
二、Fine-tuning的原理
大模型微调的步骤:在选定相关数据集和预训练模型的基础上,通过设置合适的超参数并对模型进行必要的调整,使用特定任务的数据对模型进行训练以优化其性能。
大模型微调包含以下四个核心步骤:
- 数据准备:
- 选择与任务相关的数据集。
- 对数据进行预处理,包括清洗、分词、编码等。
- 选择基础模型:
- 选择一个预训练好的大语言模型,如BERT、GPT-3等。
- 设置微调参数:
- 设定学习率、训练轮次(epochs)、批处理大小(batch size)等超参数。
- 根据需要设定其他超参数,如权重衰减、梯度剪切等。
- 微调流程:
- 加载预训练的模型和权重。
- 根据任务需求对模型进行必要的修改,如更改输出层。
- 选择合适的损失函数和优化器。
- 使用选定的数据集进行微调训练,包括前向传播、损失计算、反向传播和权重更新。
RLHF(Reinforcement Learning from Human Feedback):一种利用人类反馈作为奖励信号来训练强化学习模型的方法,旨在提升模型生成文本等内容的质量,使其更符合人类偏好。
强化学习(Reinforcement Learning)结合人类反馈(Human Feedback)来微调大语言模型(Large Language Models)的一般过程:
- 一、使用监督数据微调语言模型:
- 这一步与传统的fine-tuning类似,即使用标注过的数据来调整预训练模型的参数,使其更好地适应特定任务或领域。
- 二、训练奖励模型:
- 奖励模型用于评估文本序列的质量,它接受一个文本作为输入,并输出一个数值,表示该文本符合人类偏好的程度。
- 训练数据通常由多个语言模型生成的文本序列组成,这些序列经过人工评估或使用其他模型(如ChatGPT)进行打分。
- 这个奖励信号在后续的强化学习训练中至关重要,因为它指导模型生成更符合人类期望的文本。
- 三、训练RL模型:
- 在强化学习框架中,需要定义状态空间、动作空间、策略函数和价值函数。
- 状态空间是输入序列的分布,动作空间是所有可能的token(即词汇表中的词)。
- 价值函数结合了奖励模型的输出和策略约束,用于评估在给定状态下采取特定动作的价值。
- 策略函数就是经过微调的大型语言模型,它根据当前状态选择下一个动作(token),以最大化累计奖励。
三、Fine-tuning的应用
大模型微调的方式:可通过全量调整所有参数以充分适应新任务,或采用参数高效微调技术仅优化部分参数以实现快速且低成本的迁移学习。
一、全量微调(Full Fine-Tuning)
全量微调利用特定任务数据调整预训练模型的所有参数,以充分适应新任务。它依赖大规模计算资源,但能有效利用预训练模型的通用特征。
二、参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)
PEFT旨在通过最小化微调参数数量和计算复杂度,实现高效的迁移学习。它仅更新模型中的部分参数,显著降低训练时间和成本,适用于计算资源有限的情况。PEFT技术包括Prefix Tuning、Prompt Tuning、Adapter Tuning等多种方法,可根据任务和模型需求灵活选择。
- Prefix Tuning
- 方法:在输入前添加可学习的virtual tokens作为Prefix。
- 特点:仅更新Prefix参数,Transformer其他部分固定。
- 优点:减少需要更新的参数数量,提高训练效率。
- Prompt Tuning
- 方法:在输入层加入prompt tokens。
- 特点:简化版的Prefix Tuning,无需MLP调整。
- 优点:随着模型规模增大,效果接近full fine-tuning。
- P-Tuning
- 方法:将Prompt转换为可学习的Embedding层,并用MLP+LSTM处理。
- 特点:解决Prompt构造对下游任务效果的影响。
- 优点:提供更大的灵活性和更强的表示能力。
- P-Tuning v2
- 方法:在多层加入Prompt tokens。
- 特点:增加可学习参数数量,对模型预测产生更直接影响。
- 优点:在不同任务和模型规模上实现更好的性能。
- Adapter Tuning
- 方法:设计Adapter结构并嵌入Transformer中。
- 特点:仅对新增的Adapter结构进行微调,原模型参数固定。
- 优点:保持高效性的同时引入少量额外参数。
- LoRA
- 方法:在矩阵相乘模块中引入低秩矩阵来模拟full fine-tuning。
- 特点:更新语言模型中的关键低秩维度。
- 优点:实现高效的参数调整,降低计算复杂度。
支持微调的模型和数据集:大型语言模型通过微调可以适应不同任务,而中文微调数据集为模型在中文领域的应用提供了关键资源。
一、支持微调的模型:
二、大模型微调开源数据集
1. 对于大型语言模型的微调,数据集是关键。
instruction
字段通常用于描述任务类型或给出指令,input
字段包含模型需要处理的文本数据,而output
字段则包含对应输入的正确答案或期望输出。
2. 常用中文微调数据集可能包括:
- 中文问答数据集(如CMRC 2018、DRCD等),用于训练问答系统。
- 中文情感分析数据集(如ChnSentiCorp、Fudan News等),用于训练情感分类模型。
- 中文文本相似度数据集(如LCQMC、BQ Corpus等),用于训练句子对匹配和相似度判断任务。
- 中文摘要生成数据集(如LCSTS、NLPCC等),用于训练文本摘要生成模型。
- 中文对话数据集(如LCCC、ECDT等),用于训练聊天机器人或对话系统。
文章转自微信公众号@架构师带你玩转AI