一直有小夢想,就是可以無限產出 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 有關係。看來偶是數學學不好才不會畫圖(?)
0 意見:
張貼留言