LCM-LoRAで高速生成する設定手順|サンプラー・ステップ数・CFGの正しい組み合わせ

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。
通常20〜30ステップかかるStable Diffusionの生成を、6ステップ前後まで削減できるのがLCM-LoRAの特徴です。ただし設定値の組み合わせを間違えると、速度は上がらず画質だけが崩れます。この記事では、WebUIでの具体的な設定値と、--apiモードで叩く場合のパラメータを整理します。
LCM-LoRAの仕組みを把握しておく
LCM-LoRA(Latent Consistency Model LoRA)は、既存のStable Diffusionモデルにロラを重ねることで、少ないサンプリングステップでも品質を保てるようにする手法です。モデル全体を再学習するのではなくLoRAのウェイトを追加するだけで適用できるため、手持ちのチェックポイントにそのまま乗せられます。
前提として、LCM-LoRAにはベースモデルのバージョンごとに対応するファイルが存在します。SD 1.5向けとSDXL向けはファイルが別で、混在させると出力が崩れます。最初にここを確認してください。
必要なファイルを入手する
HuggingFaceの公式リポジトリからダウンロードします(執筆時点)。
| ベースモデル | HuggingFace リポジトリ |
|---|---|
| SD 1.5 | latent-consistency/lcm-lora-sdv1-5 |
| SDXL | latent-consistency/lcm-lora-sdxl |
ダウンロードした .safetensors ファイルは、WebUIの models/Lora/ ディレクトリに配置します。
# HuggingFace CLIを使う場合
pip install huggingface_hub
huggingface-cli download latent-consistency/lcm-lora-sdv1-5 \
--local-dir ./models/Lora/
CLIが使えない環境では、リポジトリのページから直接ダウンロードして models/Lora/ に置いても構いません。配置後はWebUIを再起動するかモデルをリロードしてLoRAの一覧に表示されることを確認してください。
WebUIでの設定値
サンプラーの選択
「Sampling method」のドロップダウンから LCM を選びます。DPM++やEulerなど他のサンプラーはLCM-LoRAの動作に最適化されていないため、ステップ数を減らしても品質が落ちるだけで速度面の恩恵が薄れます。
LCMサンプラーが一覧に表示されない場合は、WebUIのバージョンが古い可能性があります。git pull 後にWebUIを再起動して再確認してください。
ステップ数とCFGスケール
Sampling steps : 6
CFG Scale : 1.5
私が実際に使っている設定値がこの組み合わせです。LCMの設計上、CFGスケールは通常の7〜8より大幅に低くする必要があります。公式リポジトリのREADMEには1.0〜2.0の範囲が記載されており、2.0を超えると過飽和やアーティファクトが出やすくなります。ステップ数は4〜8の範囲で試すと良く、6は品質と速度のバランスが取りやすいと感じています。
LoRAの適用方法
プロンプト欄に以下の書式でトリガーを追記する方法が最もシンプルです。
<lora:lcm-lora-sdv1-5:1.0>
LoRAの重みは 1.0 を基本にします。他のLoRAと併用する場合は全LoRAの重みの合計が大きくなりすぎないよう注意してください。
解像度について
LCM-LoRA自体に解像度の制限はありませんが、ベースモデルの学習解像度に合わせるのが安全です。SD 1.5なら512×512または512×768が基本です。より大きなサイズで出力したい場合は、まずネイティブ解像度で生成してからReal-ESRGANなどでアップスケールするフローのほうが安定します。
APIから叩く場合のパラメータ
WebUIを --api オプション付きで起動している場合、/sdapi/v1/txt2img エンドポイントにPOSTする際も同じ設定値を渡します。LoRAはプロンプトに埋め込む書式が最もシンプルで確実です。
import requests
import base64
payload = {
"prompt": "a photo of a cat, high quality <lora:lcm-lora-sdv1-5:1.0>",
"negative_prompt": "",
"steps": 6,
"cfg_scale": 1.5,
"sampler_name": "LCM",
"width": 512,
"height": 512,
}
response = requests.post(
"http://127.0.0.1:7860/sdapi/v1/txt2img",
json=payload
)
result = response.json()
img_data = base64.b64decode(result["images"][0])
with open("output.png", "wb") as f:
f.write(img_data)
APIのレスポンスに "images" キーが見つからない場合は、print(result.keys()) で構造を確認してください。WebUIのバージョンによってレスポンス形式が変わることがあります。
つまずきやすいポイント
サンプラーがLCMになっていない
WebUIを再起動すると前回の設定に戻ることがあります。生成前にSampling methodを目視確認する習慣をつけるか、設定をスタイルとして保存しておくと事故を防げます。
CFGスケールを下げ忘れる
デフォルト値(7.0)のままLCM-LoRAを使うと、過飽和した画像が出やすくなります。設定変更直後に確認用の1枚を生成して目視チェックするのをおすすめします。
SD 1.5用LoRAをSDXLベースに乗せる
エラーになるとは限らず、生成は完了するが意味不明な出力になるケースがあります。ベースモデルとLoRAのバージョンが合っているかを最初に確認してください。
速度が期待より上がらない
VAEの処理がボトルネックになっている場合があります。また、--medvram や --lowvram 起動オプションが余分なオーバーヘッドを生んでいる場合もあるため、オプション構成を見直してみてください。環境によって効果は異なります。
まとめ
LCM-LoRAで高速生成するための設定は「サンプラー: LCM・ステップ数: 6・CFG: 1.5」の3点セットが出発点です。LoRAファイルのバージョンをベースモデルに合わせること、CFGを大幅に下げることの2点が最初に引っかかりやすい箇所です。
まず手持ちのモデルに対応するLoRAをHuggingFaceから取得し、上記の設定値で1枚生成してみてください。通常より短いステップ数で生成が完了することを確認できたら、ステップ数を4〜8の範囲で調整して自分の用途に合う値を探すのが次のステップです。
よくある質問
LCM-LoRAはどのモデルにも使えますか?
ベースモデルのバージョンに対応したLoRAファイルを選ぶ必要があります。SD 1.5ベースには `lcm-lora-sdv1-5`、SDXLベースには `lcm-lora-sdxl` を使います。バージョンが合わない場合、エラーが出ないまま出力が崩れることがあります。
ステップ数6でも画質は十分ですか?
プロンプトや解像度にもよりますが、通常20〜30ステップの生成と比較してディテールが粗くなることはあります。品質が気になる場合は生成後にReal-ESRGANなどでアップスケールするフローが有効です。
CFGスケールを1.5より低くするとどうなりますか?
プロンプトへの追従が弱まり、より自由なランダム性が高い出力になります。1.0に近づくほど指定した内容が反映されにくくなる傾向があります。まずは1.5で試してから調整するのが無難です。
Stable Diffusion WebUIのAPIでLCM-LoRAを使うにはどうすればいいですか?
WebUIを `--api` オプション付きで起動し、`/sdapi/v1/txt2img` エンドポイントへPOSTする際にプロンプトに `<lora:lcm-lora-sdv1-5:1.0>` を含め、`sampler_name` を `LCM`、`steps` を6、`cfg_scale` を1.5に設定します。