2026年6月24日水曜日

ぎりぎり動いていたモデルが動かせなく…w

syclで安定して動いてくれるように気づけば結構書き換え続けていますが、そろそろ大元のggmlとマージしなければ…とおもいつつ書き換えたソースをちゃんと保存したうえでgithub上で整理してみました。イマイチ使い方が分からないのと、クライアント上のgitの使い方も良く分からない感じでやっているので漏れているものもありそうですが、ggml_sycl_patchからpullしてmakeが通ったのですが、気づかないうちにベースとなるstable-diffusion.cppもpullしてしまった感じでmakeの動作が変わったようなので、stable-diffusion.cppもpullして整えてからggmlをggml_sycl_patchへ挿げ替えてmakeを通してみました。

今までテストしていたQwenImageですが、本当にギリギリ動いていた感じだったのが、このバージョンアップでメモリーが足りなくなってしまいました…Swapをメモリ上に展開しているのでそれを何とかすればいいんですけどねぇ…根本的にもうちょいちっちゃいモデルにしないとダメみたいです。特にvaeがね…

そんなstable-diffusion.cppですが、動作が変わっていて驚きました。今まではすべてのモデルファイルを読み込んでから処理が始まったのですが、個別にロードと起動が行われるようになり、全体的にいい感じです。(ただメモリーがね…ggmlが原因かもしれませんが)

動作が安定してそうなので、今まで実行できなかった全てをsyclで動かして画像が出力できるか試したところ、初めて上手くいきました。とは言え、faさせないとvaeのメモリーは足りなさそうですがw

出力された内容を比べると、どうも全てsyclで動かしたものは…ちょっと違う感じですw

中身を見て良く分かりましたが、演算誤差もありますが、それぞれの処理がどうも甘い感じなのでその辺が結果として劣化している感じがします。

生成時間はFlux2Klean4BのQ8、512x512サイズの20Step CFG 1.5で1400秒で23分程度となりました。

512x512でStep 4ならCFG1だと1step当り130~120秒で全体で600秒、10分程度と言うところでした。

テキストエンコードなどもGPUで行えるとggmlのsyclコードに手を加えるモチベーションが上がると言う物w

実際に手を加えているのは速度向上もありますが、目標は1024x1024のvaeの実行で現状ではエラーで落ちてしまうのでそれをsyclで行えるようにすること。現状では内部で同期不要なタイミングでwait()を挟んでいるために、どうしても実行速度は頭打ちとなっているのが正直歯がゆい部分だったりします…。 

 

0 件のコメント:

コメントを投稿