技术分享 | 如何基于阿里云AIACC加速Stable-Diffusion AI绘画

简介: AIACC是基于阿里云IaaS资源推出的神龙AI性能加速套件,用于优化基于AI主流计算框架搭建的模型,能显著提升训练和推理性能。AIACC神龙AI推理加速套件由AIACC-Torch(Pytorch推理加速引擎)、AIACC-MLIR(MLIR推理加速引擎)、AIACC-HRT(AIACC算子深度加速引擎)等组件构成。AIACC神龙AI性能加速套件能够为Stable-Diffusion提供加速优化支持,在512x512分辨率下,可将单张图片的延迟从2秒降低至0.88秒,吞吐提速至原来的2.2倍。

社区 2.png

2023628日,阿里云与智东西公开课联合出品的系列课程「阿里云弹性计算技术公开课」正式播出,当前系列课程共7节课,阿里云弹性计算高级开发工程师吕倪祺作为第二位课程主讲人,带来了主题为《基于神龙AI加速 AIACC 加速Stable-Diffusion AI绘画》的课程分享。

 

AIACC是基于阿里云IaaS资源推出的神龙AI性能加速套件,用于优化基于AI主流计算框架搭建的模型,能显著提升训练和推理性能。AIACC神龙AI推理加速套件由AIACC-Torch(Pytorch推理加速引擎)AIACC-MLIR(MLIR推理加速引擎)AIACC-HRT(AIACC算子深度加速引擎)等组件构成。AIACC神龙AI性能加速套件能够为Stable-Diffusion提供加速优化支持,在512x512分辨率下,可将单张图片的延迟从2秒降低至0.88秒,吞吐提速至原来的2.2倍。

本篇文章根据吕倪祺的课程整理而成,供读者阅览。

 

大家好,我是来自阿里云弹性计算团队的吕倪祺,今天希望可以和大家一起体验如何使用阿里云计算巢平台去搭建一个包含AIACC神龙AI加速套件的Stable-Diffusion的部署环境,并进行测试使用。


幻灯片2.PNG


一、基于计算巢搭建Stable-Diffusion开发环境

 

Stable-Diffusion是目前AIGC在生图方向上集质量高、速度快、成本低等众多优点于一身的,可以说是目前AI生图领域的六边形战士,综合实力非常强大。通过使用Diffusion Model(扩散模型),其在保证高分辨率创作图的同时,极大地降低了资源消耗量。同时在文生图、图生图等多个场景,都有不错的表现。


同时要强调的是:Stable-Diffusion的模型和整体框架都是开源的,因此Stable-Diffusion可以发展成一个大型的开源社区。我们可以从Civitai上下载所需要的模型,然后从Github 上去安装一些需要的插件,也可以嵌入自己的修改模型。这对于开发者或者进阶的使用者提供了更多的可能性。

 

由于此篇内容的分享主要是基于已经训练好的Stable-Diffusion模型来进行推理,因此接下来我将着重介绍Stable-Diffusion的推理流程。


幻灯片4.PNG


以文生图场景为例,文字首先通过一个特殊的Transformer语言模型(Cli模型),将文字进行编码,编码为token embeddings的向量。经过Clip后,我们就可以用embeddings去控制图片的生成,所谓的"DIffusion"过程也是指的这部分。我们会从个随机成的隐变量开始,通过循序渐进的式,逐步扩散,直变为个清晰的图

 

Image Information Creator包含两部分,UNetSchedulerUnet个噪声预测器,也就是我们上下载到的模型的主要部分。通过将前中的embeddingscross attention 层的计算,我们可以预测每step的噪声,并使这个噪声更贴合我们输字。

 

Scheduler Web UI中也被称之为采样器,它控制了unet的输出结果的处理方式个好的Scheduler可以更少的step 数获得更好的效果。 通过若UnetScheduler的迭代,我们最终得到了噪的隐变量。我们还需要将这个隐变量恢复成眼可的图。这时就需要 Autoencoder上线了,我们可以使Autoencoderdecoder部分去解码这个隐变量,变成个最终的图


幻灯片5.PNG


神龙AI加速套件AIACC是基于阿里云IaaS资源推出的AI加速套件,用于优化基于AI主流计算框架搭建的模型,能显著提升训练和推理性能。当前AIACC推理引擎包含AIACC-TorchPytorch推理加速引擎)、AIACC-MLIRMLIR推理加速引擎)、AIACC-HRTAIACC算子深度加速引擎)几个组件。

 

