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_utils 的 remote_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 需要 height 和 width 參數,因為其潛在變數是打包的。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 過程的用戶的一個可行替代方案。