NVIDIA顯示卡搭配TensorRT運算框架,Stable Diffusion AI算圖效能在有指定件下飆達近3倍

NVIDIA顯示卡搭配TensorRT運算框架,Stable Diffusion AI算圖效能在有指定件下飆達近3倍

ADVERTISEMENT

在搭配TensorRT運算框架針對U-Net運算部分進行最佳化之後,可以顯著提升NVIDIA顯示卡進行Stable Diffusion AI算圖的效能,讓我們一起搶先測試它的效果如何。

利用TensorRT強化運算效能

如果讀者想要嘗試TensorRT運算框架的最佳化效果,可以先參考GitHub上stable-diffusion-webui-tensorrt項目的「trt_overhaul」分枝,跟著說明操作就能安裝必要程式、轉換模型,並享有最佳化的效能提升。

目前Stable Diffusion WebUI所使用的TensorRT運算框架還處於相當早期的開發階段,儘支援U-Net運算部分的最佳化,且輸出圖像解析度僅支援512 x 512、768 x 768,且無法藉由Hires Fix.功能變更輸出圖像解析度。

NVIDIA顯示卡搭配TensorRT運算框架,Stable Diffusion AI算圖效能在有指定件下飆達近3倍

▲讀者可以追蹤該GitHub資訊,以掌握版本更新資訊。

實際動手玩

使用trt_overhaul的整個流程需要先安裝對應的外掛程式,在安裝過程中預先寫好的腳本會自動安裝所需的相依程式。之後使用者需要先將Stable Diffusion的模型(checkpoint或safetensors格式)轉換為ONNX格式模型,接著再次轉換為TensorRT格式。

需要注意的是,轉換為TensorRT格式模型的步驟將花費較長的時間,且需要指定想要轉換的解析度與批次尺寸(Batch Size,同時算圖的數量),並會分別轉檔得到多組專用模型,在圖像生成的時候只能使用匹配的模型,無法混搭使用。

實際的安裝與使用方式請參考下列圖文說明。

開啟Stable Diffusion WebUI介面後,先至Extensions頁面並選擇Install from URL,在URL欄位輸入「https://github.com/MorkTheOrk/stable-diffusion-webui-tensorrt」,並在Branch欄位輸入「trt_overhaul」,之後按下Install。

接著到Setting頁面,找到Quicksettings list項目,手動輸入「sd_unet」。

安裝好後重新啟動Stable Diffusion WebUI並進入TensorRT頁面的Convert to ONNX標籤,然後在Stable Diffusion checkpoint下拉式選單選擇要轉換的模型,並點擊Convert按鈕。

接著切換到Convert ONNX to TensorRT標籤,選擇模型並指定想要轉換的解析度與批次尺寸,並勾選Use half floats使用半精度浮點數資料格式以提升運算效能,最後點擊Convert按鈕,這個轉換過成可能需要等待很久。(若ONNX模型沒有出現,可以點一下Refresh List按鈕)

回到txt2img頁面,先照一般方式生成圖片。

接著在SD Unet選擇對應的解析度與批次尺寸參數,選項中的後方的w、h參數對應Stable Diffusion WebUI的解析度設定值,b參數對應批次尺寸。設定完成點擊Generate開始生成圖片,應該可以發現生成圖像的效能大幅提升。

筆者以NVIDIA GeForce RTX 4090進行效能測試,以固定的提示詞生成解析度為768 x 768的圖像。可以看到使用Xformer大約可以達到79.83%的效能增益,但是使用TensorRT最高可以達到196.92%的效能增益,讓整體速度達到接近3倍之譜。

參考筆者的實際使用經驗,僅能使用指定解析度且不能使用Hires Fix.功能,造成生成圖片的解析度沒有調整彈性,讓目前TensorRT運算框架的實用價值大打折扣,希望未來能改善這個狀況。

截稿後更新

由於筆者完稿後,程式又更新了版本,加入了在轉換TensorRT格式模型的步驟可以自定解析度與多種設定的功能,筆者將在之後更新對應的教學。

國寶大師 李文恩
作者

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

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