顯示具有 Stable Diffusion 標籤的文章。 顯示所有文章
顯示具有 Stable Diffusion 標籤的文章。 顯示所有文章

星期三, 3月 12, 2025

再戰 Stable diffusion

一直有小夢想,就是可以無限產出 Saber 老婆的圖,但畫工太廢,無法實現,就擱著了,直到後來注意到 Stable Diffusion。

最近寫 paper 不順利,把 SD 拿來折騰(被 desk reject 後更有動力:P)。一開始用家中 AMD 6650XT 出圖。SD 有 DirectML fork 支援 Windows + AMD GPU。但使用體驗非常不好。一開始是折騰 Python 環境,Python 太新特定套件會缺 wheel 要求  compile 但 compile 又不過,後來降版本搞定。但成功執行 AUTOMATIC1111 只是陷入更多坑。UI 報錯 tensor 算出 NaN,改參數。Inpaint 重繪全部都是 noise 但又沒報錯,原來是 AMD GPU 的鍋,要改參數繞過某些最佳化。通通弄好了,出圖很慢半分鐘以上一張,8G VRAM 經常 out of memory,網路很慢抓 model 抓 ControlNet 很不方便,AMD GPU 小眾問題常常查不到答案...放棄。 

後來想到用 VPS + GPU 租賃,作法是 Linode 開 instance,裝好 SD 後先用 CPU 執行,叫出 UI 後手動裝想要的 extension 再 wget 所有想要的模型。然後 git commit 整個 container,再換到 GPU instance。 一開始用 vast.ai,但 vast.ai 的 log 不清楚,debug 失敗,轉到 runpod。runpod 折騰一番後,最後改出有 sshd + SD + 預載模型可以順利執行的 50 G image,順利在 runpod 上啟動 ssh + SD。一切弄好後,再回便宜的 vast.ai 也順利搞定。用 4090 出圖,一張十幾秒,還可以一次出多張圖,24G VRAM 大幅減少 OOM,用 NV GPU 少掉很多怪問題,出問題也容易找答案,一切絲滑流暢,vast.ai 上還只要 $0.3/hr,AMD GPU 那什麼東西 XD

稍微吐槽 runpod 官方文件,ssh 的部份寫的花里胡俏,結果實際上只是把 container 的 port forward 出去,sshd 的行為是 docker image 決定,跟官方文件中的說明沒半毛錢關係,純屬誤導。Vast.ai 同理,只要 docker 啟動能正確執行 sshd,vast.ai 唯一要注意的就是開 port,啟動成功後本地端 ssh tunnel 就能打開 SD UI。

太久沒弄 docker,很多東西變不熟,中間還鬧出在 alpine-based 的 image 執行 apt-get 的笑話。不過現在都弄好了,只要花點時間學 SD,無限 Saber 老婆不再遙不可及。

最後,數學真是美(?)原來美麗和 latent space、manifold hypothesis 有關係。看來偶是數學學不好才不會畫圖(?)







全文連結

星期三, 2月 26, 2025

Stable Diffusion AMD inpaint 問題

這幾天初步可以用 SD 跑圖出來了,但是 inpaint 一直失敗,不管怎麼調選項,只會產生 noise 或是模型出現 NaN 然後推理失敗。Google 了很多答案,連 PyTorch 降版本都試過 N 次,中間遇過 DirectML 初始化失敗等離奇的 bug,最後是改選項解決: 


--use-directml --lowvram --no-half --precision full --no-half-vae --opt-sub-quad-attention --opt-split-attention-v1 

 另外的問題就是 Adblock 會干擾到 inpaint 的 mask,記得關掉就沒事了。 

全文連結

星期四, 2月 20, 2025

Stable Diffusion 安裝成功

寫 paper 寫到自閉,昨天試著入坑 Stable Diffusion、無限自製 Saber 老婆實在太香了,目前進度只有到安裝,由於用的是 AMD 6650XT,所以沒辦法像 N 卡一樣一帆風順,我不想用 CPU 出圖,花了很久總算讓 GPU 出圖跑起來,折騰出第一張圖,很丑就沒存了。 

我從 AUTOMATIC1111 的 Stable Diffusion UI 直接入手。參考這篇。其實安裝指令就一行:

git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml && cd stable-diffusion-webui-directml && git submodule init && git submodule update
但安裝好後,我的 AMD 6650XT 需要加 --use-directml --medvram 才能用。然而加了 --use-directml 以後就要另外安裝另一堆依賴,然後就在 scikit-image 上卡住無法安裝,後來發現問題出在我用 WinPython 的 Python 3.12 沒有對應的 wheel,只能本地編譯,但我裝了 VS studio 還是無法編譯成功,所以最後降版到 WinPython 3.10 再重新裝一次,就有現成的 wheel 東西就能動了。 現在試著裝動漫人物的 model 和 lora,結果 SD 又提示我要自動下載 open clip 10.2GB model 最快也要明天抓好,只能明天再測試了。 全文連結