在亚马逊云科技Amazon SageMaker上进行Stable Diffusion模型训练和推理

news2024/11/20 16:34:36

 Stable Diffusion Quick Kit是一个基于亚马逊云科技Amazon SageMaker进行Stable Diffusion模型快速部署的工具包,包括了一组示例代码、服务部署脚本、前端UI,可以帮助可以快速部署一套Stable Diffusion的原型服务。

 本文将介绍如何在SageMaker Training Job中加载进行Stable Diffusion XL(以下简称SDXL)的Dreambooth微调训练,及训练完成后使用Stable Diffusion WebUI开源框架进行模型部署和即时推理,实现训推一体的整体pipeline及业务流程。

 背景介绍

 Dreambooth微调训练

 Dreambooth是Stable Diffusion模型训练的一种方式,通过输入instance_prompt定义实体主体(e.g.人物或者实体物品)和instance images的fine-tuning图像,抽取原SD中UNet,VAE网络,将instance prompt和instance images图像与之绑定,以便后续生成的图片中只要有instance的prompt中的关键词,即可保持输入instance图片里面的主体实体,实现人物和物品生图时的高保真效果。

 Stable Diffusion WebUI

 Stable Diffusion WebUI是基于Stable Diffusion开发的一个开源的可视化软件,WebUI在Stable Diffusion txt2img,img2img生图基础上拓展了很多插件来增强Stable Diffusion的生图能力,比如Ultimate Upscale、Inpain等,使得开发者可以方便地通过界面拖拽或者API调用进行Stable Diffusion模型的加载和调用。

 相对于Diffuser SDK的模型推理,WebUI有更丰富的调用参数及更多的插件支持,因此同样模型的出图效果某些场景下会比Diffuser更好,这也是目前业界不少客户使用WebUI API方式进行推理生图的原因。

 训练+推理业务场景

 在遇到使用Stable Diffusion模型微调和推理的业务场景中,针对ToB端客户,通常会上传需要训练的图像,使用Dreambooth训练人物(如模特或者数字人)和商品(如箱包,衣服),然后针对训练好的模型批量生成海报/广告/logo等文案素材的图像,该过程并不需要像app应用一样实时交互的出图,而是一个离线异步的过程。

 这种情况下,可以在训练任务的算力机上,同时安装部署模型微调和模型推理的框架,利用SageMaker Training Job方式,将微调和推理放到一个job中,微调训练完成,即加载model进行推理出图,从而一次性完成模型微调(Dreambooth)+模型推理(WebUI API)整个完整pipeline工作,将推理的模型改造到训练任务中,而不用再单独部署模型的服务端点。

 同时,SageMaker Training Job支持Spot竞价实例,训练任务完成则推理出图也完成,机器资源释放,进一步帮助用户节约整体的成本。

 SageMaker Training Job中进行SDXL Dreambooth Fine-tune

 Dreambooth训练框架

 Stable Diffusion 1.x版本时,Dreambooth fine-tune有多种开源版本的微调框架,SDXL版本后,Diffuser官方在HuggingFace社区发布了基于LoRA的Dreambooth fine-tune框架,代码相对于原1.x版本更加简洁,且使用了更新的xformers加速框架,支持Flash Attension v2,其Pytorch版本也升级到了2.0以上。

 其中train_dreambooth_lora_sdxl.py就是微调训练Dreambooth的代码。

 SageMaker Training Job脚本

 在SageMaker Training Job中,可以clone上一章节的diffuser官方repo训练代码作为source训练脚本目录,并将其依赖的xformers,deepspeed等依赖打包在Docker训练镜像中,通过shell entrypoint方式在算力机上拉起其训练脚本。

 详细如下:

  • 准备source源代码目录并clone官方代码

  • 打包训练任务的docker镜像(使用Amazon预置的0.0+cuda118 HuggingFace DLC容器作为基础镜像,与diffuser官方pytorch/cuda版本保持一致)

  • dockerfile编写

  • build镜像并推送到Amazon ECR镜像仓库

  • 准备训练图像,这里我们使用官方示例dataset图像

  • 图像数据上传到$images_s3uri的S3路径,以便SageMaker Training Job拉取。

  • SageMaker Estimator拉起Training Job

  • 训练任务脚本编写,这里采用shell entrypoint方式,方便调用diffuser官方脚本,且传递环境变量。

 我们通过SageMaker提供的Pytorch的Estimator训练器SDK,拉起Training Job训练任务。

 Dreambooth训练调参

 SDXL Dreambooth Fine-tune的训练参数与之前1.x版本调参类似,这里把Diffuser框架及SageMaker新加的主要配置参数说明如下:

  • ‘images’:f”s3://{bucket}/dreambooth-xl/images/”:上一步骤中准备好的dreambooth微调图像数据,通过inputs参数指定S3路径,SageMaker会自动将该路径下训练图像上传到训练算力机的/opt/ml/data/input/images目录下

  • keep_alive_period_in_seconds:该参数是SageMaker Training Job的warmpool,设置后可以把下一次训练机器保持在该用户的一个资源池中,这样方便多个SDXL Dreambooth训练时的镜像拉起,节省耗时的开销

  • enable_xformers_memory_efficient_attention:启用xformers的flash attention关注度计算优化,加速训练过程

  • train_use_spot_instance:是否使用spot竞价实例进行训练,进一步节省成本

  • max_run:训练任务的最大运行时间

  • max_wait:等待竞价实例的最长时间,如果使用spot竞价实例该参数是必须的

