ERNIE-Image SGLang-Diffusion 最新优化:Cache-DiT 与 ComfyUI 集成实现 2.5x 推理加速

июль 10, 2026

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)

工作原理:

  1. 模型仍然存储在 CPU 内存中(系统 RAM 充足)
  2. 推理时,逐层将权重从 CPU 传输到 GPU
  3. 计算完成后,立即将结果传输回 CPU,释放 GPU 显存
  4. 下一个 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 带来的性能提升。

安装方法:

  1. 进入 ComfyUI 的 custom_nodes/ 目录
  2. 克隆 SGLDiffusion 仓库:
cd ComfyUI/custom_nodes/
git clone https://github.com/sgl-project/sglang.git
# 或直接复制插件文件
cp -r sglang/python/sglang/multimodal_gen/apps/ComfyUI_SGLDiffusion ./
  1. 重启 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 推理优化手段。

ERNIE-Image Team