LoRAのweightを上げても効かない・反映されない原因を切り分ける

LoRAのweightを上げても効かない・反映されない原因を切り分ける

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。

LoRAの重みを1.0どころか1.4まで上げても絵が変わらない、あるいはほとんど反映されない——Stable Diffusion WebUI(AUTOMATIC1111系)でLoRAを使い始めた人がよく遭遇する症状です。
この記事は「weightを上げれば効くはず」という前提が崩れる典型的な原因を、公開されている仕様と一般に観測される挙動から切り分けます。体験に基づく断定は最小限にし、根拠と限界を明示します。

「効かない」は2種類に分けて考える

weightをいじる前に、症状を次の2系統に分けると原因を絞りやすくなります。

  • 適用ゼロ型: そもそもLoRAが読み込まれておらず、weightを何に設定しても絵が一切変わらない。
  • 飽和・打ち消し型: 適用はされているが、weightを上げても寄与が伸びない、あるいは上げると崩れる。

見分け方はシンプルです。weightを0と1.2で2枚生成してまったく同じ絵が出るなら適用ゼロ型、変わるが物足りない/崩れるなら飽和・打ち消し型です。前者は読み込みの問題、後者は設定と学習内容の問題で、対処がまるで違います。

まずLoRAが本当に適用されているか確認する

適用ゼロ型でいちばん多いのは記法とファイル名の取り違えです。AUTOMATIC1111系ではプロンプト内に次の形で書きます。

masterpiece, 1girl, <lora:my_style_v1:1>
  • <lora:...>の名前は表示名ではなく拡張子(.safetensors)を除いたファイル名です。UIのカードからクリックで挿入すると取り違えを防げます。
  • WebUIを起動したコンソールを見ると、生成時に読み込みログが出ます。読み込めていないときはcouldn't findのような警告が出るので、ターミナルの出力を必ず確認します。ここでファイル名の誤りや配置場所(models/Lora/配下か)が判明することが多いです。
  • LoRAの記述がネガティブプロンプト側に紛れていないか。コピペ時に起きがちです。
  • Hires fixやimg2imgの2パス目でプロンプトを差し替えている場合、そこにLoRA記述を書き忘れると2パス目で効果が薄まります。

ここまでで絵がまったく変わらないなら、weightの値ではなく読み込み経路を疑うべきです。

ベースモデルの世代が合っているか

適用ゼロ型のもう一つの主因が、LoRAと生成に使うチェックポイントの世代不一致です。SD1.5用に学習されたLoRAをSDXLのモデルに載せても、内部の次元が合わず無視されるか警告になります(逆も同様)。

多くのLoRAはメタデータに学習時のベースモデル情報を持っています。safetensorsのメタデータ(ss_base_model_versionなど)や配布ページの記載を確認し、生成に使うチェックポイントと世代を揃えてください。

確認項目 見る場所 合っていないと
ベースモデル世代(SD1.5 / SDXL等) LoRAのメタデータ・配布ページ 適用されず絵が変わらない
ファイル名 <lora:名前:1>の名前 読み込み警告が出る
配置ディレクトリ models/Lora/ UIに出ない・読み込めない

世代違いは「weightを上げる」では絶対に解決しません。ここは値の問題ではないと割り切るのが早道です。

weightを上げても効果が伸びないとき

読み込みは成功しているのに寄与が伸びない飽和・打ち消し型には、次のような原因が考えられます。

CFGが低すぎて寄与が出にくい

私はLCM-LoRAでサンプラーLCM / Steps 6 / CFG 1.5という高速設定を使うことがありますが、CFGを極端に下げるとプロンプトの効きが弱まるのと同様に、LoRAの寄与も見えにくくなる傾向があります。効果が薄いと感じたら、まず通常サンプラー+適正CFG(一般に5〜8前後)で試し、それでも足りないかを確認するのが切り分けとして有効です。CFGが原因なら、weightを上げるより先にCFGを戻すべきです(最適値はモデルにより異なります)。

トリガーワードが入っていない

キャラクターや概念系のLoRAは、学習時のトリガーワード(起動語)をプロンプトに含めて初めて期待どおり働くものがあります。配布ページの指定語を入れているか確認してください。weightだけ上げても、呼び出す語がなければ寄与は伸びません。

text encoderとUNetで倍率が分かれている

一部のビルドやLyCORIS系では、<lora:name:1:0.5>のように2つ目の数値でtext encoder側とUNet側の倍率を分けて指定できます。指定順や対応は使っているWebUI/拡張のバージョンによって異なるため、必ず自分の環境のドキュメントで確認してください。片側だけ効いている感覚があるときはここが関係する可能性があります。

過学習・weight飽和で崩れる

weightを上げるほど良くなるとは限りません。学習が強いLoRAは、高い値にすると色飛び・線潰れ・構図固定といった破綻(burn)が出ます。実用域はLoRAや学習内容によって異なりますが、比較的低め(たとえば0.6〜0.9程度)に収まることが多いとされ、1.0を超えると崩れやすくなる傾向があると考えられます。「効かない」ではなく「上げると壊れる」なら、下げる方向の調整が有効です。

複数LoRAの打ち消し

作風の異なるLoRAを同時に高weightで重ねると、互いに打ち消して中途半端になることがあります。1つずつ単体で挙動を確認してから合成し、合計の強さを抑えるのが安全です。

同じ画像生成でも症状ごとに原因が違う例として、遠景の顔が崩れるケースの対処はFLUX Schnellで遠景の顔が崩れる|ComfyUIの対処3つにまとめています。

まとめ:次の一手はコンソールログの確認

LoRAが効かない・反映されないと感じたら、weightをいじる前に起動コンソールの読み込みログを確認することから始めてください。ここで読み込めていれば飽和・打ち消し型(CFG・トリガーワード・過学習・世代不一致)、読み込めていなければ適用ゼロ型と、原因を一気に絞れます。値をむやみに上げるのは、この切り分けを済ませた後で十分です。

よくある質問

LoRAのweightを2.0まで上げても絵が変わりません

まったく変わらない場合はweightの問題ではなく読み込み失敗の可能性が高いです。起動コンソールの読み込みログ、`<lora:ファイル名:1>`の名前、ベースモデルの世代(SD1.5かSDXLか)を確認してください。

SD1.5用のLoRAをSDXLで使えますか

内部の次元が合わないため基本的に動作せず、無視されるか警告になります。生成に使うチェックポイントとLoRAの世代を揃える必要があり、weightを上げても解決しません。

weightを上げると絵が崩れるのはなぜですか

学習が強いLoRAは高いweightで色飛びや線潰れなどの破綻が出やすくなります。実用域は多くの場合0.6〜0.9前後で、崩れるなら下げる方向で調整するのが有効です(最適値はモデルにより異なります)。