一个基于生成式AI的解决方案,运用于亚马逊SageMaker,旨在帮助亚马逊欧洲设计与建设部门

亚马逊SageMaker应用基于生成式人工智能技术的解决方案,助力欧洲设计与建设部门

Amazon欧盟设计与建筑(Amazon D&C)团队是负责设计和建设欧洲和中东北非地区的亚马逊仓库的工程团队。项目的设计和部署过程涉及许多类型的信息请求(RFIs),涉及亚马逊和项目特定指南的工程要求。这些请求的范围从简单的基线设计值的检索,到评审价值工程提案,到报告分析和合规性检查。目前,这些请求由一个中央技术团队处理,该团队由专业主题专家(SMEs)组成,可以回答这些高度技术专业问题,并向项目生命周期中的所有利益相关者和团队提供此服务。该团队正在寻求一种生成式AI问答解决方案,以快速获取信息并继续进行工程设计。值得注意的是,这些用例不仅局限于Amazon D&C团队,而且适用于参与项目部署的更广泛范围的全球工程服务。参与项目生命周期的所有利益相关者和团队都可以从生成式AI问答解决方案中获益,因为这将使他们能够快速访问关键信息,简化工程设计和项目管理流程。

现有的生成式AI问答解决方案主要基于检索增强生成(RAG)。RAG通过大型语言模型(LLM)嵌入和向量化搜索文档,通过聚类创建上下文,并使用上下文作为增强提示,以推断基础模型获取答案。这种方法对于包含诸如Excel表格、表格、列表、图表和图像等大量非结构化数据的亚马逊D&C的高度技术文档效率较低。在这种情况下,通过对文档进行微调,问题回答任务可以更好地发挥作用。微调调整和适应预训练LLM的权重,以改善模型的质量和准确性。

为了解决这些挑战,我们提出了一个具有RAG和经过微调的LLMs的新框架。该解决方案使用Amazon SageMaker JumpStart作为模型微调和推理的核心服务。在本文中,我们不仅提供解决方案,还讨论了在实际用例中实施解决方案时所学到的经验教训和最佳实践。我们比较和对比了不同的方法论和开源LLMs在我们的用例中表现如何,并讨论了如何在模型性能和计算资源成本之间找到平衡。

解决方案概述

该解决方案包含以下组件,如架构图所示:

  1. 内容存储库 – D&C内容包括各种格式的可阅读文档,如PDF文件、Excel表格、维基页面等。在此解决方案中,我们将这些内容存储在Amazon Simple Storage Service(Amazon S3)存储桶中,并将其用作信息检索和推理的知识库。在未来,我们将构建集成适配器,直接从内容所在的位置访问这些内容。
  2. 带有经过微调的LLM的RAG框架 – 这包括以下子组件:
    1. RAG框架 – 这从文档中检索相关数据,通过将检索到的数据添加到上下文中来增强提示,并将其传递给经过微调的LLM以生成输出。
    2. 经过微调的LLM – 我们根据文档和内容构建训练数据集,并对基础模型进行微调。调整后,模型从D&C内容中学习到了知识,因此可以独立回答问题。
    3. 提示验证模块 – 这衡量用户提示与用于微调的数据集之间的语义匹配。如果LLM经过微调以回答此问题,则可以对经过微调的模型进行推理以获得响应。如果没有,则可以使用RAG生成响应。
    4. LangChain – 我们使用LangChain建立一个工作流,以响应传入的问题。
  3. 最终用户UI – 这是聊天机器人UI,用于捕捉用户的问题和查询,并呈现来自RAG和LLM响应的答案。
整体架构

在接下来的几个部分中,我们将展示如何创建RAG工作流程并构建微调模型。

使用SageMaker JumpStart的RAG与基础模型