AIACC-TorchPytorch推理加速引擎)主要用于业界主流的PyTorch 模型的推理加速引擎;AIACC-MLIRMLIR推理加速引擎)是基于MLIR用于优化tensorflow的加速引擎;AIACC-HRTAIACC算子深度加速引擎)是阿里云底层高性能的限制加速库。在Stable-Diffusion的场景中,我们使用了AIACC-TorchAIACC-HRT两大组件进行了优化加速的支持。

 

上图左侧是AIACC-Torch的架构图,在使用AIACC-Torch时,首先会将原始的PyTorch模型训练成一个Toy scribe的模型,然后在Toy scribeAR上进行一系列优化,包括图融合等,然后就可以得到一个更干净、更高效的一个图片。之后通过PyTorch Operation Parser自动将底层模型转化成AIACC-HRT模型,以提供一个极致的性能加速。加速后的模型会跟原始模型一样,可以通过torch.jit.load的方式进行加载。总体来讲,使用是比较方便的,而且支持动态的尺寸。

 

针对Stable-Diffusion这个场景中,我们使用了AIACC-TorchAIACC-HRT这两大组件进行了优化加速支持。在512×512的分辨率下,我们将单图推理延迟从1.88s降低至0.78s,吞吐提速至原有的2.4倍,相较xformers也可降低44%的延迟,同时我们⽀持了Lora的性能⽆损加速,⽀持任意多的Lora权重加载,且不损失性能。⽽原始的Web UI性能会随着Lora权重的变多⽽下降。使用controlnet时,AIACC-Torch可吞吐提升至原有的2.37倍,单张图片推理时间低至1.28s

 

如果有更多的除了Stable-Diffusion之外的模型的推理优化需求,可以参考如下通用文档:https://help.aliyun.com/document_detail/317822.html


幻灯片6.PNG


阿里云计算巢是一个面向ISVSIMSP(统称为服务商)的云集成PaaS平台,方便ISV服务商更好地将自身产品、服务和阿里云的产品集成,借助云原生的能力提升软件服务在交付、部署及后续管理等环节的效率和用户体验。最终用户可以通过计算巢管理其在阿里云上订阅的各类软件服务。计算巢为服务商和最终用户提供了一个云原生的服务交付平台和连接器,提供更高效、便捷、安全的软件服务和使用体验。

 

Stable diffusion AIACC加速社区版》现已作为推荐服务,上线计算巢。为了方便客户使用,推荐使用计算巢进行服务搭建。


幻灯片7.PNG


接下来我介绍一下如何在计算巢上搭建Stable-Diffusion服务实例并访问实例。

 

第一步,创建实例。可以选择在计算巢的推荐服务栏目中,直接点击《Stable diffusion AIACC加速社区版》的正式创建按钮开始创建,也可点击以下链接进行创建:https://computenest.console.aliyun.com/user/cn-hangzhou/serviceInstanceCreate


幻灯片8.PNG


第二步,地域、付费方式及实例类型选择。可以根据自己的需要选择北京、上海、杭州等国内地域,或者日本、新加坡等海外地域部署ECS实例,建议选择按量付费使用,在不使用时,可以选择停机不收费的模式,以节省开支。

 

可预选实例均为单卡A10实例,规格为ecs.gn7i-c16g1.4xlargeecs.gn7i-c32g1.8xlargeecs.gn7i-c48g1.12xlarge三种,主要区别是CPU及内存大小的不同。当部署大量模型时,大规格实例可以减少由于内存不足导致的OOM问题,大家可以根据需求选择适合自己的实例进行部署。


幻灯片9.PNG


第三步,密码及网络设置。实例密码用于ECS登录,当我们需要下载模型或检查系统运行状态时,我们可以使用此密码登录实例背后的ECS机器。而软件登录名及软件登录密码用于网页访问。由于创建的ECS将会暴露在公网上面,因此我们加入了nginx组件,进行网页鉴权,以避免网页被不明用户登录。此密码用于访问stable-diffusion网页客户端。

 

可用区配置则用于选择新创建的ECS所在的可用区。如有多机器部署需求,需要注意此选项,同一可用区内实例之间的网络延时更小。当希望将机器创建于已有VPC环境中时,可以关闭新建VPC选项,否则默认将新建VPC。当两台ECS处于相同VPC时,内部网络可以互通,而新建的VPC的内部网络则会和其他VPC隔离。


