Stable Diffusion 3.5 Large 与 Diffusers 的集成
Hugging Face 已将 Stable Diffusion 3.5 (SD3.5) 集成到 Diffusers 库中,提供了一个 8B 参数模型,以在 Stable Diffusion 3 的基础上进行改进。此发布包含两个主要检查点:标准的 8B 大模型和时间步蒸馏的 8B 大模型,可在显著更少的步骤中实现高质量图像生成。
SD3.5 Large 的架构增强
Stable Diffusion 3.5 Large 保持了与 SD3 Medium 类似的 Transformer 架构,但引入了两项关键技术改进,以提升扩展性和性能:
- QK 正规化:SD3.5 Large 实现了 QK 正规化,这是一种用于训练大型 Transformer 模型以确保稳定性的标准做法。
- 双注意力层:模型将 MMDiT 块中每个模态流使用的单一注意力层替换为双注意力层。
其他组件,包括 VAE、文本编码器和噪声调度器,保持与 SD3 Medium 中使用的完全相同。
使用 Diffusers 的推理实现
SD3.5 是一个受限模型,用户需在 Hugging Face Hub 上接受条款并通过 huggingface-cli login 进行身份验证后才能使用。推理推荐使用的精度为 torch.bfloat16。
标准与 Turbo 推理
用户可以使用 StableDiffusion3Pipeline 实现标准的 8B 模型。时间步蒸馏版本,即所谓的 “turbo” 模型,省去了 classifier-free guidance 的需求,通常仅在 4 到 8 步内生成图像,显著降低延迟。
内存优化与量化
由于 8B 参数规模,SD3.5 Large 需要大量内存。Diffusers 支持 bitsandbytes 量化,以在消费级硬件上实现推理。通过使用 BitsAndBytesConfig 将 Transformer 加载为 “NF4” 精度,用户可以显著降低显存占用。调用 pipeline.enable_model_cpu_offload() 还能进一步节省内存。
微调与 LoRA 训练
通过结合 bitsandbytes 与 peft,可以在拥有 24GB 显存的消费级 GPU 上微调 SD3.5 Large。虽然现有的 SD3 训练脚本兼容,但量化需要进行特定的修改:
- 使用量化配置或预量化检查点来初始化 Transformer。
- 调用
peft库中的prepare_model_for_kbit_training()为量化训练准备模型。
灵活的模型加载
Diffusers 为 SD3Transformer2DModel 提供了 from_single_file 方法,允许用户直接从 Stability AI 发布的原始 .safetensors 检查点文件加载 Transformer,随后可将其集成到 StableDiffusion3Pipeline 中。