RAG结合了预训练的密集检索和序列到序列(seq2seq)基础模型的能力。对于来自亚马逊D&C文件的问答,我们需要提前准备以下内容:

  • 使用LLM嵌入模型对文档进行嵌入和索引 – 我们根据文档的章节和段落结构将多个文档拆分成小块,在SageMaker JumpStart上使用亚马逊GPT-J-6B模型生成索引,并将索引存储在FAISS向量存储库中
  • 预训练的基础模型用于生成响应 – 我们在SageMaker JumpStart上测试了Flan-T5 XL、Flan-T5 XXL和Falcon-7B模型

问答过程由LangChain实现,LangChain是一个由语言模型驱动的应用程序开发框架。链中的工作流程包含以下步骤:

  1. 从用户处获取问题。

  2. 通过FAISS在索引文档上执行语义搜索,以获取最相关的前K个文档块。

  3. 定义提示模板,例如:

    """基于上下文回答:\n\n{context}\n\n{question}"""
  4. 以检索到的文档块作为{context}和用户问题作为{question}构建提示。

  5. 使用构建的零样本提示提示基础模型。

  6. 将模型输出返回给用户。

我们在亚马逊D&C的要求和规范上测试了125个问题,RAG对于某些问题返回了一个好的响应。在下面的示例中,RAG使用Flan-T5-XXL模型从文档的正确部分提供了准确的响应。

问题 饮水机和水冷却器的水暖要求是什么?(22 47 00章节)
预期答案 开发商应在仓库的墙壁空间上,毗邻每个供应仓库服务的卫生间区块的入口和毗邻更衣室卫生间区块的等效位置提供立式水供应吧。设备应符合亚马逊的标准。确切数量和位置需与亚马逊协商一致。每个位置应提供至少两个可提供冷却和常温水的单位。饮水机或水吧 – 开发商应根据设施的需要提供用于远程饮水机或水吧的饮用水供应。开发商还应提供位于员工休息室中的水吧所需的水点、排水设施和任何电气服务,这将由餐饮承包商提供。
RAG答案(GPT-J-6B嵌入与Flan-T5-XXL) 开发商应在仓库的墙壁空间上,毗邻每个供应仓库服务的卫生间区块的入口和毗邻更衣室卫生间区块的等效位置提供立式水供应吧。设备应符合亚马逊的标准。确切数量和位置需与亚马逊协商一致。每个位置应提供至少两个可提供冷却和常温水的单位。饮水机或水吧 – 开发商应根据设施的需要提供用于远程饮水机或水吧的饮用水供应。开发商还应提供位于员工休息室中的水吧所需的水点、排水设施和任何电气服务,这将由餐饮承包商提供。

然而,我们观察到 RAG 并没有对更具体和高度技术性的问题提供清晰明了的答案,例如指南、数字和数据。如下例所示,当期望得到技术维度的输出时,RAG 无法提供具体的答案,主要是因为嵌入和搜索过程无法返回简洁的上下文。

问题 P2 一楼层混凝土的楼高要求是多少?
预期答案 7.50 米 AFFL
RAG 的答案(使用 Flan-T5-XXL 的 GPT-J-6B 嵌入) P2 一楼层混凝土

这需要改进,因为在这种使用情况下,幻觉是不可容忍的,由于其后果的关键性。

在 SageMaker 上对 LLM 进行精调

为了应对这一挑战并提高响应质量,我们采用了一种新的方法,使用问题回答任务中的文档来对 LLM 模型进行精调。该模型将被训练以直接从文档中学习相应的知识。与 RAG 不同,它不依赖于文档是否被正确嵌入和索引,以及语义搜索算法是否足够有效地返回最相关的内容。

为了准备用于精调的训练数据集,我们从 D&C 文档中提取信息,并按以下格式构建数据:

  • Instruction – 描述任务并提供部分提示
  • Input – 提供进一步的上下文,以合并到提示中
  • Response – 模型的输出

