端到端体验 AIGC — 从 SageMaker 到 Web 应用

发布时间: 2023 年 5 月 25 日
生成式人工智能
机器学习和 AI
Sagemaker
教程
亚马逊云科技
Olawale Olaleye
亚马逊云科技使用经验
中级
完成所需时间
操作时长约 60 分钟,部署及初始化约 20 分钟
完成所需费用

以亚太地区(东京)区域为例,如果您将方案部署在该区域,且您按照教程中的步骤操作并在教程结束的 1 小时内终止相应资源,所需费用将不超过 3USD。

主题

AIGC

受众

人工智能应用程序开发人员,数据科学家,全栈开发人员,前端开发人员,业务开发人员

前提条件

注册 / 登录 亚马逊云科技海外区域账户

上次更新时间
2023 年 5 月 25 日
相关行业

通用

相关产品

前言

AIGC (Artificial Intelligence-Generated Content) 指通过 Al 模型帮助我们生成文本、图片、视频音乐。 Stability Al 发布了 Stable Diffusion 开源预训练模型可以通过文本生成图片。本教程您将通过使用 Amazon Sagemaker 部署 Stable Diffusion 模型,并使用云中开发环境 Cloud 9 来编写、调试、部署 Web 应用代码。您可以跟随我们的操作手册,端到端地体验 AIGC。

在本手册中您将基于 Amazon SageMaker 和 Cloud 9 了解到:

  • 使用 Amazon SageMaker Notebook 实例测试、验证 AIGC 模型
  • 部署 AIGC 模型至 Amazon SageMaker Inference Endpoint
  • 使用 Cloud 9 调试 Web 应用并调用 SageMaker Inference Endpoint

本手册的操作流程如下:

若您跟随本手册完成,您将会得到一个具有 AIGC 能力的 Web 应用

视频教程

前提条件

  • 拥有亚马逊云科技海外区账号
  • 您将在亚马逊云科技的 Tokyo 区域完成本次操作手册,请点击右侧登陆控制台页面进入到所需区域。
  • 请确保您有足够的限额。本操作手册中需要的服务类型有:
    • Amazon SageMaker Notebook: ml.g4dn.xlarge
    • Amazon SageMaker Inference Endpoint: ml.g4dn.xlarge

第一步:限额检查

您也可以联系您的销售代表,指导您提升限额并跟踪进度。联系我们 »

1. 检查 Amazon SageMaker Notebook 限额

请点击 链接。在搜索框中输入 ml.g4dn.xlarge for notebook instance usage

若您的限额如图所示,在 ml.g4dn.xlarge for notebook instance usage 行,第二列已应用的配额值为 0,请继续以下步骤

提高限额: 选中 ml.g4dn.xlarge for notebook instance usage,点击右上角橙色按钮“请求增加配额”

填写提升限额: 请在输入框中输入您期待的限额,例如“1”。填写完毕后,点击橙色“请求”按钮提交。

2. 检查 SageMaker Endpoint 限额

请点击 链接。在搜索框中输入 ml.g4dn.xlarge for endpoint usage

若您的限额如图所示,在 ml.g4dn.xlarge for endpoint usage 行,第二列已应用的配额值为 0,请继续以下步骤

提高限额: 选中 ml.g4dn.xlarge for endpoint usage,点击右上角橙色按钮“请求增加配额”

填写提升限额: 请在输入框中输入您期待的限额,例如“1”。填写完毕后,点击橙色“请求”按钮提交。

第二步:创建 Amazon Sagemaker Notebook 实例

Amazon SageMaker Notebook 实例是运行 Jupyter Notebook 应用程序的 ML(机器学习)计算实例。SageMaker 管理实例和相关资源的创建。 您可以在您的 Notetbook 实例中使用  Jupyter Notebook 来准备和处理数据、编写代码来训练模型、或将模型部署到 SageMaker I中,以及测试或验证您的模型。

在本节中,您将开启一个 Amazon SageMaker Notebook 实例,导入用于运行本次动手训练营中的 Jupyter Notebook 代码。

1. 进入 SageMaker 服务

在控制面板查找服务处搜索 SageMaker,并点击。

2. 进入笔记本 (Notebook) 实例控制面板

在左侧菜单栏,点击“笔记本实例”,进入笔记本 (Notebook) 实例控制面板。

3. 创建笔记本实例

点击右上角橙色”创建笔记本实例“按钮。

4. 配置笔记本实例设置

