idc網(wǎng)站模版營銷戰(zhàn)略有哪些內(nèi)容
本文是我總結(jié)的步驟,驗(yàn)證了幾次保證是對(duì)的。因?yàn)檎_的安裝 Stable Diffusion Web UI 以及對(duì)應(yīng)的 xFormers 實(shí)在是太麻煩了,官方和網(wǎng)上的步驟都是殘缺和分散的,加上國內(nèi)網(wǎng)絡(luò)速度不理想,所以需要一些額外步驟,之前研究出來了,結(jié)果沒記,重裝系統(tǒng)之后又安裝不好了,這次成功安裝之后,就寫下本文記錄,這樣一個(gè)小時(shí)絕對(duì)能裝好了(網(wǎng)絡(luò)速度快的話不超過十分鐘)。
為什么需要xFormers
如果你想讓 Stable Diffusion Web UI 生成圖的時(shí)候需要的顯存/內(nèi)存以及時(shí)間少一些,那么需要 xFormers 來實(shí)現(xiàn)這點(diǎn)。xFormers 是 Meta(也就是 Facebook)開發(fā)的一個(gè)優(yōu)化框架。
比如我使用的 RTX 3060 12GB,開不開 xFormers 的對(duì)比如下:
需要注意,尺寸并不是剛剛好夠,而是我測(cè)試了一下常見分辨率的結(jié)果。因?yàn)樯蓛?nèi)容如果不是常見分辨率,很多時(shí)候生成的圖很奇怪。
不開 xFormers | 開 xFormers | |
---|---|---|
512x512速度 | 5.1 s | 4.5 s |
512x512時(shí)使用的顯存 | 7608MiB | 7606MiB |
1024x1024速度 | 18.1 s | 14.6 s |
1024x1024時(shí)使用的顯存 | 8866MiB | 8094MiB |
但是安裝 xFormers 是其中的難點(diǎn),你可能會(huì)看有人已經(jīng)提到,xFormers 與 Pytorch 和 CUDA 版本需要對(duì)應(yīng)起來。但是此時(shí)你可能依舊有兩個(gè)問題:
- 對(duì)于如何找到版本對(duì)應(yīng)關(guān)系,很多人給出的答案是找表。
- 按照一些表里的對(duì)應(yīng)關(guān)系安裝了,但還是有問題。
經(jīng)過我的研究,這根本不是你需要考慮的。本文的安裝步驟也不需要你記住對(duì)應(yīng)的版本。關(guān)于 Python 及其包的解釋除了“安裝詳情”中有展開外,最后的“多說點(diǎn)”部分也會(huì)說一些,感興趣可以看看。
如果你只需要知道步驟,那么可以直接看“安裝步驟總結(jié)”部分。
安裝詳情
下面我從頭安裝演示,其中會(huì)說明哪些步驟可能會(huì)導(dǎo)致的一些問題,所以希望你從頭看,Python 的版本控制是一個(gè)挺復(fù)雜的問題。
首先是把倉庫克隆下來:
git clone git@github.com:AUTOMATIC1111/stable-diffusion-webui.git
倉庫如果下不動(dòng),那么建議你改 GitHub 的 IP 下或者其他方法下,反正這部分必須是個(gè) Git 倉庫。zip 解壓還需要更麻煩的處理,不推薦。
然后進(jìn)入倉庫,直接按照官方教程里的方法開始安裝:
$ cd stable-diffusion-webui/
$ ./webui.sh
到打印下面這樣的內(nèi)容時(shí),你可能會(huì)發(fā)現(xiàn)很卡,并且到最后會(huì)報(bào)錯(cuò):
............
............
Successfully installed pip-25.0.1################################################################
Launching launch.py...Launching launch.py...
################################################################
glibc version is 2.35
Check TCMalloc: libtcmalloc_minimal.so.4
libtcmalloc_minimal.so.4 is linked with libc.so,execute LD_PRELOAD=/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4
Python 3.10.12 (main, Jan 17 2025, 14:35:34) [GCC 11.4.0]
Version: v1.10.1
Commit hash: 82a973c04367123ae98bd9abdf80d9eda9b910e2
Installing torch and torchvision
Looking in indexes: https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple, https://download.pytorch.org/whl/cu121
這時(shí)候直接Crtl+C
退出運(yùn)行(為什么這樣后面說)。最后一行的Looking in indexes: https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple, https://download.pytorch.org/whl/cu121
是在安裝 Pytorch 的時(shí)候找的庫地址,可以看到第一個(gè)時(shí)清華源的鏡像,第二個(gè)是官方地址。由于清華源的 Pytorch 是 CPU 版本的,所以這時(shí)候會(huì)去官方找,找的時(shí)候又因?yàn)榫W(wǎng)絡(luò)問題,這時(shí)候就開始卡和報(bào)錯(cuò)了。
這時(shí)候先解決一個(gè)國內(nèi)網(wǎng)絡(luò)導(dǎo)致的問題:Stable Diffusion Web UI 每次啟動(dòng)的時(shí)候都會(huì)檢查版本,這時(shí)候它必須通過上面兩個(gè)庫看一下版本對(duì)不對(duì),但是由于網(wǎng)絡(luò)原因必定會(huì)卡。所以先來設(shè)置個(gè)鏡像解決這個(gè)問題。
阿里云的 Pytorch 鏡像支持顯卡版本,這時(shí)先打開倉庫中的webui-user.sh
文件,在下面這部分下面添加一句(這里的cu124
是因?yàn)槲业?CUDA 版本是 12.4,你按照你的來設(shè)置),并且在參數(shù)部分添加--xformers
,啟動(dòng) xFormers(這里我加了個(gè)--listen
是因?yàn)槲覍?shí)在其他設(shè)備上訪問了,這樣弄了個(gè)公共鏈接):
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--listen --xformers"# install command for torch
export TORCH_COMMAND="pip install torch -f https://mirrors.aliyun.com/pytorch-wheels/cu124"
然后再次運(yùn)行安裝命令:
$ ./webui.sh
你會(huì)發(fā)現(xiàn)這時(shí)候開始正常的安裝流程了,它會(huì)把需要的倉庫和模型下載下來,這需要一段時(shí)間。
倉庫如果下不動(dòng),那么建議你改 GitHub 的 IP 下,反正它同樣需要是個(gè) Git 倉庫。
模型如果下不動(dòng),可以想辦法下載后挪到對(duì)應(yīng)的位置(復(fù)制或者鏈接),這個(gè)是可以的。
可以使用HF-Mirror,方法你看看文檔就知道了。
等安裝好了之后,會(huì)啟動(dòng) Stable Diffusion Web UI,這時(shí)候你在網(wǎng)頁生成圖會(huì)出現(xiàn)下面的內(nèi)容:
終端顯示:
....
....raise NotImplementedError(msg)NotImplementedError: No operator found for `memory_efficient_attention_forward` with inputs:query : shape=(2, 4096, 8, 40) (torch.float16)key : shape=(2, 4096, 8, 40) (torch.float16)value : shape=(2, 4096, 8, 40) (torch.float16)attn_bias : <class 'NoneType'>p : 0.0`decoderF` is not supported because:xFormers wasn't build with CUDA supportattn_bias type is <class 'NoneType'>operator wasn't built - see `python -m xformers.info` for more info`flshattF@0.0.0` is not supported because:xFormers wasn't build with CUDA supportoperator wasn't built - see `python -m xformers.info` for more info`tritonflashattF` is not supported because:xFormers wasn't build with CUDA supportoperator wasn't built - see `python -m xformers.info` for more infotriton is not availableOnly work on pre-MLIR triton for now`cutlassF` is not supported because:xFormers wasn't build with CUDA supportoperator wasn't built - see `python -m xformers.info` for more info`smallkF` is not supported because:max(query.shape[-1] != value.shape[-1]) > 32xFormers wasn't build with CUDA supportdtype=torch.float16 (supported: {torch.float32})operator wasn't built - see `python -m xformers.info` for more infounsupported embed per head: 40
這段錯(cuò)誤的意思就是 xFormers 與 CUDA 版本不對(duì)應(yīng),現(xiàn)在我們來解決這個(gè)問題。
首先使用Crtl+C
退出運(yùn)行。這時(shí)候你別用提示的python -m xformers.info
命令來檢查,用./venv/bin/python -m xformers.info
命令(為什么這樣我稍后說),它的輸出如下:
$ ./venv/bin/python -m xformers.info
WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:PyTorch 2.1.2+cu121 with CUDA 1201 (you have 2.6.0+cu124)Python 3.10.13 (you have 3.10.12)Please reinstall xformers (see https://github.com/facebookresearch/xformers#installing-xformers)Memory-efficient attention, SwiGLU, sparse and more won't be available.Set XFORMERS_MORE_DETAILS=1 for more details
.....
.....
你會(huì)發(fā)現(xiàn)它告訴你了你當(dāng)前的 CUDA、Pytorch 與 xFormers 需要的情況:它需要PyTorch 2.1.2+cu121
(Python 的那個(gè)提示不管它),但其實(shí)你也不用記這個(gè)版本號(hào),這里只是告訴你如何找到它是因?yàn)榘姹境鲥e(cuò)的。
現(xiàn)在不要使用任何命令安裝,這里需要先解釋一下上面的兩個(gè)“稍后”。
眾所周知,Python 每個(gè)小版本的不同就可能導(dǎo)致一些重大改變,所以很多項(xiàng)目使用的 Python 版本是強(qiáng)制指定的,這時(shí)候就有了很多虛擬環(huán)境,比如 Miniconda,但是 Python 自己也有個(gè)虛擬環(huán)境,這里正是用到了這一點(diǎn)。你這時(shí)候查看項(xiàng)目目錄,會(huì)發(fā)現(xiàn)多了一個(gè)venv
目錄,上面查看 xFormers 信息的時(shí)候使用的python
也是這個(gè)虛擬環(huán)境內(nèi)的。
注意不要直接用這個(gè)目錄下的
pip
安裝,你會(huì)發(fā)現(xiàn)會(huì)報(bào)錯(cuò)。
現(xiàn)在我們需要進(jìn)入這個(gè)虛擬環(huán)境:
source ./venv/bin/activate
然后在虛擬環(huán)境中(你命令行最前面會(huì)出現(xiàn)一個(gè)(venv)
),再使用下面的命令安裝(同樣,你需要根據(jù)你的 CUDA 版本修改鏡像鏈接):
pip install -U xformers -f https://mirrors.aliyun.com/pytorch-wheels/cu124
你可以看到,你不需要指定 xformers 的版本就可以安裝,因?yàn)檫@里使用的-U
是將xformers
更新成cu124
對(duì)應(yīng)的版本了,前面安裝torch
的時(shí)候也是用的這個(gè)版本,不需要你去查找。
此后,不管你是不是在這個(gè)虛擬環(huán)境內(nèi),會(huì)發(fā)現(xiàn)它都使用的都是正確的 xFormers,也就是可以正常運(yùn)行。
如果你想了解如何使用 Stable Diffusion Web UI,可以看我的這篇博客:文本生圖的提示詞prompt和參數(shù)如何設(shè)置(基于Animagine XL V3.1)
安裝步驟總結(jié)
第一步,克隆倉庫:
git clone git@github.com:AUTOMATIC1111/stable-diffusion-webui.git
第二步,先讓他生成虛擬環(huán)境,然后卡住的時(shí)候使用Crtl+C退出運(yùn)行:
./webui.sh
第三步,在webui-user.sh
修改參數(shù)和鏡像:
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--listen --xformers"# install command for torch
export TORCH_COMMAND="pip install torch -f https://mirrors.aliyun.com/pytorch-wheels/cu124"
第四步,再次運(yùn)行,安裝需要的倉庫和包:
./webui.sh
第五步,進(jìn)入虛擬環(huán)境:
source ./venv/bin/activate
第六步,在虛擬環(huán)境中安裝正確版本的 xFormers:
pip install -U xformers -f https://mirrors.aliyun.com/pytorch-wheels/cu124
第六步,運(yùn)行檢查:
./webui.sh
多說點(diǎn)
這里多說點(diǎn),你的設(shè)備上大概率存在多個(gè)版本的 Python 以及 PIP。在這種多版本的情況下,你需要知道你在用哪個(gè),要用哪個(gè),誰管誰。
第一,你要確定是否有虛擬環(huán)境。這點(diǎn)你可以看命令行前面的內(nèi)容就知道了,比如 conda 的(base)
以及本文的(venv)
。
第二,你要確定當(dāng)前默認(rèn) Python 版本是哪個(gè)。這點(diǎn)你可以使用Python --version
查看。
第三,你的默認(rèn) PIP 和 Python 不一定是一對(duì)的,這就導(dǎo)致你使用pip
安裝的包在python
中無法使用(pip
就是默認(rèn)的 PIP,python
是默認(rèn)的 Python)。這個(gè)使用,需要你使用下面的樣式安裝:
python -m pip install <包>
這時(shí)候安裝的包就在默認(rèn)的python
中。同樣的道理,你可以把python
改成某個(gè) Python 版本的路徑。
第四,善用 PIP 的-U
選項(xiàng)。雖然-U
選項(xiàng)是更新的意思,但是由于它是查找某些包管理庫來看最新版本的,所以它也可以“回退”,就像本文使用的那樣。此外,你在強(qiáng)制版本的使用,也可以使用這個(gè)選項(xiàng),否則由于強(qiáng)制版本小于當(dāng)前版本,導(dǎo)致沒有任何操作。
希望能幫到有需要的人~