使用Amazon SageMaker JumpStart创建用于与LLMs交互的Web用户界面

使用Amazon SageMaker JumpStart轻松打造与LLMs互动的Web用户界面

ChatGPT的发布以及生成AI的普及引起了对于如何利用这项技术在AWS上创建新产品和服务的顾客的想象力,比如更具对话性的企业聊天机器人。本文将向您展示如何创建一个名为Chat Studio的Web界面,通过该界面与可在Amazon SageMaker JumpStart上使用的基础模型(如Llama 2、Stable Diffusion以及其他可在Amazon SageMaker上使用的模型)进行对话和交互。部署完这个解决方案后,用户可以快速开始,通过Web界面体验多个基础模型在对话式AI中的能力。

Chat Studio还可以根据需要调用稳定扩散模型终端节点,返回相关图像和视频的拼贴画,以便用户请求展示媒体。这一功能可以借助媒体作为响应的附属资产,提升用户体验。这只是一个示例,展示了如何通过添加其他集成来丰富Chat Studio以实现您的目标。

以下截图展示了用户查询和响应的示例。

Chat Studio query interface

Chat Studio response interface

大型语言模型

ChatGPT等生成AI聊天机器人由大型语言模型(LLMs)驱动,这些模型基于深度学习神经网络,可以在大量无标签文本上进行训练。使用LLMs可以实现更好的对话体验,与真实人类的交互非常相似,增强了连接感并提高了用户满意度。

SageMaker基础模型

2021年,斯坦福人机中心人工智能研究所将一些LLMs称为基础模型。基础模型在大规模通用数据集上进行了预训练,用于对各种用例进行进一步优化,从生成数字艺术到多语言文本分类。这些基础模型因为从头开始训练一个新模型需要时间且成本高昂而受到客户的欢迎。SageMaker JumpStart提供对来自第三方开源和专有提供者维护的数百个基础模型的访问权限。

解决方案概述

本文介绍了通过SageMaker部署预训练和自定义LLMs的低代码工作流程,并创建与已部署模型进行交互的Web界面。以下是步骤的概述:

  1. 部署SageMaker基础模型。
  2. 部署AWS LambdaAWS Identity and Access Management(IAM)权限,使用AWS CloudFormation
  3. 设置并运行用户界面。
  4. 可选择添加其他SageMaker基础模型。此步骤扩展了Chat Studio与其他基础模型进行交互的能力。
  5. 可选择使用AWS Amplify部署应用程序。此步骤将Chat Studio部署到Web上。

请参考下面的图表来了解解决方案架构的概述。

Chat Studio Solution Architecture

前提条件

在解决方案中进行操作,您需要具备以下前提条件:

  • 具有足够 IAM 用户权限的 AWS 帐户
  • 在本地环境中已安装 npm。如需安装 npm 的说明,请参阅 下载和安装 Node.js 和 npm
  • 相应 SageMaker 终端节点的服务配额为1。对于 Llama 2 13b Chat,我们使用 ml.g5.48xlarge 实例;对于 Stable Diffusion 2.1,我们使用 ml.p3.2xlarge 实例。

要请求提高服务配额,请在 AWS 服务配额控制台 上导航到 AWS 服务SageMaker,并请求将 endpoint 使用的 ml.g5.48xlarge 值和 ml.p3.2xlarge 值提高至1。

服务配额请求的批准可能需要数小时时间,具体取决于实例类型的可用性。

部署 SageMaker 基础模型

SageMaker 是一种全面托管的机器学习(ML)服务,供开发人员快速构建和训练 ML 模型。按照以下步骤使用 Amazon SageMaker Studio 部署 Llama 2 13b Chat 和 Stable Diffusion 2.1 基础模型:

  1. 创建一个 SageMaker 域。有关说明,请参阅 使用快速设置加入 Amazon SageMaker 域

域设置所有存储,并允许您添加用户以访问 SageMaker。

  1. 在 SageMaker 控制台中,在导航窗格中选择 Studio,然后选择 打开 Studio
  2. 在启动 Studio 时,在导航窗格中的 SageMaker JumpStart 下选择 Models, notebooks, solutionsSageMaker JumpStart Console
  3. 在搜索栏中搜索 Llama 2 13b Chat。
  4. Deployment Configuration 下,对于 SageMaker hosting instance,选择 ml.g5.48xlarge,对于 Endpoint name,输入 meta-textgeneration-llama-2-13b-f
  5. 选择 Deploy
SageMaker JumpStart Deployment Configuration

部署成功后,您应该能够看到 In Service 状态。

Llama Model Status
  1. Models, notebooks, solutions页面上,搜索 Stable Diffusion 2.1。
  2. Deployment Configuration下,对于SageMaker hosting instance,选择 ml.p3.2xlarge,对于Endpoint name,输入 jumpstart-dft-stable-diffusion-v2-1-base
  3. 选择Deploy
SageMaker JumpStart Deployment Configuration

部署成功后,您应该能够看到 In Service状态。

Stable Diffusion Model Status

使用AWS CloudFormation部署Lambda和IAM权限

