見出し画像

新しいStable Diffusion WebUI ForgeでFLUX.1を試す(Windows)

※ Last update 8-19-2024
※ 旧ver.用の導入記事もあります。
※ (8-19) LoRA、分割されたモデル、GGUF版モデルの利用について、4.に記載しました。
※ (8-15) XのGrokに搭載されたFLUX.1の生成機能についての記事を書きました。
※ (8-14) 更新後に「--reinstall-torch」が必要な場合の対応を3.2に記載しました。
※ (8-12) 3-1.に、過去の状態へ戻す方法を記載しました。問題が発生した場合のみお試しください。




▼ 0. 本記事について

0-1. 概要

 Stable Diffusion WebUI Forge(Forge版SD WebUI)がFLUX.1に対応したとの情報がありましたので、テスト環境を用意して試してみます。詳細な情報は下記を参照してください。重要な情報が多いので確認を推奨します。

[Major Update] BitsandBytes Guidelines and Flux #981
https://github.com/lllyasviel/stable-diffusion-webui-forge/discussions/981 

 このツールは現在、実験的なプロジェクトとなっています。動作に不具合を生じる場合がありますので、十分に留意の上でご利用ください。

0-2. 余談

 本記事と直接の関係はありませんが、SDXL用として筆者が現役利用している旧バージョンの構築や設定に関する記事です。

0-3. 余談2

 ComfyUIを利用してFLUX.1で生成を行う方法です。Forge版SD WebUIは実験の位置づけのため、安定した動作を望むのであればComfyUIの方が良いかもしれません。



▼ 1. インストール

1-1. 注意点

 執筆時点ではCUDA 12.4用とCUDA 12.1用があります。CUDA 12.4用を起動したときに下記のメッセージが表示されて起動できない場合は、12.1用を使用してください(筆者の環境では12.4用はNGでした)。

RuntimeError: Your device does not support the current version of Torch/CUDA! Consider download another version:
https://github.com/lllyasviel/stable-diffusion-webui-forge/releases/tag/latest

1-2. ダウンロード

 今回は「git clone」を使用せず、ポータブル版を使用します。まずは下記のURLへアクセスしてください。

https://github.com/lllyasviel/stable-diffusion-webui-forge 

 下の方に行くと「one-click installation package」がありますので、いずれかをダウンロードして適当なディレクトリに解凍します。通常は「Recommended」を選んでください。

ポータブル版をダウンロードする

 解凍したディレクトリに入り、「update.bat」を実行します。最新版で問題が発生した場合は、3-1.を参照して巻き戻してみてください。

update.batを実行する(画像は古いバージョンのもの)
update.batの実行画面

1-3. モデルの設置

 初回の起動前に必ず行ってください(モデルが入っていないと、別のモデルがダウンロードされてしまいます)。FLUX.1のモデルをダウンロードして、「webui\models\Stable-diffusion」に移動します。

(※LoRAを利用する場合はFP8版を使用してください。)

 上記以外のモデルは、下記の記事(と、そこからリンクされている過去の記事)を参照してください。

 また、LoRA、分割されたモデル、GGUF版モデルの扱い方については4.を参照してください。



▼ 2. 実行

2-1. 起動

 起動は「run.bat」を実行するだけです。

