![見出し画像](https://assets.st-note.com/production/uploads/images/122171349/rectangle_large_type_2_87ce378b533828750664bd83fa805466.png?width=1200)
WSL2でLCM LoRAを試してみる
LCM-LoRA is supported in 🤗 Hugging Face Diffusers library from version v0.23.0 onwards.
すばらしい。すばらしいので、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]
>>>
をー。
![](https://assets.st-note.com/img/1700417492281-vdktmJ4YR2.png?width=1200)