見出し画像

AUTOMATIC1111版Stable Diffusion web UIでLCM LoRAを利用する手順

Last update 11-26-2023




▼ 0. LCM LoRAを利用する簡単な方法

 記事の本編よりも先に、LCM LoRAを体験する最も簡単な方法を紹介します。標準の利用方法については1.以降をご覧ください。

0-1. LCM LoRAをマージしたモデル

 LCM LoRAをマージしたStable Diffusionモデルが登場していて、これらを利用すればすぐに生成ができます。Sampling stepsとGFC Scaleをかなり下げる必要がありますので注意してください(steps=8程度、GFC=1~2)。また、LCM LoRAを指定するプロンプトを記入してはいけません。

 なお、LCM Samplerは必須ではなく、Euler a、DPM++ 2S a Karras等を利用するのが良さそうです。LCM Samplerを利用したい場合は3.をご覧ください。

 LCMモデルは、Civitaiのモデル一覧にて絞り込めば見つけられます。Model typesの選択を「Checkpoint」に、Base modelの選択を「SD 1.5 LCM」や「SDXL 1.0 LCM」に変更してください。今はまだ少ないですが、今後増えていくと思われます。

Civitaiでモデルを絞り込むところ

0-2. LCM LoRAのマージモデルと生成画像

 執筆時点で存在するモデルでの例です。

EveryjourneyLCM (SD 1.5 LCM)
https://civitai.com/models/210006 

pastel color anime, 1girl, softly smile :d, upper body, twintail hair, holding cat, white sailor uniform, food stall, downtown street,
Negative prompt: (worst quality, low quality:1.2),
Steps: 8, Sampler: LCM, CFG scale: 2, Seed: 3723027663, Size: 768x384, Model hash: 1341c166e5, Model: everyjourneylcm_v10Ace, Denoising strength: 0.55, Clip skip: 2, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: v1.6.0-2-g4afaaf8a

blue_pencil-XL-LCM (SDXL 1.0 LCM)
https://civitai.com/models/202108 

pastel color anime, 1girl, softly smile :d, upper body, twintail hair, holding cat, white sailor uniform, food stall, downtown street,
Negative prompt: (worst quality, low quality:1.2),
Steps: 7, Sampler: DPM++ 2S a Karras, CFG scale: 1.5, Seed: 1901377996, Size: 1024x512, Model hash: 9d592e9646, Model: blue_pencil-XL-v1.0.0-lcm, Denoising strength: 0.55, Clip skip: 2, ENSD: 31337, Hires upscale: 1.5, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: v1.6.0-2-g4afaaf8a

Reproduction_LCM (SDXL 1.0 LCM)
https://civitai.com/models/202308 

pastel color anime, 1girl, softly smile :d, upper body, twintail hair, holding cat, white sailor uniform, food stall, downtown street,
Negative prompt: (worst quality, low quality:1.2),
Steps: 7, Sampler: Euler a, CFG scale: 2, Seed: 2209450610, Size: 1024x512, Model hash: 5e88584811, Model: reproductionLCM_v10, Denoising strength: 0.55, Clip skip: 2, ENSD: 31337, Hires upscale: 1.5, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: v1.6.0-2-g4afaaf8a



▼ 1. 本記事について

1-1. 概要

 Stable Diffusion形式のモデルで画像を生成する有名なツールに、AUTOMATIC1111氏のStable Diffusion web UI(以下、AUTOMATIC1111 web UI)があります。これを使い、高速に画像の生成ができるTensorRT拡張について記事を書きました。

 本記事では、これとは異なる「LCM LoRA」という手法を用いる手順を説明します。生成時のStepsを大幅に下げられるため、Hires. fix(i2iのアップスケーリング)も高速化するのが特徴です。

 LCMやLCM LoRAについては、下記の記事をご覧ください。なお、TensorRTと併用もできるようです。



▼ 2. LCM LoRAの注意点