幻灯片10.PNG


第四步,配置完成后点击创建就可以进入到控制界面,查看服务部署状态,等待部署完成,用时大概消耗3-5分钟。部署完成后,点击实例ID,可以看到“EndPoint”公网地址,点击访问此公网地址,可以打开登录界面。输入软件登录名及软件登录密码(也就是步骤三中软件的登录名&密码),点击登录,即可打开Web UI界面。


第五步,登录实例所在ECS


幻灯片11.PNG


而当我们需要检查Stable-diffsion运行状态,下载软件/模型,或者查看Stable-diffsion运行日志时,我们可以登录ECS实例进行查看,进入服务实例详情的资源选项卡,点击远程连接,点击免密登录,即可进入网页terminal


图片.png


实例中的Stable-diffusion位于/root/stable-diffusion-webui/。如果需要重启服务,可以使用sudo systemctl stop sdwebui命令停止服务,而后使用sudo systemctl start sdwebui命令启动服务,日志文件会被写入/var/log/sdwebui.log,大家也可任意查看。


二、文生图和图生图的基础操作与使用


幻灯片13.PNG

SD模型选择:当有下载新的模型或者需要切换模型的时候,下拉此选项卡进行选择。镜像里预装了4个模型,包含Taiyi中文模型、Taiyi动漫中文模型、Stable-diffusion 1.5 基准模型和OpenJourney模型。

 

提示词和反向提示词:提示词由多部分组成,以英文逗号分隔,提示词应尽量具象,指明场景、事物、事件、风格等。这是文生图中最重要的可选参数,直接控制了生成图片的质量效果和生成图片的场景和物体。提示词由多个部分组成,用英文逗号分隔。建议大家使用提示词时,尽量具象的指明场景、事务、事件或是风格。

 

采样器和迭代步数:采样器用于控制Unet输出结果使用方式。迭代步数越高,最终出图的清晰度和画质就越好。

 

扩散度设置:CFG ScaleAI自由创作度,越小越保守,越大越开放。如果扩散度设置越大,它就会生成更多的多样性;反之如果越小,它就会越符合你的限制。

 

如上图所示,底部是图片生成种子。如果你从网上看到一张别人的比较优秀的这个图片,可以把它的种子填到这个地方。这样能保证在相同的参数配置下,你生成的图片和别人的是一样或是相似的。图片生成种子的右侧是图片保存设置。这里可以将你生成的图片发送到文图生图的地方去重新生成或者做局部绘制。


幻灯片14.PNG


下面我们以预装的Taiyi中文模型作为例子,来演示如何去使用文生图,具体步骤见上图:

 

首先,输入如下提示词,词语之间用逗号隔开。提示词:铁马冰河入梦来,概念画,科幻,玄幻,3D。反向提示词留空,其他选项均为默认选项,点击生成,即可生成一张与提示词描述相近的图片。此外可见当使用AIACC加速时,生成一张与提示词描述相近的图片,分辨率为512x512,用时为0.78s


幻灯片15.PNG


作为对比,如需禁用AIACC加速,我们可以在设置选项卡的AiaccTorch选项中关闭“Apply Aiacctorch”选项,并点击应用设置,重新执行一个图片生成。如需打开AIACC,也可在此界面打开“Apply Aiacctorch”选项,并点击应用设置。禁用AIACC性能加速后进行相同图片生成的时间则增加至1.88s。因此可见,AIACC能缩短58%的推理时间,或增加图片生成的吞吐量至原有的2.41倍。


幻灯片16.PNG


我们也可以用相同的操作在不同模型下进行图片生成,比如在Taiyi中文动漫模型中进行测试,见上图。

 

首先,输入提示词。提示词:1个女孩,绿眼,棒球帽,金色头发,闭嘴,帽子,看向阅图者,短发,简单背景,单人,上半身,T恤。

 

然后,输入反向提示词。反向提示词:水彩,漫画,扫描件,简朴的画作,动画截图,3D,像素风,原画,草图,手绘,铅笔。其他选项均为默认选项,点击生成。

 

可见通过AIACC加速生成一张动漫风格的图片,分辨率为512x512,用时为0.77s。点击页面中的图生图按钮,我们可以将此图片发送至图生图选项卡,进行下一步骤。


幻灯片17.PNG


