自力更生:Stable Diffusion webui本地部署遇到的坑及解決

很早以前我就玩AI繪畫了,用過Stable Diffusion為自己的小說繪制插圖,也在P站投稿過不少個(gè)人XP的作品。
?
當(dāng)時(shí)因?yàn)槲冶镜夭渴饡r(shí)有問題,就偷懶用的B站的整合包,現(xiàn)在用的也是。但版本太舊,不能加載safesensors的模型,不能玩Lora和ControlNet,加上開學(xué)了工作忙,就沒有弄這個(gè)。
?
今天聽說因?yàn)槿卧L畫出事了,遂擔(dān)心B站和社群。和朋友A老師討論此事后,A老師建議我看外網(wǎng)教程,在本地部署,以后更新也方便。加上有A老師成功的經(jīng)驗(yàn),我就花了一下午來部署,其中遇到了各種坑。因?yàn)楸救耸怯?jì)算機(jī)專業(yè),一邊閱讀修改代碼,一邊在網(wǎng)上查找其他人遇到問題的解答,總算完成了本地的部署。
?
考慮到這個(gè)過程中很多類似文章的幫助,加上未來可能有更多人遇到和我相同的問題,花費(fèi)大量的精力解決。出于互聯(lián)網(wǎng)共享精神,我寫了這篇文章,細(xì)數(shù)我本地部署遇到的坑和解決方案,如果能對讀者解決問題有幫助就再好不過了。
這篇文章可能有點(diǎn)“硬核”,建議有一定編程和計(jì)算機(jī)基礎(chǔ)的同學(xué)閱讀。
?

非常建議有一定編程動(dòng)手能力的人使用本地部署。畢竟總依賴整合包讓別人喂也不是辦法,一來每次更新都要下載新的,不如學(xué)會(huì)自己更新webui;二來萬一別人不分享整合包怎么辦?就一直不更新了?自力更生比較好哦。
?
我參考的很不錯(cuò)的教程:https://ivonblog.com/posts/windows-stable-diffusion-webui/
照著這個(gè)教程部署就好,如果不出錯(cuò)的話就不用看下面了。那么下面是我遇到的問題和解答,以及對問題和相關(guān)代碼的分析:
?
我的配置:
Win11
GTX3060 8G
?
重要提示:運(yùn)行一次.bat后(打開看,其實(shí)兩個(gè)代碼只有配置的不同),就可以只運(yùn)行python launch.py了,后面主要也是修改這個(gè)python文件的代碼。每次在命令行運(yùn)行l(wèi)aunch.py,然后解決報(bào)錯(cuò)就可以了。
?
1.????? 電腦里裝了多版本Python
如果你是計(jì)算機(jī)專業(yè)學(xué)生,那么大概和我一樣,電腦里已經(jīng)裝了其他版本的Python了,但是webui又要求Python 3.10.6
?
解決:A老師提醒了我,用anaconda虛擬環(huán)境,這個(gè)學(xué)人工智能的同學(xué)應(yīng)該很熟,可以自行學(xué)習(xí)安裝。
創(chuàng)建一個(gè)python3.10.6的虛擬環(huán)境,然后后面的操作都在這個(gè)虛擬環(huán)境就好了。(需要一點(diǎn)命令行基礎(chǔ))
當(dāng)然,不用虛擬環(huán)境可能也沒有問題,我只是要保證前期準(zhǔn)備沒有問題。
?
2.????? 不能安裝依賴庫
報(bào)錯(cuò):RuntimeError: Couldn't install gfpgan.
?
這是我當(dāng)時(shí)就遇到的坑,估計(jì)也是大多數(shù)人第一個(gè)被勸退的坑,這個(gè)坑似乎還和commit hash<none>有關(guān)系,我就說說我的解決方法。
解決方法:1.安裝開發(fā)者邊車 2.自己用pip install安裝需要的依賴包
相關(guān)代碼:

分析:實(shí)際上這一步是要從git下載依賴庫,所以應(yīng)該是訪問git的網(wǎng)絡(luò)問題,用開發(fā)者邊車解決;
也可以自己用pip install指令按照需要的包,反正是在自己的python環(huán)境里。注意openclip的名字不對,應(yīng)該是open_clip_torch;這個(gè)方法的原理應(yīng)該是用了你的pip源,繞過了git。經(jīng)常自己裝python庫的同學(xué)可以用這個(gè)方法。
?
參考:https://juejin.cn/post/7193586551907942458
https://www.bilibili.com/read/cv19991459?spm_id_from=333.976.0.0
?
3.????? CUDA和torch匹配?

報(bào)錯(cuò):AssertionError: Torch is not able to use GPU;
解決方法:修改launch.py代碼:

問題分析:查了一下似乎是CUDA和torch版本不匹配的問題,但我的CUDA版本是每問題的。所以把相關(guān)的兩行注釋掉,繞過這個(gè)檢測好了。建議先檢查一下自己的版本,實(shí)在不行再用我的這個(gè)方法。
?
4.????? Commit hash <none>
報(bào)錯(cuò):RuntimeError:Couldn’t checkout {name}’s hash: {commithash}
相關(guān)代碼:

分析:總之就是是和git有關(guān)系,如果你顯示commit hash: <none>,那么大概會(huì)遇到這個(gè)問題。github上也有人問過相關(guān)的問題(https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/1888).
解決方法:在命令行運(yùn)行下面的提示,就是下面紅框框里的,出一個(gè)運(yùn)行一個(gè),直到不報(bào)錯(cuò)為止。

參考:https://blog.csdn.net/Xy_G__/article/details/128180356
?

?
到這里,我運(yùn)行l(wèi)aunch.py就沒有問題了,熟悉的http://127.0.0.1:7860/ 出來了,也可以在瀏覽器打開webUI了。
?

我迫不及待地輸入1 girl,然而……
不能畫?。?!
?
5.????? Half-float
報(bào)錯(cuò):RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'
解決:在編輯器修改webui-user.bat,在COMMANDLINE_ARGS=后面加上--skip-torch-cuda-test --precision full --no-half

分析:看下面微笑臉社區(qū)的文章,似乎是因?yàn)轱@卡不支持half-float的數(shù)據(jù)類型,所以在啟動(dòng)項(xiàng)增加這一句no-half,以后運(yùn)行webui-user.bat就可以了。
參考:https://huggingface.co/CompVis/stable-diffusion-v1-4/discussions/64
?

終于,我雙擊webui-user.bat,然后畫出了本地部署的第一張圖:

?
可以愉快的玩耍啦!
最后用Anything4.0畫的一張愛麗絲為這篇文章結(jié)尾吧:
