可部署于所有设备上的开源加速 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 算法,并结合以下优化策略:

  1. 分步处理:将卷积拆解为滤波器和激活权重的预处理、预处理张量的逐元素乘法和中间结果的后处理三个阶段,提高运算效率。
  2. 局部优化:通过调整数据加载方式(散点存储和聚集加载优化),减少 L1 缓存的切换,最大限度地减少缓存交换,提升内存使用效率。
  3. 并行处理:分析算子间的关联性,将关联性较小的运算动态分配到不同的计算线程与核心上,充分利用多线程和多核心架构,动态分配计算任务,充分发挥硬件性能,减少图像生成延迟。

尤其是在 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 倍
  • 整图生成速度对比 :最高加速比达到 4 .79 倍
    • 面对越大的图像分辨率,我们的方法的加速效果越明显。在生成 1024×1024 分辨率图像时,相比于原版 Sdcpp,我们优化的 Sdcpp 在 M1 Pro 以及 M2 Max 上的推理速度提升可超过 4.6 (FP32 类型)。
    • 对于其他图像尺寸和 SD 模型,我们优化的 Sdcpp 的加速效果也十分显著(如 SDv1.5 模型生成 512×512 图像时在M1 Pro上加速 1.84 )。
    • 这显著的加速比主要得益于我们的局部优化(降低缓存交换并且提高内存使用效率),以及并行处理(动态分配计算任务并且提高运算并行度)。

更快的速度,不仅节省时间,更让创作更自由

实例展示:更真实的生成效

下图展示了使用 SDXL-Turbo 模型,原版 Sdcpp 以及我们优化的 Sdcpp 使用 5 步采样,所生成的图像对比:

可以看出,在相同配置和提示词下,我们优化后的 Sdcpp 不仅速度更快,生成的图像也更加细腻逼真,细节丰富,层次分明。我们优化的 Sdcpp 能够支持不同硬件平台上(Mac、Android、AMD 等)各种主流 SD 模型(如SDv1.4、v1.5、v2.1、SDXL 和 SDXL-Turbo)的所有算子,确保使用这些 SD 模型能够生成高质量的图片。

未来计

尽管我们在加速方面取得了显著成效,但我们并不会止步于此。未来,我们将继续:

  1. 优化更多操作符,提升兼容性;
  2. 进一步提高模型量化的效率;
  3. 探索在更多设备上的性能提升。

Sdcpp 的推出,不仅大幅加速了图像生成过程,还降低了硬件门槛,让更多人能以更低成本享受 AI 创作的乐趣!如果你对 AI 图像生成感兴趣,不妨试试我们优化后的 Stable-Diffusion.cpp

项目主页GitHub - SealAILab/stable-diffusion-cpp: SealAI's stable diffusion implementation

技术报告: https://arxiv.org/abs/2412.05781

欢迎关注我们,了解更多技术细节!

相关推荐
Sui_Network2 分钟前
Webacy 利用 Walrus 技术构建链上风险分析决策层
人工智能·游戏·web3·去中心化·区块链
知来者逆34 分钟前
计算机视觉——为什么 mAP 是目标检测的黄金标准
图像处理·人工智能·深度学习·目标检测·计算机视觉
MobiCetus42 分钟前
Deep Reinforcement Learning for Robotics翻译解读2
人工智能·深度学习·神经网络·机器学习·生成对抗网络·计算机视觉·数据挖掘
师范大学生1 小时前
基于LSTM的文本分类2——文本数据处理
人工智能·rnn·lstm
Listennnn2 小时前
自动化网络架构搜索(Neural Architecture Search,NAS)
人工智能·深度学习·自动化
zhz52142 小时前
Zapier MCP:重塑跨应用自动化协作的技术实践
运维·人工智能·ai·自动化·ai编程·ai agent·智能体
怎么全是重名2 小时前
OFP--2018
人工智能·神经网络·目标检测
欲掩2 小时前
神经网络与深度学习:案例与实践——第三章(3)
人工智能·深度学习·神经网络
新知图书2 小时前
OpenCV销毁窗口
人工智能·opencv·计算机视觉
Blossom.1182 小时前
大数据时代的隐私保护:区块链技术的创新应用
人工智能·深度学习·自动化·区块链·智能合约