微调 LLM 和 AI 模型

大语言模型 (LLM) 是一种强大的工具,可以帮助完成许多不同的任务,例如撰写电子邮件和回答复杂问题等。但有时,这些模型并不能完全理解您需要它们为您的特定项目做些什么。这时候就要用到微调了。这就像教一个聪明的学生学习特定工作所需的专门技能。

使用 Google AI Studio 对 Gemini 进行微调

什么是微调?

微调是指使用任务特有的数据集进一步训练经过预训练的大语言模型(迁移学习过程)。可以这样理解:预训练模型已经学习了很多一般信息,而微调有助于使它专精于特定领域。

选择微调还是 RAG

微调和检索增强生成 (RAG) 是针对特定用途调整 LLM 的两种不同方法。选择正确的方法取决于任务类型、是否有足够的数据以及想要实现的目标等因素。

技术


主要区别


优势

挑战

微调

更改模型的参数。

准确率更高,更具体,幻觉更少,可定制互动,经济高效,偏见更少。

存在“灾难性遗忘”风险,资源成本较高,对数据的要求更高,可能发生“过拟合”。

RAG


利用外部知识增强提示。

动态知识集成,上下文相关性,多功能性,对广泛训练的需求较少。

准确率有限(例如,RAG 只能参考它有权访问的数据,不根据训练进行推理),RAG 系统的维护较复杂,可能产生幻觉。

技术


主要区别


优势

挑战

微调

更改模型的参数。

准确率更高,更具体,幻觉更少,可定制互动,经济高效,偏见更少。

存在“灾难性遗忘”风险,资源成本较高,对数据的要求更高,可能发生“过拟合”。

RAG


利用外部知识增强提示。

动态知识集成,上下文相关性,多功能性,对广泛训练的需求较少。

准确率有限(例如,RAG 只能参考它有权访问的数据,不根据训练进行推理),RAG 系统的维护较复杂,可能产生幻觉。

当您希望 LLM 实现以下目标时,应考虑使用微调:

  • 理解特定语言或术语:如果您的项目使用大量行业术语,微调可以帮助模型学习并正确使用这些语言
  • 提高特定任务的准确率:如果您需要模型执行特定任务,例如对顾客评价进行分类或生成产品说明,微调可以显著提高模型的性能。
  • 匹配特定风格或语气:如果您希望模型生成符合特定品牌声音或写作风格的文本,微调可以帮助您实现这一目标
  • 处理有限的数据:当数据有限时,微调比从头训练模型更高效,因为它利用了预训练模型已经掌握的知识
  • 降低成本和延迟:对于高用量应用场景,微调较小的模型比为每个请求使用较大的通用模型更经济高效
  • 处理边缘情况:微调可以提高模型处理边缘情况和复杂提示的能力,这些情况和提示仅通过提示工程很难解决

微调的工作原理:分步指南

微调以经过预训练的大语言模型为基础。这些预训练模型已经从海量数据集中学习了大量通用知识。在微调过程中,模型会接触到较小的、任务特有的数据集,并且模型的内部参数(可以将它们视为控制模型知识的数百万个微小旋钮)会进行调整,以更好地匹配新数据集中的样本。这种“再训练”过程会平稳地更新模型的内部连接,使其成为新主题的专家。我们来将微调过程分解为几个实际步骤:

第 1 步:准备数据

在开始微调之前,准备数据至关重要。数据的质量和结构直接影响微调模型的性能。此阶段涉及收集、清理、格式化数据,并将数据拆分为适当的训练集、验证集和测试集。

  • 收集数据:收集用于微调模型的数据;这些数据应与您希望模型擅长的特定任务相关
  • 清理和格式化:清理数据,删除错误、不一致和无关信息;确保数据采用模型可以理解的格式
  • 拆分数据:将数据分为三组:1.) 训练(用于训练模型),2.) 验证(用于监控模型性能和调整设置),3.) 测试(用于评估微调模型的最终性能)

第 2 步:选择方法

在微调时,您可以选择要调整的预训练模型参数量。选择哪种方法取决于数据集的大小、可用的计算资源以及所需的准确率等因素。主要有两种方法:全面微调和参数高效微调 (PEFT)。


全面微调

在全面微调中,模型的所有参数都会在训练期间更新。当针对特定任务的数据集较大且与预训练数据有显著差异时,此方法比较适合。  


PEFT 

参数高效微调提供了一种更智能、更高效的微调方法。PEFT 方法不会重新训练整个模型(速度慢且成本高),而是冻结原始 LLM 并添加新的可训练层。

可以这样理解:您不必重写一本 1,000 页的教科书,只需添加几页便签,写上新的专门信息即可。这显著提高了微调的速度,并减低了成本。常用的 PEFT 方法包括 LoRA(低秩适应)和 QLoRA(量化低秩适应),它们提供了一种更高效的 LLM 微调方法。

第 3 步:训练模型

准备好数据并且选定方法后,就可以训练模型了。在此过程中,模型会从您的数据中学习,并调整其参数,以提高在特定任务中的性能。仔细监控和调整训练设置对于取得理想结果至关重要。

  • 设置超参数:配置学习速率、批次大小和周期数等设置;这些设置有助于控制模型的学习方式
  • 开始训练:将训练数据输入模型中并让模型学习;使用验证集监控模型的性能
  • 根据需要进行调整:如果模型性能不佳,您可以调整超参数或尝试其他微调方法

第 4 步:评估和部署

