基于SageMaker Notebook快速搭建Stable Diffusion – AI作画可视化环境
本文主要介绍如何使用 Amazon SageMaker Notebook 机器学习服务轻松托管 Stable Diffusion WebUI,一键部署开箱即用的 AIGC 图片方向轻量级应用。
通过 Amazon CloudFormation 基础设施即代码的服务,实现底层环境、AI 模型和前端 Stable Diffusion WebUI 的快速部署,帮助用户在 15~20 分钟部署一套文生图、图生图的 AI 应用。此方案适合企业级客户对 AIGC 图片方向做前期调研和快速验证、小型团队快速搭建轻量级 AI 应用的业务场景。
[注]:此方案目前提供基于 Stable Diffusion 1.5 的图片生成,基于 dreambooth 的图片训练和推理;暂不提供脚本(script)和插件(extension)的技术支持,读者可持续关注后续方案的功能迭代。
方案架构
方案优势
- 本方案使用 CloudFormation 一键部署,仅需点击几个步骤,即可快速在您的 AWS 账户中成功部署一套 AIGC 图片方向的 web 应用环境,交互界面简洁友好,帮助用户快速体验文本生成图片、图片生成图片等 AI 服务。
- 底层使用 Amazon SageMaker Notebook Instance 托管的 Jupyter 笔记本实例,您无需关心基础环境(如存储、网络等)的构建及底层基础设施运维。
- 方案采用全托管的 Stable Diffusion AI 模型服务(1.5 轻量版本,包含 Stable Diffusion WebUI 与 InvokeAI 两个界面),具备良好的开源项目使用体验,并支持根据您的需要安装插件以扩展使用场景(如 ControlNet)。
- 用户可使用自带的图片数据微调模型,产出的模型可基于自动化流水线工具快速部署上线至推理节点,方便规模化的图片推理调用。
- 本方案完全开源,用户可以在 SageMaker Notebook 中对模型和扩展(extension)定制开发,满足自身业务需求。
方案组件
Amazon SageMaker Notebook
Amazon SageMaker 笔记本实例是运行 Jupyter Notebook 应用程序的机器学习 (ML) 计算实例。 SageMaker 管理实例和相关资源的创建。在您的笔记本实例中使用 Jupyter 笔记本来准备和处理数据、编写代码来训练模型、将模型部署到 SageMaker 托管,以及测试或验证您的模型。
Stable Diffusion 模型
Stable Diffusion 是由 CompVis 、 Stability AI 和 LAION 共同开发的一个文本转图像模型,它通过 LAION-5B 子集大量的 512×512 图文模型进行训练,用户只要简单的输入一段文本,Stable Diffusion 就可以迅速将其转换为图像。同样,用户也可以置入图片或视频,配合文本对其进行处理。
用户交互界面
Stable Diffusion WebUI + 使用示例参考
Stable Diffusion WebUI 是 Stable Diffusion 的一个浏览器交互界面,它提供了多种功能,如 txt2img、img2img 等,还包含了许多模型融合改进、图片质量修复等附加升级。通过调节不同参数可以生成不同效果,用户可以根据自己的需要和喜好进行创作。它不仅支持生成图片,使用各种各样的模型来达到你想要的效果,还能训练你自己的专属模型。
以文字生成图片为例,用户可在 txt2img 界面,使用提示词生成期望图片,步骤如下:
- 点击 txt2img 进入文生图界面
- 在提示词输入框内输入提示词
- 点击 Generate 按钮即可生成图片
生成一对 90 年代中国情侣,尺寸 512×512,一次生成 4 张图,提示词(Prompt):
A pair of young Chinese lovers, wearing jackets and jeans, sitting on the roof, the background is Beijing in the 1990s, and the opposite building can be seen
生成背景为雏菊的罗马士兵半身像,尺寸 512×512,一次生成 4 张图,提示词 (Prompt):
A roman soldier with daisies in the background, bust figure
InvokeAI + 使用示例参考
InvokeAI 是 Stable Diffusion 的一个实现,它是开源文本到图像和图像到图像生成器。 它提供了一个具有各种新功能和选项的简化流程,以帮助图像生成过程。
提示词 (Prompt):
temple in ruines, forest, stairs, columns
提示词 (Prompt):
A pair of young Chinese lovers, wearing jackets and jeans, sitting on the roof, the background is Beijing in the 1990s, and the opposite building can be seen
方案部署
方案部署操作步骤
- 登录控制台,在控制台页面右上角切换区域至 us-east-1。
- 在 Service 搜索框中输入 Cloudformation,点击进入。
- 创建堆栈 -使用新资源(标准)- Amazon S3 URL,填入 https://xiekl.s3.cn-northwest-1.amazonaws.com.cn/sd-webui.yml。
- 填入堆栈名称,Instance Type 建议选择 g5.2xlarge,磁盘 Volume 大小默认为 100G,选择 WebUI Type,默认是 auto 代表 Stable Diffusion WebUI,WebUI Version 选择 0316,点击 下一步 。
- 设置保持默认,点击 下一步。
- 确认配置(维持默认即可),勾选 我确认… ,点击 提交 ,等待 15-20 分钟部署完成。
使用 Stable Diffusion WebUI 进行文生图
- 创建堆栈后等待资源陆续启动(约 20 分钟),待堆栈状态显示为“CREATE_COMPLETE”后,点击“输出”。点击“键”为“WebUI URL”相应的“值”位置的 URL。
- 进入 WebUI 界面,输入 prompt,点击 generate 即可生成图片。
使用 Stable Diffusion WebUI 进行训练 (微调)
下面介绍如何使用 Stable Diffusion WebUI 训练您自己的图片。
首先要创建一个模型。导航到 DreamBooth ⻚面。
- 创建成功后,如下图所示。
- 设置训练参数,导航到 Select ⻚面,如图
- 在 input ⻚面,设置 Setting,Basic 的参数保持默认即可,点击右侧箭。
- 点击 Advance 右侧箭头,展开选项卡。在 Mixed Precision 选择 fp16,Memory Attention 选择 xformers,其他选项保持默认即可,如下图所示。
- 点击 Concepts 选项卡,在 Dataset Directory 输入实例图片所在的目录。我们事先准备了示例图片 在
/data/images
中,读者也可以把自己的图像文件放在该目录中。 - 向下拉动滚动条,在 Instance Prompt 中输入"a photo of a zxw dog",在 Class Prompt 中输入"a photo of dog",其他保持默认。
- 点击⻚面上方的 Train 按钮。
- 观察右侧 Output 选项卡的训练进度,等待训练完成。
- 训练完成后,点击刷新按钮,模型列表中将出现刚训练好的模型,选择新训练的模型。
- 点击 txt2img,跳转到文生图⻚面。输入 Prompt,注意要带上 zwx 前缀,查看结果。
- 下面介绍如何用自己的图片进行训练。在 Cloudfomation 的输出中,点击 NotebookURL 链接。
- 如下图所示,点击 sd-webui 进入到
data/images/
文件夹。在文件上依次点击右键,删除文件。
- 点击 Upload files 按钮,上传您自己的图片作为训练集。上传完成后,重复上述步骤完成训练过程。
总结
本文简单介绍了如何使用托管的笔记本服务 SageMaker Notebook 来一键部署 Stable Diffusion WebUI,轻松构建 AI 生成图片的界面化、快速验证环境。方案只需点击几次即可实现自动化部署,基于托管服务的特性让您无需忧心底层基础设施的搭建与运维,同时拥有良好的开源项目体验。您还可以使用自己的图片对模型进行微调,为定制特色的 AIGC 应用做好准备。
参考
https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/
https://github.com/AbdBarho/stable-diffusion-webui-docker
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://github.com/invoke-ai/InvokeAI
作者
本文为推广文章,由以下原作者共同著作:
张铮
亚马逊云科技机器学习产品技术专家,负责基于亚马逊云科技加速计算和 GPU 实例的咨询和设计工作。专注于机器学习大规模模型训练和推理加速等领域,参与实施了国内多个机器学习项目的咨询与设计工作。
杨佳欢
亚马逊云科技 AI/ML 产品经理。专注于云计算、人工智能技术领域。
赫祎诺
亚马逊云科技 AI/ML 产品经理,致力于帮助客户加速云上机器学习创新之旅。
戴怡青
亚马逊云科技解决方案顾问,曼彻斯特大学数据科学硕士,负责挖掘市场需求与热点,专注于数据科学领域,赋能和支持客户上云加速业务发展和创新。
刘楚楚
亚马逊云科技解决方案顾问,昆士兰大学 IT 硕士,负责云计算市场探索与挖掘,为客户提供数字化转型咨询,帮助加速业务发展和创新。
评论已关闭