見出し画像

WSL2でLCM LoRAを試してみる

LCM-LoRA is supported in 🤗 Hugging Face Diffusers library from version v0.23.0 onwards.

latent-consistency/lcm-lora-sdxl · Hugging Face

すばらしい。すばらしいので、japanese-stable-diffusion-xlで試してみます。

準備

いつもの。

python3 -m venv lcm-lora-sdxl
cd $_
source bin/activate

pip installして、

pip install torch diffusers transformers SentencePiece accelerate

pip list。

$ pip list
Package                  Version
------------------------ ----------
accelerate               0.24.1
certifi                  2023.11.17
charset-normalizer       3.3.2
diffusers                0.23.1
filelock                 3.13.1
fsspec                   2023.10.0
huggingface-hub          0.19.4
idna                     3.4
importlib-metadata       6.8.0
Jinja2                   3.1.2
MarkupSafe               2.1.3
mpmath                   1.3.0
networkx                 3.2.1
numpy                    1.26.2
nvidia-cublas-cu12       12.1.3.1
nvidia-cuda-cupti-cu12   12.1.105
nvidia-cuda-nvrtc-cu12   12.1.105
nvidia-cuda-runtime-cu12 12.1.105
nvidia-cudnn-cu12        8.9.2.26
nvidia-cufft-cu12        11.0.2.54
nvidia-curand-cu12       10.3.2.106
nvidia-cusolver-cu12     11.4.5.107
nvidia-cusparse-cu12     12.1.0.106
nvidia-nccl-cu12         2.18.1
nvidia-nvjitlink-cu12    12.3.101
nvidia-nvtx-cu12         12.1.105
packaging                23.2
Pillow                   10.1.0
pip                      22.0.2
psutil                   5.9.6
PyYAML                   6.0.1
regex                    2023.10.3
requests                 2.31.0
safetensors              0.4.0
sentencepiece            0.1.99
setuptools               59.6.0
sympy                    1.12
tokenizers               0.15.0
torch                    2.1.1
tqdm                     4.66.1
transformers             4.35.2
triton                   2.1.0
typing_extensions        4.8.0
urllib3                  2.1.0
zipp                     3.17.0

試してみる

サンプルをベースにして作成しています。
imagesメソッドは、promptだけではなく、生成する画像の枚数(attempts)も任意に指定できるようにしています。だって、複数見てどれがいいか選びたいもの。

from diffusers import DiffusionPipeline, LCMScheduler
import torch

#model_id = "stabilityai/stable-diffusion-xl-base-1.0"
model_id = "stabilityai/japanese-stable-diffusion-xl"

lcm_lora_id = "latent-consistency/lcm-lora-sdxl"

pipeline = DiffusionPipeline.from_pretrained(
    model_id,
    variant="fp16"
)

pipeline.load_lora_weights(lcm_lora_id)
pipeline.scheduler = LCMScheduler.from_config(pipeline.scheduler.config)
pipeline.to(device="cuda", dtype=torch.float16)


def images(prompt, attempts=1):
    images = []
    num_inference_steps = 4
    for idx in range(attempts):
        image = pipeline(
            prompt=prompt,
            num_inference_steps=num_inference_steps,
            guidance_scale=1,
        ).images[0]
        images.append(image)
        image.show()
    return images

そして、、、

>>> images = images("松阪牛、時速80kmで疾走", 2)
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:01<00:00,  3.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00,  5.28it/s]
>>>

をー。

松阪牛、時速80kmで疾走

関連


この記事が気に入ったらサポートをしてみませんか?