使用 Amazon SageMaker 机器学习产品

构建基于 Web 的 AIGC 应用

您将了解到如何使用 Amazon SageMaker Notebook 运行 AIGC 模型,并将 AIGC 模型部署至 SageMaker Inference Endpoint (推理终端节点),并通过输入关键词直接调用这些模型并生成用户需要的图片。

简介

如何通过 SageMaker 实现 AIGC?

Amazon SageMaker 是一项完全托管的机器学习服务。借助 SageMaker 的多种功能,数据科学家和开发人员可以快速轻松地构建和训练机器学习模型,然后直接部署至生产环境就绪的托管环境。SageMaker 涵盖了 ML 的整个工作流,可以标记和准备数据、选择算法、训练模型、调整和优化模型以便部署、预测和执行操作。

在本次动手训练营中,您将了解到如何使用 Amazon SageMaker Notebook 运行 AIGC 模型,并将 AIGC 模型部署至 SageMaker Inference Endpoint (推理终端节点),并通过输入关键词直接调用这些模型并生成用户需要的图片。

另外,在本次动手训练营中,您还可以了解到如何在您的 Web 应用程序代码中调用 SageMaker Inference Endpoint。您将在 AWS Cloud9 中编写、调试和运行您的 Web 应用代码。它是一种基于云的集成开发环境 (IDE),您只需要一个浏览器,即可编写、运行和调试代码。

Amazon SageMaker 免费套餐 – 2 个月免费

Amazon Sagemaker 的功能 免费套餐前 2 个月的每个月使用情况
Studio 笔记本以及笔记本实例 Studio 笔记本上的 250 个小时 ml.t3.medium 实例,或者笔记本实例上的 250 个小时 ml.t2 medium 实例或 ml.t3.medium 实例
RStudio on SageMaker RSession 应用程序上 250 个小时的 ml.t3.medium 实例和 RStudioServerPro 应用程序的免费 ml.t3.medium 实例
Data Wrangler 25 个小时 ml.m5.4xlarge 实例
特征存放区 1000 万个写单元,1000 万个读单元,25 GB 存储
培训 50 个小时 m4.xlarge 或 m5.xlarge 实例
实时推理 125 个小时 m4.xlarge 或 m5.xlarge 实例
无服务器推理 150000 秒推理持续时间
Canvas 会话时间为 750 小时/月,每月最多 10 个模型创建请求,每个请求最多 100 万个单元/模型创建请求

1. 创建账户

  • 免费使用 100 余种云产品或服务, 长达 12 个月,任选亚马逊云科技海外区域节点。

2. 简介与前提条件

在本次动手训练营中,您将基于Amazon SageMaker 和 AWS Cloud 9 了解到:

  • 使用 Amazon SageMaker Notebook 实例测试、验证 AIGC 模型
  • 部署 AIGC 模型至 Amazon SageMaker Inference Endpoint
  • (可选)使用会话管理器连接至 SageMaker Inference Endpoint 进行远程调试
  • 使用 AWS Cloud 9 调试 Web 应用并调用 SageMaker Inference Endpoint

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


前提条件

若您希望部署您的 AIGC 模型至 Amazon SageMaker Inference Endpoint,并体验通过 Web 应用访问。请确保您有足够的限额。

1. 检查限额
ml.g4dn.xlarge for endpoint usage

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

2. 提高限额

选中

ml.g4dn.xlarge for endpoint usage

点击右上角橙色按钮 “请求增加配额”

3. 填写提升限额

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

3. 创建 Amazon SageMaker Notebook 实例

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

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

1. 登录亚马逊云科技控制台

您将在亚马逊云科技的 Tokyo 区域完成本次动手训练营

请通过以下链接登录至亚马逊云科技管理控制台:https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1#  ,确保当前区域为 Tokyo, ap-northeast-1。


2. 进入 SageMaker 服务

在查找服务处搜索 SageMaker,并点击。


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

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


4. 创建笔记本实例

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


5. 配置笔记本实例设置

在创建笔记本实例详情页中,配置笔记本实例的基本信息。

在这个设置中您需要配置以下 4 部分信息。

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

6. 配置笔记本实例权限

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

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

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

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


7. 检查信息,创建实例

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

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


8. 进入 Jupyter Notebook

点击右侧,“打开 Jupyter”。


9. 下载/上传 Notebook 文件

请打开链接 ,下载保存 Notebook 代码文件。

Notebook 代码是本次动手训练营的主要内容。该代码文件包含以下内容:

  • 在笔记本实例中下载并测试 AIGC 模型文件
  • 编写模型推理入口代码,打包模型文件,并上传至 S3 桶
  • 使用代码部署模型至 SageMaker Inference Endpoint
  • (可选)使用会话管理器连接至 SageMaker Inference Endpoint 进行远程调试

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

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

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

请确保您的 Kernel 是 conda_pytorch 开头。

打开后的界面如下。


Tips - Jupyter Notebook 快捷键

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

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

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

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

4. 在 AWS Cloud9 创建前后端 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://static.us-east-1.prod.workshops.aws/public/73ea3a9f-37c8-4d01-ae4e-07cf6313adac/static/code/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-4-endpoint" 处将名称修改为您所定义的名称,并将修改内容进行保存。如果未做任何修改,可保持默认内容不变。

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

在控制台会显示如下信息表示成功运行。


7. preview 前端 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

5. 总结

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

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

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

Stable Diffusion 最新版本:https://huggingface.co/spaces/stabilityai/stable-diffusion

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


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

[1] 删除 Cloud9

[2] 删除 SageMaker 有关资源

[3] 清空 S3 桶中的模型文件

[4] 删除 S3 桶


Last Update: 2023/02/23

关闭
云计算专家一对一解答您的问题与需求

专属热线咨询
4006380866 早 9:00-晚 8:00 (法定假期除外)