微调是定制预训练大型语言模型(LLM)以提高其在特定任务或领域性能的高级技术。与修改发送到模型的提示的提示工程或检索增强生成(RAG)不同,微调涉及使用附加数据重新训练模型本身,以创建定制版本,从而为您的特定用例提供更准确和相关的响应。
本文档涵盖了微调的概念、何时以及为何使用它、微调过程以及在生成式 AI 应用中有效实施它的最佳实践。
有关使用标准预训练模型的详细信息,请参阅探索和比较不同的 LLM,有关使用现有数据增强模型输出的信息,请参阅RAG 和向量数据库。
微调是一种迁移学习形式,您采用预训练的语言模型并在特定于您的领域或任务的精选数据集上对其进行再训练。此过程允许模型学习与您的用例相关的模式和知识,同时保留其在初始训练期间获得的通用语言能力。
资料来源:[18-fine-tuning/README.md]
与使用精心设计的提示的通用模型相比,微调具有多项优势
| 优点 | 描述 |
|---|---|
| 提高准确性 | 微调模型能更好地理解特定领域的术语和概念 |
| 减少 token 使用 | 您可以使用更简单的提示与微调模型,从而节省 token 成本 |
| 一致的输出格式 | 微调模型可以训练以一致地遵循特定的响应格式 |
| 提高性能 | 对于专业任务,微调模型通常优于少样本学习 |
| 较低的延迟 | 更简单的提示可缩短响应时间 |
资料来源:[18-fine-tuning/README.md]
并非所有应用程序都需要微调。在投入这项技术之前,请考虑提示工程或 RAG 等更简单的 GENG 方法是否足够。下面的决策树可以帮助您确定微调是否适合您的用例。
当出现以下情况时,您应考虑微调:
资料来源:[18-fine-tuning/README.md]
微调语言模型涉及几个关键步骤,从准备数据集到部署定制模型。
在开始微调过程之前,您需要:
资料来源:[18-fine-tuning/README.md]
LLM 微调的典型工作流包括以下步骤:
资料来源:[18-fine-tuning/README.md]
根据您的需求,存在不同的微调方法
| 类型 | 描述 | 用例 |
|---|---|---|
| 监督微调 | 使用带标签的示例进行训练 | 最常见的针对特定任务的适应方法 |
| 连续微调 | 对已微调的模型进行迭代更新 | 随着新数据的可用性而持续改进 |
| 函数调用微调 | 训练以生成结构化的 API 调用输出 | 将 LLM 与外部系统集成 |
资料来源:[18-fine-tuning/RESOURCES.md]
该存储库提供了使用不同平台实现微调的几个示例和教程
OpenAI 支持包括 GPT-3.5 Turbo 在内的多个模型的微调。以下是该过程的简化示例:
资料来源:[18-fine-tuning/README.md]
Azure OpenAI 服务提供类似的功能,并具有企业级安全性和合规性功能
资料来源:[18-fine-tuning/README.md, 18-fine-tuning/RESOURCES.md]
对于开源模型,Hugging Face 提供了用于微调的工具和库
资料来源:[18-fine-tuning/README.md, 18-fine-tuning/RESOURCES.md]
为了从微调中获得最佳结果,请考虑以下最佳实践:
资料来源:[18-fine-tuning/README.md, 18-fine-tuning/RESOURCES.md]
尽管有其优势,微调仍有一些限制和注意事项需要牢记
资料来源:[18-fine-tuning/README.md]
该存储库包含用于进一步学习微调的广泛资源
有关完整列表,请参阅存储库中的RESOURCES.md 文件。
资料来源:[18-fine-tuning/RESOURCES.md]
微调是一种高级技术,用于定制语言模型以更好地适应特定任务或领域。虽然它比提示工程等更简单的 GENG 方法需要更多的投资,但它可以为专业应用程序带来显着的性能、一致性和成本效益的提升。
通过了解何时使用微调、遵循实施最佳实践以及了解其局限性,您可以有效地利用这项技术来增强您的生成式 AI 应用程序。