可部署于所有装备上的开源加快 Stable-Diffusion.cpp:让 AI 图像生成更快
在 AI 生成图像领域,Stable Diffusion 已经成为一个里程碑式的工具,凭借其强大的图像生成本领,被广泛应用于艺术创作、商业筹划等领域。然而,生成高质量图像的过程经常需要付出大量的时间和内存,这对于硬件资源有限的装备来说是一大挑战。为了应对这一问题,我们优化了Stable-Diffusion.cpp(简称 Sdcpp)。Sdcpp 是 Stable Diffusion 模型的 C/C++ 实现,旨在无需外部依赖的情况下在 CPU(以及大概配置 GPU)上实现高效推理。Sdcpp 作为一个高效的推理框架,不仅可以或许显著加快模型的运行,还能大幅减少内存占用。今天,我们就来深入相识 Sdcpp 的技能上风和我们的优化方法。
为什么需要加快?
Sdcpp 的实现中,盘算密集型的 2D 卷积运算是图像生成的主要瓶颈。现有方法固然功能强大,但服从却不敷抱负,推理速率较慢,内存占用高。为了办理这些问题,我们在 Sdcpp 的基础上,引入了 Winograd 算法,对 Sdcpp 中的卷积利用进行了革命性的改进,最终实现了性能与资源利用率的双提拔。
技能亮点:Winograd 算法加持
为了让 Sdcpp 的卷积利用更高效,从而加快生成过程并降低盘算和内存成本,我们引入了 Winograd 算法,并联合以下优化策略:
[*]分步处理:将卷积拆解为滤波器和激活权重的预处理、预处理张量的逐元素乘法和中央结果的后处理三个阶段,进步运算服从。
[*]局部优化:通过调整数据加载方式(散点存储和聚集加载优化),减少 L1 缓存的切换,最大限度地减少缓存互换,提拔内存使用服从。
[*]并行处理:分析算子间的关联性,将关联性较小的运算动态分配到不同的盘算线程与核心上,充实利用多线程和多核心架构,动态分配盘算任务,充实发挥硬件性能,减少图像生成耽误。
尤其是在 M 系列 Mac 装备上,我们优化了性能核心(P-core)和服从核心(E-core)的分工,使推理速率得到了显著提拔。
多装备、多模型支持
我们优化后的 Sdcpp 框架支持多个装备和模型,包括:
[*]主流 Stable Diffusion 模型:SDv1.4、v1.5、v2.1、SDXL 和 SDXL-Turbo;
[*]不同硬件平台:Mac、Android、AMD 等;
[*]扩展模块:如支持 LoRA,以及支持算子量化等,为用户提供更高的灵活性。
此外,我们还支持而且优化了diffusion transformer 模型中的算子,进一步拓展了应用场景。
速率提拔究竟有多快?
通过实际测试,我们的优化成果令人振奋!
[*]单卷积层的加快表现:对于多种卷积层配置,推理速率均匀提拔超过 2 倍!
[*]我们选择了一些在 SD 生成图片过程中出现比力频仍的卷积层,盘算了在这些单卷积层上,我们优化的 Sdcpp 相较于原版 Sdcpp 的加快结果。在不同的卷积层上,我们的推理速率提拔至少达到 2 倍。
https://i-blog.csdnimg.cn/direct/4b810e1544d14467b14cbd15d83d8ee9.png
[*]整图生成速率对比:最高加快比达到 4.79 倍!
[*]面对越大的图像分辨率,我们的方法的加快结果越明显。在生成 1024×1024 分辨率图像时,相比于原版 Sdcpp,我们优化的 Sdcpp 在 M1 Pro 以及 M2 Max 上的推理速率提拔可超过 4.6 倍(FP32 类型)。
[*]对于其他图像尺寸和 SD 模型,我们优化的 Sdcpp 的加快结果也十分显著(如 SDv1.5 模型生成 512×512 图像时在M1 Pro上加快 1.84 倍)。
[*]这显著的加快比主要得益于我们的局部优化(降低缓存互换而且进步内存使用服从),以及并行处理(动态分配盘算任务而且进步运算并行度)。
https://i-blog.csdnimg.cn/direct/4ac3ba7ba37243f6b4157b101258cfde.png
https://i-blog.csdnimg.cn/direct/e80b0db1f68c443ca350d813bbc71724.png
更快的速率,不仅节省时间,更让创作更自由!
实例展示:更真实的生成效果
下图展示了使用 SDXL-Turbo 模型,原版 Sdcpp 以及我们优化的 Sdcpp 使用 5 步采样,所生成的图像对比:
https://i-blog.csdnimg.cn/direct/9f670335ccdd4caba3f1a2db7324c8df.png
可以看出,在相同配置和提示词下,我们优化后的 Sdcpp 不仅速率更快,生成的图像也更加细腻逼真,细节丰富,井井有条。我们优化的 Sdcpp 可以或许支持不同硬件平台上(Mac、Android、AMD 等)各种主流 SD 模型(如SDv1.4、v1.5、v2.1、SDXL 和 SDXL-Turbo)的所有算子,确保使用这些 SD 模型可以或许生成高质量的图片。
将来计划
只管我们在加快方面取得了显著成效,但我们并不会止步于此。将来,我们将继续:
[*]优化更多利用符,提拔兼容性;
[*]进一步进步模型量化的服从;
[*]探索在更多装备上的性能提拔。
结语
Sdcpp 的推出,不仅大幅加快了图像生成过程,还降低了硬件门槛,让更多人能以更低成本享受 AI 创作的乐趣!假如你对 AI 图像生成感兴趣,不妨试试我们优化后的 Stable-Diffusion.cpp。
项目主页:GitHub - SealAILab/stable-diffusion-cpp: SealAI's stable diffusion implementation
技能报告:https://arxiv.org/abs/2412.05781
欢迎关注我们,相识更多技能细节!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]