一些背景
因?yàn)楸娝苤脑颍诖箨懙貐^(qū)登錄一些網(wǎng)站延遲過(guò)高,甚至出現(xiàn)無(wú)法登錄的情況,這使得新技術(shù)的體驗(yàn)過(guò)程變得困難重重。比如最近大火的Stable Diffusion模型,可以借助人工智能技術(shù),用神經(jīng)網(wǎng)絡(luò)生成各種有趣的圖片,視頻。然而,部署模型和WebUI需要登陸github,需要加載python包,這些都會(huì)因網(wǎng)絡(luò)延遲變成瓶頸。
這篇文章目的在于告訴大家如何在沒(méi)有科學(xué)上網(wǎng)的條件下,在本地部署Stable Diffusion WebUI,讓大家能把Stable Diffusion模型用起來(lái)。
技巧總結(jié)起來(lái)無(wú)非2條:
- 用ssh代替http連接,增加github下載的穩(wěn)定性
- 在python加載依賴包的過(guò)程中不要用默認(rèn)的下載源,要換成國(guó)內(nèi)阿里源
下面本文會(huì)從零開(kāi)始告訴大家如何在Windows環(huán)境從零開(kāi)始部署Stable Diffusion WebUI。
一些需求
硬件需求(可選)
一塊性能尚可的GPU,筆者用的是3060Ti。需要注意這是一個(gè)可選項(xiàng),經(jīng)過(guò)實(shí)驗(yàn),CPU完全可以運(yùn)行Stable Diffusion模型,但耗時(shí)較長(zhǎng)體驗(yàn)不佳。GPU生成一張512x512的圖片大約需要10s,而CPU則需幾分鐘。所以,強(qiáng)烈建議配置一塊GPU跑模型,可以大大增加用戶體驗(yàn)。
軟件需求
- Git: 用于下載webui,需要配置ssh登錄,而不是用https
- Python: 用于運(yùn)行模型
- cuda + cuDNN (可選): 和PyTorch綁定,用GPU加速計(jì)算
一些細(xì)節(jié)
檢查nvidia driver查看對(duì)應(yīng)cuda版本
cuda版本最好在11.7以上以避免問(wèn)題,如果版本過(guò)低建議更新driver
https://blog.csdn.net/junR_980218/article/details/129694824
安裝cuda
在命令行運(yùn)行nvidia-smi
查看cuda版本,如果>=11.7,則使用11.7,如果<11.7,則使用對(duì)應(yīng)版本,但版本最好在11.x。這里強(qiáng)烈建議用11.7版本,以避免后續(xù)發(fā)生問(wèn)題。
參考:https://developer.nvidia.com/cuda-11-7-0-download-archive
安裝cuDNN
在官網(wǎng)找到對(duì)應(yīng)版本(這個(gè)過(guò)程應(yīng)該要注冊(cè)),下載解壓后將文件拷貝到cuda目錄
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7
官網(wǎng):https://developer.nvidia.com/rdp/cudnn-archive
安裝GPU版pytorch
pytorch分為CPU版 ~ 172MB和GPU版~ 2.3GB,需要安裝的是后者。因?yàn)槟J(rèn)安裝CPU版,GPU版要在pytorch官網(wǎng)查詢命令
https://pytorch.org/get-started/locally/
版本和cuda綁定,以cuda11.7為例,
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu117
建議使用python虛擬環(huán)境,雖然這不是必須的,不過(guò)強(qiáng)烈建議這樣做,避免python初始環(huán)境被污染,至于如何以及為什么要用虛擬環(huán)境,可以參考我的另一篇文章PyCharm使用初步用命令行安裝包一節(jié)。
安裝完成后,可以對(duì)安裝過(guò)程進(jìn)行檢查,torch.cuda.isavailable()
要返回True
import torch
if __name__ == '__main__':
if torch.cuda.is_available():
print("success")
else:
print("failed")
參考:https://blog.csdn.net/qq_43473795/article/details/125816702
安裝Stable Diffusion WebUI
Github代碼倉(cāng)庫(kù):https://github.com/AUTOMATIC1111/stable-diffusion-webui
建議以ssh連接不要用http,這樣更穩(wěn)定
git clone git@github.com:AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
需要建立虛擬環(huán)境+換源,這樣能提升下載文件可靠性。如上圖所示,啟用python虛擬環(huán)境以后,目錄前會(huì)有類似(venv)
的字樣。本文使用了阿里源,因?yàn)槭怯妹钚邪惭b,所以在--index-url
添加對(duì)應(yīng)的鏈接即可。
pip install –r requirements.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
之后再次確認(rèn)依賴包版本,避免之后執(zhí)行腳本發(fā)生問(wèn)題
pip install –r requirements_versions.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
發(fā)現(xiàn)的問(wèn)題:
-
在下載basicsr包過(guò)程中存在下載不了的情況
考慮先單獨(dú)下載,更新setuptools + 使用--use-pep517
,然后執(zhí)行pip install basicsr==1.4.2 --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --use-pep517
參考:https://blog.csdn.net/sinat_29957455/article/details/130285223
因?yàn)閎asicsr有大量依賴,大家稍安勿躁
-
要在虛擬環(huán)境中完成pytorch GPU版本的安裝并確認(rèn)在虛擬環(huán)境下可用
如果后續(xù)出現(xiàn)
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
很可能是pytorch GPU版沒(méi)裝好。
完成上述過(guò)程后,運(yùn)行webui-user.bat
發(fā)現(xiàn)的問(wèn)題:
-
大概率會(huì)有time out的錯(cuò)誤
Error code: 1
stdout: Collecting https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zipstderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017D1ACD3340>, ‘Connection to github.com timed out. (connect timeout=15)’)’: /mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ReadTimeoutError(“HTTPSConnectionPool(host=‘github.com’, port=443): Read timed out. (read timeout=15)”)’: /mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip這個(gè)問(wèn)題源于在項(xiàng)目python腳本中使用了https而不是ssh下載文件,https連接在大陸地區(qū)很容易出現(xiàn)time out問(wèn)題,要克服這點(diǎn)就要對(duì)腳本做一些修改
打開(kāi)modules/launch_utils.py
大約在line: 230+的位置可以看到大量https下載方式:stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/Stability-AI/stablediffusion.git") k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git') codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://github.com/sczhou/CodeFormer.git') blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')
將這些下載模式都改成ssh
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "git@github.com:Stability-AI/stablediffusion.git") k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'git@github.com:crowsonkb/k-diffusion.git') codeformer_repo = os.environ.get('CODEFORMER_REPO', 'git@github.com:sczhou/CodeFormer.git') blip_repo = os.environ.get('BLIP_REPO', 'git@github.com:salesforce/BLIP.git')
然后重新運(yùn)行腳本
webui-user.bat
-
這時(shí)應(yīng)該會(huì)報(bào)一個(gè)沒(méi)有模型的錯(cuò)誤,因?yàn)槟P褪且~外下載放到目錄的,支持的格式有.ckpt和.safetensors
-
如果CPU部署,最后會(huì)出現(xiàn)
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
因?yàn)閜ytorch安裝的是CPU版,此時(shí)需要修改webui-user.bat腳本關(guān)閉和GPU有關(guān)的部分:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-585021.htmlCOMMANDLINE_ARGS= and change it to: COMMANDLINE_ARGS= --lowvram --precision full --no-half --skip-torch-cuda-test
下載模型
下載模型這一步見(jiàn)仁見(jiàn)智,hugging face官網(wǎng)很可能無(wú)法打開(kāi),但大陸地區(qū)也有不少網(wǎng)盤存儲(chǔ)了模型供大家使用 https://openai.wiki/stable-diffusion-model-v1-5.html
hugging face官網(wǎng):
https://huggingface.co/runwayml/stable-diffusion-v1-5
將模型(比如v1-5-pruned-emaonly.ckpt)拷貝到目錄stable-diffusion-webui\models\Stable-diffusion
重新運(yùn)行腳本webui-user.bat
webui成功部署了,在網(wǎng)頁(yè)打開(kāi)http://127.0.0.1:7860/ 即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-585021.html
到了這里,關(guān)于如何部署Stable Diffusion WebUI Windows + 無(wú)科學(xué)上網(wǎng)版的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!