Stable Diffusion AI算圖使用手冊(5-6):利用Tiled VAE降低顯示記憶體用量需求

Stable Diffusion AI算圖使用手冊(5-6):利用Tiled VAE降低顯示記憶體用量需求

ADVERTISEMENT

Tiled VAE是款可以將畫面先行切割再進行算圖的外掛程式,解決顯示記憶體不足的問題,能夠讓顯示記憶體較少的顯示卡也能夠輸出大圖。

擺脫OOM惡夢

以筆者個人使用的電腦來說,其中一台電腦的顯示卡為NVIDIA GeForce RTX 3080,顯示記憶體容量為10GB,在使用Hires. Fix輸出大圖的時候,尚能負荷1920 x 1080解析度的顯示記憶體用量需求,但如果將輸出解析度提升到3840 x 2160的話,就會遇到顯示記憶體不足(OOM,Out of Memory)的問題,導致無法順利輸出圖片。

幸好筆者在2023年「迎娶老婆」之後,第二台電腦的顯示卡直接攻頂NVIDIA GeForce RTX 4090,具有容量高達24GB的顯示記憶體,就算直接輸出解析度為3840 x 2160的圖片也不會有問題。

不過不是所有人都有如此大容量的顯示記憶體,而這次會入手RTX 4090也是個美麗的錯誤。回歸到筆者的人生哲學:「錢能解決的問題都是小問題,但我一件也解決不了」,所以尋找不花錢的方式也相當重要。

Tiled VAE就是能夠解決這個問題的外掛程式,它會在圖像生成的過程中,先將圖片分割為多個區塊,然後分次進行各區塊運算,最後再合併為大型圖片,如此一來在實際算圖的時候只需處理較低解析度的圖片,達到降低顯示記憶體用量的效果。

經過筆者實測就無論是顯示記憶體為10GB的GeForce RTX 3080,或是容量僅為8GB的GeForce RTX 3070 Ti,都能順利輸出解析度達3840 x 2160的圖片,解決了OOM的問題。

如果在算圖過程中,看到Out of Memory的錯誤訊息,代表顯示記憶體容量不足以滿足運算需求。

另外筆者也曾經遇到Not Enough Memory的錯誤訊息,同樣代表顯示記憶體容量不足。這時候就可以嘗試使用Tiled VAE解決這個問題。

安裝與使用Tiled VAE外掛程式

由於Tiled VAE的功能包含在MultiDiffusion with Tiled VAE這個外掛程式之中,因此安裝時我們可以到Stable Diffusion WebUI的「Extensions」標籤下的「Available」標籤分頁,並點擊「Load from」。

等待外掛程式清單讀取完畢之後,在「Search」欄位輸入「Tiled VAE」,就能找到外掛程式,點擊右方的「Install」即可安裝。在筆者撰稿時,程式名稱被改為Tiled Diffusion with Tiled VAE Manipulations。

如果讀者無法在清單中找到該外掛程式,則可嘗試切換到「Install from URL」標籤分頁,並輸入「https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111」網址手動安裝。

安裝完成後,回到Stable Diffusion WebUI的「txt2img」標籤,依照正常流程輸入提示詞、並進行各項設定,不過我們嘗試開啟Hires. Fix功能並將輸出解析度調高到3840 x 2160(筆者的範例為直立畫面,原始解析度為540 x 960,放大至2160 x 3840)。

接下來到下方外掛程式設定區域,展開Tiled VAE頁面,並勾選「Enable Tiled VAE」,並將Encoder Tile Size設定為1024,就可以點擊「Generate」按鈕開始算圖。

在使用GeForce RTX 3080進行圖像生成的過程中,顯示記憶體用量大概在9.6~9.8GB之間浮動,並且可以成功輸出高解析度圖片。

如果讀者在使用過程中仍然遇到顯示記憶體不足的問題,則可嘗試縮小Encoder Tile Size與Edcoder Tile Size的設定值,將算圖區塊分割更小以降低顯示記憶體用量。另外如輸出圖片的顏色有問題,則可勾選「Fast Encoder Color Fix」嘗試修正問題,如果還是無效,則可取消勾選「Fast Encoder」與「Fast Decoder」,但是會將低圖像生成速度。

使用前需先至「Extensions」標籤分頁安裝Diffusion with Tiled VAE Manipulations,以便使用Tiled VAE功能。

在設定輸出圖片解析度時,將原始解析度為540 x 960,並將Hires. Fix放大倍數設定為4,讓輸出解析度達到2160 x 3840。

展開Tiled VAE頁面,並勾選「Enable Tiled VAE」,並將Encoder Tile Size設定為1024。

算圖過程中顯示記憶體用量大概在9.6~9.8GB之間浮動,並無超過10GB上限。

輸出圖片的解析度高達2160 x 3840,超過網站可以顯示的範圍,因此將圖片縮小展示。

這邊以1:1像素比例方式裁切圖片,可以看到畫面細節相當豐富。

另外筆者也測試以Tiled VAE輸出3840 x 2160解析度的擬真照片風格圖像。

從1:1裁切圖片可以看到,髮絲細節也相當細膩。

Tiled VAE最強大的功能之一就是能在幾乎不損失效能的前提下降低顯示記憶體用量,而不像使用「--lowvram」或「--medvram」等參數會犧牲效能,是輸出大圖的好幫手。

回到系列文章目錄

 

國寶大師 李文恩
作者

電腦王特約作者,專門負責硬派內容,從處理器、主機板到開發板、零組件,尖端科技都一手包辦,最近的研究計畫則包括Windows 98復活與AI圖像生成。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則