run.batを実行する(画像は古いバージョンのもの)

 コマンドプロンプトの画面に下記のような表示が出て止まりますので、指示されたURL(http://127.0.0.1:7860/)へアクセスしてください。

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 19.6s (prepare environment: 4.8s, launcher: 2.9s, import torch: 4.5s, initialize shared: 0.1s, other imports: 1.2s, load scripts: 2.4s, create ui: 2.2s, gradio launch: 1.4s).

2-2. 設定と生成

 今回はFLUX.1専用として使用するので、「UI」を「flux」に変更します。「checkpoint」も選択してください。通常は、おすすめのモデル「flux1-dev-bnb-nf4.safetensors」が良いでしょう。ただし、LoRAを使用する場合は「flux1-dev-fp8.safetensors」を選択してください。

 あとは「Prompt」を入力し、お好みで「width」と「height」を変更してから「Generate」をクリックします。生成が終わるまでしばらくお待ちください。

生成を行ったところ(画面はアップデート前のUI)

 生成した画像は、「webui\outputs\txt2img-images」の中に保存されています。

2-3. 生成にかかる時間

 生成時間は、生成した画像の下の方に「Time taken: ***.* sec.」の形で表示されます。「Generate」をクリックしてから再度クリックできるようになるまでの時間とは、若干ですが異なるようです。

 筆者の環境(Ryzen 5 3600、DDR4-3200_32GB、GeForve RTX 3060_12GB)にて、解像度1024x1024でのTime takenは下記のとおりでした。CLIPは「t5xxl_fp8_e4m3fn」を使用しています。

  • 20 Steps - FP8 (flux1-dev-fp8.safetensors)
    95 秒程度,10.6 GB / 12.0 GB

  • 20 Steps - NF4 (flux1-dev-bnb-nf4.safetensors)
    80 秒程度,8.0 GB / 12.0GB

  • 20 Steps - GGUF (flux1-dev-Q5_0.safetensors)
     123 秒程度,10.4GB / 12.0GB

  • 20 Steps - GGUF (flux1-dev-Q4_0.safetensors)
    96 秒程度,8.7GB / 12.0GB

 なお、FLUX.1に対応した初期の頃は、VRAM使用量が過剰になる問題がありました。現在は、基本的には解決したようです。

 低Steps時の生成時間は下記のとおりです。時間等は多少のばらつきが発生します。

  • 4 Steps -FP8 (flux1-schnell-fp8.safetensors)
    23 秒,10.8 GB / 12.0 GB

  • 4 Steps - NF4 (flux1-schnell-bnb-nf4.safetensors)
    16 秒,8.2 GB / 12.0 GB



▼ 3. トラブルシューティング

3-1. 過去のコミットへ巻き戻す

 アップデートを行って問題が発生した場合は、暫定的に特定の時点まで巻き戻すことで解決できます。ここでは、巻き戻したり最新に戻したりするバッチファイルを作って対応します。

 ポータブル版の「run.bat」「update.bat」のあるディレクトリに、2つのファイルを作成してください。

 まずは、巻き戻すための「rollback.bat」です。2944で始まる羅列(コミットID)は適宜変更する必要があります。

@echo off
set PATH=%DIR%\git\bin;%PATH%
git -C "%~dp0webui" checkout 294416ed55cad69eb8a01393854457e35207a2d4
pause

 次は、巻き戻した状態を取り消して最新の状態に戻す「rollfoward.bat」です。巻き戻している時だけ使えます。

@echo off
set PATH=%DIR%\git\bin;%PATH%
git -C "%~dp0webui" checkout main
pause

 どの時点(コミットID)まで巻き戻すかを決めるため、下記のURLへアクセスしてください。ブランチの内容は刻々と更新され、一番上の行が最新のコミットとなっています。

https://github.com/lllyasviel/stable-diffusion-webui-forge/commits/main/ 

 どの時点に戻せば直るかは、やってみないと分かりません。ここでは、作者が「Verified」を付けたコミットのみに注目しました。この方法が論的に正しいわけではないので、更新の時系列も確認してみてください。

「Verified」が付いたコミットを探す

 コミットIDの先頭が表示されているので、右側のアイコンをクリックしてクリップボードにコピーします。「rollback.bat」のコミットIDの部分を、コピーした内容で置き換えてください。

 あとは、「rollback.bat」を実行すると指定した時点まで戻るので、起動して動作を確認してください。戻している最中に「rollfoward.bat」を実行すると最新の状態に復帰します。これらのバッチファイルを実行すると色々とメッセージが表示されますが、気にする必要はありません。

3-2. 「--reinstall-torch」が必要な場合

 アップデート後、下記のようなメッセージが表示されました。この場合は、「webui\webui-user.bat」を一時的に変更して起動する方法があります。ただし、後で元に戻す必要があります。

You are running torch 2.1.2+cu121.
The program is tested to work with torch 2.3.1.

 そこで、ポータブル版の「run.bat」「update.bat」のあるディレクトリに、「run(reinstall-torch).bat」を作ることにします。

@echo off

call environment.bat

set COMMANDLINE_ARGS=--reinstall-torch

cd %~dp0webui
call webui.bat

 もし「--reinstall-torch」が必要になった場合は、「run(reinstall-torch).bat」を実行して、起動が完了したら終了します。その後、通常の起動を行ってください。



▼ 4. LoRA,分割モデル,GGUFの対応

4-1. アップデート情報

 紹介が遅れましたが、Forge版SD WebUIはLoRA、分割されたモデル、GGUF版モデルに対応しています。

[GGUF and Flux full fp16 Model] loading T5, CLIP + new VAE UI #1050
https://github.com/lllyasviel/stable-diffusion-webui-forge/discussions/1050 

 また、UIが少しだけ変更されています。上部に「VAE / Text Encoder」「Diffusion in Low Bits」の項目が無い場合はアップデートの必要があります。なお、最新版の動作が安定しているとは限りません(実験的なプロジェクトであることを思い出してください)。任意の時点に戻したい場合は3-1.を参照してください。

4-2. LoRAの利用方法

 FLUX.1においても、LoRAは従来と同様の方法で利用できます。プロンプトに入れておくトリガーワードが決められている場合があるので、配布されているLoRAの説明を確認してください。

 執筆時点での、LoRAを利用する際の注意点を挙げます。

  • NF4版モデルへの適用や、「Diffusion in Low Bits=bnb-nf4, bnb-fp4」の設定は避ける(GPUメモリを大量に消費するため)。
    将来これが改善したとしても、モデルとLoRAの形式は合わせた方が良い。よって、特に記載が無ければFP8/FP16版のモデルを使用する。

  • モデルにLoRAを適用する際に少々時間がかかる(モデルやLoRAの変更がなければ1回目のみ)。

 LoRAのファイルを「models\lora\」に移動しておくと、UIの「txt2img」→「LoRA」のタブに一覧が表示されます。クリックするとPrompt欄に入力されます(もちろん手動でファイル名を入れても構いません)。後ろの数字は強度なので、適宜変更します。

LoRAを選択したところ
LoRAを適用して画像を生成した

 LoRAが適用されると、生成した画像の下に表示されるパラメーターの中に「Lora hashes」の項目が追加されます。これが無い場合は適用されていません。

「Lora hashes」の項目が表示されている

 5.のおまけに、LoRA適用前後の画像を掲載しておきました。

4-3. 分割されたモデルの利用方法 (1)

 元々は統合されたモデルのみに対応していたところ、分割されたモデルにも対応しました。特定のファイルをコピーして設定するだけで、いままで利用できなかったモデルも利用できるようになります。

 まずはVAEです。下記のURLからファイルをダウンロードして、指定のディレクトリに移動します。

 次はCLIP text encoderです。ComfyUI用に掲載されたものをダウンロードして、指定のディレクトリに移動します。

 最後はUNETです。FLUX.1 DevをNF4化したモデルが出ていたので、こちらを利用することにします。また、統合されたモデルと分割されたモデルが混合されてしまうのを防ぐため、unetのディレクトリを作って分けることにしました。

※LoRAを利用する場合は下記のFP8版を使用してください。

 参考まで、下記の記事にある「unet」のモデルも利用できます。

4-4. 分割されたモデルの利用方法 (2)

 モデルの設置が終わったら起動します。「Checkpoint」を選択して、「VAE / Text Encoder」で「ae」「clip_l」「t5xxl(fp8の方が省リソース)」の3種類をすべて選択します。

3種類のファイルを選択する

 これで生成の準備は整いました。モデルによって「Sampling steps」の値が異なる点に注意してください。Shcnell相当のモデルは4以上、Dev相当のモデルは20前後かそれ以上です。

分割モデルで生成を行った

4-5. GGUF版モデルの利用方法

 Forge版SD WebUIは、GGUF形式のモデルにも対応しました。LLMのモデル等で利用されている形式で、小容量であればGPUメモリの使用量を減らせるメリットがあります(精度は落ちます)。

 ここでは、下記URLで配布されているGGUF版のFLUX.1 Devを利用します。こちらは単体利用ができない分割されたモデルなので、4-2.と4-3.を参照して足りないモデルを設定してください。 

 参考まで、比較用の画像を貼っておきます。NF4同様、GGUFのQ4やQ5であっても、特に気になる感じはしませんでした。Q3はギリギリで、Q2はあからさまに劣化するようです。

unet\flux1-dev-Q4_0.safetensorsを使用
upper body shot, cheerful anime girl, cozy deer kigurumi, wide innocent eyes, long eyelashes, gentle smile, soft brown onesie, cream-colored belly, antlers on hood, large deer ears, hoof-shaped mittens, sunlit summer forest, clearing surrounded trees, lush green foliage, small fruit basket, arm hanging basket, soft warm palette, dappled sunlight effects, whimsical anime style, smooth lines, subtle gradients, curious real deer, peeking behind tree, heartwarming scene
Steps: 20, Sampler: Euler, Schedule type: Simple, CFG scale: 1, Distilled CFG Scale: 3.5, Seed: 208501929, Size: 1360x768, Model hash: e9c9d702d0, Model: flux1-dev-Q4_0, Version: f2.0.1v1.10.1-previous-313-g8a042934, Module 1: ae, Module 2: clip_l, Module 3: t5xxl_fp8_e4m3fn
unet\flux1-dev-Q5_0.safetensorsを使用
パラメーターは同じ
unet\flux1-dev-nf4-unet.safetensorsを使用
パラメーターは同じ
flux1-dev-fp8.safetensorsを使用
パラメーターは同じ



▼ 5. おまけ

5-1. 掲載画像

 お手本のプロンプトを提示して、それとは全く異なるシチュエーションを指示する方法でプロンプトを作成しました。Geminiを使用しています。

A shy anime girl with long, flowing dark brown hair, wearing a light pink summer dress with a floral pattern. Her cheeks are flushed, and her eyes are downcast as she leans in close to the viewer, a playful smile on her lips. She's standing in a bustling amusement park, the colorful rides and crowds of people blurred in the background. The sun is setting, casting a warm golden glow over the scene. Soft, watercolor-style illustration with a dreamy, nostalgic atmosphere.
Steps: 20, Sampler: Euler, Schedule type: Simple, CFG scale: 1, Distilled CFG Scale: 3.5, Seed: 3316162679, Size: 1360x768, Model hash: c161224931, Model: flux1-dev-bnb-nf4, Version: f2.0.1v1.10.1-previous-223-g86ee2d94

 下記は追加の画像です。「anime screencap Flux LoRA」が適用されています。anime screencapというトリガーワードがあるようですが、入れなくても効いています。

An anime-style illustration with a soft pastel color palette, depicting a night-time indoor scene in a whimsical, child-friendly living room. The room is filled with cute, kawaii toys and has a cozy, playful vibe. Two young elementary sisters, both with brown pigtail hair, are captured in a cowboy shot portrait. They are kneeling on a fluffy rug, one in a shiny black pajamas, the other in a playful ensemble of shiny pink blouse and gray pleat mini skirt. Both girls have open, wide smiles, their eyes shining with happiness, embodying a joyful atmosphere. The setting feels like a comfortable, homey environment where playful interactions are the norm, all rendered in the gentle, soothing hues of pastels. <lora:animescreencap_flux_v1:1> Steps: 20, Sampler: Euler, Schedule type: Simple, CFG scale: 1, Distilled CFG Scale: 3.5, Seed: 3307564131, Size: 1360x768, Model hash: 3f97fdc57a, Model: flux1-dev, Lora hashes: "animescreencap_flux_v1: e3b0c44298fc", Version: f2.0.1v1.10.1-previous-329-g128a7932, Module 1: ae, Module 2: clip_l, Module 3: t5xxl_fp8_e4m3fn

 LoRAを適用しなかった画像も掲載します。雰囲気がかなり違うのが分かります。

パラメーターは同じでLoRAのみ適用していない

 下記は追加の画像です。従来のプロンプトの記法を再現する、Claude上の自作Projectsを用いています。

extreme face close-up, shy anime girl, high angle view, strong fish-eye lens effect, cozy bedroom setting, long dark brown hair, cascading hair, flushed face, sitting on bed, put both hands on cheek,inviting gesture, large doe-like eyes, gazing up, embarrassed expression, summer sailor uniform, pastel-colored bedding, warped background details, desk with books, wall posters of cute anime girl, window with sunlight
Steps: 20, Sampler: Euler, Schedule type: Simple, CFG scale: 1, Distilled CFG Scale: 3.5, Seed: 2854110668, Size: 1360x768, Model hash: 4c9bfa37e6, Model: flux1-dev-nf4-unet, Version: f2.0.1v1.10.1-previous-313-g8a042934, Module 1: ae, Module 2: clip_l, Module 3: t5xxl_fp8_e4m3fn



▼ 6. その他

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

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

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