2-1. 利用時の注意

 LCM LoRAにて生成が高速になる代わりに、いくつかの代償を払う必要があるかもしれません。

  • 生成画像が異なる。Sampling stepsとGFC Scaleをかなり低く設定するので、挙動の変化は避けられない。そのため、LCM LoRAの利用を前提としてプロンプトや設定を調整する必要がある。

  • モデルによる相性があり、望ましい結果が得られない場合がある。LCM LoRAが、ベースモデル向けであることが理由と考えられる。相性が良いモデルを探すか、LCM LoRAを組み込んだモデルを利用する。

  • Sampling methodの相性も激しい。LCM Samplerを使用するのは無難だが、描き込みが減ってしまう。Euler a、DPM++ 2S a Karrasは比較的向いている。



▼ 3. LCM LoRAを利用する手順

3-1. 概要

 手順は2つあり、LCM Samplerを追加すること(ただし必須ではない)と、生成時にLCM LoRAを指定することです。本記事では下記の条件を前提とします。

  • 既にAUTOMATIC1111 web UIを利用中、または新規インストールが済んで利用できる状態であること。正しく動作していない可能性があれば、アップデートを検討する。

  • 操作画面の下部に「torch: 2.0.1+cu***」と表示されていること。これとは異なる場合の動作は未確認で、AUTOMATIC1111 web UI本体やPyTorchのアップデートを要する可能性がある。
    (※LCM Sampler以外はLoRAの適用だけなので、古いバージョンでも利用できる可能性はあるが未確認。)

3-2. Sampling methodにLCMを追加

 こちらは必須とまでは言えない模様です。興味のある方は追加してみてください。確認したところ、2つの方法がありました。本記事では前者の方法を選択します。なお、どちらもほとんど同じ手順でインストールできます。

 AUTOMATIC1111 web UIを起動したら、タブを「Extensions」「Install from URL」の順に移動し、AnimateDiffの公式リポジトリのURLを入力して「Install」をクリックしてください。導入済みでLCM Samplerが選べない方は、AnimateDiffをアップデートしてください。

AnimateDiffをインストールするところ

 インストールが完了すると、「Install」ボタンの下に表示が出ます。その後、「Installed」のタブに移動して「Apply and restart UI」をクリックして再起動を待ちます。もし、LCM Samplerがなければ、AUTOMATIC1111 web UI自体を起動し直してみてください。

3-3. LCM LoRAを追加

 LCM LoRAは名前の通りLoRAですので、他のLoRAと同じように利用できます。下記のURLよりダウンロードして、LoRA用のディレクトリに移動してください。

 いずれもファイル名が同一(pytorch_lora_weights.safetensors)ですので、共存させたい場合は注意が必要です。最も簡単な解決方法は、ファイル名を変えることです。

 ところで、モデルとLoRA等を併用する場合は、Stable Diffusionのメジャーバージョン(1、2、XL)が一致している必要があります。筆者はこれらの混在が進んで混乱してしまったので、バージョンごとに設置ディレクトリを分けることにしました。やり方は別の記事で紹介する予定です下記の記事で紹介しました。

Stable Diffusion web UI (Forge) の個人的な設定メモ
https://note.com/mayu_hiraizumi/n/nd05a329ff982

3-4. 生成を行う

 準備ができたら生成を行います。設定で注意する点がいくつかあります。モデルのサンプル画像があれば、そちらも参照してください。

  • プロンプトでLCM LoRAを指定する(LCM LoRAをマージしたモデルの場合は不要)。末尾に「,<lora:pytorch_lora_weights:1>」の形式でLoRAのファイル名を記述すること。数値の1は調整が可能で、減らした値も試してみると良いかもしれない。

  • Sampling methodは、Euler a、DPM++ 2S a Karras、LCMのいずれかを選択する。LCMはシンプルなイメージになる傾向があるので好みで。確認したところ、DPM++ 2M SDE Exponential、DPM++ 2M SDE Heun Exponential、DPM++ 3M SDE Exponential、Restartも可とみられる。

  • Sampling stepsは、4~10程度。4では画像がぼんやりする場合がある。問題がなければ8で固定しても構わない。

  • CFG Scaleは、1~2程度。問題がなければ2で固定しても構わない。なお、スライダーは0.5単位だが実は細かい指定が可能(小技)。

  • Hires. fixは好みで使用する。モデルによっては苦手な出力解像度が存在するため、筆者は基本的にHires. fixを使用している。0-2.や4.に設定例がある。

  • その他の拡張機能は未確認。何かが悪さをする可能性があるので、シンプルな状態から始めるか、それぞれの影響を確認するのが望ましい。



