StableDiffusion 不支持半精度not support half type 報(bào)錯(cuò)的解決辦法
A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.
譯:在Unet中生成了一個(gè)包含所有NaN的張量。這可能是因?yàn)闆]有足夠的精度來表示圖片,或者是因?yàn)槟囊曨l卡不支持半類型。嘗試在“設(shè)置”>“穩(wěn)定擴(kuò)散”中設(shè)置“向上投射交叉注意力層到float32”選項(xiàng),或者使用--no-half命令行參數(shù)來解決此問題。使用--disable nan-check命令行參數(shù)可以禁用此檢查。
以上是控制臺(tái)報(bào)錯(cuò)信息。首先嘗試信息中提供的兩種辦法(如果你只在使用AfterDetailer插件時(shí)才出現(xiàn)此報(bào)錯(cuò),先去嘗試文章最后的辦法):
Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion?
可在WebUI的設(shè)置里Stable Diffusion欄最下方勾選開啟。*需注意開啟該選項(xiàng)有幾率在出圖的最后階段報(bào)type不一致的錯(cuò)誤,"type32 type32 type16"字樣的,若要解決此報(bào)錯(cuò)又需要你反過來關(guān)閉Upcast cross attention layer to float32選項(xiàng)。
使用 --no-half 命令行參數(shù)
編輯webui-user.bat,在 set COMMANDLINE_ARGS= 后面加上--no-half。如果你使用的是秋葉啟動(dòng)器,可以在 高級選項(xiàng)/計(jì)算精度設(shè)置 項(xiàng)內(nèi)關(guān)閉模型半精度優(yōu)化(會(huì)降低性能),和手動(dòng)編輯bat或者在該頁最下面“自定義參數(shù)”中添加命令是一樣的。
*?報(bào)錯(cuò)最后提到的“使用--disable nan-check命令行參數(shù)可以禁用此檢查”也可以通過上面的過程設(shè)置,其相當(dāng)于忽略該報(bào)錯(cuò)強(qiáng)行出圖而不是解決問題,你可能會(huì)得到噪聲圖或黑圖。

其他辦法——更換xFormers版本:
已知改xformers版本可以解決某些人的報(bào)錯(cuò)。秋葉啟動(dòng)器高級選項(xiàng)/環(huán)境維護(hù)/配置PyTorch下可以選擇安裝xFormers的版本,嘗試0.0.17和0.0.19。
或者在命令行中加入"--reinstall-xformers" 以安裝最新版xFormers(目前是0.0.20,安裝需聯(lián)網(wǎng)下載),添加命令的方法參照上面第2條的操作。
針對只在使用AfterDetailer插件時(shí)報(bào)錯(cuò)—— 切換至穩(wěn)定版本的WebUI:
表現(xiàn)可能是單批次出一張圖不會(huì)報(bào)錯(cuò),出兩張圖以上就會(huì)報(bào)錯(cuò)或出壞圖,只有第一張圖正常。
如果你只在使用AfterDetailer插件時(shí)才出現(xiàn)此報(bào)錯(cuò),這是新版WebUI和ADetailer的兼容問題,應(yīng)該是最近才出現(xiàn)的,需要回退到一個(gè)穩(wěn)定可行的分支??梢栽谇锶~啟動(dòng)器的版本管理中切換版本。
或者在主目錄右鍵打開PowerShell,輸入git checkout "hash"。
我回退的6.18版本hash為 <f7ae0e68c9c91cd95e28552ef930299286026cd7>,那么就輸入:git checkout?f7ae0e68c9c91cd95e28552ef930299286026cd7 之后稍等片刻等待切換完畢。
可以通過 git rev-parse HEAD 檢查本機(jī)目前版本。