创建一个用于与LLM互动的Web用户界面,使用Amazon SageMaker JumpStart

使用 Amazon SageMaker JumpStart 创建与 LLM 互动的网页用户界面

由 Jarrett Yeo 和 Tammy Lim 撰写于 2023 年 12 月 12 日,发表于 高级300,Amazon SageMaker,Amazon SageMaker JumpStart,技术如何做永久链接 评论

关键要点

本文将介绍如何使用 Amazon SageMaker JumpStart 创建名为 Chat Studio 的网页用户界面,以便与基础模型如 Llama 2、Stable Diffusion 等进行互动。Chat Studio 可以根据用户的要求返回图像和视频,以增强用户体验。整个流程采用低代码方法,出色地支持模型部署和用户界面创建。

随着 ChatGPT 的推出和生成式 AI 的流行,许多客户对如何利用这些技术创建新的 AWS 产品和服务充满好奇,例如更具对话性的企业聊天机器人。本文展示了如何创建一个网页用户界面称为 Chat Studio,以便与 Amazon SageMaker JumpStart 中的基础模型进行对话。通过该解决方案,用户可以快速上手,并通过网页界面体验多个基础模型在对话 AI 方面的能力。

Chat Studio 还可以选择调用稳定扩散模型端点,当用户请求显示媒体时返回相关的图像和视频。这一功能可以通过使用媒体来丰富响应内容,进一步提升用户体验。这只是将额外集成添加到 Chat Studio 以满足特定需求的一个示例。

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

大型语言模型

生成式 AI 聊天机器人如 ChatGPT 是由大型语言模型LLMs驱动的,这些模型基于深度学习神经网络构建,能够使用大量未标记的文本进行训练。使用 LLM 可以提供更出色的对话体验,真实的人类互动感觉,从而增强联结感并提升用户满意度。

SageMaker 基础模型

在 2021 年,斯坦福人性化人工智能研究所将某些 LLM 称为基础模型。基础模型在大量广泛的通用数据集上进行预训练,旨在为一系列用例从生成数字艺术到多语言文本分类提供基础。这些基础模型受到客户的欢迎,因为从头开始训练新模型需要时间且费用昂贵。SageMaker JumpStart 提供来自第三方开源和专有提供商的数百个基础模型的访问权限。

解决方案概述

本文将通过低代码工作流程,向您展示如何通过 SageMaker 部署预训练和自定义的 LLM,并创建与所部署模型进行交互的网页用户界面。我们将涵盖以下步骤:

部署 SageMaker 基础模型。使用 AWS Lambda 和 AWS 身份和访问管理 (IAM) 权限,使用 AWS CloudFormation 进行部署。设置并运行用户界面。可选择性地添加其他 SageMaker 基础模型。此步骤扩展 Chat Studio 与更多基础模型的互动能力。可选择性地使用 AWS Amplify 部署应用程序。此步骤将 Chat Studio 部署到网页上。

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

先决条件

要完成本解决方案,您需要具备以下先决条件:

拥有足够 IAM 用户权限的 AWS 账户。在本地环境中安装 npm。有关如何安装 npm 的说明,请参阅 下载并安装 Nodejs 和 npm。对应 SageMaker 端点的服务配额为 1。对于 Llama 2 13b Chat,我们使用 mlg548xlarge 实例;而对于 Stable Diffusion 21,我们使用 mlp32xlarge 实例。

要申请服务配额增加,请访问 AWS 服务配额控制台,导航至 AWS services,SageMaker,请求将 mlg548xlarge 端点使用的配额提升到 1,以及 mlp32xlarge 端点使用的配额提升到 1。

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

部署 SageMaker 基础模型

SageMaker 是一个完全托管的机器学习ML服务,旨在帮助开发者快速轻松地构建和训练 ML 模型。请按照以下步骤使用 Amazon SageMaker Studio 部署 Llama 2 13b Chat 和 Stable Diffusion 21 基础模型:

创建一个 SageMaker 域。有关说明,请参阅 使用快速设置在 Amazon SageMaker 域上进行入门。

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

在 SageMaker 控制台中,选择导航面板中的 Studio,然后选择 Open Studio。

启动 Studio 后,在导航面板中的 SageMaker JumpStart 下选择 Models notebooks solutions。

在搜索框中搜索 Llama 2 13b Chat。

在 Deployment Configuration 下,选择 SageMaker hosting instance 为 mlg548xlarge,并为 Endpoint name 输入 metatextgenerationllama213bf。选择 Deploy。

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

