一、前言
是的,現(xiàn)在是202308月份了,網(wǎng)上已經(jīng)有很多打包好的工具,或者直接進(jìn)一個(gè)web就能用SD的功能,但是我們作為程序員,就應(yīng)該去躺坑,這樣做也是為了能夠有更多自主操作的空間。
像其他AI一樣,先出結(jié)果才是王道,所以先不直接搞SD源碼或者命令行,而是先用起來(lái),后面再去進(jìn)一步研究原理,目前最火熱的莫不過(guò)是這個(gè)項(xiàng)目了:
GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI
這篇博客就是本地部署這個(gè)項(xiàng)目,搞一下中文插件,然后隨便出一張圖,當(dāng)然是有很多坑才會(huì)去寫(xiě)博客。
有一個(gè)坑一直沒(méi)過(guò)去,就是如果整體環(huán)境沒(méi)完全裝好,但是使用我自己提前創(chuàng)建的python虛擬環(huán)境來(lái)啟動(dòng)SD啟動(dòng)腳本stable-diffusion-webui/webui-user.bat,期間會(huì)因?yàn)槟承┰颍ū热鐩](méi)梯子?xùn)|西下載不下來(lái))啟動(dòng)失敗,但是第二次啟動(dòng)時(shí)就會(huì)報(bào)沒(méi)有pip模塊的錯(cuò)誤,我就只能重新創(chuàng)建python虛擬環(huán)境,再裝一遍包,這個(gè)過(guò)程很漫長(zhǎng)很浪費(fèi)時(shí)間,所以一定跟著我的腳步,一步不要落下的走,心急吃不了熱豆腐(目前經(jīng)過(guò)我大量的失敗和探索,終于解決這個(gè)問(wèn)題,見(jiàn)下面第五節(jié))。
二、環(huán)境版本庫(kù)的安裝
這個(gè)還真挺重要的,最好和項(xiàng)目保持一樣的環(huán)境,不然出錯(cuò)也不一定網(wǎng)上有支持,這里我首先聲明我用的SD版本是目前最新的,git號(hào)為50973ec77c297edc3b3c581e871b970dde1af8ba,如果后面過(guò)段時(shí)間可能會(huì)變化,那我們也相應(yīng)的變化;
我是在搭建環(huán)境過(guò)程中,發(fā)現(xiàn)一個(gè)有關(guān)于環(huán)境版本的一個(gè)文件:stable-diffusion-webui/modules/launch_utils.py里面的prepare_environment函數(shù)截圖如下:
?可以看出我們需要安裝cuda版本為11.8,torch版本為2.0.1,torchvision版本為0.15.2;
從github的README.md可知,python版本為3.10;
從stable-diffusion-webui/requirements_versions.txt可知項(xiàng)目依賴的python包名和對(duì)應(yīng)版本;
cuda的安裝是沒(méi)啥說(shuō)的,python安裝建議用anaconda,anaconda版本一定要夠新保證支持py310,然后就是安裝python包,我個(gè)人比較喜歡離線下一些包,百度搜pipy然后搜對(duì)應(yīng)包名,下載對(duì)應(yīng)版本即可,然后用bat腳本安裝,腳本如下(有一個(gè)xformers在requirements_versions.txt沒(méi)見(jiàn)到,但是在其他地方用到了,還是提前安裝,畢竟這個(gè)包挺大):
@echo off
call activate sd
cd /d G:\python310_win_whl
pip install llvmlite-0.40.1-cp310-cp310-win_amd64.whl
pip install numpy-1.23.5-cp310-cp310-win_amd64.whl
pip install numba-0.57.1-cp310-cp310-win_amd64.whl
pip install pandas-2.0.3-cp310-cp310-win_amd64.whl
pip install Pillow-9.5.0-cp310-cp310-win_amd64.whl
pip install safetensors-0.3.1-cp310-cp310-win_amd64.whl
pip install scipy-1.11.1-cp310-cp310-win_amd64.whl
pip install scikit_image-0.20.0-cp310-cp310-win_amd64.whl
pip install "torch-2.0.1+cu118-cp310-cp310-win_amd64.whl"
pip install "torchvision-0.15.2+cu118-cp310-cp310-win_amd64.whl"
pip install xformers-0.0.20-cp310-cp310-win_amd64.whl
cd /d G:\python_whl
pip install GitPython-3.1.30-py3-none-any.whl
pip install accelerate-0.18.0-py3-none-any.whl
pip install basicsr-1.4.2.tar.gz
pip install blendmodes-2022-py3-none-any.whl
pip install clean_fid-0.1.35-py3-none-any.whl
pip install einops-0.4.1-py3-none-any.whl
pip install fastapi-0.94.0-py3-none-any.whl
pip install gfpgan-1.3.8-py3-none-any.whl
pip install gradio-3.32.0-py3-none-any.whl
pip install httpcore-0.15.0-py3-none-any.whl
pip install inflection-0.5.1-py2.py3-none-any.whl
pip install jsonmerge-1.8.0.tar.gz
pip install kornia-0.6.7-py2.py3-none-any.whl
pip install lark-1.1.2-py2.py3-none-any.whl
pip install omegaconf-2.2.3-py3-none-any.whl
pip install open_clip_torch-2.20.0-py3-none-any.whl
pip install piexif-1.1.3-py2.py3-none-any.whl
pip install psutil-5.9.5.tar.gz
pip install pytorch_lightning-1.9.4-py3-none-any.whl
pip install realesrgan-0.3.0-py3-none-any.whl
pip install resize_right-0.0.2-py3-none-any.whl
pip install timm-0.6.7-py3-none-any.whl
pip install tomesd-0.1.2-py3-none-any.whl
pip install torchdiffeq-0.2.3-py3-none-any.whl
pip install torchsde-0.2.5-py3-none-any.whl
pip install transformers-4.25.1-py3-none-any.whl
pause
三、修改url地址(梯子強(qiáng)可不改)
還是stable-diffusion-webui/modules/launch_utils.py里面的prepare_environment函數(shù),有很多如下類似的語(yǔ)句:
gfpgan_package = os.environ.get('GFPGAN_PACKAGE',
"https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")
如果沒(méi)有梯子,這里很慢或者根本過(guò)不去,所以參考?慢網(wǎng)救星!兩步操作加快stable diffusion本地部署速度 - 嗶哩嗶哩?來(lái)做修改,首先把這些項(xiàng)目都搞到gitee上面去,最好設(shè)置成開(kāi)源項(xiàng)目,然后launch_utils.py的內(nèi)容修改如下(其中#注釋的就是原始內(nèi)容,放在這好對(duì)比著看):
#gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")
gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+https://gitee.com/luo_zhi_cheng/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379")
#clip_package = os.environ.get('CLIP_PACKAGE', "https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip")
clip_package = os.environ.get('CLIP_PACKAGE', "git+https://gitee.com/luo_zhi_cheng/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1")
#openclip_package = os.environ.get('OPENCLIP_PACKAGE', "https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip")
openclip_package = os.environ.get('OPENCLIP_PACKAGE', "git+https://gitee.com/luo_zhi_cheng/open_clip.git@bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b")
#stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/Stability-AI/stablediffusion.git")
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://gitee.com/luo_zhi_cheng/stablediffusion")
#stable_diffusion_xl_repo = os.environ.get('STABLE_DIFFUSION_XL_REPO', "https://github.com/Stability-AI/generative-models.git")
stable_diffusion_xl_repo = os.environ.get('STABLE_DIFFUSION_XL_REPO', "https://gitee.com/luo_zhi_cheng/generative-models")
#k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git')
k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://gitee.com/luo_zhi_cheng/k-diffusion')
#codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://github.com/sczhou/CodeFormer.git')
codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://gitee.com/luo_zhi_cheng/CodeFormer')
#blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')
blip_repo = os.environ.get('BLIP_REPO', 'https://gitee.com/luo_zhi_cheng/BLIP')
四、下載最基礎(chǔ)模型
這是啟動(dòng)腳本就會(huì)讓你下載的模型,因?yàn)槿绻螺d過(guò)程中失敗了,就很痛苦,很多事情需要重來(lái),這里我們也選擇手動(dòng)下載,下載地址為(如果版本更新了,請(qǐng)找到modules\sd_models.py中的model_url = "https://xxx):https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
手動(dòng)下載好之后,放在stable-diffusion-webui/models/Stable-diffusion目錄下即可;
五、修改啟動(dòng)腳本
啟動(dòng)腳本為stable-diffusion-webui/webui-user.bat,參數(shù)如下:
set PYTHON=D:\Soft\Anaconda3\envs\sd\python.exe
::set PYTHON=D:\Soft\Anaconda3\envs\sd\Scripts\python.exe
set GIT=
set VENV_DIR=D:\Soft\Anaconda3\envs\sd
set COMMANDLINE_ARGS=--xformers
:: --medvram 中等顯存模式,犧牲一些速度,4G顯存建議使用
:: --lowvram 低顯存模式,犧牲大量速度,如果--medvram還是爆顯存再用這個(gè)
:: --precision full --no-half 不使用半精度模式,GTX 16系顯卡需要使用
:: --autolaunch 自動(dòng)啟動(dòng),服務(wù)啟動(dòng)成功后自動(dòng)打開(kāi)瀏覽器。
其中COMMANDLINE_ARGS可選參數(shù)在modules/cmd_args.py,具體參數(shù)怎么選可以多百度,這里不同顯存的顯卡參數(shù)都是有差異的,需要因人而異;
這里說(shuō)一下我一直以來(lái)遇到的問(wèn)題,但是網(wǎng)上我卻找不到解決辦法,還是我大量測(cè)試解決了,就是我每次第一次雙擊啟動(dòng)腳本stable-diffusion-webui/webui-user.bat能夠正常啟動(dòng),但是第二次啟動(dòng)就會(huì)報(bào)如下錯(cuò)誤:
?看到我webui-user.bat里面寫(xiě)了兩個(gè)"set PYTHON"沒(méi),第一次啟動(dòng)時(shí)注釋掉第二行的"set PYTHON",后面每一次啟動(dòng)都注釋掉第一行的"set PYTHON"即可。
六、中文設(shè)置
上面全部搞定后,就雙擊啟動(dòng)腳本stable-diffusion-webui/webui-user.bat,命令行你等它一步步執(zhí)行,只要沒(méi)報(bào)錯(cuò),幾分鐘就會(huì)出現(xiàn)一個(gè)類似的地址http://127.0.0.1:7860,復(fù)制該地址到網(wǎng)頁(yè)中就打開(kāi)了stable-diffusion-webui界面,大致界面如下圖:
?現(xiàn)在設(shè)置中文插件,點(diǎn)擊Extensions->畫(huà)面切換后點(diǎn)擊Install from URL->填入https://gitee.com/luo_zhi_cheng/stable-diffusion-webui-localization-zh_Hans->點(diǎn)擊橙色按鈕Install->點(diǎn)擊Settings->畫(huà)面切換后點(diǎn)擊Reload UI
?重啟webui后,點(diǎn)擊Settings->畫(huà)面切換后點(diǎn)擊右邊的"User interface"->選擇Localization那里的"zh-Hans (Testing)"->然后點(diǎn)擊橙色按鈕"Apply settings"->最后點(diǎn)擊Reload UI。
?重啟webui后,就應(yīng)該是中文界面了,如下圖:
七、第一幅畫(huà)
第一次畫(huà)簡(jiǎn)單一點(diǎn),在prompt那里隨便填一個(gè)動(dòng)物,比如dragon,等待一會(huì)(進(jìn)度條可以看命令行)就出圖啦。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-628694.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-628694.html
到了這里,關(guān)于stable diffusion(1): webui的本地部署(windows)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!