进入图生图选项卡,我们使用文字和图片共同引导图片生成。同样,输入提示词。提示词:1个男孩。输入反向提示词。反向提示词:水彩,漫画,扫描件,简朴的画作,动画截图,3D,像素风,原画,草图,手绘,铅笔。

 

可以观察到输出图片仍然保留了输入图片的布局和风格,但中间的人物已经从女孩换成了男孩。由图可见,当使用AIACC加速时,单张图片耗时仅0.69s,而不做任何加速时,则需要1.59s,降低了56%的延迟。

 

三、Stable-Diffusion高级特性使用

 

接下来主要介绍Stable-Diffusion的一些高级特性,包含如何去使用Lora修改生成图片的细节,如何使用ControlNet来控制图片的形状;同时也会介绍如何通过API调用的方式执行图生图和文生图的操作。


image.png


Lora权重,全称是Low-Rank Adaptation,原本应用于大语言模型LLM Large Language Models)但由于其训练成本低、参数量少、使用方便,在Stable-diffusion模型中也有较多应用。点击右侧的附加网络按钮,打开附加网络选项,点击下方的Lora权重,如果选择一个Lora权重,权重配置字段会自动填入上方的提示词中。

 

Lora权重的格式为权重名:权重比例大小>Lora权重可以同时选中多个进行叠加。在Web UI中,Lora权重是可以同时选择多个进行叠加,但建议所有权重之和不要超过1,因为过大的Lora权重可能会导致中间某些层的输出结果溢出。


image.png


使用Lora权重之后,我们可以针对性的修改图片的某些风格和效果,例如上图的左图和右图,使用相同的A Girl, best quality, ultra-detailed, masterpiece, finely detail, highres, 8k wallpaper 提示词,seed=10,使用iuV35.uv1P这一Lora权重之后的生成图有明显的东亚女生的特征。

 

同时,AIACC也支持性能无损的Lora权重计算功能,使用Lora权重时,仍能维持0.78秒的单张图片生成时间。而与之相对应的使用torch进行推理时,需要2.06秒,且推理时间随Lora权重数量增加而增加。


image.png


ControlNet组件实际上是为我们提供了一种精确控制Stable-diffusion生成图片的方式。我们可以选择不同的预处理,通过边缘检测、姿态检测等方式,使用参考图控制去噪过程,ControlNet有如下几个关键的可选项:

 

· 控制类型:通过选择控制类型,可以选择我们想要进行的操作;

· 预处理器:设置处理参考图的方式,例如canny则可用canny算子进行边缘检测;

· 模型:设置生成图片所用的ControlNet模型;

· 控制权重:设置ControlNet所作用的权重,默认为1


image.png


上图是以计算机视觉中常用的Lenna图为例,使用ControlNetCanny预处理器和模型进行图片生成。设置提示词:A Girl, best quality, ultra-detailed, masterpiece, finely detail, highres, 8k wallpaper,模型为control_v11p_sd15_canny,其他选项为默认选项,点击生成可生成图片。

 

可见生成的图片与输入的参考图的整体布局十分相似,使用ControlNet这种方式,我们可以非常精确地控制所生成的图片。由图可见,当使用AIACC加速时,单张图片耗时仅1.28s,而不做任何加速时,则需要3.04s,降低了57%的延迟,AIACC大幅提升了生图性能。


image.png


此外对于有远程使用或是命令行调用的场景而言,Stable-DiffusionWeb UI还可使用API的方式进行调用。点击Weui的主界面最下角的“API”链接,即可跳转到API说明文档和可测试文档。


image.png


上图是两个简单的代码示例,分别是文生图和图生图。对于文生图场景来说,可以用POST请求url加上/sdapi/vi/txt2img这样一个API。在使用计算巢的时候,需要注意与标准的Stable-DiffusionWeb UI所不同的地方。首先创建一个session,然后去配置用户名和密码。这是因为在计算巢的实例中,使用了nginx去做了端口的转发和健全以避免恶意的访问。所以当使用Web UI调用的时候,需要使用session的接口把用户名跟密码加上。

 

随后的操作就与Stable-Diffusion官方的操作比较相似了,如上图示例,输入非常简单的提示词,即A Girl,然后设置seed的数等于1,然后去POST之后,会返回一个response。我们用JSON去把这个response重新加载回来,然后可以看到它的image是在这样一个数据当中,然后用base64编码过的。所以我还需要用base64去解码这个image,然后将它写入到一个文件当中,这个文件就是我们是已经生产的这个文件了。

 

