Amazon Bedrock 模型微调实践(一):微调基础篇
引言和综述
在当今方兴未艾的大型语言模型(LLM)领域,如 Meta 的 Llama、Cohere 的 Command、Amazon 的 Titan 和 Anthropic 的 Claude 等,这些大模型彻底改变了我们处理语言任务的方式。它们在大量文本数据上进行了预训练,并可以通过称为**微调(Fine-tuning)**的过程适应各种下游任务。
**微调(Fine-tuning)**是一种技术,涉及使用与该任务相关的较小数据集进一步训练特定任务或领域的预训练语言模型。通过这样做,模型可以学会更好地理解和生成针对特定上下文的文本,从而提高性能和准确性。
但是,在某些情况下,微调可能不是最合适的方法。在这种情况下,**检索增强生成 RAG(Retrieval-Augmented Generation)**方法可能更合适。RAG 将基础模型的强大功能与外部知识源相结合,允许它们在生成过程中访问和整合来自数据库或文档集合的相关信息。
在这篇技术博客中,我们将探讨微调和 RAG 的基础知识,并分享为不同业务用例选择正确方法(微调或 RAG)的实践经验。我们将介绍:
- 模型微调概述
- 检索增强生成(RAG)概述
- 在模型微调和 RAG 之间进行选择的标准
- 开始使用模型微调
微调(Fine-tuning)概述
当您需要将基础模型适应专门的任务或领域时,微调是一种强大的技术。例如,如果正在为某个特定行业构建客户服务聊天机器人,那么根据该行业的相关客户服务数据对预先训练的模型进行微调,可以显著增强其对特定领域术语、行话和上下文的理解。
与检索增强生成(RAG)方法相比,模型微调的一个关键优势是:因为不涉及额外的检索步骤,它有可能在推理过程中提高性能并降低延迟。这使得微调模型非常适合低延迟和高吞吐量至关重要的场景,例如实时对话式 AI 应用程序。
然而,模型微调也有其自身的挑战。与检索增强生成(RAG)相比,它通常需要更大的计算资源投入。因为它需要标记、精选数据进行训练,以及微调过程本身的额外计算资源。此外,微调模型可能会难以应对快速变化的数据,因为模型需要定期重新训练才能有效地整合新信息。
该示例涵盖了模型微调的各个方面:包括数据准备、定义微调超参数、创建 Amazon SageMaker 估算器、启动微调作业、评估微调模型的性能以及将其部署到 Amazon SageMaker 终端节点。示例的 notebook 文件完整展示了利用 Amazon SageMaker 的功能对大型语言模型进行高效且可扩展的微调,提供了从头到尾的全面工作流程代码实现,我们还将在后面的章节中详细展开分析这些代码。
检索增强生成(RAG)概述
检索增强生成(RAG)是一种将大语言模型(LLM)的强大功能与信息检索技术相结合的方法。在 RAG 设置中,模型可以根据提供的提示生成文本,从知识库或语料库中获取相关信息以增强模型的输出。
在处理频繁变化的数据或领域知识太广泛而无法仅通过微调模型有效捕获时,RAG 特别有用。新闻机构、媒体和处理快速变化信息的组织通常会受益于 RAG 方法,因为他们可以轻松更新知识库,而无需重新训练整个模型。
RAG 的关键优势之一在于其灵活性和易于实施性。由于不需要大量训练,因此与微调相比,RAG 系统可以相对快速地建立,并且初始成本较低。但是,由于额外的检索步骤,RAG 往往比微调模型慢,并且由于涉及多个组件(如矢量数据库、嵌入模型和文档加载器)的协同工作,使得其实现的架构可能会变得比较复杂。
在这个定制的 RAG 工作流程(Customized RAG Workflow)中,模型根据输入提示生成初始响应,而检索组件同时从亚马逊云科技致股东信的语料库中获取相关信息。然后将检索到的知识与模型的输出结果集成,最终产生一个增强响应,这个增强响应结合了模型输出结果和外部知识源的共同信息。
模型微调还是 RAG?
那么,什么时候应该选择微调而不是 RAG?反之亦然。这取决于你所面对的业务场景具体要求和用例。以下是一些一般准则供参考:
微调
何时使用微调:
- 领域专门任务:微调非常适合精度和性能至关重要的领域专门任务。例如,如果你正在开发医学诊断模型,则对精选的医疗记录数据集进行微调将产生更高更准确的模型输出结果。
- 高性能和低延迟:如果你的应用程序需要低延迟和高吞吐量,则模型微调是更好的选择。微调模型不需要额外的检索步骤,从而使其推理速度更快。
- 精选数据集:如果你可以访问与特定任务相关的定义明确、标记和精选的数据集,则微调可以利用这些数据来优化性能。
- 预测质量:对于预测质量和准确性至关重要的任务,模型微调允许你根据特定要求定制模型。


