使用 Amazon CDK 从 Amazon SageMaker JumpStart 部署生成式 AI 模型

12a8e069e4ece99f77fd2b9e010e5727.gif

机器学习(ML)范式转变的种子已经存在了几十年,但是随着几乎无限的计算容量随时可用、数据的大量激增以及机器学习技术的快速进步,各行各业的客户正在迅速采用和使用机器学习技术来实现业务转型。

就在最近,生成式 AI 应用程序吸引了所有人的注意力和想象力。在机器学习的广泛采用方面,我们确实正处于一个激动人心的转折点,我们相信,每一种客户体验和应用程序都将通过生成式 AI 得到重塑。

生成式 AI 是一种能够创造新内容和新想法的人工智能,包括对话、故事、图像、视频和音乐。与所有人工智能一样,生成式 AI 由机器学习模型提供支持,这些模型是基于庞大的数据语料库进行预训练的超大型模型,通常称为根基模型(FM)。

根基模型的规模和通用性使其有别于传统的机器学习模型,后者通常执行特定任务,如文本情绪分析、图像分类和趋势预测。

e80e2bfdb54f3f072376e0c7b1c1fc87.png

对于传统的机器学习模型,为了完成每项特定任务,您需要收集带标签的数据、训练模型并部署该模型。对于根基模型,您无需为每个模型收集带标签的数据并训练多个模型,而是可以使用相同的预训练根基模型来适应各种任务。您还可以自定义根基模型以执行与您的业务相关的特定领域功能,所使用的数据和计算量仅为从头开始训练模型所需的一小部分。

生成式 AI 有可能通过彻底改变内容的创建和消费方式来颠覆许多行业。原创内容制作、代码生成、客户服务提升和文档摘要是生成式 AI 的典型使用案例。

Amazon SageMaker JumpStart 为各种问题类型提供预训练的开源模型,协助您开始使用机器学习。您可以在部署前逐步训练和调整这些模型。JumpStart 还提供用于为常见使用案例设置基础设施的解决方案模板,以及使用 Amazon SageMaker 进行机器学习的可执行的示例 notebook。

