ERNIE-Image SGLang-Diffusion 最新优化:Cache-DiT 与 ComfyUI 集成实现 2.5x 推理加速
背景:SGLang-Diffusion 的演进
2025 年 11 月,LMSYS Org 发布了 SGLang-Diffusion——将 SGLang 的高性能推理引擎引入扩散模型的里程碑式项目。ERNIE-Image 是首批获得 SGLang day-0 支持的模型之一。
到了 2026 年 1 月,经过两个月的密集优化,SGLang-Diffusion 的推理速度相比最初发布版本提升到了 2.5 倍。这背后是一系列关键技术的成熟:Cache-DiT 缓存机制、Layerwise Offload、Sequence Parallel 和 Tensor Parallel 混合并行、以及 ComfyUI 深度集成。
对于 ERNIE-Image 用户来说,这意味着什么呢?在 2026 年 5 月 EI-034 中,我们介绍了 SGLang 的基本部署方法;而今天,我们将深入探讨 SGLang-Diffusion 最新的优化技术栈,让 ERNIE-Image 的推理速度达到新的高度。
Cache-DiT:扩散 Transformer 缓存加速
原理:减少冗余计算
扩散模型的推理过程需要多次去噪步骤(ERNIE-Image 基础版 50 步,Turbo 版 8 步)。在每一步中,模型都会对整张图像进行完整的前向传播。但研究发现,相邻去噪步骤之间的特征图变化很小——这意味着大部分计算是冗余的。
Cache-DiT 的核心思想很简单:缓存并复用相邻步骤的中间特征,跳过不必要的计算。当特征变化足够小时,直接使用上一步的缓存结果,而不是重新计算。这种"懒惰求值"策略可以大幅减少推理时间,而对最终图像质量的影响几乎不可察觉。
开启 Cache-DiT
在 SGLang 中开启 Cache-DiT 只需设置两个环境变量:
SGLANG_CACHE_DIT_ENABLED=true \
SGLANG_CACHE_DIT_SCM_PRESET=fast \
sglang generate --model-path=baidu/ERNIE-Image-Turbo \
--prompt="一只黑白相间的中华田园犬在草地上奔跑" \
--save-output
| 参数 | 可选值 | 说明 |
|---|---|---|
SGLANG_CACHE_DIT_ENABLED |
true / false |
开启/关闭 Cache-DiT |
SGLANG_CACHE_DIT_SCM_PRESET |
fast / balanced / quality |
缓存策略:速度优先、平衡、质量优先 |
性能提升
| 配置 | 推理时间 | 加速比 |
|---|---|---|
| 无 Cache-DiT | 基线 100% | 1.0x |
| Cache-DiT (quality) | ~60% | 1.67x |
| Cache-DiT (balanced) | ~50% | 2.0x |
| Cache-DiT (fast) | ~37% | 2.69x |
📊 以上数据基于 LMSYS Org 官方基准测试。实际加速效果因 GPU 型号、图像分辨率和步骤数而异。
与 torch.compile 的协同
Cache-DiT 与 PyTorch 的 torch.compile 完全兼容。两者结合使用时,可以叠加加速效果:
import torch
import sglang as sgl
启用 torch.compile + Cache-DiT
sgl.cache_dit.enable()
model = sgl.ErnieImagePipeline.from_pretrained(
"baidu/ERNIE-Image-Turbo",
torch_dtype=torch.bfloat16
)
model.transformer = torch.compile(model.transformer, mode="reduce-overhead")
image = model("夜间城市天际线,蓝色霓虹灯,赛博朋克风格").images[0]
image.save("cyberpunk_city.png")
torch.compile 通过 JIT 编译优化计算图,而 Cache-DiT 通过运行时缓存减少计算量——两者从不同维度加速,互不冲突。
混合并行:Sequence Parallel + Tensor Parallel
对于生产部署场景,单 GPU 的推理吞吐量可能不足以满足高并发需求。SGLang-Diffusion 支持多种并行策略的组合:
Sequence Parallel(序列并行)
将一张图像的序列维度(patch/token 序列)切分到多个 GPU 上。适用于大分辨率图像生成(如 ERNIE-Image 支持最高 2048×2048 分辨率)。
Tensor Parallel(张量并行)
将模型权重切分到多个 GPU 上,每个 GPU 负责一部分参数的计算。适用于减少单 GPU 的显存压力。
混合使用
SGLang 支持 Ulysses Parallel + Ring Parallel + Tensor Parallel 的任意组合:
sglang serve --model-path baidu/ERNIE-Image-Turbo \
--tp 2 \
--sp 2 \
--host 0.0.0.0 --port 30000
上述命令使用 4 张 GPU:2 路 Tensor Parallel + 2 路 Sequence Parallel。对于 ERNIE-Image-Turbo(8B 参数),4× 4090(24GB)的配置可以实现接近实时的批量推理。
Layerwise Offload:低显存场景的救命稻草
对于只有 16GB VRAM 甚至 12GB VRAM 的消费级 GPU,ERNIE-Image 的 8B 参数(bfloat16 约 16GB)很难完整加载。SGLang-Diffusion 的 Layerwise Offload 机制解决了这个问题:
from sglang.srt.managers.diffusion_offload import LayerwiseOffloadManager
from sglang.srt.models.ernie_image import ErnieImageDiT
offload_manager = LayerwiseOffloadManager(model, offload_per_layer=True)
model.transformer.enable_offload(offload_manager)
工作原理:
- 模型仍然存储在 CPU 内存中(系统 RAM 充足)
- 推理时,逐层将权重从 CPU 传输到 GPU
- 计算完成后,立即将结果传输回 CPU,释放 GPU 显存
- 下一个 batch 处理时重复上述过程
Layerwise Offload 使 ERNIE-Image 可以在 8GB VRAM 的 GPU 上运行(如 RTX 3070),虽然推理速度会因 PCIe 数据传输而降低,但至少让低显存用户也能本地部署。
ComfyUI 集成:在 ComfyUI 中使用 SGLang 推理引擎
SGLDiffusion ComfyUI 插件
SGLang 团队提供了一个 ComfyUI 自定义节点,它可以替换 ComfyUI 内置的 denoising forward pass,使用 SGLang 优化的推理引擎。这意味着你可以在 ComfyUI 中保持完整的工作流灵活性,同时享受 SGLang 带来的性能提升。
安装方法:
- 进入 ComfyUI 的
custom_nodes/目录 - 克隆 SGLDiffusion 仓库:
cd ComfyUI/custom_nodes/
git clone https://github.com/sgl-project/sglang.git
# 或直接复制插件文件
cp -r sglang/python/sglang/multimodal_gen/apps/ComfyUI_SGLDiffusion ./
- 重启 ComfyUI
使用方法:
在 ComfyUI 中,将默认的 KSampler 节点替换为 SGLDiffusion KSampler 节点。在节点参数中配置:
- Model: 选择 SGLang 托管的模型端点
- Enable Cache-DiT: 勾选以启用缓存加速
- Cache Mode: fast / balanced / quality
- LoRAs: 可选,加载 HuggingFace 上的 LoRA 模型
配合 ERNIE-Image 的优势
在 ComfyUI 中使用 SGLang 推理引擎,可以在保持 ERNIE-Image 完整工作流的同时获得 2-2.5x 的推理加速:
- 快速迭代:一张 1024×1024 的 ERNIE-Image-Turbo 图像,原本 8 步推理约 1.5-2 秒;开启 Cache-DiT 后约 0.7-1 秒
- 批量生成:结合 Sequence Parallel,批处理 4 张图像的总时间仅增加 30-40%
- 高阶工作流:ControlNet + IP-Adapter + 多步骤精修等复杂管线,每步都受益于加速
生产部署最佳实践
GPU 选型建议
| GPU 型号 | VRAM | 推荐配置 | 预期性能 |
|---|---|---|---|
| RTX 4090 | 24GB | 单卡部署,Batch=4 | 0.7s/张 (Turbo, Cache-DiT) |
| RTX 5090 | 32GB | 单卡部署,Batch=8 | 0.5s/张 (Turbo, Cache-DiT) |
| 2× RTX 4090 | 48GB | TP=2, 大分辨率 | 2048×2048 实时生成 |
| 4× A100 80G | 320GB | TP=4, SP=2, 生产 | ~2000 张/小时 |
| RTX 3070 | 8GB | Layerwise Offload | 可用但较慢 |
服务部署命令
基础部署:
sglang serve --model-path baidu/ERNIE-Image-Turbo \
--port 30000 \
--host 0.0.0.0
启用 Cache-DiT 的生产部署:
SGLANG_CACHE_DIT_ENABLED=true \
SGLANG_CACHE_DIT_SCM_PRESET=balanced \
sglang serve --model-path baidu/ERNIE-Image-Turbo \
--tp 1 \
--sp 1 \
--port 30000 \
--host 0.0.0.0 \
--max-running-steps 64
多 GPU 高并发部署:
SGLANG_CACHE_DIT_ENABLED=true \
sglang serve --model-path baidu/ERNIE-Image-Turbo \
--tp 2 \
--sp 2 \
--port 30000 \
--host 0.0.0.0 \
--enable-mix-parallel
性能调优清单
| 优化项 | 预期提升 | 实施难度 |
|---|---|---|
| 开启 Cache-DiT (fast) | 2.69x | 低 |
| 开启 torch.compile | 1.2-1.5x | 中 |
| 使用 SageAttention2/3 | 1.3-1.8x | 低 |
| 启用 Layerwise Offload (低显存) | 使 8GB GPU 可用 | 中 |
| Sequence Parallel (多 GPU) | 线性扩展 | 高 |
| 调整 batch size | 提升吞吐量 | 低 |
ERNIE-Image SGLang 生态的完整能力矩阵
| 功能 | SGLang 支持状态 | 说明 |
|---|---|---|
| ERNIE-Image Base(50步) | ✅ 完整支持 | SGLang day-0 支持 |
| ERNIE-Image Turbo(8步) | ✅ 完整支持 | 蒸馏模型优化 |
| Cache-DiT 缓存 | ✅ 完整支持 | 最高 2.69x 加速 |
| torch.compile | ✅ 完整支持 | JIT 编译优化 |
| LoRA 加载 | ✅ 支持 | 通过 API 动态加载 |
| 混合并行 | ✅ 支持 | Ulysses + Ring + TP |
| SageAttention3 | ✅ 支持 | 最新注意力后端 |
| 低显存部署 | ✅ Layerwise Offload | 8GB VRAM 可用 |
| ComfyUI 集成 | ✅ 自定义节点 | 替换原生 KSampler |
| FP8/INT4 量化 | ✅ 基础支持 | 进一步降低显存 |
与 Diffusers 部署的对比
| 对比维度 | SGLang-Diffusion | Diffusers + PyTorch |
|---|---|---|
| 推理速度 | 2-3x 更快(含 Cache-DiT) | 基线 |
| 多 GPU 支持 | 原生并行支持 | 需手动实现 |
| LoRA 动态加载 | ✅ API 支持 | 需重启 |
| 生产级服务 | ✅ 内置 | 需额外框架 |
| 学习曲线 | 中等 | 低 |
| 社区生态 | 快速增长 | 成熟但稳定 |
| ComfyUI 集成 | ✅ 深度集成 | 原生支持 |
| 量化支持 | FP8/INT4 | FP8/INT4/GGUF |
总结
SGLang-Diffusion 的发展速度令人瞩目。从 2025 年 11 月的初始发布,到 2026 年 1 月实现 2.5 倍于初版的推理性能,SGLang 团队在短短两个月内完成了 Cache-DiT 集成、混合并行、LoRA 支持、ComfyUI 插件等一系列重大更新。
对于 ERNIE-Image 用户来说,这意味着:
- 本地用户:开启 Cache-DiT 即可获得 1.67x-2.69x 的加速,无需额外硬件投入
- 低显存用户:Layerwise Offload 让 8GB VRAM 的 GPU 也能运行 8B 模型
- 生产部署:混合并行 + SageAttention + Cache-DiT 可以将服务吞吐量提升数倍
- ComfyUI 用户:SGLDiffusion 自定义节点让你在熟悉的工作流中享受高性能推理
如果你还在使用 Diffusers 的默认推理管线,现在就是迁移到 SGLang-Diffusion 的最佳时机——特别提示:Cache-DiT 只需设置两个环境变量即可开启,没有任何模型兼容性问题,是性价比最高的 ERNIE-Image 推理优化手段。