图生图与文生图类似,不同的是需要用base64的编码去编码输入的图片。示例中用了open CV去读取这个图片,然后用base64去编码图片。之后就跟文生图类似,去请求/sdapi/vi/txt2img这样的API。然后将这个读取的图片放入到这个images这样一个字段当中,然后去请求。对生成图片也是一样的,也会存在一个用base64做个编码的这样一个格式的这个字段当中,最后把它写入到文件就ok了。


幻灯片25.PNG


想要关注阿里云AIGC方案的同学可以钉钉扫描上图左侧二维码入群,同时也可以扫描右侧二维码关注阿里云AIGC最新活动。想要了解更多精彩直播/观看课程回放的同学,可以扫描下方海报中的二维码/点击观看,均可观看完整课程回放。


视频号封面9-16吕倪祺.jpg








相关实践学习
2048小游戏
基于计算巢&ECS云服务器快速部署,带您畅玩2048小游戏。
相关文章
|
28天前
|
存储 人工智能 自然语言处理
|
21天前
|
人工智能 自然语言处理 测试技术
阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI
在通义灵码 2.0 发布会上,阿里云通义实验室自然语言处理方向负责人黄非分享了代码大模型的演进。过去一年来,随着大模型技术的发展,特别是智能体技术的深入应用,通义灵码也在智能体的基础上研发了针对于整个软件研发流程的不同任务的智能体,这里既包括单智能体,也包括多智能体合并框架,在这样的基础上我们研发了通义灵码2.0。
122 21
|
13天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置,包括CPU+GPU、FPGA等,适用于人工智能、机器学习和深度学习等计算密集型任务。本文整理了阿里云GPU服务器的优惠价格,涵盖NVIDIA A10、V100、T4等型号,提供1个月、1年和1小时的收费明细。具体规格如A10卡GN7i、V100-16G卡GN6v等,适用于不同业务场景,详情见官方页面。
84 11
|
14天前
|
SQL 人工智能 关系型数据库
【PG锦囊】阿里云 RDS PostgreSQL 版插件—AI 插件(rds_ai)
本文介绍了AI 插件(rds_ai)的核心优势、适用场景等,帮助您更好地了解 rds_ai 插件。想了解更多 RDS 插件信息和讨论交流,欢迎加入 RDS PG 插件用户专项服务群(103525002795)
|
22天前
|
人工智能 供应链 安全
阿里云 Confidential AI 最佳实践
本次分享的主题是阿里云 Confidential AI 最佳实践,由阿里云飞天实验室操作系统安全团队工程师张佳分享。主要分为三个部分: 1. Confidential AI 技术背景与挑战 2. Confidential AI 技术架构与应用场景 3. Confidential AI 技术实践与未来展望
|
22天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
29天前
|
传感器 机器学习/深度学习 人工智能
技术分享:智能电网巡检与传感器数据自动分析——AI助力设备状态实时监控与故障预警
这篇文章介绍了AI在智能电网巡检与传感器数据分析中的应用,通过信息抽取、OCR识别和机器学习等技术,实现设备状态监控和故障预警的自动化。AI系统能够高效处理巡检报告和传感器数据,精准识别设备故障并实时预警,显著提升了电网运营的安全性和可靠性。随着AI技术的发展,其在智能电网管理中的作用将日益重要。
|
1月前
|
人工智能 运维 监控
阿里云Milvus产品发布:AI时代云原生专业向量检索引擎
随着大模型和生成式AI的兴起,非结构化数据市场迅速增长,预计2027年占比将达到86.8%。Milvus作为开源向量检索引擎,具备极速检索、云原生弹性及社区支持等优势,成为全球最受欢迎的向量数据库之一。阿里云推出的全托管Milvus产品,优化性能3-10倍,提供企业级功能如Serverless服务、分钟级开通、高可用性和成本降低30%,助力企业在电商、广告推荐、自动驾驶等场景下加速AI应用构建,显著提升业务价值和稳定性。
|
23天前
|
人工智能 运维 物联网
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
|
20天前
|
人工智能 算法 前端开发
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
OmAgent 是 Om AI 与浙江大学联合开源的多模态语言代理框架,支持多设备连接、高效模型集成,助力开发者快速构建复杂的多模态代理应用。
163 72
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备