stable-fast
专为HuggingFace Diffusers打造的推理加速框架,编译秒级完成,性能提升最高达92%
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
专为HuggingFace Diffusers打造的推理加速框架,编译秒级完成,性能提升最高达92%
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:stable-fast 作者 chengzeyi 的 GitHub 头像
你是否有过这样的经历:本地跑 Stable Diffusion 出图,等了半天 30 秒才出一张;换成云端 A100 收费 GPU,效果也没好到哪里去。隔壁同事用着同样的模型,却比你快一倍还多。这不是玄学,很可能是因为你少装了一个优化库——stable-fast。
stable-fast 是一个专为 HuggingFace Diffusers 设计的推理性能优化框架,可以在不改变模型结构、不重写推理代码的前提下,将 SD 1.5 的推理速度从原生 PyTorch 的 29.5 it/s 提升到 51.6 it/s(RTX 4080),提升幅度接近 75%。而且,它的编译时间只需要几秒钟,而 TensorRT 和 AITemplate 往往需要等待数十分钟。
stable-fast 由独立开发者 @chengzeyi 创建和维护(276 次 commit,主要贡献者)。项目于 2023 年 10 月开源,2024 年 5 月发布 v1.0.5 正式版,截至目前已获得 1303 颗 GitHub Stars,92 个 Fork,63 个 open issues(活跃度高)。
项目的诞生背景非常明确:当时市面上的推理加速方案要么编译极慢(TensorRT),要么兼容性差(AITemplate),要么只支持特定模型。作者希望做一个编译快、兼容广、性能强的解决方案,直接针对 Diffusers 生态优化。经过一年的持续开发,stable-fast 已经支持 SD 1.5、SDXL、Stable Video Diffusion(SVD)等全系列模型,并正在开发对 SD3 和 Sora 类模型的支持。
stable-fast 的加速策略是多层次融合的,不是简单的"换一个推理后端":
传统 PyTorch 在执行卷积+偏置+激活的组合时,会分多次 CUDA kernel 调用,每次调用之间需要 GPU 全局内存读写,效率很低。stable-fast 实现了完整的 CUDNN 卷积融合操作符,将 Conv + Bias + Add + Act 融合为一次 CUDA kernel 调用,大幅减少内存访问次数。
PyTorch 默认在 fp16 精度下是"读写 fp16,计算 fp32"——这意味着每次矩阵乘法都要在两种精度之间反复转换,拖慢速度。stable-fast 实现了纯 fp16 精度的融合 GEMM 操作符,全程以 fp16 执行矩阵计算,性能更高、显存占用更少。
GroupNorm(组归一化)是 Diffusion 模型中的常见操作,PyTorch 默认以 NCHW 格式执行,需要频繁的内存格式转换。stable-fast 使用 OpenAI Triton 实现 NHWC 格式的融合 GroupNorm + SiLU 算子,直接消除格式转换开销。
stable-fast 对 torch.jit.trace 做了深度改进,使复杂的 StableDiffusionPipeline 几乎所有模块都能被追踪并转换为 TorchScript。相比 PyTorch 2.1 的 torch.compile,stable-fast 更稳定、CPU 开销更低,并且天然支持 ControlNet 和 LoRA。
CUDA Graph 可以将一系列 CUDA 操作打包执行,减少 CPU 到 GPU 的调度开销。stable-fast 的 CUDA Graph 实现支持动态形状(batch size 变化、分辨率变化),这在竞品中是罕见特性。
stable-fast 集成 xformers 的融合注意力机制,并做了 TorchScript 兼容性适配,保证在推理优化流程中多头注意力依然高效运行。
| GPU | 模型 | 原生 PyTorch | torch.compile | Stable Fast | 提升幅度 |
|---|---|---|---|---|---|
| RTX 4080 (WSL2) | SD 1.5 | 29.5 it/s | 40.0 it/s | 51.6 it/s | +75% |
| RTX 4080 (WSL2) | SDXL 1024² | 4.6 it/s | 6.1 it/s | 9.1 it/s | +98% |
| RTX 4080 (WSL2) | SD 1.5 + ControlNet | 19.7 it/s | 21.8 it/s | 36.7 it/s | +86% |
| H100 | SD 1.5 | 54.5 it/s | 66.0 it/s | 104.6 it/s | +92% |
| H100 | SDXL 1024² | 14.9 it/s | 18.5 it/s | 21.6 it/s | +45% |
| A100 | SD 1.5 | 35.6 it/s | 41.9 it/s | 61.8 it/s | +74% |
注:stable-fast 测试时使用动态形状(dynamic shape),而 TensorRT 使用静态 batch size + CUDA Graph。stable-fast 在更苛刻的条件下取得了相近甚至更好的成绩。
stable-fast 的源码位于 src/sfast/,采用模块化插件架构:
compilers/:核心编译器,将 Diffusers Pipeline 转换为优化后的 TorchScript 模型。diffusion_pipeline_compiler.py 是核心引擎,支持 SD 1.5/SDXL/SVD 等多种 Pipeline。cuda/graphs.py:CUDA Graph 封装,实现动态形状的图捕获与执行。csrc/:CUDA C++ 扩展,包含融合算子的底层实现(operators/ 目录存放各融合 kernel 的 .cu 源码)。jit/:TorchScript 相关工具,改进 trace 接口使其适应复杂 Pipeline。triton/:Triton kernel 实现,包括 NHWC GroupNorm + SiLU 融合算子。dynamo/:PyTorch Dynamo 集成代码(对应新项目 Comfy-WaveSpeed 的技术基础)。hooks/:运行时 hooks,用于在推理过程中动态注入优化。utils/:通用工具函数。语言构成:Python(323K 行)、C++(215K 行)、CUDA(30K 行),体现了高性能计算项目的典型特征。
stable-fast 支持的模型和功能非常全面:
| 维度 | 支持情况 |
|---|---|
| SD 1.5 / SD 2.1 / SDXL | ✅ 全部支持 |
| Stable Video Diffusion | ✅ 支持 |
| ControlNet | ✅ 支持 |
| LoRA / LCM | ✅ 支持 |
| 动态形状 | ✅ 支持 |
| 图像生成/图生图/局部重绘 | ✅ 全部支持 |
| AUTOMATIC1111 WebUI | ⚠️ WIP(开发中) |
| SD Next / ComfyUI | ✅ 官方集成支持 |
| Linux / Windows / WSL2 | ✅ 全部支持 |
注意:stable-fast 仅支持 NVIDIA CUDA GPU,不支持 AMD ROCm、Intel GPU 或 Apple Silicon。
stable-fast 是一个纯 Python 库,没有 Web UI,使用方式是在已有的 Diffusers Python 代码中插入几行优化代码:
from sfast.compilers.stable_diffusion_pipeline_compiler import compile
# 加载原生 Diffusers Pipeline
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-1-5")
# 一行编译优化
pipe = compile(pipe)
然后正常调用 pipe() 生成图像,享受加速效果。
安装方式有两种:
pip install,无需编译。依赖环境:
stable-fast 并非完美,以下几点需要考虑:
stable-fast 的出现填补了一个重要空白:TensorRT 编译太慢(30+ 分钟),AITemplate 兼容性差,而 PyTorch 原生性能又不够。stable-fast 通过 Python-first 的插件思路,在编译速度和性能之间找到了新的平衡点。
作者随后宣布开发新项目 Comfy-WaveSpeed,目标是支持 ComfyUI 下所有模型的极速推理,并将扩展到非 CUDA 硬件后端。这个方向值得持续关注——如果成功,将进一步降低 AI 图像生成的硬件门槛。
总体而言,stable-fast 是一个技术含量极高、社区活跃度高、实际加速效果显著的推理优化项目,特别适合有 NVIDIA GPU、追求 SD 推理效率的开发者、AI 应用服务商和 AI 图像研究者。