在训练过程中,我们为每个部分添加了指令键、输入键和响应键,将它们组合成训练提示,并进行标记化。然后将数据提供给 SageMaker 中的训练器以生成精调模型。

为了加速训练过程并降低计算资源成本,我们采用了 Parameter Efficient Fine-Tuning(PEFT)与 Low-Rank Adaptation(LoRA)技术。PEFT 允许我们只对少量额外的模型参数进行精调,而 LoRA 则通过低秩分解用两个较小的矩阵表示权重更新。通过 PEFT 和 8 位量化的 LoRA,我们能够在 g4dn.x 实例的单个 GPU 上完成对 125 个问题-答案对的训练。

为了证明精调的有效性,我们在 SageMaker 上测试了多个 LLM 模型。我们选择了五个小型模型:Bloom-7B、Flan-T5-XL、GPT-J-6B,以及来自 Hugging Face 的 Dolly-3B。

通过 8 位 LoRA 精调训练,我们能够将可训练参数减少到每个模型全权重的不超过 5%。训练过程需要 10-20 个周期收敛,如下图所示。对于每个模型,精调过程可以在 g4dn.x 实例的单个 GPU 上完成,这优化了计算资源的成本。

training_process

在 SageMaker 上部署精调后的模型进行推理

我们在 SageMaker 的单个 GPU g4dn.x 节点上部署了精调后的模型和 RAG 框架,并将其与 125 个问题的推理结果进行了对比。模型的性能由两个指标衡量。一个是 ROUGE(Recall-Oriented Understudy for Gisting Evaluation)得分,这是一种常用的自然语言处理(NLP)模型评估方法,通过计算参考句子中匹配单词在总单词数中的商值来衡量。另一个是语义(文本)相似度分数,它通过使用一个转换器模型将句子编码为嵌入向量,并使用余弦相似度度量来计算它们的相似度分数,以衡量两段文本含义的接近程度。从实验中可以看出,这两个指标在呈现问题答案质量方面非常一致。

在下面的表格和图中,我们可以看到经过精调的Falcon-7B模型提供了最佳的回答质量,Flan-T5-XL和Dolly-3B模型也生成了准确的回复。

. RAG_GPT-J-6B_Flan-T5-XL RAG_GPT-J-6B_Flan-T5-XXL 经过精调的Bloom-7B1 经过精调的Flan-T5-XL 经过精调的GPT-J-6B 经过精调的Dolly-3B 经过精调的Falcon-7B
ROUGE分数 0.1938 0.2747 0.3914 0.4977 0.3740 0.6991 0.9459
语义相似度分数 0.4121 0.4786 0.5666 0.7205 0.5414 0.8147 0.9774
training_results

以下是模型的一个示例回答。使用Flan-T5-XL模型的RAG提供了一个高度虚构的回答,而使用更大的Flan-T5-XXL模型的回答更相关,但仍然不能完全涵盖预期的信息。相比之下,所有经过精调的模型(Flan-T5-XL,Dolly-3B和Falcon-7B)能够提供最准确的回复,作为预期的答案。

问题 研磨密封剂/硬化剂的要求是什么?(TS0004 – 第2.8节)
期望的答案 在对AR Floor进行任何研磨/打磨程序之后,将使用基于锂的密封剂/硬化剂。请参考TGC /0007 AR Floor SCA程序。将考虑其他选择,但必须经过亚马逊和地板顾问的批准。
RAG的回答(使用Flan-T5-XL嵌入的GPT-J-6B) 渗透型混凝土硬化剂必须在倒模前会议上讨论,并且必须由地板顾问和亚马逊批准。
RAG的回答(使用Flan-T5-XXL嵌入的GPT-J-6B) 建议的化合物必须在倒模前会议上讨论,并且必须得到地板顾问和亚马逊的批准。将考虑其他选择,但必须经过亚马逊和地板顾问的批准。
经过精调的Flan-T5-XL的回答 在对AR Floor进行任何研磨/打磨程序之后,将使用基于锂的密封剂/硬化剂。请参考TGC /0007 AR Floor SCA程序。将考虑其他选择,但必须经过亚马逊和地板顾问的批准。
经过精调的Dolly-3B的回答 在对AR Floor进行任何研磨/打磨程序之后,将使用基于锂的密封剂/硬化剂。请参考TGC /0007 AR Floor SCA程序。将考虑其他选择,但必须经过亚马逊和地板顾问的批准。
经过精调的Falcon-7B的回答 在对AR Floor进行任何研磨/打磨程序之后,将使用基于锂的密封剂/硬化剂。请参考TGC /0007 AR Floor SCA程序。将考虑其他选择,但必须经过亚马逊和地板顾问的批准。

