【Stable Diffusion】画像生成高速化技術まとめ(LCM・turbo・lightning・hyper)
画像生成AIのhow to記事です。
今まで登場した高速化技術(LCM・turbo・lightning・hyper)を試して、どの程度速度やクオリティに違いがあるか比較してみました。
LoRAやマージモデルで簡単に生成できるものだけです。
TensorRTは導入や設定が少し面倒なのでこの記事では除外しています。
■プロフィール
自サークル「AI愛create」でAIコンテンツの販売・生成をしています。
クラウドソーシングなどで個人や他サークル様からの生成依頼を多数受注。
実際に生成した画像や経験したお仕事から有益となる情報を発信しています。
詳細はこちら(🔞コンテンツが含まれます)
➡️lit.link
メンバーシップ(月額500円)に加入して頂くと、メンバー限定記事と300円以下の有料記事は読み放題です。
LCM
LCMは23年11月頃に登場した高速化技術です。
当時はLCM用の拡張機能を使ったり、サンプラーを追加したり少し面倒だったのですが、現在はサンプラーがデフォルトで追加され、LoRAやマージモデルで簡単に使えるようになりました。
LCM LoRAの使い方
SD1.5とSDXL用のLoRAがありますが、どちらも「pytorch_lora_weights.safetensors」という同じファイル名です。
使い分けたい人は名前を変えておくと分かりやすくなります。
・SD1.5
・SDXL
WebUIのLoRAフォルダに置いておきます。
※使用しているUIによってパスが異なります。
C:\stable-diffusion-webui-forge\models\Lora
後は普通のLoRAと同じようにLoRAタブから選択してLoRA用のプロンプトを入力します。
SD1.5モデルならSD1.5のLCM LoRA、SDXLモデルならSDXLのLCM LoRAを使用します。
今回はSDXLで生成します。
生成したいプロンプトやネガティブプロンプトを入力して、パラーメータは以下のように設定してください。
※forgeだとCFG Scaleが1のとき、ネガティブプロンプトは無効になります。
Sampling steps:8~10
Sampling method:LCM
CFG Scale:1~2
以下ponyモデルで生成した画像です。生成時間は5.6秒でした。
プロンプト:
source_anime, score_9, score_8_up, score_7_up, <lora:lcm-lora-sdxl:1>,
1girl, school uniform
ネガティブ:
source_furry, source_cartoon, source_pony, score_6_up, score_5_up, score_4_up, worst quality, low quality, normal quality, lowres, monochrome, grayscale, paintings, sketches, text, logo, artist name
パラメータ:
Steps: 10, Sampler: LCM, Schedule type: Automatic, CFG scale: 2
同じシード値で通常生成(右)と比較するとこんな感じです。通常生成は13.3秒。
weightを変えるとテイストも変わります。
ponyだからかも知れませんが、CFG scale2でも割とプロンプトがしっかり反映されます。
※Cvitaiの背景用wildcardで生成したもの
プロンプト:
1girl, Vast desert dunes, golden sands, camel rides, starry nights, dramatic sunsets, Bedouin culture,
hires.fix使用時は、通常生成時と速度はあまり変わりません。
ただクオリティはわりと通常生成に近いものがあります。
LCM+hires.fix:30.5秒(左)
通常生成+hires.fix:33.2秒(右)
LCM(マージモデル)の使い方
これはLCM LoRAをchechpointにマージしたモデルです。
LCM用のパラメータに設定すれば、checkpointだけ(LoRA不要)で生成できます。
導入は簡単ですが、好きなcheckpointのマージモデルがなかったり、重みで質感の調整ができなかったりというデメリットもあります。
まずCivitaiなどでLCMがマージされたモデルをダウンロードしてください。
フィルターで絞込が可能です。
今回はこちらを使用します。
データはcheckpoint用のパスに置いてください。
C:\stable-diffusion-webui-forge\models\Stable-diffusion
あとはパラーメータをLCM用に設定してダウンロードしたcheckpointで生成するだけです。
Sampling steps:8~10
Sampling method:LCM
CFG Scale:1~2
生成時間はLoRAと同じ5.6秒でした。
SD/SDXL Turbo
SD/SDXL Turboも23年11月にstability.aiから発表された技術です。
1ステップで生成できるため、リアルタイム生成なども誕生し、当時は話題となっていました。
公式モデルの場合は、SD/SDXLどちらも使い方は同じです。
SD turboはCivitaiにフィルターがないので、公式のものしかない?っぽいです。
SDXLはマージモデルがあり、モデルによってパラーメータの推奨値が異なります。
公式のSD/SDXL Turboの使い方
まず公式からcheckpointをダウンロードします。
・SD Turbo
・SDXL Turbo
データはcheckpointのパスに置いてください。
C:\stable-diffusion-webui-forge\models\Stable-diffusion
パラーメータを以下のように設定します。
※SD/SDXLどちらも同じです
Sampling steps:1
CFG Scale:1
画像サイズ:512×512
※stepsについては3~4で良い結果が得られる場合もあるそうです。
あとはcheckpointをそれぞれ使用したいものにすれば生成できます。
SD Turboで「cat」を生成したら0.5秒でした。
SDXL Turboは0.7秒。
長めのプロンプトでもある程度は読み取ってくれるみたいです。
1girl, Dense pine forests, fragrant air, scenic trails, wildlife sightings, tranquil lakes, outdoor adventures,
SDXL Turbo(マージモデル)の使い方
マージモデルはCivitaiにフィルターがあるので、そちらで使いたいものを検索してください。
ponyのTurbo版があったので今回はこちらを使用します。
パラーメータは以下が推奨されています。
Sampling steps:6〜8
CFG Scale:3〜5
Sampling method:DPM++ SDE
なお、マージモデルのパラーメータはモデルごとに推奨値が異なります。
DreamShaperのturbo版は「sampling steps:4-8、CFG scale:2、Sampling method:DPM++ SDE Karras」になっているので、使用するモデルの詳細ページで確認してください。
公式モデルと違いサイズも512×512だとイマイチだったので、SDXL用のサイズを使用しています。
1girl, school uniformで生成して4.4秒でした。
ponyの独自タグやネガティブプロンプトも効くので、CFGを1以上にするならちゃんと入れた方が良さそうです。
※同じシード値でネガティブなし
SDXL-lightning
SDXL-lightningは24年2月頃に登場した技術です。
TikTokなどを運営するByteDanceが公開したもので、1・2・4・8step用のモデル・LoRAが使えます。
※LoRAは2・4・8だけみたいです
SDXL-lightning LoRAの使い方
基本はLCMと同じです。
以下から使用したいステップ数のLoRAをダウンロードして、UI指定のパスに置きます。
あとはUI上でLoRA・プロンプトなどを入力してパラーメータを設定します。
CFG: 1~3
Steps: 2, 4, 8
Sampler: euler
Schedule type:SGM Uniform
画像は左から8・4・2ステップで生成したものです。
生成速度は4.9秒、3.6秒、2.6秒。
モデルに寄るのかもしれませんが、8以外は微妙でした。
LoRAの重みは変えてもあまり変化がないようです。(8ステップLoRAを使用)
hiresを使用すると22.9秒でこんな感じでした。
高速化しつつ、わりとクオリティも維持できてると思います。
SDXL-lightning(マージモデル)の使い方
こちらもLCMと同じでLoRAを使わず生成できるモデルです。
公式からもモデルが提供されており、パラーメータを設定するだけで簡単に使えます。
今回はCivitaiにあるAutismMixの8stepモデルを使用してみます。
パラーメータは以下が推奨されています。
CFG: 1-4
Steps: 8〜12
Sampler: euler
Schedule type:SGM Uniform
サンプラーはDPM++ 2M SDE・DPM++ 2Mも使えるようで作者さんはDPMを使用しているそうです。
またステップ数も8じゃないとダメってわけではなく、10にしていると書かれていました。
ステップ10・CFG4・euler・SGM Uniformで生成するとこんな感じです。(5.6秒)
若干描写が甘い部分があり何回かやり直したので、画像としての再現性はモデル次第かもしれません。
またturboと同じくマージモデルによって推奨値が異なります。
使用モデルの概要欄から確認してください。
hyper-SD/SDXL
hyper-SDもByteDanceが公開している高速化技術です。
24年4月頃に公開されたので、高速生成技術の中では現時点で一番新しいものになります。
Flux対応のLoRAもありますが、まだ試せていないのでSD/SDXLのみご紹介します。
hyper-SD LoRAの使い方
SDXL-lightningと同じでステップごとに対応するLoRAが提供されています。
hugging faceからダウンロード可能です。
ダウンロードしたデータはUI指定のパスに置いてください。
パラーメータは以下のように設定します。
CFG: 1
Steps: 8〜12
Sampler: euler
Schedule type:SGM Uniform
サンプラーは生成できれば好きなものでも大丈夫みたいです。
LoRAありの通常生成で3.5秒でした。
LCMと同じでLoRAのweightでクオリティが変わります。
hires.fixを使用するとそのままクオリティが向上したような感じで、生成速度も短縮できていました。
ただ同じシード値でもLoRAの有無で描写が変わます。
左hyper+hires:22.5秒
右通常生成+hires:32.1秒
hyper-SD(マージモデルの使い方)
hyper-SDのマージモデルもCivitaiでフィルター検索ができます。
使用したいモデルを探してダウンロードしてください。
今回はこちらを使用しました。
ダウンロードしたデータはcheckpoint用のパスに置きます。
hyper-SDもモデルによって推奨値が違うので、詳細ページで確認してください。
このモデルはLoRAと同じ設定で良いみたいなので、以下のようにしました。
CFG: 1
Steps: 8
Sampler: euler
Schedule type:SGM Uniform
生成速度は3.2秒と高速化できていますが、細かい描写崩れが多かったです。
このモデルだけで他のモデルはどうかわかりません。
CFG2にしてネガティブ入れたら若干マシになったので、パラーメータは自分で設定した方が良いかもです。
まとめ
LCM
hires.fixを使用しない通常生成は高速化できる
ponyのプロンプトは反映されやすい?
LCM LoRAは重みでテイストを調整できる
マージモデルは簡単に使えるけど調整が難しい
Turbo
生成は爆速
クオリティはイマイチ
使いどころや活かし方が難しいかも
SDXL-lightning
LoRAは8step以外微妙かも
hires.fixを使用しても生成速度が向上
マージモデルはモデル次第
hyper-SD
LoRAは通常生成+hires使用してもクオリティ高め
LoRAの有無で描写が変わる
マージモデルはモデル次第
以上画像生成高速化技術の使い方についてご紹介しました。
用途や好みもあるので人それぞれではありますが、個人的にはhyper-SDが一番高速化+クオリティも維持できている印象です。
ライセンスもOpen RAIL++-M Licenseで商用利用可となっているので、コンテンツ作りやクラウドソーシングの案件など作業効率化ができるかもしれません。
https://huggingface.co/ByteDance/Hyper-SD/blob/main/LICENSE.md
当サークルではこのようなAIに関するさまざまな情報を発信しています。
メンバーシップに加入して頂くと一部の有料記事は読み放題です。
AI技術の向上、マネタイズ方法などに興味がある方は、ぜひご検討ください。
もしこの記事が少しでも役に立った場合は、いいねやフォローして頂けると励みになります。
最後まで読んでいただき、ありがとうございました。