Hugging Face 遠端 VAEs 用於推理端點

Hugging Face 推出了一項實驗性試點,將變分自編碼器(VAE)的解碼過程委派給遠端端點。此方法允許用戶通過將記憶體密集型的解碼階段卸載到推理端點,在消費級 GPU 上執行高解析度圖像和影片合成,從而避免與本地 VAE 執行相關的 VRAM 瓶頸。

解決潛在空間擴散中的 VRAM 瓶頸

在潛在空間擴散模型中,VAE 解碼器通常是生成最終階段中最耗記憶體的組件。對於使用消費級硬體的用戶來說,這會構成高解析度輸出的重大障礙。Hugging Face 指出了兩種常見的本地解決方案及其各自的缺點:

  • Offloading: 將 VAE 移至 CPU RAM 會產生設備傳輸開銷,從而增加整體推理延遲。
  • Tiling: 將圖像處理為較小的塊可以減少記憶體使用,但可能對最終圖像品質產生負面影響。

透過將解碼過程委派給遠端端點,用戶可以在不承受本地卸載延遲懲罰的情況下,保持高圖像品質並降低本地 VRAM 消耗。

技術實作與整合

此實驗功能由 Diffusers 團隊開發,並使用帶有自訂處理程式的 huggingface-inference-toolkit。該實作是開源的,且在過程中不會儲存或追蹤任何資料。

與 Diffusers 的整合

要使用遠端 VAEs,用戶必須從 main 分支安裝 diffusers 庫:

pip install git+https://github.com/huggingface/diffusers@main

解碼是透過來自 diffusers.utils.remote_utilsremote_decode 輔助方法來處理的。

模型支援與端點

Hugging Face 為幾種流行模型提供了專用端點:

模型 VAE Endpoint
Stable Diffusion v1 https://q1bj3bpq6kzilnsu.us-east-1.aws.endpoints.huggingface.cloud
Stable Diffusion XL https://x2dmsqunjd6k9prw.us-east-1.aws.endpoints.huggingface.cloud
Flux https://whhx50ex1aryqvw6.us-east-1.aws.endpoints.huggingface.cloud
HunyuanVideo https://o7ywnmrahorts457.us-east-1.aws.endpoints.huggingface.cloud

功能與使用案例

圖像與影片生成

remote_decode 函數支援各種模態和模型特定需求。例如,Flux 需要 heightwidth 參數,因為其潛在變數是打包的。HunyuanVideo 支援直接將結果輸出為 .mp4 檔案。

透過佇列實現併發

由於解碼在遠端進行,用戶可以實作一個佇列系統來提升併發性。當遠端端點正在解碼當前的潛在變數時,本地 GPU 可以繼續在管道中生成下一個潛在變數。這使得能夠形成一個精簡的生成-解碼循環,以最大化硬體利用率。

效能與記憶體影響

本地 VAE 解碼需求會隨著解析度和 GPU 容量急劇增加。對於 RTX 3070 在 1024x1024 解析度下的 Stable Diffusion v1.5,記憶體使用量可達到 56.3%,而分塊解碼則將此降至 16%,但推理時間增加 77%。

對於 SDXL 在 1024x1024 解析度下,記憶體消耗更為嚴重,在 RTX 3080 上達到 93%,在 RTX 3070 上達到 96.4%,這使得遠端解碼成為無法在 VRAM 中容納完整 VAE 過程的用戶的一個可行替代方案。

Sources