本节介绍如何启动一个CloudFormation堆栈,部署一个处理用户请求并调用您部署的SageMaker端点的Lambda函数,并部署所有必要的IAM权限。完成以下步骤:

  1. 访问GitHub存储库,将CloudFormation模板(lambda.cfn.yaml)下载到本地计算机。
  2. 在CloudFormation控制台上,选择创建堆栈下拉菜单,选择使用新资源(标准)
  3. 指定模板页面上,选择上传模板文件选择文件
  4. 选择您下载的lambda.cfn.yaml文件,然后选择下一步
  5. 指定堆栈详细信息页面上,输入堆栈名称和先决条件中获取的API密钥,然后选择下一步
  6. 配置堆栈选项页面上,选择下一步
  7. 查看并确认更改,然后选择提交

设置Web UI

本节介绍在本地计算机上运行 Web UI(使用Cloudscape Design System创建)的步骤:

  1. 在IAM控制台上,转到用户functionUrl

  2. 安全凭据选项卡上,选择创建访问密钥

  3. 访问密钥最佳做法和替代方案页面上,选择命令行接口(CLI),然后选择下一步

  4. 设置描述标签页面上,选择创建访问密钥

  5. 复制访问密钥和秘密访问密钥。

  6. 选择完成

  7. 访问GitHub存储库,下载react-llm-chat-studio代码。

  8. 在首选IDE中启动文件夹并打开终端。

  9. 转到src/configs/aws.json并输入您获取的访问密钥和秘密访问密钥。

  10. 在终端中输入以下命令:

    npm installnpm start
  11. 在浏览器中打开http://localhost:3000,并开始与您的模型进行交互!

要使用Chat Studio,选择下拉菜单中的基础模型,并在文本框中输入您的查询。如果要在响应中添加AI生成的图像,请在您的查询末尾添加短语“带图像”。

添加其他SageMaker基础模型

您可以进一步扩展此解决方案的能力,包括其他SageMaker基础模型。由于在调用其SageMaker端点时,每个模型都期望不同的输入和输出格式,因此您需要在callSageMakerEndpoints Lambda函数中编写一些转换代码,以与模型进行接口对接。

本节描述了实现您选择的其他模型所需的一般步骤和代码更改。请注意,需要具备Python语言的基本知识来完成第6到第8步。

  1. 在SageMaker Studio中部署您选择的SageMaker基础模型。
  2. 选择SageMaker JumpStartLaunch JumpStart assets
  3. 选择您新部署的模型端点,并选择打开Notebook
  4. 在笔记本控制台中找到有效载荷参数。

这些是调用其SageMaker端点时新模型所期望的字段。以下截图显示了一个示例。

SageMaker Endpoint Configuration
  1. 在Lambda控制台上,导航到callSageMakerEndpoints
  2. 为您的新模型添加自定义输入处理程序。

在以下截图中,我们为Falcon 40B Instruct BF16和GPT NeoXT Chat Base 20B FP16进行了输入转换。您可以按照指示插入自定义参数逻辑,以添加与您复制的有效载荷参数相对应的输入转换逻辑。

Lambda Code Snippet
  1. 返回笔记本控制台,找到query_endpoint

此函数为您提供了如何转换模型输出以提取最终文本响应的想法。

SageMaker Endpoint Configuration
  1. 参考query_endpoint中的代码,为您的新模型添加自定义输出处理程序。Lambda Code

  2. 选择部署

  3. 打开您的IDE,启动react-llm-chat-studio代码,并导航到src/configs/models.json

  4. 添加您的模型名称和模型端点,并使用以下格式在payload下输入来自步骤4的有效载荷参数:

    "add_model_name": {"endpoint_name": "add_model_enpoint","payload": {"add_payload_paramters_here"}},
  5. 刷新浏览器以开始与您的新模型进行交互!

使用Amplify部署应用程序

Amplify是一种完整的解决方案,可让您快速高效地部署应用程序。本节描述了使用Amplify将Chat Studio部署到Amazon CloudFront分发的步骤,以便与其他用户共享您的应用程序。

  1. 导航到之前创建的 react-llm-chat-studio 代码文件夹。

  2. 在终端中输入以下命令,并按照设置指示进行操作:

    npm install -g @aws-amplify/cliamplify configure
  3. 通过使用以下命令初始化新的 Amplify 项目。提供一个项目名称,接受默认配置,并在提示选择身份验证方式时选择 AWS 访问密钥

    amplify init
  4. 使用以下命令托管 Amplify 项目。在提示选择插件模式时,选择 Amazon CloudFront 和 S3

    amplify hosting add
  5. 最后,使用以下命令构建并部署项目:

    amplify publish
  6. 部署成功后,在浏览器中打开提供的 URL,并开始与您的模型进行交互!

清理

为了避免未来产生费用,请完成以下步骤:

  1. 删除 CloudFormation 堆栈。有关说明,请参阅在 AWS CloudFormation 控制台上删除堆栈
  2. 删除 SageMaker JumpStart 终端节点。有关说明,请参阅删除终端节点和资源
  3. 删除 SageMaker 域。有关说明,请参阅删除 Amazon SageMaker 域

结论

在本篇文章中,我们介绍了如何创建一个用于与部署在 AWS 上的 LLM 进行交互的 Web UI。

通过这个解决方案,您可以以一种用户友好的方式与 LLM 进行交互,并进行对话、测试或提问,如果需要,还可以获取图像和视频的拼贴。

您可以以多种方式扩展这个解决方案,例如集成其他基础模型,与 Amazon Kendra 集成以实现基于机器学习的企业内容智能搜索等等!

我们邀请您尝试使用 AWS 提供的不同预训练的 LLM,或者在 SageMaker 上构建、扩展甚至创建自己的 LLM。请在评论中告诉我们您的问题和发现,祝玩得开心!