SageMaker Training Job中安装部署Stable Diffusion WebUI

 如上文所述,训练完成后可以直接使用fine-tuned模型进行推理出图,这里采用Stable Diffusion WebUI进行推理,需要在training job训练算力机上安装部署开源的WebUI组件,将模型目录同步到WebUI的model location下,然后调用WebUI API text2img/img2img出图,详细如下:

 docker镜像脚本

 由于是在training job中进行推理,扩充训练任务的dockerfile镜像文件,将Stable Diffusion WebUI组件及依赖同样的方式和上文中training的dockerfile打包到一起:

 WebUI启动脚本

 使用上述章节同样的build & push脚本,将docker镜像打包推送,然后在统一训练和推理的entry point脚本中启动训练任务,任务完成后启动WebUI。

 SageMaker Training Job中对Fine-tuned Dreambooth Model进行推理

 在start_sd_webui.py脚本启动WebUI服务器之后,即可使用WebUI API进行txt2img/img2img的推理调用,其推理API与官方参数一致。

 由于在同一台训练算力机上,其URI为localhost(0.0.0.0)对应端口及API路径前缀。

 总结

 本文介绍了在Quick Kit中使用SageMaker Training Job对SDXL模型进行Dreambooth微调,并且可以在训练完成后对fine-tuned后的模型使用Stable Diffusion WebUI进行推理,实现从训练到推理的一体化操作,满足客户对于快速训练人物或商品实体并批量推理出图的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

想要上抖音同城热搜榜很难吗

首先,我们需要了解抖音同城热搜榜的推荐机制。抖音采用了先进的推荐算法,根据用户的行为、兴趣和社交关系进行内容推荐。一个具有话题性的内容往往能够引发用户的讨论和传播。在创作过程中,可以从热门事件、潮流话题、地域特色等方面切入&…

VB.Net 任务管理器相关操作

WindowsExplorer 任务管理器 程序对进程文件操作类:(实例) 1、打开进程文件目录 2、激活窗口(有主窗口的程序) 3、关闭程序(向进程文件发送关闭指令) 4、结束进程 5、挂起 6、恢复挂起 …

MDNNSVM

介绍 h v , l ^{v,l} v,l σ \sigma σ((W v , l ) T ^{v,l})^T v,l)Th v , l − 1 ^{v,l-1} v,l−1b v , l ^{v,l} v,l) h 1 ^1 1 σ \sigma σ( ∑ v 1 V \sum_{v1}^V ∑v1V​W v , L 1 ) T ^{v,L1})^T v,L1)Th v , L ^{v,L} v,Lb v , L 1 ^{v,L1} v,L1) h 1 ^1 1是融合DN…

群晖synology DSM 7.2设置钉钉Webhooks通知

现在越来越多的小伙伴都有了自己的Nas系统,为了更加方便的接收Nas的消息,这篇文章带着大家一起配置一个钉钉(机器人)即时消息通知 首先登录钉钉的开放平台:开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…

getBoundingClientRect使用场景(table固定表头)

getBoundingClientRect()用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,是DOM元素到浏览器可视范围的距离(不包含文档scroll的部分)。该函数返回一个Object对象,该对象有6个属性&#xff…

【前端学习】—箭头函数和普通函数的区别(十四)