JumpStart 提供 600 多个预训练模型,而且每天都在增加,使开发人员能够快速轻松地将尖端的机器学习技术融入自己的生产工作流程中。您可以通过 Amazon SageMaker Studio 中的 JumpStart 登录页面访问预训练模型、解决方案模板和示例。您也可以使用 SageMaker Python SDK 访问 JumpStart 模型。有关如何以编程方式使用 JumpStart 模型的信息,请参阅在预训练模型中使用 SageMaker JumpStart 算法(https://sagemaker.readthedocs.io/en/stable/overview.html#use-built-in-algorithms-with-pre-trained-models-in-sagemaker-python-sdk)。

2023 年 4 月,亚马逊云科技推出了 Amazon Bedrock,这项服务提供了一种通过 AI21 Labs、Anthropic 和 Stability AI 等初创企业的预训练模型构建生成式 AI 驱动应用程序的方法。Amazon Bedrock 还提供对 Titan 根基模型的访问权限,这是由亚马逊云科技内部训练的一系列模型。借助 Amazon Bedrock 的无服务器体验,您可以轻松找到满足自己需求的模型,快速上手,使用自己的数据私人定制根基模型,并使用您熟悉的亚马逊云科技工具和功能(包括与 SageMaker 机器学习功能的集成,如用于测试不同模型的 Amazon SageMaker Experiments 和用于大规模管理根基模型的 Amazon SageMaker Pipelines)轻松将这些模型集成并部署到您的应用程序中,而无需管理任何基础设施。

在这篇文章中,我们将展示如何使用 Amazon Cloud Development Kit (Amazon CDK) 从 JumpStart 部署图像和文本生成式 AI 模型。Amazon CDK 是一个开源软件开发框架,用于使用 Python 等熟悉的编程语言定义云应用程序资源。

我们从 JumpStart 的 Hugging Face 中,使用 Stable Diffusion 模型进行图像生成操作,使用 FLAN-T5-XL 模型进行自然语言理解(NLU)和文本生成操作。

解决方案概览

Web 应用程序基于 Streamlit 构建,Streamlit 是一个开源 Python 库,可轻松创建和共享用于机器学习和数据科学的完美定制 Web 应用程序。我们使用 Amazon Elastic Container Service(Amazon ECS)和 Amazon Fargate 托管 Web 应用程序,并通过应用程序负载均衡器访问这种应用程序。

Fargate 是一种技术,可与 Amazon ECS 配合使用,无需管理服务器、集群或虚拟机即可运行容器。生成式 AI 模型端点是从 Amazon Elastic Container Registry(Amazon ECR)中的 JumpStart 映像启动的。模型数据存储在 JumpStart 账户中的 Amazon Simple Storage Service(Amazon S3)上。Web 应用程序通过 Amazon API Gateway 和 Amazon Lambda 函数与模型进行交互,如下图所示。

967e41b1325ce25b1455e4c7671c1346.png

API Gateway 为 Web 应用程序和其他客户端提供标准的 RESTful 接口,同时屏蔽与模型接口的 Lambda 函数。这简化了使用模型的客户端应用程序代码。在此示例中,API Gateway 端点可公开访问,因此可以扩展此架构来实施不同的 API 访问控制并与其他应用程序集成。

在这篇文章中,我们将引导您完成以下步骤:

  • 1、在本地计算机上安装 Amazon 命令行界面(Amazon CLI)和 Amazon CDK v2。

  • 2、克隆并设置 Amazon CDK 应用程序。

  • 3、部署 Amazon CDK 应用程序。

  • 4、使用图像生成人工智能模型。

  • 5、使用文本生成人工智能模型。

  • 6、在亚马逊云科技管理控制台上查看已部署的资源。

我们在这篇文章末尾的附录中概述了这个项目中的代码。

先决条件

您必须具备以下先决条件:

  • 亚马逊云科技账户

  • Amazon CLI v2

  • Python 3.6 或更高版本

  • node.js 14.x 或更高版本

  • Amazon CDK v2

  • Docker v20.10 或更高版本

您可以从本地计算机部署本教程中的基础设施,也可以使用 Amazon Cloud9 作为部署工作站。Amazon Cloud9 预装了 Amazon CLI、Amazon CDK 和 Docker。如果选择 Amazon Cloud9,请从亚马逊云科技控制台创建环境。

假设您让资源运行 8 个小时,完成这篇文章的估计费用为 50 美元。请务必删除在这篇文章中创建的资源,避免持续收费。

在本地计算机上

安装 Amazon CLI 和 Amazon CDK

如果本地计算机上还没有 Amazon CLI,请参阅安装或更新 Amazon CLI 的最新版本(https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)以及配置 Amazon CLI(https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。

使用以下节点软件包管理器命令全局安装 Amazon CDK 工具包:

$ npm install -g aws-cdk-lib@latest

左滑查看更多

运行以下命令,验证安装是否正确并打印 Amazon CDK 的版本号:

$ cdk --version

确保在本地计算机上安装了 Docker。发出以下命令以验证版本:

$ docker --version

克隆并设置 Amazon CDK 应用程序

在本地计算机上,使用以下命令克隆 Amazon CDK 应用程序:

$ git clone https://github.com/aws-samples/generative-ai-sagemaker-cdk-demo.git

左滑查看更多

导航到项目文件夹:

$ cd generative-ai-sagemaker-cdk-demo

左滑查看更多

在部署应用程序之前,让我们回顾一下目录结构:

.
├── LICENSE
├── README.md
├── app.py
├── cdk.json
├── code
│   ├── lambda_txt2img
│   │   └── txt2img.py
│   └── lambda_txt2nlu
│       └── txt2nlu.py
├── construct
│   └── sagemaker_endpoint_construct.py
├── images
│   ├── architecture.png
│   ├── ...
├── requirements-dev.txt
├── requirements.txt
├── source.bat
├── stack
│   ├── __init__.py
│   ├── generative_ai_demo_web_stack.py
│   ├── generative_ai_txt2img_sagemaker_stack.py
│   ├── generative_ai_txt2nlu_sagemaker_stack.py
│   └── generative_ai_vpc_network_stack.py
├── tests
│   ├── __init__.py
│   └── ...
└── web-app
    ├── Dockerfile
    ├── Home.py
    ├── configs.py
    ├── img
    │   └── sagemaker.png
    ├── pages
    │   ├── 2_Image_Generation.py
    │   └── 3_Text_Generation.py
    └── requirements.txt

左滑查看更多

 stack 文件夹包含 Amazon CDK 应用程序中每个堆栈的代码。 code 文件夹包含 Lambda 函数的代码。存储库还包含位于 web-app 文件夹下的 Web 应用程序。

 cdk.json 文件告诉 Amazon CDK 工具包如何运行应用程序。

此应用程序在 us-east-1 区域中进行了测试,但此应用程序应适用于任何在 app.py 中指定了所需服务和推理实例类型 ml.g4dn.4xlarge 的区域。

设置虚拟环境

此项目的设置与标准 Python 项目类似。使用以下代码创建 Python 虚拟环境:

$ python3 -m venv .venv

使用以下命令激活虚拟环境:

$ source .venv/bin/activate

如果您使用的是 Windows 平台,请按如下方式激活虚拟环境:

% .venv\Scripts\activate.bat

激活虚拟环境后,将 pip 升级到最新版本:

$ python3 -m pip install --upgrade pi

左滑查看更多

安装所需的依赖项:

$ pip install -r requirements.txt

在部署任何 Amazon CDK 应用程序之前,需要在您的账户和要部署到的区域中引导空间。要在默认区域中进行引导,请发出以下命令:

$ cdk bootstrap

如果要部署到特定账户和区域,请发出以下命令:

$ cdk bootstrap aws://ACCOUNT-NUMBER/REGIO

左滑查看更多

有关此设置的更多信息,请访问 Amazon CDK 入门(https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)。

Amazon CDK 应用程序堆栈结构

Amazon CDK 应用程序包含多个堆栈,如下图所示。

6bc4f8acab1a15b42e556e5d82921f3f.png

可以使用以下命令列出 Amazon CDK 应用程序中的堆栈:

$ cdk list


GenerativeAiTxt2imgSagemakerStack
GenerativeAiTxt2nluSagemakerStack
GenerativeAiVpcNetworkStack
GenerativeAiDemoWebStack

左滑查看更多

以下是其他有用的 Amazon CDK 命令:

  • cdk ls – 列出应用程序中的所有堆栈

  • cdk synth – 发出合成的 Amazon CloudFormation 模板

  • cdk deploy – 将此堆栈部署到默认亚马逊云科技账户和区域

  • cdk diff – 将已部署的堆栈与当前状态进行比较

  • cdk docs – 打开 Amazon CDK 文档

下一节将向您展示如何部署 Amazon CDK 应用程序。

部署 Amazon CDK 应用程序

Amazon CDK 应用程序将根据工作站配置部署到默认区域。如果您想在特定区域强制部署,请相应地设置 Amazon_DEFAULT_REGION 环境变量。

此时,您可以部署 Amazon CDK 应用程序。首先启动 VPC 网络堆栈:

$ cdk deploy GenerativeAiVpcNetworkStack

左滑查看更多

如果出现提示,请输入 y 继续部署。您应该会看到堆栈中正在预置的亚马逊云科技资源列表。此步骤大约需要 3 分钟才能完成。

然后启动 Web 应用程序堆栈:

$ cdk deploy GenerativeAiDemoWebStack

左滑查看更多

分析堆栈后,Amazon CDK 将显示堆栈中的资源列表。输入 y 继续部署。此步骤大约需要 5 分钟。

d3327f759fbf01f6092d812458f2b4a0.png

记下输出中的 WebApplicationServiceURL 以便稍后使用。您也可以在 Amazon CloudFormation 控制台的 GenerativeAiDemoWebStack 堆栈输出中进行检索。

现在,启动图像生成人工智能模型端点堆栈:

$ cdk deploy GenerativeAiTxt2imgSagemakerStac

左滑查看更多

此步骤大约需要 8 分钟。图像生成模型端点已部署,我们现在可以使用此端点。

使用图像生成人工智能模型

第一个示例演示了如何使用 Stable Diffusion,这是一种功能强大的生成式建模技术,可以根据文本提示创建高质量的图像。

1、在浏览器中使用 GenerativeAiDemoWebStack 输出中的 WebApplicationServiceURL 访问 Web 应用程序。

4fc66810a8443b27c04a0b7bc122d3e7.png

2、在导航窗格中,选择图像生成。

3、SageMaker 端点名称 API GW Url 字段将预先填入,但您可以根据需要更改图像描述的提示。

4、选择生成图像

90a00cf041729c91682d88e28038a2ee.png

5、应用程序将调用 SageMaker 端点。这需要几秒钟时间。此时将显示一张具有图像描述中的特征的图片。

5c43453b92d1c71892ab7821ea778055.png

使用文本生成人工智能模型

第二个示例围绕着使用 FLAN-T5-XL 模型(一种根基模型或大型语言模型(LLM))实现文本生成的上下文学习,同时还解决了广泛的自然语言理解(NLU)和自然语言生成(NLG)任务。

某些环境可能会限制一次启动的端点数量。在这种情况下,您可以一次启动一个 SageMaker 端点。要在 Amazon CDK 应用程序中停止 SageMaker 端点,必须先销毁已部署的端点堆栈,然后再启动其他端点堆栈。要关闭图像生成人工智能模型端点,请发出以下命令:

$ cdk destroy GenerativeAiTxt2imgSagemakerStack

左滑查看更多

然后启动文本生成人工智能模型端点堆栈:

$ cdk deploy GenerativeAiTxt2nluSagemakerStack

左滑查看更多

在提示符处输入 y 。

启动文本生成模型端点堆栈后,完成以下步骤:

1、返回 Web 应用程序,然后在导航窗格中选择文本生成;

2、输入上下文字段预填充的是客户与座席之间关于客户电话问题的对话,但您也可以根据需要输入自己的上下文;

f83086be9653ab55a0e2b7f02c9b8242.png

3、在上下文下方的下拉菜单中,您可以找到一些预填充的查询。选择一个查询,然后选择生成响应

cf7da1be0df3a6862b0221170f590dbc.png

4、您也可以在输入查询字段中输入自己的查询,然后选择生成响应

5abffdb212e042e88718da329f2993b6.png

在控制台上查看已部署的资源

在 Amazon CloudFormation 控制台上,选择导航窗格中的堆栈以查看部署的堆栈。

05c045963f1a54f9c4bb308b2575fc31.png

在 Amazon ECS 控制台上,您可以在集群页面上查看集群。

98854e00d01466090ac3d385df52b241.png

在 Amazon Lambda 控制台上,您可以在函数页面上查看函数。

8008b46e98972dc8c46b985f56d83975.png

在 API Gateway 控制台上,您可以在 API 页面上查看 API Gateway 端点。

e3ca1d1874af9b6f3cbc10554d8a2fbe.png

SageMaker 控制台上,您可以在端点页面上查看已部署的模型端点。

aafa3f90b6d7a147a531ca7e0a45d3d5.png

启动堆栈时,会生成一些参数。这些参数存储在 Amazon Systems Manager Parameter Store 中。要查看这些参数,请在 Amazon Systems Manager 控制台的导航窗格中选择 Parameter Store

4f45a378b84b4995824142f1b859702b.png

清理

为避免不必要的成本,请在工作站上使用以下命令清理创建的所有基础设施:

$ cdk destroy --all

在提示符处输入 y 。此步骤大约需要 10 分钟。检查控制台上的所有资源是否都已删除。同时删除 Amazon CDK 在 Amazon S3 控制台上创建的资产 S3 存储桶以及 Amazon ECR 上的资产存储库。

总结

如本文所示,您可以使用 Amazon CDK 在 JumpStart 中部署生成式 AI 模型。我们展示了使用由 Streamlit、Lambda 和 API Gateway 提供支持的用户界面的图像生成示例和文本生成示例。

现在,您可以在 JumpStart 中使用预训练的人工智能模型来构建生成式 AI 项目。您还可以扩展此项目,针对自己的使用案例对根基模型进行微调,并控制对 API Gateway 端点的访问。

我们邀请您在 GitHub 上测试解决方案并为此项目做出贡献。请在评论中分享您对本教程的看法!

许可证摘要

此示例代码根据修改后的 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件(https://github.com/Hantzley/generative-ai-sagemaker-cdk-demo/blob/main/LICENSE)。另外,请查看 Hugging Face 上 stable diffusion(https://huggingface.co/stabilityai/stable-diffusion-2-1-base) 和 flan-t5-xl 模型(https://huggingface.co/google/flan-t5-xl)的相应许可证。

附录:代码演练

本节将为您概述此项目中的代码,详情请点击阅读原文,或访问以下链接进行参考:https://aws.amazon.com/cn/blogs/china/deploy-generative-ai-models-from-amazon-sagemaker-jumpstart-using-the-aws-cdk/

本篇作者

187ceabf5b0e3b9f2f126536c034076a.jpeg

Hantzley Tauckoor 

APJ 合作伙伴解决方案架构负责人,常驻新加坡。他在信息通信技术行业拥有 20 年的工作经验,涉及多个职能领域,包括解决方案架构、业务发展、销售策略、咨询和领导能力。他领导着一支由高级解决方案架构师组成的团队,协助合作伙伴开发联合解决方案,培养技术能力,并在客户将应用程序迁移到亚马逊云科技 并实现应用程序现代化的过程中,指导合作伙伴完成实施阶段。

4b37bb1a2d20f896b33961dd5c9872dd.png

Kwonyul Choi

总部位于首尔的韩国美容护理平台初创企业 BABITALK 的首席技术官。在此之前,Kownyul 曾在亚马逊云科技担任软件开发工程师,专注于 Amazon CDK 和 Amazon SageMaker。

529ac6e22b97f3da61206f60cbaad586.png

Arunprasath Shankar

亚马逊云科技的高级人工智能/机器学习专业解决方案架构师,协助全球客户在云中有效、高效地扩展人工智能解决方案。在业余时间,Arun 喜欢看科幻电影和听古典音乐。

8c2363a7ef30dd8d6893aaeb05b01c94.png

Satish Upreti

亚太地区合作伙伴组织的 PSA 迁移负责人和安全专家。Satish 在本地私有云和公有云技术领域拥有 20 年的丰富经验。自 2020 年 8 月以迁移专家的身份加入亚马逊云科技以来,他为亚马逊云科技合作伙伴提供了广泛的技术建议和支持,协助他们规划和实施复杂的迁移。

08c9a9385e2248c28b322462a254298b.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

3793c92dc3a46f48511800c1fa5d234a.gif

听说,点完下面4个按钮

就不会碰到bug了!

6d654948504257a0da3c2ab83be4c9eb.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值