HuggingFace Diffusers v0.23.0の新機能
「Diffusers v0.23.0」の新機能についてまとめました。
前回
1. Diffusers v0.23.0 のリリースノート
情報元となる「Diffusers 0.23.0」のリリースノートは、以下で参照できます。
2. LCM LoRA
「LCM」(Latent Consistency Model) は、超高速推論を可能にすることで、「Stable Diffusion」のコミュニティで大きな注目を集めました。LCM作者の @luosiallen は、@patil-suraj および @dg845 と協力して、「Stable Diffusion XL」(SDXL) の LCM サポートを拡張し、すべてを LoRA に詰め込むことに成功しました。
このアプローチは「LCM LoRA」と呼ばれます。
以下は、わずか4つの推論ステップを実行する「LCM LoRA」の使用例です。
from diffusers import DiffusionPipeline, LCMScheduler
import torch
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
lcm_lora_id = "latent-consistency/lcm-lora-sdxl"
pipe = DiffusionPipeline.from_pretrained(model_id, variant="fp16", torch_dtype=torch.float16).to("cuda")
pipe.load_lora_weights(lcm_lora_id)
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
prompt = "close-up photography of old man standing in the rain at night, in a street lit by lamps, leica 35mm summilux"
image = pipe(
prompt=prompt,
num_inference_steps=4,
guidance_scale=1,
).images[0]
LoRA を Img2Img、Inpaint、ControlNet などと組み合わせることができます。
詳しくは、ドキュメントを参照。
3. LCM SDXL
「LCM」 (Latent Consistency Models) の作業を継続して、このアプローチを 「SDXL」にも適用し、「SSD-1B」および「SDXL」のファインチューニングされたチェックポイントを提供します。
from diffusers import DiffusionPipeline, UNet2DConditionModel, LCMScheduler
import torch
unet = UNet2DConditionModel.from_pretrained(
"latent-consistency/lcm-sdxl",
torch_dtype=torch.float16,
variant="fp16",
)
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", unet=unet, torch_dtype=torch.float16
).to("cuda")
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
prompt = "Self-portrait oil painting, a beautiful cyborg with golden hair, 8k"
generator = torch.manual_seed(0)
image = pipe(
prompt=prompt, num_inference_steps=4, generator=generator, guidance_scale=1.0
).images[0]
詳しくは、ドキュメントを参照。
4. Consistency Decoder
OpenAI は、「DALL-E 3」で使用される「Consistency Decoder」をオープンソース化しました。これにより、「Stable Diffusion v1」ファミリーのモデルのデコードが改善されます。
import torch
from diffusers import DiffusionPipeline, ConsistencyDecoderVAE
vae = ConsistencyDecoderVAE.from_pretrained("openai/consistency-decoder", torch_dtype=pipe.torch_dtype)
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", vae=vae, torch_dtype=torch.float16
).to("cuda")
pipe("horse", generator=torch.manual_seed(0)).images
詳しくは、ドキュメントを参照。
次回
この記事が気に入ったらサポートをしてみませんか?