【前端学习】—箭头函数和普通函数的区别(十四) 一、箭头函数和普通函数的区别 const obj{fullName:zz,sayName(){console.log(this.fullName,this.fullName)//zz}}obj.sayName();const obj{fullName:zz,sayName:()>{console.log(this.fullName,this…

魔行观察》一款免费的品牌/商业地产数据查询平台

给大家推荐一款免费的商业数据查询平台"魔行观察",可免费查询品牌,品牌门店,商场,全国小区,写字楼等相关信息,更多数据敬请期待 小程序搜索:魔行观察 即可使用

光致发光荧光量子检测溶液有哪些优点?

光致发光荧光量子检测是一种测试技术,可以用来测量荧光材料的荧光光谱、荧光量子效率和发光寿命等参数,具有高灵敏度、高分辨率和自动化程度高等优点。在溶液状态下,荧光材料会吸收一定波长的光能并释放出次级光,即荧光&#xff0…

77.每日一练:迭代器遍历容器(牛客)

目录 问题描述&#xff1a; 代码解决以及思想 知识点 问题描述&#xff1a; 代码解决以及思想 #include <iostream> // write your code here...... #include <vector>using namespace std;int main() {// write your code here......vector<int> v;for (…

WMS系统盘点管理

一、定义 WMS系统的盘点管理是指对仓库内的物料、商品和库存进行周期性或特定时点的实际数量核对和比对系统记录的过程。它旨在确保仓库库存的准确性&#xff0c;发现和纠正库存偏差&#xff0c;并提供可靠的库存数据供企业决策使用。 二、流程 WMS系统盘点管理的流程通常包括…

深度学习 | CNN卷积核与通道

10.1、单通道卷积 以单通道卷积为例&#xff0c;输入为&#xff08;1,5,5&#xff09;&#xff0c;分别表示1个通道&#xff0c;宽为5&#xff0c;高为5。 假设卷积核大小为3x3&#xff0c;padding0&#xff0c;stride1。 运算过程&#xff1a; 不断的在图像上进行遍历&#…

Java对象数组练习

定义数组存储三个商品对象&#xff0c;商品的属性&#xff1a;id&#xff0c;名字&#xff0c;价格&#xff0c;库存&#xff0c;创建三个商品对象&#xff0c;并把商品对象存入到数组中 public class Goods {private String id;private String name;private double price;pri…

【深度学习基础知识(一):卷积神经网络CNN基础知识】

深度学习基础知识 深度学习基础知识&#xff08;一&#xff09;&#xff1a;卷积神经网络CNN基础知识 卷积神经网络CNN基础知识 0、目录 1. CNN卷积神经网络的特点 2. 卷积操作基础知识 2.1 卷积操作的概念2.2 卷积操作的种类2.3 卷积操作后特征图谱大小计算公式 3. 池化操…

定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%

随着智能设备的市场下沉&#xff0c;手游市场迎来了爆发式增长&#xff0c;《迷你世界》作为一款于2015年推出的手游&#xff0c;一经问世就饱受欢迎。上线短短三年&#xff0c;迷你世界在应用商店下载量已经高达2亿次&#xff0c;周下载量两千万&#xff0c;稳居第一名&#x…

只会Python,怎么用PC控制无人机自动飞行?

PC-SDK是阿木实验室 (AMOVLAB) 为了简化开源飞控的控制协议MAVLink&#xff0c;优化和维护的一个基于PC电脑运行MAVSDK(支持Windows和Ubuntu)的Python SDK库。 相对于传统的无人机控制开发&#xff0c;开发者无需掌握C/C语言和ROS等相关知识&#xff0c;只要学会Python编程及懂…

百度最强大模型发布,百度网盘和文库的实测体验

&#x1f341; 展望&#xff1a;若本篇讲解内容帮助到您&#xff0c;请帮忙点个赞吧, 您的支持是我继续写作的最大动力. 关注我, 带您了解更多 AI 资讯和 AI 小技巧. 引言 2023年百度世界大会在10月17日的春光中于北京的首钢园精彩召开。这次大会的核心主题——“生成未来 PRO…

汽车屏类产品之CMS:流媒体后视镜Camera Monitoring System (CMS)

前言: CMS,有叫电子侧视镜,虚拟倒车镜,电子倒车镜, 电子取代镜等,ISO 国际标准组织称其为摄像头监控系统。电子后视镜由“摄像头+屏幕”组成,汽车外后视镜经历了光学镜面从平面镜到曲面镜的迭代进步,CMS也实现从商用车到乘用车的过渡。显示模式为外部摄像头采集图像,…

java的注解接口Retention

Java的注解接口java.lang.annotation.Retention定义注解保留多长时间。如果在注解接口的声明上没有Retention注解&#xff0c;那么默认的保留策略是RetentionPolicy.CLASS。 Retention只有一个元素value&#xff0c;类型是RetentionPolicy。 RetentionPolicy是一个枚举类型&am…

基于典型行业废水水质与处理工艺特点的吸附树脂产品—CH-87靶向除氟专用树脂

在工业上&#xff0c;含氟矿石开采、金属冶炼、铝加工、炼焦、玻璃、电子、电镀、化肥、农药、锂电池等行业排放的废水中常含有高浓度的氟化物。 所以&#xff0c;国家对于含氟废水的监测和排放也是出台了严格的制度标准。 含氟废水主要来源于氟化工、多晶硅、有色金属冶炼、…

android系统签名 V1,V2,V3

android系统签名 V1&#xff0c;V2&#xff0c;V3 7.1 之前V1 签名 文件路径&#xff08;build\target\product\security&#xff09; apk添加系统权限 <manifest xmlns:android"http://schemas.android.com/apk/res/android" android:sharedUserId"…