一幅绘画引领的AIGC(AI Generated Content,人工智能生成内容)热潮! 2022年9月AI绘画“太空歌剧院”获得美国科罗拉多州博览会一等奖,同年11月底ChatGPT(人工智能对话聊天机器人)推出并迅速风靡全球,从时间节点上可以看出AIGC热度先于ChatGPT。
今天一起来动手在亚马逊云科技SageMaker服务上快速搭建基于Stable Diffusion (文生图模型)的 AI 作画应用。
关于如何申请亚马逊云科技Global账号这里就不再过多赘述,请参考我的另一篇Blog《如何通过AWS Route53注册域名》中的讲解。
部署AIGC模型至Amazon SageMaker Inference Endpoint,并体验通过Web应用访问。第一步请确保您有足够的限额。
一、申请Endpoint配额
1. 请点击链接https://ap-northeast-1.console.aws.amazon.com/servicequotas/home/services/sagemaker/quotas
或登陆AWS Management Console,区域选择“亚太地区 (东京)ap-northeast-1”右上角点击“用户名”后出现下拉菜单,选择“Service Quotas” ,点击左侧“AWS服务”,搜索栏输入“SageMaker”。如图
2. 在配额搜索框中输入ml.g4dn.xlarge for endpoint usage 并选中,请注意“AWS默认配额值”为“0”需要进行“请求增加配额”操作。
3.请求提高配额时,注意“更改配额值”需大于“已应用的配额值”。如:这里我已用配额值为2,那更改的配额值至少填写为3。最后点击“请求”完成提额操作。如图
4.完成提额操作后,您的邮箱会收到提额已受理的提醒、处理及完成邮件。也可以在
Console--Service Quotas页面“配额请求历史记录” 中见到刚才的提额记录。这个受理过程持续约为24小时内(Basic用户),当然这取决于您账户的“Suppor计划”。
二、创建Amazon SageMaker Notebook实例
1.进入Console页面,确认Region:东京,在搜索栏输入:SageMaker,页面会出现服务:“Amazon SageMaker”点击
2.进入SageMaker服务界面后在左侧找到“笔记本”并点击,看到“笔记本实例”点击右侧“创建笔记本实例”。因为我们需要创建一个实例来运行 Jupyter Notebook 应用程序的ML(机器学习)计算实例。
3.“创建笔记本实例”注意事项:
A. 笔记本实例设置
a.“笔记本实例名称”根据个人喜好自己填写;
b.“笔记本实例类型”选择“ml.g4dn.xlarge”
c.“平台标识符”选择“Amazon Linux 2, Jupyter Lab 3”
d. 展开“其他配置”选项,“卷大小”建议设为“75”
B. 权限和加密
IAM角色选择“创建新角色”,保持默认值,点击“创建角色”
其他选项保持默认值点击右下角“创建笔记本实例”。
若是出现下图错误:
请返回“Service Quotas”页面检查SageMaker--ml.g4dn.xlarge笔记本实例配额,若“已应用的配额值”=0,请进行提额操作,步骤同前面Endpoint提额操作。
亚马逊科技Support Team受理ml.g4dn.xlarge for notebook instance usage提额成功后,请重新进行“创建Amazon SageMaker Notebook实例”操作,“创建笔记本实例”过程持续数分钟。你可以通过点击“刷新”按钮,确认创建是否成功。如图
三、打开Jupyter Notebook
四、下载/上传Notebook Code
Download link
Notebook代码是本次动手训练营的主要内容。该代码文件包含以下内容:
在笔记本实例中下载并测试AIGC模型文件
编写模型推理入口代码,打包模型文件,并上传至S3桶
使用代码部署模型至SageMaker Inference Endpoint
(可选)使用会话管理器连接至SageMaker Inference Endpoint进行远程调试
1. 在Jupyter Notebook中点击图1“Upload”找到刚下载的Code文件打开,图2左侧可以见到Code文件,再点击右侧蓝色“Upload”,图3是操作成功的截图。
点击上传成功的文件进入Notebook中
2. Notebook打开时显示“Kernel not found”,请确保Kernel匹配conda_pytorch_p38,这里请选择conda_pytorch_p39,再点击“Set Kernel”。
3. 在Notebook中Running Code
Code 执行时你切换至另一页面时,会见到Jupyter页面抬头呈现,再切回Jupyter可以看到内容输出(图1)。也可以通过Code前面的括号进行区分(图2)
Running过程中“2.在Notebook中配置并使用模型—加载模型”有Warning提示请忽略,这里不影响图片生成。
这里会生成两张图片,如图
当然,也可以根据自己的喜好更改此处的Prompts 内容生成自己喜欢的图片。
五、可以借助亚马逊云科技Cloud 9服务布署Web应用来调用SageMaker Endpoint
1. Console页面搜索栏输入“Cloud 9”并进入,点击“Create environment”
2. Create environment页面,Name名称请保持您的 AWS Cloud9 环境分配一个账户内唯一且符合命名要求的名称。其余部分保持默认值,滑动到页面末端点击右下角“Create”,直到提示创建成功。
3. 点击“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
5. 在Cloud9中安装Flask和boto3
在指令中输入:pip3 install Flask
再接着输入指令:pip3 install boto3 安装boto3
6. 运行app.py
打开SampleWebApp文件夹,找到app.py选中点击鼠标右键点击“Open”,再点击“Run”运行代码
7. 预览Web应用
点击Cloud9控制台正上方“Preview—Preview Running Application”,出现Web页面。Web页面可以点击“Browser”右侧图标,可以弹出到新窗口。
假如在Web页面输入相关信息后,生成图片报错(下图),请检查Cloud9 Environment是否运行正常,重新运行就可以正常生成图片了。
以上,是这次动手训练营的实操及遇到的一些问题排错。
最后,各位一定要记得清除本次实验开启的资源。
实验参考手册:
https://catalog.us-east-1.prod.workshops.aws/workshops/3b86fa89-da3a-4e5f-8e77-b45fb11adf4a/zh-CN