🚀 Target-Driven Distillation
Target-Driven Distillationは、ターゲットタイムステップ選択と分離型ガイダンスを用いた一貫性蒸留手法です。この手法により、少ないステップ数で高品質な画像生成が可能になります。
TDDで蒸留されたSDXLによって生成されたサンプル。わずか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")
📚 ドキュメント
🔧 技術詳細
Target-Driven Distillation (TDD) は、従来の一貫性蒸留手法とは異なる3つの重要な設計を持っています。
- 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ステップで生成されています。
⏱️ 更新履歴
- [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ライセンスの下で提供されています。