コマンドラインでStableDiffusion実行(AMD GPU/CPU対応)

この記事は約3分で読めます。
スポンサーリンク

やりたいこと

stable-diffusion.cppを使用してコマンドラインからStableDiffusionを実行します。

AMDのGPUでもCPUでも実行可能です。

スポンサーリンク

環境構築

stable-diffusion.cpp

以下のページから自分の環境にあったZipファイルをダウンロードします。

Releases · leejet/stable-diffusion.cpp
Diffusion model(SD,Flux,Wan,Qwen Image,Z-Image,...) inference in pure C/C++ - leejet/stable-diffusion.cpp

AMDのGPUで動かしたい場合はvulkanとつくものかrocmとつくものです。

(基本的にはvulkanでいいと思います。rocmはどうするGPUが限られるはずです。)

NVidiaのGPUはcudaが付くものが対象です。

avx512,avx2,avx,noavxはCPU動作です。お使いのCPUで使用できるavxのバージョンを調べてダウンロードしてください。(私は誤解していたのですがAMDのCPUもAVX使えるようです。どのバージョンが使用できるかはAIに聞いちゃうのが楽です。)

対象のダウンロードしたファイルを任意のフォルダに解凍したら準備完了です。

モデル

StableDiffusionのモデルをローカルに持っていない場合は以下のページを参考にダウンロードしてください。(モデルの保存先はどこでもいいです)

スポンサーリンク

実行

コマンドラインを起動してstable-diffusion.cppを解凍したフォルダに移動します。

以下のコマンドを実行します。(モデルパス部分は使用するmodelのパスに置き換えてください)

sd-cli -m モデルパス -p "a lovely cat" -s -1

./output.pngに猫の画像が生成されれば成功です。

オプション(引数)

オプションは以下のページにまとめられています。

stable-diffusion.cpp/examples/cli/README.md at master · leejet/stable-diffusion.cpp
Diffusion model(SD,Flux,Wan,Qwen Image,Z-Image,...) inference in pure C/C++ - leejet/stable-diffusion.cpp

よく使われる基本的なものだけ以下に記載します。

-mモデルのパス
-pプロンプト
-sシード値
ランダムで生成するには-1を指定する。
指定しない場合、毎回同じ画像が生成されるため注意。
-H画像高さ
-W画像幅
--vaeVAEのパス
--stepsステップ。初期値20
モデルによっては少ない数字の方がいいので注意。

動作確認

以下のモデルで動作することを確認しました。

  • bluePencilXL_v700.safetensors
  • v1-5-pruned-emaonly.safetensors

実行速度

画像の生成速度は以下の通りです。(モデルのロード時間やイテレーション後の時間は含んでいません)

生成時間(s)
CPU(StableDiffusionWebui)263
GPU(StableDiffusionWebui)63
CPU(stable-diffusion.cpp AVX2)249
GPU(stable-diffusion.cpp Vulkan)36

参考

コメント

タイトルとURLをコピーしました