🚀 目标驱动蒸馏(Target-Driven Distillation)
目标驱动蒸馏(TDD)是一种一致性蒸馏方法,它采用了目标时间步选择和去耦引导等关键设计,能有效提升训练效率,在图像生成的复杂度和清晰度上表现出色,可应用于多种模型实现快速文本到图像的生成。
🚀 快速开始
项目相关链接
项目效果展示

TDD 蒸馏的 SDXL 仅用 4 - 8 步生成的样本。
✨ 主要特性
目标驱动蒸馏(TDD)有三个关键设计,与以往的一致性蒸馏方法不同:
- TDD 采用精细的目标时间步选择策略,提高训练效率:具体来说,它首先从预定义的等距去噪时间表(例如 4 - 8 步)中选择,然后添加随机偏移以适应非确定性采样(例如 $\gamma$-采样)。
- TDD 在训练期间利用去耦引导,使其在推理期间可以对引导比例进行后期调整:具体而言,它用无条件(即空)提示替换部分文本条件,以符合使用 CFG 的标准训练过程。
- TDD 可以选择配备非等距采样和 x0 裁剪,为图像采样提供更灵活、准确的方式。

TDD 概述。(a) 训练过程具有目标时间步选择和去耦引导。(b) 推理过程可以选择采用非等距去噪时间表。

由主流一致性蒸馏方法 LCM、PCM、TCD 和我们的 TDD 蒸馏的 SDXL 模型从相同种子生成的样本。我们的方法在图像复杂度和清晰度方面均显示出优势。

TDD 蒸馏的不同基础模型以及使用不同 LoRA 适配器或 ControlNets 的 SDXL 生成的样本。
AnimateLCM 蒸馏(上)和 TDD 蒸馏(下)的 SVD - xt 1.1 生成的视频样本,同样只需 4 - 8 步。
💻 使用示例
FLUX 模型使用示例
from huggingface_hub import hf_hub_download
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16)
pipe.load_lora_weights(hf_hub_download("RED-AIGC/TDD", "FLUX.1-dev_tdd_adv_lora_weights.safetensors"))
pipe.fuse_lora(lora_scale=0.125)
pipe.to("cuda")
image_flux = pipe(
prompt=[prompt],
generator=torch.Generator().manual_seed(int(3413)),
num_inference_steps=8,
guidance_scale=2.0,
height=1024,
width=1024,
max_sequence_length=256
).images[0]
SDXL 模型使用示例
你可以直接从本仓库下载模型,也可以在 Python 脚本中下载:
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="RedAIGC/TDD", filename="sdxl_tdd_lora_weights.safetensors", local_dir="./tdd_lora")
import torch
import diffusers
from diffusers import StableDiffusionXLPipeline
from tdd_scheduler import TDDScheduler
device = "cuda"
tdd_lora_path = "tdd_lora/sdxl_tdd_lora_weights.safetensors"
pipe = StableDiffusionXLPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16").to(device)
pipe.scheduler = TDDSchedulerPlus.from_config(pipe.scheduler.config)
pipe.load_lora_weights(tdd_lora_path, adapter_name="accelerate")
pipe.fuse_lora()
prompt = "A photo of a cat made of water."
image = pipe(
prompt=prompt,
num_inference_steps=4,
guidance_scale=1.7,
eta=0.2,
generator=torch.Generator(device=device).manual_seed(546237),
).images[0]
image.save("tdd.png")
📚 详细文档
模型更新记录
- [2025.01.01]:上传 FLUX - TDD - ADV 的 TDD LoRA 权重。
- [2024.09.20]:上传 FLUX - TDD - BETA(4 - 8 步)的 TDD LoRA 权重。
- [2024.08.25]:上传 SVD 的 TDD LoRA 权重。
- [2024.08.22]:上传 Stable Diffusion XL、YamerMIX 和 RealVisXL - V4.0 的 TDD LoRA 权重,实现快速文本到图像生成。
感谢 Yamer 和 SG_161222 分别开发了 YamerMIX 和 RealVisXL V4.0。
📄 许可证
本项目采用 Apache - 2.0 许可证。