菜单

微调LLM

相关源文件

微调是定制预训练大型语言模型(LLM)以提高其在特定任务或领域性能的高级技术。与修改发送到模型的提示的提示工程或检索增强生成(RAG)不同,微调涉及使用附加数据重新训练模型本身,以创建定制版本,从而为您的特定用例提供更准确和相关的响应。

本文档涵盖了微调的概念、何时以及为何使用它、微调过程以及在生成式 AI 应用中有效实施它的最佳实践。

有关使用标准预训练模型的详细信息,请参阅探索和比较不同的 LLM,有关使用现有数据增强模型输出的信息,请参阅RAG 和向量数据库

理解 LLM 的微调

微调是一种迁移学习形式,您采用预训练的语言模型并在特定于您的领域或任务的精选数据集上对其进行再训练。此过程允许模型学习与您的用例相关的模式和知识,同时保留其在初始训练期间获得的通用语言能力。

资料来源:[18-fine-tuning/README.md]

微调的关键优势

与使用精心设计的提示的通用模型相比,微调具有多项优势

优点描述
提高准确性微调模型能更好地理解特定领域的术语和概念
减少 token 使用您可以使用更简单的提示与微调模型,从而节省 token 成本
一致的输出格式微调模型可以训练以一致地遵循特定的响应格式
提高性能对于专业任务,微调模型通常优于少样本学习
较低的延迟更简单的提示可缩短响应时间

资料来源:[18-fine-tuning/README.md]

何时考虑微调

并非所有应用程序都需要微调。在投入这项技术之前,请考虑提示工程或 RAG 等更简单的 GENG 方法是否足够。下面的决策树可以帮助您确定微调是否适合您的用例。

当出现以下情况时,您应考虑微调:

  1. 您的应用程序需要预训练模型中未充分代表的特定领域知识
  2. 您需要提示本身难以实现的响应中的一致格式
  3. 您希望通过简化提示来减少 token 使用和成本
  4. 您有足够的高质量训练样本
  5. 提示工程和 RAG 等其他技术未能提供令人满意的结果

资料来源:[18-fine-tuning/README.md]

微调过程

微调语言模型涉及几个关键步骤,从准备数据集到部署定制模型。

微调的前提条件

在开始微调过程之前,您需要:

  • 支持微调的预训练模型
  • 格式化为提示-完成对的示例数据集
  • 运行微调过程的平台或环境
  • 处理训练工作负载的计算资源
  • 微调模型的部署策略

资料来源:[18-fine-tuning/README.md]

分步微调工作流

LLM 微调的典型工作流包括以下步骤:

  1. 数据集准备:将示例收集并格式化为提示-完成对
  2. 数据验证:确保数据质量和格式正确
  3. 创建微调作业:配置并启动训练过程
  4. 模型评估:根据基线和指标评估性能
  5. 模型部署:使微调模型可用于推理
  6. 持续改进:监控性能并根据需要更新

资料来源:[18-fine-tuning/README.md]

微调的类型

根据您的需求,存在不同的微调方法

类型描述用例
监督微调使用带标签的示例进行训练最常见的针对特定任务的适应方法
连续微调对已微调的模型进行迭代更新随着新数据的可用性而持续改进
函数调用微调训练以生成结构化的 API 调用输出将 LLM 与外部系统集成

资料来源:[18-fine-tuning/RESOURCES.md]

微调实现示例

该存储库提供了使用不同平台实现微调的几个示例和教程

OpenAI 微调

OpenAI 支持包括 GPT-3.5 Turbo 在内的多个模型的微调。以下是该过程的简化示例:

  1. 将您的数据集准备为 JSONL 文件,其中包含提示-完成对
  2. 将数据集上传到 OpenAI
  3. 创建微调作业
  4. 监视作业直至完成
  5. 使用微调模型进行推理

资料来源:[18-fine-tuning/README.md]

Azure OpenAI 微调

Azure OpenAI 服务提供类似的功能,并具有企业级安全性和合规性功能

  1. 将数据集准备为所需格式
  2. 将数据集上传到 Azure OpenAI
  3. 配置并创建微调作业
  4. 将微调模型部署为端点
  5. 通过 Azure OpenAI API 查询模型

资料来源:[18-fine-tuning/README.md, 18-fine-tuning/RESOURCES.md]

Hugging Face 微调

对于开源模型,Hugging Face 提供了用于微调的工具和库

  1. 从 Hugging Face Hub 中选择一个基础模型
  2. 使用 Datasets 库准备您的数据集
  3. 配置训练参数
  4. 使用 Transformers 库和 TRL(Transformer 强化学习)进行训练
  5. 评估和部署模型

资料来源:[18-fine-tuning/README.md, 18-fine-tuning/RESOURCES.md]

有效微调的最佳实践

为了从微调中获得最佳结果,请考虑以下最佳实践:

数据质量和准备

  • 确保提供多样化、高质量的示例,这些示例代表了预期的输入范围
  • 根据平台要求一致地格式化数据
  • 包含各种示例以避免对特定格式的过度拟合
  • 考虑不同类型示例之间的平衡

训练配置

  • 从已经为您的任务表现得相当不错的预训练模型开始
  • 使用适当的学习率以避免灾难性遗忘
  • 监视训练指标以防止过度拟合
  • 如果性能停滞,请考虑提前停止

评估和迭代

  • 根据您的具体目标定义明确的评估指标
  • 将微调模型与基线方法(提示工程、RAG)进行比较
  • 收集真实用户的反馈以识别需要改进的领域
  • 根据观察到的错误或限制迭代训练数据

资料来源:[18-fine-tuning/README.md, 18-fine-tuning/RESOURCES.md]

限制和注意事项

尽管有其优势,微调仍有一些限制和注意事项需要牢记

技术限制

  • 并非所有模型都支持微调
  • 微调需要大量的计算资源
  • 该过程可能耗时且昂贵
  • 有限的上下文窗口大小仍然是一个限制

质量注意事项

  • 低质量的训练数据会降低模型性能
  • 微调模型可能会从训练数据中产生新的偏见
  • 不保证性能提升
  • 模型可能会过度拟合训练示例

运营注意事项

  • 微调模型需要监控和维护
  • 基础模型的更新可能需要重新训练
  • 部署和管理会增加运营复杂性
  • 成本效益分析应证明投资的合理性

资料来源:[18-fine-tuning/README.md]

进一步学习资源

该存储库包含用于进一步学习微调的广泛资源

  • OpenAI 和 Azure OpenAI 的官方文档
  • 各种平台的教程和指南
  • 关于微调技术的学术论文
  • 社区资源和示例

有关完整列表,请参阅存储库中的RESOURCES.md 文件。

资料来源:[18-fine-tuning/RESOURCES.md]

结论

微调是一种高级技术,用于定制语言模型以更好地适应特定任务或领域。虽然它比提示工程等更简单的 GENG 方法需要更多的投资,但它可以为专业应用程序带来显着的性能、一致性和成本效益的提升。

通过了解何时使用微调、遵循实施最佳实践以及了解其局限性,您可以有效地利用这项技术来增强您的生成式 AI 应用程序。