在创建笔记本实例详情页中,配置笔记本实例的基本信息。在这个设置中您需要配置以下 4 部分信息。

  • 笔记本实例名称
    • 您需要为您的实例命名,例如 stable-diffusion
  • 笔记本实例类型
    • 请选择 ml.g4dn.xlarge 实例类型
    • 该类型实例搭载 NVIDIA T4 Tensor Core GPU 显卡,可以提供模型中所需执行浮点数计算的能力
  • 平台标识符(操作系统及 Jupyter Notebook 版本)
    • 请选择 Amazon Linux 2, Jupyter Lab 3
  • 实例存储(卷大小)
    • 请点击展开“其他配置”选项,在卷大小中输入实例大小
    • 推荐至少 75GB 磁盘大小,用于存储机器学习模型

5. 配置笔记本实例权限

您需要为您的笔记本实例创建一个 IAM 角色,用于调用调用包括 SageMaker 和 S3 在内的其他服务。例如上传模型,部署模型等。

在 IAM 角色处,点击下拉列表,选择”创建新角色“。

在弹出的配置页面中,请保持默认,并点击右下角橙色“创建角色”按钮。

随后将会看到类似提示信息:

6. 创建实例

检查先前配置的信息,确认无误后请点击右下角橙色按钮”创建笔记本实例“。

创建过程需要若干分钟,请等待。您可以点击“刷新”按钮,等待实例创建完成。

7. 进入 Jupyter Notebook

点击右侧“打开 Jupyter”链接。

第三步:通过 Notebook 体验和部署 Stable Diffusion 模型

在本节中,您将通过 Notebook 体验和部署 Stable Diffusion 模型。

1. 下载 / 上传 Notebook 文件

请打开 链接,下载保存 Notebook 代码文件。
Notebook 代码是本次动手训练营的主要内容。该代码文件包含以下内容:

  • 在笔记本实例中下载并测试 AIGC 模型文件
  • 编写模型推理入口代码,打包模型文件,并上传至 S3 桶
  • 使用代码部署模型至 SageMaker Inference Endpoint

随后在 Jupyter Notebook 实例中上传下载后代码。 请点击右上角的“upload”按钮,选择刚刚下载的 Notebook 文件

点击蓝色"upload"按钮,完成上传过程。

上传完成后的文件如图所示,请点击该文件进入 Notebook 中。

请确保您的 Kernel 是 conda_pytorch 开头。若不是请点击切换。

打开后的界面如下。

2. 运行 Notebook 脚本

通过 Notebook 脚本,您可以了解到:

  1. Stable Diffusion 模型生成图片的过程
  2. 在 Sagemaker Notebook Instance 中运行该模型
  3. 使用 Sagemaker Notebook Instance 部署模型并进行推理

本节您将运行所有代码,代码执行过程中会依次完成 Stable Diffusion 模型相关类和函数的代码定义、推理测试,并打包代码和模型,然后部署模型至 Sagemaker 推理终端节点,全部流程预计将花费 10-15 分钟。

请点击 Cell 菜单中的“Run All”选项。

3. 查看运行结果

在 Notebook 代码第一节中,您可以修改模型版本的环境变量,并重新运行笔记本脚本,分别体验 SD1.5 模型和 SD2.1 模型。

在 Notebook 代码第二节中,您可以查看在 SageMaker Notebook 中运行的结果。

您也可以通过修改提示词(Prompt),重新生成您的图片。

在 Notebook 代码第三节中,模型将会部署到 Amazon Sagemaker Inference Endpoint(推理终端节点),推理终端节点可以帮助您满足机器学习推理需求,并可以扩展模型部署,降低推理成本,在生产中更有效地管理模型,并减少运用负担。

您可以在代码中查看输出的终端节点名称,以及终端节点图片运行结果。

Tips - Jupyter Notebook 快捷键

Jupyter Notebook 有两种键盘输入模式。

  1. 编辑模式:允许在单元中键入代码或文本;此时的单元框线是绿色的。
  2. 命令模式:键盘输入运行程序命令;此时的单元框线是蓝色。

部分命令模式常用指令快捷键,更多快捷键可以在命令模式中使用“H"查看

  按键 命令 按键 命令 按键 命令
1 Enter 进入编辑模式 ESC 编辑模式→命令模式 Ctrl/⌘-Enter 运行本单元
2 Shift-Enter 运行本单元,选中下个单元 Y 单元转入代码状态 M 单元转入 markdown 状态
3 A 在上方插入新单元 B 在下方插入新单元 Up/K 选中上方单元
4 Down/J 选中下方单元 X 剪切选中的单元 C 复制选中的单元
5 V 粘贴到下方单元 Shift-V 粘贴到上方单元 D,D 删除选中的单元
6 Ctrl/⌘-S 保存 Notebook I,I 中断 Notebook 内核 0,0 重启 Notebook 内核

第四步:使用 Cloud9 创建前后端 AIGC Web 应用