解决方案原型和结果

我们基于所展示的架构开发了一个原型,并进行了概念验证以展示结果。为了充分利用RAG框架和经过微调的LLM,并减少错误预测,我们首先对传入的问题进行语义验证。如果问题是用于微调的训练数据(经过微调的模型已经具备提供高质量答案的知识),则将问题定向为激活微调模型的提示。否则,问题将通过LangChain进行处理,并从RAG获取响应。下图描述了这个工作流程。

RAG_LLM_validate

我们使用一个包含166个问题的测试数据集对架构进行了测试,其中包含了用于模型微调的125个问题和额外的41个与微调模型未训练的问题。RAG框架结合嵌入模型和经过微调的Falcon-7B模型提供了高质量的结果,ROUGE分数为0.7898,语义相似度分数为0.8781。如下面的示例所示,该框架能够生成与D&C文档很好匹配的用户问题的响应。

下面的图像是我们的第一个示例文档。

bot1

下面的截图显示了机器人的输出。

bot2

机器人还能够根据表格或列表中的数据以及相关问题显示图表。例如,我们使用以下文档。

bot3

下面的截图显示了机器人的输出。

bot4

我们还可以使用带有图表的文档,就像以下示例一样。

bot5

下面的截图显示了机器人输出的文本和图表。

bot6-1

下面的截图只显示了机器人输出的图表。

bot7-1

经验教训和最佳实践

通过解决方案设计和多个LLM的实验,我们学到了如何在生成式AI解决方案中确保问答任务的质量和性能。当您将解决方案应用于问答案例时,我们建议您遵循以下最佳实践:

  • RAG为工程问题提供合理的回答。性能在很大程度上取决于文档嵌入和索引。对于非常无结构的文档,您可能需要对文档进行适当的拆分和增强操作,然后再进行LLM嵌入和索引。
  • 索引搜索对确定RAG最终输出非常重要。您应该适当调整搜索算法,以达到较高的准确性水平,确保RAG生成更相关的回复。
  • 经过微调的LLMs能够从高度技术和无结构的文档中学习到额外的知识,并且在训练后的模型内部具有这些知识,无需依赖文档。这对于不能容忍产生妄想的用例特别有用。
  • 为了确保模型回复的质量,用于微调的训练数据集格式应使用适当定义的、任务特定的提示模板。推理流水线应遵循相同的模板,以生成类似人类的回复。
  • LLMs通常带有相当大的价格标签,并且需要相当多的资源和高昂的成本。您可以使用PEFT、LoRA和量化技术来降低计算能力的需求,避免高训练和推理成本。
  • SageMaker JumpStart提供了易于访问的预训练LLMs,用于微调、推理和部署。它可以显著加快生成式AI解决方案的设计和实施。

结论

借助SageMaker上的RAG框架和经过微调的LLMs,我们能够向用户的问题和提示提供类似人类的回复,从而使用户能够高效地从大量高度非结构化和无组织的文档中检索准确的信息。我们将继续开发该解决方案,例如提供更高级的上下文响应以及根据人类反馈进一步微调模型。

我们随时欢迎您的反馈,请在评论区留下您的想法和问题。