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

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

やりたいこと

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

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に聞いちゃうのが楽です。)

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

モデル

以下のページから一つづつ系3つのモデルをダウンロードしてください。

複数ファイルがあるものに関しては、ファイルサイズが大きいほどメモリが必要で精度がいいです。

環境と相談の上、どのモデルを使用するか決めてください。

私の環境(Ryzen 7 7735HS with Radeon Graphics + メモリ32G)だとQwen_Image-Q8_0.ggufは動作しなかったためQwen_Image-Q4_K_S.ggufを使用しました。

diffusion-model

QuantStack/Qwen-Image-GGUF at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

vae

Comfy-Org/Qwen-Image_ComfyUI at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

llm

mradermacher/Qwen2.5-VL-7B-Instruct-GGUF at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
スポンサーリンク

実行

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

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

sd-cli.exe --diffusion-model Diffusionモデルパス --vae VAEモデルパス  --llm llmモデルパス  -p "a cat" --cfg-scale 2.5 --sampling-method euler -v --offload-to-cpu -H 512 -W 512 --diffusion-fa --flow-shift 3

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

公式の例では-p ‘a cat’ のようにプロンプトを’で囲っていますがこれでは動作しません。”で囲ってください。

オプション(引数)

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

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
モデルによっては少ない数字の方がいいので注意。
(Qwen Imageの公式の例では50でした。)

実行速度

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

モデル生成時間(s)
stable-diffusion(Vulkan)36
Qwen Image(Vulkan)623

StableDiffusionと比べるとだいぶ遅いです。

エラー

以下のエラーが出るときはメモリが足りていません。使用するモデルを変更するなり、他のアプリを終了すると動作する可能性があります。

[ERROR] ggml_extend.hpp:83   - alloc_tensor_range: failed to allocate Vulkan0 buffer of size 1043908608
[ERROR] ggml_extend.hpp:1774 - qwen_image alloc runtime params backend buffer failed, num_tensors = 1933
[ERROR] ggml_extend.hpp:1955 - qwen_image offload params to runtime backend failed
[ERROR] stable-diffusion.cpp:1727 - diffusion model compute failed
[ERROR] stable-diffusion.cpp:1861 - Diffusion model sampling failed
[ERROR] stable-diffusion.cpp:3112 - sampling for image 1/1 failed after 5.14s

コメント

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