AWS Cloud9 是一种基于云的集成开发环境 (IDE),您只需要一个浏览器,即可编写、运行和调试代码。它包括一个代码编辑器、调试程序和终端,并且预封装了适用于 JavaScript、Python、PHP 等常见编程语言的基本工具,您无需安装文件或配置开发计算机,即可开始新的项目。

在本节中,您将创建一个 Cloud9 环境并导入用于本次动手训练营的 web 应用代码。

1. 进入 Cloud9 服务

在查找服务处搜索 Cloud9,并点击进入服务面板。

2. 创建 AWS Cloud9 环境

点击右上角橙色”Create environment“按钮。

在 Create environment 界面的,为您的 AWS Cloud9 环境分配一个账户内唯一且符合命名要求的名称。可以命名:Text-To-Image-Web-App

其他部分配置保持默认,在页面底部点击橙色的 Create 按钮创建环境。 环境的创建将花费 1-2 分钟的时间。

3. 进入 AWS Cloud9 环境

在 AWS Cloud9 主页面 Environments 列表里,点击 Open 打开创建的环境。

4. 下载/上传 Web 应用

在 Cloud9 下方的控制台中输入以下指令下载保存 Web 应用程序代码压缩文件,并将该压缩文件进行解压。

cd ~/environment
wget https://seo---s3---cn-north-1.amazonaws.com.rproxy.goskope.com.cn/aws-aigc/SampleWebApp.zip
unzip SampleWebApp.zip

解压后您将得到 SampleWebApp 文件夹。该文件夹包含以下内容:

  • 后端代码 app.py:接收前端请求并调用 SageMaker Endpoint 将文字生成图片。
  • 两个前端 html 文件 image.html 和 index.html。

5. 在 AWS Cloud9 上安装 Flask 和 boto3

在 Cloud9 下方的控制台中输入指令安装 Flask。

pip3 install Flask

输入指令安装 boto3。

pip3 install boto3

6. 运行 app.py

在左侧项目文件夹中打开 app.py。

如果您在 Notebook 部署 endpoint 的环节修改过 endpoint 名称,请在 app.py endpoint_name = "stable-diffusion-v1-5-endpoint" 处将名称修改为您所定义的名称,并将修改内容进行保存。如果未做任何修改,可保持默认内容不变。

点击 AWS Cloud9 上方的 Run 按钮运行代码。

7. 预览前端 Web 页面

为方便大家体验,本实验使用了 8080 端口,通过使用 AWS Cloud9 的 preview 功能预览网页进行体验。关于 AWS Cloud9 预览应用程序功能的详细介绍可以参考: 预览正在 AWS Cloud9 集成开发环境 (IDE) 中运行的应用程序
 
在 AWS Cloud9 环境中点击 Run 按钮左侧的  Preview

接下来,在下拉菜单中点击 Preview Running Application。

点击后, AWS Cloud9 环境中将会打开本次实验提供的 web 页面。

注:如果您希望在互联网上运行应用程序,可以参考通过互联网共享运行的应用程序进行配置

8. 输入信息生成图片

在 Web 页面可以通过自定义图片长度和宽度,以及在 Prompt 输入框处输入语句或描绘性词汇生成图片。 不同图片的语句请用分号";"间隔。

在输入语句时,您可以尽可能的完善您的语句,以便AI绘制出的图片更贴合您的预期。 比如,通过描述性词语,如 cartoon style、van gogh style、realistic 表明图片的整体风格。

如,可将长度和宽度都设置成 512,输入以下描绘性语句生成一张卡通风格的宇航员猴子图片,以及一张超级英雄的图片。

a cartoon style cute monkey wearing a space suit, star background; clear portrait of a superhero concept between spiderman and batman, cottagecore

总结与资源清理

在前面的内容中,您通过开启一个 Amazon SageMaker Notebook,导入 Jupyter Notebook 代码运行并测试了AIGC 模型。 随后将模型部署至 Amazon SageMaker Inference Endpoint,并通过在 Coud9 创建 Web 应用调用Amazon SageMaker Inference Endpoint。后续您可以进一步调优模型并进行测试,包括添加对中文语言对支持。

有关 SageMaker 的产品介绍以及有关文档可参考:

您可以通过以下信息查看更多关于 Stable Diffusion 的内容:

更多关于Stable Diffusion的内容请参考官方文档,如有与本文档不一致,请以官方文档内容为准。

您已经完成本教程的所有指导步骤,在这一步骤中,您将清除本教程创建的所有资源,以保证不会再产生任何费用。

如需清除本次实验开启的资源,请在控制台逐一删除 Cloud9 环境、S3 存储桶,以及 SageMaker 里创建的 Notebook,Endpoint 以及 Model 等资源,删除步骤请参考以下链接:

  1. 删除 Cloud9
  2. 删除 SageMaker 有关资源
  3. 清空 S3 桶中的模型文件
  4. 删除 S3 桶