このページの本文へ

FIXER Tech Blog - AI/Machine Learning

LCM-LoraでStable Diffusionの画像生成を高速化してみた!

2024年01月11日 13時45分更新

文● FIXER/小野 亮太朗

  • この記事をはてなブックマークに追加
  • 本文印刷

 こんにちは2日連続のGPU有効活用シリーズ第1.6弾、またまた画像の高速生成です。

 以前にTensor-RTで画像生成が速くなった!というブログを書いたのですが、結果はおよそ5/6倍と正直なところ期待していた程は速くなりませんでした。

 しかし、LCM-Loraでは見違えるほど高速で生成できます。

事前準備

 これはWeb UIから拡張機能をインストールするだけで準備完了です。

 いつも通り docker compose --profile auto up -dでコンテナを立ち上げたら、Extensionsタブの、Install from URLタブに移動し、1番上のURL for extension's git repositoryテキストボックスに

https://github.com/0xbitches/sd-webui-lcm.git

 と入力してInstallをクリックします。

 適用して再起動し、新しくLCMというタブができていればインストール完了です。

ベンチマーク

 現状では、残念ながら任意のモデルを使ったり、ネガティブプロンプトを入れたりといった細かい調整はできないのと、以前みたいにスクリプトでリクエストを投げまくって時間計測ができないので、プロンプトだけ流用して生成時間は地道に手動で30回実行しました。

 また、画像のサイズも同じには出来なかったので最大の768×768で生成しています。

 結果は次の通りです。

画像

 モデルがLCM_Dreamshaper_v7という違うものを使っているので、かなり雰囲気が違う画像が生成されました。

 プロンプトを調整すればもっと違うタッチの画像も生成することはできるので試行錯誤のやりがいがあります。

生成時間

 人力で計測しているのであまり正確ではないのですが最小では約2.7秒、最大で約3.3秒、30回の平均は約3秒という結果になりました。

 拡張機能無しがおよそ36秒だったので1/12の時間と、画像サイズが小さいことを差し引いても驚異的な速度で生成することができました。

最後に

 モデルが固定されてしまうというデメリットは大きいですが、試行錯誤(いわゆるガチャ)は圧倒的にやりやすくなりました。

 また今回は1枚ずつ生成していますが、同じプロンプトで複数枚を一気に生成することも可能で、その際も4枚程度までなら1枚生成するときと同じぐらいの時間で生成することができました。

 SNS上ではLCM-Loraでほぼリアルタイムに生成を行っているものもあるので今後に期待ができそうです。

小野 亮太朗/FIXER
23卒エンジニア。SBCでNAS、VPN、マイクラとかのサーバを建てて遊んでる人。
動的型付けよりは静的型付けが好き。

カテゴリートップへ

この連載の記事