diffusers SD推理加速方案的调研实践总结(1)

简介: diffusers SD推理加速方案的调研实践总结

近期,在我们的内容技术灵媒智算平台(MVAP)上部署的服务数量提升迅猛,部分业务场景对SD系列模型的推理速度有着一定的要求。因此,我们对当前较为流行的SD加速方式进行了调研与测试,并以AI试衣业务场景为例,尝试了多种加速方案。下面是对调研结果与实际落地效果的一些总结与分享。



加速方案介绍


目前主流的加速思路包含算子优化、模型编译、模型缓存、模型蒸馏等,下面将简要介绍一下几种测试中用到的有一定代表性的开源方案。


 算子优化:FlashAttention2


主要针对transformer中的attention模块进行优化。FlashAttention改变了常规的attention计算方式,将完整的attention计算融合到单个cuda kernel中,并结合了前向tiling与反向recompute技巧;FlashAttention2在此基础上进一步减少了冗余计算,并加强了前向与反向过程中的并行计算,从而降低显存占用和计算耗时。由于效果很好且受到广泛使用,FlashAttention2已被集成到pytorch2.2之后的版本中。

 模型编译:oneflow / stable-fast


oneflow通过将模型编译为静态图,结合oneflow.nn.Graph内置的算子融合等加速策略,实现对模型推理的加速。优势在于对于基础SD模型只需一行编译代码即可完成加速、加速效果明显、生成效果差异小、可以结合其他加速方案(如deepcache)使用以及官方更新频率高等。缺点放到后面再说。


stable-fast也是基于模型编译的加速库,并结合了一系列算子融合的加速方法,但它的性能优化依赖于xformer、triton、torch.jit等工具。


 模型缓存:deepcache


SD模型的常规推理过程包含很多步unet计算(我们在基础模型测试中设置的步数为50),而deepcache的作者发现相邻步数的unet在深层特征上只有极其微小的变化,为了避免重复计算这些冗余的深层特征,deepcache只在部分步骤执行完整计算,并缓存深层特征的计算结果;对于剩余的步骤,则仅计算浅层特征,并结合最近的缓存特征结果。这一过程相当于跳过了unet网络中的大部分层,因此能够显著降低计算量。
deepcache在diffusers框架中的使用非常方便,并且可以根据实际情况设置使用缓存的最深层及使用缓存的步数间隔(这里也可以使用非均匀分布的策略,根据不同步数的冗余程度设置不同的间隔),自行在推理速度与生成质量之间进行权衡。


image.png


 模型蒸馏:lcm-lora


结合了lcm(Latent Consistency Model)与lora,lcm会对整个sd模型进行蒸馏,从而实现少步数推理,而lcm-lora借助了lora的形式,只对lora部分进行优化,这样既能够实现加速,也可以直接与常规的lora使用相结合。


image.png

相关文章
|
存储 安全 Ubuntu
百度搜索:蓝易云【T-Pot安装教程。】
请注意,T-Pot是一个强大的工具,需要谨慎使用。确保你遵守适用的法律法规,并且仅在合法的环境中使用T-Pot进行安全测试和研究。
599 0
|
9月前
|
人工智能 分布式计算 DataWorks
阿里云大数据AI产品月刊-2025年8月
阿里云大数据& AI 产品技术月刊【2025年 8 月】,涵盖 8 月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
638 2
|
人工智能 资源调度 物联网
diffusers SD推理加速方案的调研实践总结(2)
diffusers SD推理加速方案的调研实践总结
760 9
|
机器学习/深度学习 存储 人工智能
【科普向】模型蒸馏和模型量化到底是什么???
在数字化快速发展的时代,人工智能(AI)技术已广泛应用,但大型深度学习模型对计算资源的需求日益增长,增加了部署成本并限制了其在资源有限环境下的应用。为此,研究人员提出了模型蒸馏和模型量化两种关键技术。 模型蒸馏通过将大型教师模型的知识传递给小型学生模型,利用软标签指导训练,使学生模型在保持较高准确性的同时显著减少计算需求,特别适用于移动设备和嵌入式系统。 模型量化则是通过降低模型权重的精度(如从32位浮点数到8位整数),大幅减少模型大小和计算量,提高运行速度,并能更好地适应低配置设备。量化分为后训练量化和量化感知训练等多种方法,各有优劣。
|
Java Shell API
实战教程:如何将自己的Python包发布到PyPI上
实战教程:如何将自己的Python包发布到PyPI上
4396 0
实战教程:如何将自己的Python包发布到PyPI上
|
开发工具 git
NotionNext 笔记博客部署 图文教程①
如何使用NotionNext工具将Notion笔记实时渲染成静态博客网站,从创建Notion账号、复制模板、获取页面ID、复制源代码到Vercel部署的完整步骤。
NotionNext 笔记博客部署 图文教程①
|
负载均衡 安全 Ubuntu
docker部署keepalived(搭建keepalived)
将HTML或其他格式的内容转化为图片是Web开发中的一个较为常见需求。在某些特殊场景下,比如生成用户看不到的信息图片或进行内容的快速截图,该功能变得尤为重要。部署Keepalived至Docker容器提供了一种便捷方式来保证服务的高可用性。通过上述步骤,你可以轻松地在自己的项目中实现这一点,从而确保业务的连续性和稳定性。
1015 4
|
缓存 数据库 UED
《优化数据库查询性能的五大技巧》
数据库查询性能直接影响着系统的响应速度和用户体验。本文将介绍五种优化数据库查询性能的技巧,涵盖了索引优化、查询语句优化、缓存机制、分区表和硬件优化等方面,帮助开发人员有效提升系统的性能和稳定性。