▼ 4. LCM LoRAサンプル画像

4-1. 概要

 生成したサンプル画像を設定込みで掲載します。起動オプションは下記のとおりです。opt-sdp-no-mem-attentionを指定してxformersを外すと、同一設定時の再現性が高くなります(常に同じ画像が生成される)。

COMMANDLINE_ARGS=--opt-sdp-no-mem-attention --no-half-vae --medvram

4-2. 生成時の設定

下記のURLで配布しているLittleStepMix_AとVAEを使用しました。
https://huggingface.co/sazyou-roukaku/LittleStepMix 

下記の設定はHires. fix有りの場合です。

pale pastel color anime,1girl, softly smile :d, upper body, yellow green pigtail hair, skyblue seaside beach, some palm-tree, gray eyes, pale pink ribbon dress, distant mountain, <lora:pytorch_lora_weights:1>
Negative prompt: (worst quality, low quality:1.2), backlit,
CFG scale: 2, Seed: 4184699122, Size: 768x384, Model hash: 1493009b1f, Model: LittleStepMIx_A, VAE hash: f6dbafc61e, VAE: sr_SDv2vae_kl-f8anime2.safetensors, Denoising strength: 0.55, Clip skip: 2, ENSD: 31337, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+ Anime6B, Lora hashes: "pytorch_lora_weights: aaebf6360f7d", Version: v1.6.0-2-g4afaaf8a

4-3. Hires. fix無し

 出力解像度は768x384です。Stepsが低すぎると、不十分な出力になってしまうようです。Samplerごとの特徴も見られます。

4-4. Sampler: Euler a 固定

 これ以降はすべて、出力解像度は1536x768(Upscale by 2)、Hires stepsは0です。Sampling stepsやHires samplerによる違いが見られます。

4-5. Sampler: DPM++ 2S a Karras 固定

 ほど良い描き込みが得られそうな雰囲気です。Euler aかこちらか、好みで選ぶと良いでしょう。

4-6. Sampler: LCM 固定

 Euler aよりもすっきりしています。こちらも好みで選ぶと良いでしょう。

4-7. 結論

 念のためSamplerとHires samplerを変えて試してみましたが、わざわざ変える必要は無いと思います(モデルにもよるかも?)。全体的な設定をどうするかは好みによるところが大きいので、色々試してみてください。

 もし良ければ、DPM++ 2M SDE Exponential、DPM++ 2M SDE Heun Exponential、DPM++ 3M SDE Exponential、Restartも試してみてください。X/Y plotを使って、Samplerごとの出力を確認してみるのも良いと思います。



▼ 5. おまけ

 表紙画像のプロンプト等を記載します。同一の画像を生成するためには、「torch: 2.0.1+cu118」「--opt-sdp-no-mem-attention」の設定が必要です。

upper body, child 2girl, rise arms, cute summer dress, happy smile, brown pigtail, meadow, distant town,
ultra detailed animation, hug together,
Negative prompt: (bad quality, low quality:1.2), teeth, large breast, braid hair,
Steps: 7, Sampler: Euler a, CFG scale: 1.5, Seed: 1830664579, Size: 1024x512, Model hash: 9d592e9646, Model: blue_pencil-XL-v1.0.0-lcm, Denoising strength: 0.55, Clip skip: 2, ENSD: 31337, Hires upscale: 1.5, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: v1.6.0-2-g4afaaf8a

RTX 3060を使用して、SDXLモデルでHires. fix込みでも27秒で生成できた、1536x768の画像。



▼ 6. その他

 私が書いた他の記事は、メニューよりたどってください。

 noteのアカウントはメインの@Mayu_Hiraizumiに紐付けていますが、記事に関することはサブアカウントの@riddi0908までお願いします。

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