對 GPT-3.5 模型的一層,我們可以估算其內存和顯存占用。以下是一層的計算過程和估算內存和顯存占用的步驟:
1. 自注意力層(Self-Attention Layer):
- 查詢、鍵、值向量大?。好總€ token 有 2048 維,假設有 4096 個 token,因此每個向量的大小為 2048 維
- 注意力分數矩陣大小:由于每個 token 都要與其他 token 進行注意力計算,因此注意力分數矩陣的大小為 4096 × 4096
- 注意力權重分布大?。号c注意力分數矩陣相同,大小為 4096 × 4096
- 上下文向量大?。号c查詢、鍵、值向量大小相同,每個 token 有 2048 維,假設有 4096 個 token
2. 前饋神經網絡層(Feedforward Neural Network Layer):
- 隱藏層參數大小:假設隱藏層大小為 8192 維,輸入維度為 2048 維,因此隱藏層參數大小為 2048 × 8192
- 輸出層參數大小:假設輸出層大小為 2048 維,因此輸出層參數大小為 8192 × 2048
接下來,我們可以根據每個浮點數占用的內存空間(通常是 4 字節或 8 字節)來估算內存和顯存占用。然后將每一層的內存占用累加起來,就可以得到整個模型的內存占用情況。
請注意,這里的估算僅供參考,實際的內存和顯存占用可能受到模型實現、硬件環境等因素的影響。
Stable Diffusion(以下簡稱SD)是一款很強大的AI繪畫軟件,很多人都會拿SD和MJ(Midjourney)作對比,其中最重要的一點就是使用門檻上,SD需要最低也是4GB的顯存,如果顯存低了是沒辦法獲得很好的體驗的,最佳的配置是12-24GB 基本上所有的功能都能用。現在pkuliyi2015大佬開發了一個免費插件Tiled Diffusion(插件安裝目錄文件夾:extensions),可以大幅度減少SD生圖所需的顯存,其工作原理就是將一張圖不同的塊,通過連續生成圖塊,然后再合并成一張圖,再也不用--lowvram 或 --medvram指令降低作畫的質量了。
Tiled Diffusion界面
1、可以輕松做出超高質量的圖像放大,即使是8K的圖 也只需要12G顯存。
2、當你不想大幅度的改變人像時,特別適合于人像放大,可以達到無損放大的程度。
3、X4的放大比例,如果你的電腦平時只敢開X2放大,現在X4放大也不會爆顯存了,去噪強度建議設置0.4。
4、Img2img 放大,默認參數下,選擇Tiled Diffusion的X4放大,只需要1分鐘
左右,如果是X2放大,只需要10秒。
5、使用ControlNet插件的canny 2560 * 1280重繪,效果如圖:
canny線稿圖
canny重繪效果圖
軟件直裝:打開SD網頁版地址,選擇拓展-從網址安裝-輸入插件地址:https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111 點擊“安裝”,如果國內網絡不穩定,可以在github前面加個K變成kgithub,就會變成從國內的網站安裝,速度大大提高。
sd插件安裝方法
壓縮包安裝:打開項目地址,點擊code,然后點擊下面彈出來的download zip 這樣就會用壓縮包的形式下載下來,再把壓縮包解壓到extensions文件夾里面即可。這樣安裝后期更新還是一樣的方法,PS:不如網址直接安裝方便,點擊SD拓展-在線更新即可自動下載更新了。
sd插件安裝方法
插件安裝后,你可以直接使用軟件默認的設置,只需要打開“啟用”即可,英文版的是打開Enable。如果生成的圖像比較模糊或者顏色灰暗,需要打開模型對應的VAE進行顏色修復。如果還是爆顯存了,需要把各個tile調小。
Tiled Diffusion示例圖
如圖所示,一張完整的圖都被分成了不同的塊,這個插件使用起來就會把原圖分成的小塊一遍一遍的分割和融合,最終生成我們想要的圖,如果你沒有生成高清大圖的需求,建議關掉這個功能,這會讓你生成圖的速度變慢。
塊的大小和重疊數量決定了生成圖的速度,如果你把塊的寬度和高度設置的很低就會生成更多的小塊,需要的時間也就更多,建議塊的寬度和高度設置96或者128以提高生成速度,分塊重疊個數建議在使用MultiDiffusion功能的時候設置32或者48,使用Mixture of Diffusers 選擇16或32,與 MultiDiffusion 相比,Mixture of Diffusers 需要較少的重疊,兩者使用的方法不太一樣。
Stable Diffusion生成的圖
因為每個塊都共享頂部一樣的主提示詞,所以你沒有辦法將兩個不同風格的事物放在一起,但是這個插件可以通過區域提示詞分別控制不同的區塊,比如左邊你可以通過不同的lora設置一個賽博朋克風格人物,右邊區域設置一個漢服風格人物,這樣就實現了不同時期的人同框了,打開繪制完整的畫布背景就可以實現在同一個背景下了。
使用方法:把分區控制功能打開,然后選擇想要設置的不同的分區數,以上面的介紹為例,我們需要設置兩個不同的區域,把區域1和區域2都打開,然后設置寬度和高度達到占滿整幅畫的目的,如果不占滿就會出現不同的噪點和色塊。這樣我們就可以在區域1寫上單獨的提示詞和反向提示詞,embedding的NG_DeepNegative_V1_75T也是可以使用的。如果你想自己繪制圖像,可以選擇前景,否則就選擇背景,因為分區域已經寫了相關的人物提示詞,所以在頂部的提示詞框就可以不寫了,只需要寫masterpiece, best quality, (realistic, photo-realistic:1.4)等質量提示詞,不需要提到任何具象化的東西,不然生成的圖會很糟糕。
MultiDiffusion分區控制
總之,如果你是小顯存,那就裝它 裝它 裝它!如果你想生成很大很大的圖,那就裝它 裝它 裝它!