在 Models notebooks solutions 页面,搜索 Stable Diffusion 21。在 Deployment Configuration 下,选择 SageMaker hosting instance 为 mlp32xlarge,并为 Endpoint name 输入 jumpstartdftstablediffusionv21base。选择 Deploy。

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

使用 AWS CloudFormation 部署 Lambda 和 IAM 权限

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

飞跃vnp加速器导航至 GitHub 仓库,下载 CloudFormation 模板 (lambdacfnyaml) 到您的本地机器。在 CloudFormation 控制台中,选择 Create stack 下拉菜单,并选择 With new resources (standard)。在 Specify template 页面选择 Upload a template file 并 Choose file。选择您下载的 lambdacfnyaml 文件,然后选择 Next。在 Specify stack details 页面,输入堆栈名称以及您在先决条件中获得的 API 密钥,然后选择 Next。在 Configure stack options 页面,选择 Next。审查并确认更改,然后选择 Submit。

设置网页用户界面

本节描述在您的本地机器上运行使用 Cloudscape Design System 创建的网页用户界面的步骤:

在 IAM 控制台中,导航至用户 functionUrl。在 Security Credentials 标签页中,选择 Create access key。在 Access key best practices amp alternatives 页面上,选择 Command Line Interface (CLI) 选项,并选择 Next。在 Set description tag 页面中,选择 Create access key。复制访问密钥和秘密访问密钥。选择 Done。导航至 GitHub 仓库,下载 reactllmchatstudio 代码。在您首选的 IDE 中启动该文件夹并打开终端。导航到 src/configs/awsjson,并输入您获得的访问密钥和秘密访问密钥。

在终端中输入以下命令:

bashnpm installnpm start

在浏览器中打开 http//localhost3000,开始与您的模型互动!

要使用 Chat Studio,请选择下拉菜单中的基础模型,并在文本框中输入您的查询。要获取 AI 生成的图像,请在查询的末尾添加“with images”。

添加其他 SageMaker 基础模型

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

本节描述安装您选择的附加模型所需的通用步骤和代码更改。请注意,第四至八步需要一定的 Python 基础知识。

在 SageMaker Studio 中,部署您选择的 SageMaker 基础模型。选择 SageMaker JumpStart 并 Launch JumpStart assets。选择您新部署的模型端点并选择 Open Notebook。在笔记本控制台中,找到负载参数。

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

在 Lambda 控制台中,导航至 callSageMakerEndpoints。为您的新模型添加自定义输入处理程序。

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

返回笔记本控制台,定位 queryendpoint。

此函数为您提供关于如何转换模型输出以提取最终文本响应的思路。

参考 queryendpoint 中的代码,为您的新模型添加自定义输出处理程序。

选择 Deploy。

创建一个用于与LLM互动的Web用户界面,使用Amazon SageMaker JumpStart 打开您的 IDE,启动 reactllmchatstudio 代码,并导航至 src/configs/modelsjson。

添加您的模型名称和模型端点,并在 payload 下使用以下格式输入步骤 4 中的负载参数:

jsonaddmodelname { endpointname addmodelenpoint payload { addpayloadparamtershere }}

刷新您的浏览器,以开始与您的新模型互动!

使用 Amplify 部署应用程序

Amplify 是一个完整的解决方案,允许您快速有效地部署应用程序。如果您希望与其他用户分享 Chat Studio,可以使用 Amplify 将其部署到 Amazon CloudFront 分发。

导航至您之前创建的 reactllmchatstudio 代码文件夹。

在终端中输入以下命令,并按照设置说明进行操作:

bashnpm install g @awsamplify/cliamplify configure

使用以下命令初始化一个新的 Amplify 项目。提供项目名称,接受默认配置,并在提示时选择 AWS access keys 作为身份验证方法。

bashamplify init

使用以下命令托管 Amplify 项目。在提示中选择 Amazon CloudFront and S3 作为插件模式。

bashamplify hosting add

最后,使用以下命令构建并部署项目:

bashamplify publish

部署成功后,在浏览器中打开提供的 URL,开始与您的模型互动!

清理

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

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

总结

在本文中,我们解释了如何为与部署在 AWS 上的 LLM 接口创建一个网页用户界面。

通过此解决方案,您可以与您的 LLM 进行互动,并以用户友好的方式进行对话,测试或向 LLM 提问,并在需要时获取图像和视频的组合。

您可以通过多种方式扩展此解决方案,例如集成其他基础模型, [与 Amazon Kendra 集成](https//awsamazoncom/blogs/machinelearning/quicklybuildhighaccuracygenerativeai