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

人工智能
机器学习
Amazon Cloud Development Kit (Amazon CDK)
Amazon SageMaker
生成式人工智能
0
0
[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)(ML)范式转变的种子已经存在了几十年,但是随着几乎无限的计算容量随时可用、数据的大量激增以及[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)技术的快速进步,各行各业的客户正在迅速采用和使用[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)技术来实现业务转型。 就在最近,生成式 AI 应用程序吸引了所有人的注意力和想象力。在[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)的广泛采用方面,我们确实正处于一个激动人心的转折点,我们相信,每一种客户体验和应用程序都将通过生成式 AI 得到重塑。 生成式 AI 是一种能够创造新内容和新想法的人工智能,包括对话、故事、图像、视频和音乐。与所有人工智能一样,生成式 AI 由[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型提供支持,这些模型是基于庞大的数据语料库进行预训练的超大型模型,通常称为根基模型(FM)。 根基模型的规模和通用性使其有别于传统的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型,后者通常执行特定任务,如文本情绪分析、图像分类和趋势预测。 ![image.png](https://dev-media.amazoncloud.cn/ea53e202c108494da984a8bc775b428b_image.png "image.png") 对于传统的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型,为了完成每项特定任务,您需要收集带标签的数据、训练模型并部署该模型。对于根基模型,您无需为每个模型收集带标签的数据并训练多个模型,而是可以使用相同的预训练根基模型来适应各种任务。您还可以自定义根基模型以执行与您的业务相关的特定领域功能,所使用的数据和计算量仅为从头开始训练模型所需的一小部分。 生成式 AI 有可能通过彻底改变内容的创建和消费方式来颠覆许多行业。原创内容制作、代码生成、客户服务提升和文档摘要是生成式 AI 的典型使用案例。 [Amazon SageMaker JumpStart](https://aws.amazon.com/cn/sagemaker/jumpstart/?trk=cndc-detail) 为各种问题类型提供预训练的开源模型,协助您开始使用[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)。您可以在部署前逐步训练和调整这些模型。JumpStart 还提供用于为常见使用案例设置基础设施的解决方案模板,以及使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 进行[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)的可执行的示例 notebook。 JumpStart 提供 600 多个预训练模型,而且每天都在增加,使开发人员能够快速轻松地将尖端的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)技术融入自己的生产工作流程中。您可以通过 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 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?trk=cndc-detail)。 2023 年 4 月,亚马逊云科技推出了 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail),这项服务提供了一种通过 AI21 Labs、Anthropic 和 Stability AI 等初创企业的预训练模型构建生成式 AI 驱动应用程序的方法。[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 还提供对 Titan 根基模型的访问权限,这是由亚马逊云科技内部训练的一系列模型。借助 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)体验,您可以轻松找到满足自己需求的模型,快速上手,使用自己的数据私人定制根基模型,并使用您熟悉的亚马逊云科技工具和功能(包括与 SageMaker [机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)功能的集成,如用于测试不同模型的 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Experiments 和用于大规模管理根基模型的 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 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 库,可轻松创建和共享用于[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)和数据科学的完美定制 Web 应用程序。我们使用 [Amazon Elastic Container Service](https://aws.amazon.com/cn/ecs/?trk=cndc-detail)([Amazon ECS](https://aws.amazon.com/cn/ecs/?trk=cndc-detail))和 Amazon Fargate 托管 Web 应用程序,并通过应用程序负载均衡器访问这种应用程序。 Fargate 是一种技术,可与 [Amazon ECS](https://aws.amazon.com/cn/ecs/?trk=cndc-detail) 配合使用,无需管理服务器、集群或虚拟机即可运行容器。生成式 AI 模型端点是从 Amazon Elastic Container Registry(Amazon ECR)中的 JumpStart 映像启动的。模型数据存储在 JumpStart 账户中的 [Amazon Simple Storage Service](https://aws.amazon.com/cn/s3/?trk=cndc-detail)([Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail))上。Web 应用程序通过 [Amazon API Gateway](https://aws.amazon.com/cn/api-gateway/?trk=cndc-detail) 和 Amazon Lambda 函数与模型进行交互,如下图所示。 ![image.png](https://dev-media.amazoncloud.cn/5776fd2fbe544221a139ac7e87d74f03_image.png "image.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?trk=cndc-detail)以及[配置 Amazon CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html?trk=cndc-detail)。 使用以下节点软件包管理器命令全局安装 Amazon CDK 工具包: ```js \$ npm install -g aws-cdk-lib@latest ``` 运行以下命令,验证安装是否正确并打印 Amazon CDK 的版本号: ```js \$ cdk --version ``` 确保在本地计算机上安装了 Docker。发出以下命令以验证版本: ```js \$ docker --version ``` ### **克隆并设置 Amazon CDK 应用程序** 在本地计算机上,使用以下命令克隆 Amazon CDK 应用程序: ```js \$ git clone https://github.com/aws-samples/generative-ai-sagemaker-cdk-demo.git ``` 导航到项目文件夹: ```js \$ cd generative-ai-sagemaker-cdk-demo ``` 在部署应用程序之前,让我们回顾一下目录结构: ```js . ├── 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 虚拟环境: ```js \$ python3 -m venv .venv ``` 使用以下命令激活虚拟环境: ```js \$ source .venv/bin/activate ``` 如果您使用的是 Windows 平台,请按如下方式激活虚拟环境: ```js % .venv\\Scripts\\activate.bat ``` 激活虚拟环境后,将 pip 升级到最新版本: ```js \$ python3 -m pip install --upgrade pi ``` 安装所需的依赖项: ```js \$ pip install -r requirements.txt ``` 在部署任何 Amazon CDK 应用程序之前,需要在您的账户和要部署到的区域中引导空间。要在默认区域中进行引导,请发出以下命令: ```js \$ cdk bootstrap ``` 如果要部署到特定账户和区域,请发出以下命令: ```js \$ cdk bootstrap aws://ACCOUNT-NUMBER/REGIO ``` 有关此设置的更多信息,请访问 [Amazon CDK 入门](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html?trk=cndc-detail)。 ### **Amazon CDK 应用程序堆栈结构** Amazon CDK 应用程序包含多个堆栈,如下图所示。 ![image.png](https://dev-media.amazoncloud.cn/7a668d7672084077a46260f999afe747_image.png "image.png") 可以使用以下命令列出 Amazon CDK 应用程序中的堆栈: ```js \$ 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 网络堆栈: ```js \$ cdk deploy GenerativeAiVpcNetworkStack ``` 如果出现提示,请输入 `y` 继续部署。您应该会看到堆栈中正在预置的亚马逊云科技资源列表。此步骤大约需要 3 分钟才能完成。 然后启动 Web 应用程序堆栈: ```js \$ cdk deploy GenerativeAiDemoWebStack ``` 分析堆栈后,Amazon CDK 将显示堆栈中的资源列表。输入 y 继续部署。此步骤大约需要 5 分钟。 ![image.png](https://dev-media.amazoncloud.cn/3ef7cfc74e394dd59d3870c53bfd0598_image.png "image.png") 记下输出中的 `WebApplicationServiceURL` 以便稍后使用。您也可以在 Amazon CloudFormation 控制台的 `GenerativeAiDemoWebStack` 堆栈输出中进行检索。 现在,启动图像生成人工智能模型端点堆栈: ```js \$ cdk deploy GenerativeAiTxt2imgSagemakerStac ``` 此步骤大约需要 8 分钟。图像生成模型端点已部署,我们现在可以使用此端点。 ### **使用图像生成人工智能模型** 第一个示例演示了如何使用 Stable Diffusion,这是一种功能强大的生成式建模技术,可以根据文本提示创建高质量的图像。 **1**、在浏览器中使用 `GenerativeAiDemoWebStack` 输出中的 `WebApplicationServiceURL` 访问 Web 应用程序。 ![image.png](https://dev-media.amazoncloud.cn/77cbaff6b4f3458c8ecf05d55701f5b1_image.png "image.png") **2、**在导航窗格中,选择**图像生成。** **3、****SageMaker**** 端点名称**和 **API GW Url** 字段将预先填入,但您可以根据需要更改图像描述的提示。 **4、**选择**生成图像** ![image.png](https://dev-media.amazoncloud.cn/0edeb366ca664ab08053104a63bba0ef_image.png "image.png") **5**、应用程序将调用 SageMaker 端点。这需要几秒钟时间。此时将显示一张具有图像描述中的特征的图片。 ![image.png](https://dev-media.amazoncloud.cn/109add59632c43648bde64054710918a_image.png "image.png") ### **使用文本生成人工智能模型** 第二个示例围绕着使用 FLAN-T5-XL 模型(一种根基模型或大型语言模型(LLM))实现文本生成的上下文学习,同时还解决了广泛的自然语言理解(NLU)和自然语言生成(NLG)任务。 某些环境可能会限制一次启动的端点数量。在这种情况下,您可以一次启动一个 SageMaker 端点。要在 Amazon CDK 应用程序中停止 SageMaker 端点,必须先销毁已部署的端点堆栈,然后再启动其他端点堆栈。要关闭图像生成人工智能模型端点,请发出以下命令: ```js \$ cdk destroy GenerativeAiTxt2imgSagemakerStack ``` 然后启动文本生成人工智能模型端点堆栈: ```js \$ cdk deploy GenerativeAiTxt2nluSagemakerStack ``` 在提示符处输入 y 。 启动文本生成模型端点堆栈后,完成以下步骤: **1、**返回 Web 应用程序,然后在导航窗格中选择**文本生成;** **2、输入上下文字**段预填充的是客户与座席之间关于客户电话问题的对话,但您也可以根据需要输入自己的上下文; ![image.png](https://dev-media.amazoncloud.cn/7070aa2448f5433aa86139aed4852640_image.png "image.png") **3**、在上下文下方的下拉菜单中,您可以找到一些预填充的查询。选择一个查询,然后选择**生成响应**。 ![image.png](https://dev-media.amazoncloud.cn/9d32ed961c9a437a9608f4abe279dbbf_image.png "image.png") **4**、您也可以在输入查询字段中输入自己的查询,然后选择**生成响应**。 ![image.png](https://dev-media.amazoncloud.cn/de6425c4044f4c7989d42703b33fa1a5_image.png "image.png") ### **在控制台上查看已部署的资源** 在 Amazon CloudFormation 控制台上,选择导航窗格中的**堆栈**以查看部署的堆栈。 ![image.png](https://dev-media.amazoncloud.cn/644f14bed23a40ad85f27b1bb5067f08_image.png "image.png") 在 [Amazon ECS](https://aws.amazon.com/cn/ecs/?trk=cndc-detail) 控制台上,您可以在**集群**页面上查看集群。 ![image.png](https://dev-media.amazoncloud.cn/dcebd3c617b74828b1df56e35eb04509_image.png "image.png") 在 Amazon Lambda 控制台上,您可以在**函数**页面上查看函数。 ![image.png](https://dev-media.amazoncloud.cn/0afa8c5d221d4d6399b97a920f3ca1b3_image.png "image.png") 在 API Gateway 控制台上,您可以在 **API** 页面上查看 API Gateway 端点。 ![image.png](https://dev-media.amazoncloud.cn/977f8eacf6bc449f8ccbf69b0179a533_image.png "image.png") 在 **SageMaker** 控制台上,您可以在端点页面上查看已部署的模型端点。 ![image.png](https://dev-media.amazoncloud.cn/80397f148bdf4920a45ab83024f60eec_image.png "image.png") 启动堆栈时,会生成一些参数。这些参数存储在 Amazon Systems Manager Parameter Store 中。要查看这些参数,请在 Amazon Systems Manager 控制台的导航窗格中选择 **Parameter Store**。 ![image.png](https://dev-media.amazoncloud.cn/8136a657cf084ea79dec985a7638096f_image.png "image.png") ### **清理** 为避免不必要的成本,请在工作站上使用以下命令清理创建的所有基础设施: ```js \$ cdk destroy --all ``` 在提示符处输入 `y` 。此步骤大约需要 10 分钟。检查控制台上的所有资源是否都已删除。同时删除 Amazon CDK 在 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 控制台上创建的资产 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?trk=cndc-detail)。另外,请查看 [Hugging Face 上 stable diffusion](https://huggingface.co/stabilityai/stable-diffusion-2-1-base?trk=cndc-detail) 和 [flan-t5-xl 模型](https://huggingface.co/google/flan-t5-xl?trk=cndc-detail)的相应许可证。 ***附录:代码演练*** 本节将为您概述此项目中的代码,详情请点击[**这里**](https://aws.amazon.com/cn/blogs/china/deploy-generative-ai-models-from-amazon-sagemaker-jumpstart-using-the-aws-cdk/?trk=cndc-detail)进行参考。 ![开发者尾巴.gif](https://dev-media.amazoncloud.cn/0582f309aa6740efbdc12683e05973f0_%E5%BC%80%E5%8F%91%E8%80%85%E5%B0%BE%E5%B7%B4.gif "开发者尾巴.gif")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