本文将以Stable Diffusion Quick Kit在亚马逊云科技Amazon SageMaker上的部署来介绍Stable Diffusion模型基础知识,HuggingFace Diffusers接口,以及如何使用Quick Kit在SageMaker Endpoint上快速部署推理服务。
Stable Diffusion模型
2022年由StabilityAI、Runway、慕尼黑大学CompVis团队联合发布了Stable Diffusion模型,模型的代码和权重已经开源,目前主流的版本为v1.5(runwayml/stable-diffusion-v1-5)、v2、v2.1(stabilityai/stable-diffusion-2,stabilityai/stable-diffusion-2-1)。Stable Diffusion模型支持通过使用提示词来产生新的图像,描述要包含或省略的元素,以及重新绘制现有的图像,其中包含提示词中描述的新元素,该模型还允许通过提示词在现有的图中进行内补绘制和外补绘制来部分更改。
Stable Diffusion是一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型。Stable Diffusion由3个部分组成:变分自编码器(Variational Auto Encoder,VAE)、U-Net和一个文本编码器。Stable Diffusion在LAION-5B的一个子集上训练了一个Latent Diffusion Models,该模型专门用于文图生成。模型通过在一个潜在表示空间中迭代“去噪”数据来生成图像,然后将表示结果解码为完整的图像,能够在GPU上不超过10秒时间完成图片生成,大大降低了落地门槛,也带来了文图生成领域的大火。
Stable Diffusion模型
常见格式和存储方式
目前社区里的各类Stable Diffusion衍生模型有不同的文件格式和存储方式,这些不同的文件格式和存储方式需要用户使用不同的代码来进行加载、推理。Stable Diffusion模型的主流文件格式主要有2种,分别是ckpt和safetensors;存储方式上可以区分为单个文件和diffusers结构。
Stable Diffusion模型常见推理方式
Stable Diffusion模型常见的使用方式:
原生pytorch代码,CompVis在Stable Diffusion stable-diffusion-v1-4提供了txt2img.py和img2img.py,是通过pytorch进行模型加载完成图片生成的。 GUI,包括Stable-Diffusion-WebUI、InvokAI、ComfyUI通常这些工具都是UI和推理服务一起工作,在本地显卡进行部署。 HuggingFace Diffusers接口,通过StableDiffusionPipeline,StableDiffusionImg2ImgPipeline可以快速加载第三方模型或者本地模型,Stable Diffusion Quick Kit正是采用Diffusers方式进行调用。在推理过程中可以选择对应的采样器(Sampler,Diffusers中称为Scheduler),常见的采样器有Euler Discrete、Euler Ancestral Discrete、DDIM、KDPM2 Discrete、LMSD等。
使用Quick Kit在SageMaker上
快速部署Stable Diffusion推理服务
由亚马逊云架构师团队专为在云上部署Stable Diffusion模型的推理、训练而打造的工程化代码,通过sagemaker-stablediffusion-quick-kit可以快速的将diffusers目录结构的模型部署到SageMaker中,并生成Http协议的API接口和前后端分离的界面。以便于亚马逊云科技用户可以快速将Stable Diffusion运用到业务和产品中。
结论
综上所述,Stable Diffusion的推理是一个相对比较耗时的服务,在面向用户端提供服务时,必须要考虑到多并发请求下服务的可用性和扩展性,然而相对于普通的应用服务,AI推理需要用到成本比较高的GPU资源,保障服务可靠前提下如何有效控制成本也是亚马逊云科技需要考虑的重要因素。
SageMaker的异步推理可以轻松地达成以上目标,其内部队列可以将前端请求和后端推理进行解耦合,在流量高峰时可以实现缓冲,保障服务的可用性,通过SageMaker异步推理的AutoScaling,可以自动的扩展推理节点,在流量低峰期实现资源回收,节省成本。相对于v100专用显卡和3090等民用显卡,利用SageMaker提供的ml.g4dn和ml.g5等更具性价比的机型实现推理,在保障性能的前提下可以进一步控制资源成本。SageMaker和Stable Diffusion Quick Kit的结合可以帮助快速完成扩散模型在亚马逊云上的工程化部署,为用户的AIGC产品化上提供了坚实可靠的基础。