最后阶段涉及评估微调模型的性能,并部署模型以供实际使用。这需要评估其准确率和效率,然后将其集成到您的应用或系统中。您可能需要持续地监控和再训练,以长时间保持最佳性能。

  • 评估性能:使用测试集评估微调模型的最终性能;查看与任务相关的指标,例如准确率、精确率和召回率
  • 部署模型:如果您对性能感到满意,则可以将模型部署到您的应用或系统中
  • 监控性能:密切关注模型在实际应用中的性能,并根据需要再次训练模型,以维持准确率

微调的类型

根据您的目标和资源,有多种不同的模型微调方法:

类型

说明

使用场景

监督式微调

模型基于包含输入输出对的带标签数据集进行训练。

文本分类、命名实体识别、情感分析。

指令调优

模型基于指令和所需回答的数据集进行训练。

聊天机器人、问答系统、代码生成。

少量样本学习

在提示中向模型提供几个所需任务的示例。

在数据有限的情况下适应新任务。

迁移学习

模型利用在通用数据集上进行预训练所获得的知识。

适应相关任务。

领域特定微调

模型经过调整,适用于特定领域或行业。

法律文件分析、医疗报告生成、财务预测。

多任务学习

模型同时针对多个任务进行训练。

提升在相关任务中的性能。

顺序微调

模型分阶段适应一系列相关任务。

逐步优化处理复杂任务的能力。

类型

说明

使用场景

监督式微调

模型基于包含输入输出对的带标签数据集进行训练。

文本分类、命名实体识别、情感分析。

指令调优

模型基于指令和所需回答的数据集进行训练。

聊天机器人、问答系统、代码生成。

少量样本学习

在提示中向模型提供几个所需任务的示例。

在数据有限的情况下适应新任务。

迁移学习

模型利用在通用数据集上进行预训练所获得的知识。

适应相关任务。

领域特定微调

模型经过调整,适用于特定领域或行业。

法律文件分析、医疗报告生成、财务预测。

多任务学习

模型同时针对多个任务进行训练。

提升在相关任务中的性能。

顺序微调

模型分阶段适应一系列相关任务。

逐步优化处理复杂任务的能力。

微调最佳实践

为了充分利用微调,请遵循以下最佳实践:

  • 数据质量和数量:使用相关、多样且足够大的高质量数据集。在微调中,数据质量至关重要。确保数据准确、一致,且没有错误或偏见。例如,如果数据集的标签有噪声或格式不一致,可能会严重妨碍模型进行有效学习。   
  • 超参数调优:尝试不同的超参数设置,找到适合您任务的最佳配置。   
  • 定期评估:在训练期间定期评估模型的性能,以跟踪其进度并进行必要的调整。   
  • 避免过拟合:使用早停法和正则化等方法来防止模型过拟合训练数据。   
  • 减少偏见:注意数据中可能存在的偏见,并使用相关方法来减少微调模型中的偏见。

微调 LLM 的优势

微调具有以下几项潜在优势:

更高的准确率

它可以显著提高针对特定应用场景的模型输出的准确性和相关性,从而减少 AI 幻觉。  

加快训练速度

与从头开始训练模型相比,微调速度更快,所需的数据更少。

性价比高

与训练新模型相比,它需要的算力和数据更少,因此更具成本效益。

自定义

通过微调,您可以自定义模型的行为,使其满足您的特定需求和目标。

更低的偏差

它能更好地控制模型的行为,从而降低生成有偏见或有争议内容的风险。

更大的上下文窗口

微调可用于扩大 LLM 的上下文窗口,使其能够处理和保留更多信息。

微调时的常见挑战

虽然微调有很多好处,但它也有一些需要注意的问题:

  • 过拟合:模型过于精确地学习训练数据,导致在新数据上的泛化能力不足。您可以使用正则化和数据增强等方法来缓解过拟合。  
  • 数据稀疏:数据不足会限制微调的有效性。考虑使用数据增强,或从其他相关任务进行迁移学习。  
  • 灾难性遗忘:如果模型过于专业化,可能会忘记之前学到的一般性知识。就好比一位极其专业的外科医生会忘记基本的急救知识。您可以使用正则化和回放缓冲区等方法来缓解灾难性遗忘。  
  • 计算资源:对大型模型进行微调可能需要大量计算资源和内存。考虑使用 PEFT、量化和分布式训练等方法来降低需要的算力。  
  • 评估:评估微调后 LLM 的性能可能很复杂,需要谨慎地选择指标和基准。  
  • 多任务学习挑战:针对多任务学习对 LLM 进行微调会带来独特的挑战,例如任务干扰(训练期间不同目标发生冲突)和数据不平衡(数据较多的任务可能会占据主导地位)。

微调应用场景

微调可应用于各种各样的用例:

客户服务

对 LLM 进行微调,使其能够更有效地理解和回答客户咨询,包括在聊天机器人中。  

通过微调,可以提高 LLM 在特定领域中或以特定写作风格生成简洁准确摘要的能力。

内容创建

使用经过微调的模型,以特定风格撰写博文、文章或产品说明。  

数据分析

对模型进行微调,以对社交媒体帖子或顾客评价等文本数据进行分类和分析。

使用经过微调的模型,以特定编程语言或框架生成代码。

机器翻译

Google 翻译使用微调功能,通过让模型适应特定的语言对和领域,来提高机器翻译的质量。

使用 Google Cloud 大规模进行微调

Google Cloud 提供强大的生态系统来支持您的模型微调工作,从统一的机器学习平台到加速复杂计算所需的专用硬件,应有尽有。无论您是自定义基础模型还是优化自己的模型,这些服务都能简化整个工作流。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。