一、 引言
相繼在兩個(gè)云平臺(tái) Kaggle 和 AutoDL 上部署了 Stable Diffusion 后,這周決定再在 Mac 本地部署一下 Stable Diffusion!
其實(shí)看 Stable Diffusion WebUI 的 Github 官網(wǎng),步驟還是比較清晰簡(jiǎn)單的。
但實(shí)際部署過程中,確實(shí)還是遇到了不少問題,所以順便將踩過的坑一一記錄了下來,應(yīng)該涵蓋了大部分同學(xué)都會(huì)遇到的問題,是的,全幫你們填平了,有的問題還給出了多種解決方案。
所以,Mac 黨的朋友,想在本地部署 Stable Diffusion,拿著這份保姆級(jí)教程,直接沖就完事!
二、 Mac 的配置
MacBook Pro(2021 年)
芯片:Apple M1 Pro
核總數(shù):8 + 14
內(nèi)存:16GB
存儲(chǔ):512GB
macOS:Ventura 13.3.1
這個(gè)配置下,出圖的效率怎么樣呢?
文章的第五部分「性能測(cè)試」中,基于同一模型、不同采樣方法,在進(jìn)行了多組測(cè)試后,出圖效率簡(jiǎn)單記錄了一下,大家可以參考~
三、 安裝步驟
1. 安裝 Homebrew
方式一:官方安裝(可能會(huì)因網(wǎng)絡(luò)問題導(dǎo)致失敗)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
輸入 brew -v
驗(yàn)證 Homebrew 是否安裝成功:出現(xiàn)版本號(hào)說明 Homebrew 已經(jīng)安裝成功了。
補(bǔ)充知識(shí):
- Homebrew 官網(wǎng):https://brew.sh/
- 通過官網(wǎng)方式安裝的,卸載 Homebrew 的方式如下(注意:如果是國(guó)內(nèi)鏡像安裝的,不用這個(gè)命令卸載):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
方式二:國(guó)內(nèi)鏡像安裝
如果用第一種方式輸入命令沒有反應(yīng),或者是安裝過程中出錯(cuò)了,多數(shù)是因?yàn)榫W(wǎng)絡(luò)問題??梢杂脟?guó)內(nèi)鏡像進(jìn)行 Homebrew 的安裝。
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
Core、Cask、services 是 Homebrew 的其他組件,應(yīng)該不是部署 Stable Diffusion WebUI 必須的。為了保險(xiǎn)起見,這里直接都裝了。
有些電腦 xcode 和 git 混亂,再運(yùn)行一次,此處如果有 error 正常。
安裝成功后,需要重啟終端或者運(yùn)行 source /Users/your_user_name/.zprofile
才能生效。
輸入 brew -v
驗(yàn)證 Homebrew 是否安裝成功:出現(xiàn)版本號(hào)說明 Homebrew 已經(jīng)安裝成功了。
補(bǔ)充知識(shí)
-
如果之前安裝過 Homebrew,會(huì)將之前的 Homebrew 備份在桌面的 Old_Homebrew 文件夾里。如果里面沒有你需要的可以刪除。
-
常用命令
- 查看版本:brew -v
- 更新 brew 版本:brew update
- 查找:brew search xxx(其中 xxx 替換為要查找的關(guān)鍵字)
- 安裝:brew install xxx
- 查看本地軟件庫列表:brew ls
-
卸載 Homebrew 如果是通過國(guó)內(nèi)鏡像安裝的 Homebrew,用這個(gè)命令卸載:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
-
安裝位置 在 Mac M1 上,Homebrew 的安裝位置不是在以前的 /usr/local/,而是在 /opt/homebrew,這個(gè)大家注意。
-
如果安裝過程中還遇到了其他問題,可以看文章的第四部分 可能會(huì)遇到的問題,看看有沒有解釋。
2. 安裝 Python 等環(huán)境依賴
cmake、protobuf、rust、python@3.10、git、wget,這些都是在后面安裝 Stable Diffusion WebUI 時(shí)需要用到的依賴,這里通過一條命令直接安裝了。
brew install cmake protobuf rust python@3.10 git wget
Stable Diffusion WebUI 的 github 中建議使用 3.10.6,因?yàn)楦甙姹镜?Python 不支持 torch:
Install Python 3.10.6 (Newer version of Python does not support torch), checking “Add Python to PATH”.
文章寫于 2023 年 7 月,后續(xù)應(yīng)該會(huì)支持吧~
3. 克隆
上一步執(zhí)行成功后,我們進(jìn)行 Stable Diffusino WebUI 的克隆。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
這一步可能會(huì)遇到下載不下來,或者下載過程中出錯(cuò)的問題,可以看文章的第四部分 可能會(huì)遇到的問題,看看有沒有解釋。
如果依然沒有解決,直接,干脆,進(jìn)到 SDW Github 主頁,直接下載 Zip 到本地,然后解壓就好了。
4. 下載模型
這里包括三大類:大模型、Lora 模型以及 VAE 模型。(當(dāng)然還有其他細(xì)分小模型,后續(xù)介紹)
這一步可以先扔一個(gè)大模型上去,后續(xù)有需要可以再慢慢下載其他的。
不想自己下載的話,可以找我要網(wǎng)盤鏈接。
大模型
放在 stable-diffusion-webui/models/Stable-diffusion 下面
文件后綴:ckpt 或者 safetensors
Lora 模型
放在 stable-diffusion-webui/models/Lora 下面(在沒有執(zhí)行 ./webui.sh 前,是沒有 Lora 這個(gè)目錄的,可以先不放)
VAE 模型
Variational Auto Encoder
可以簡(jiǎn)單理解為濾鏡
放在 stable-diffusion-webui/models/VAE 下面
下載方式一:從 C 站下載(需要特殊網(wǎng)絡(luò))
選中「Models」-「篩選」- 選擇「Model types」(是大模型、還是 LoRA、還是 VAE等) - 然后選擇一個(gè)模型點(diǎn)進(jìn)去。
如果知道要下載的模型的名稱的話,也可以直接在搜索框搜索模型名字,然后點(diǎn)進(jìn)模型。
直接點(diǎn)「Download」按鈕進(jìn)行下載。
下載方式二:從 huggingface 下載
如果登不上 C 站,可以試試 huggingface,方式也比較簡(jiǎn)單。
選擇「Text-to-Image」,按下載量排序,我們選第一個(gè)下載量最多的,然后點(diǎn)進(jìn)去。
切換到「Files and versions」,下面四個(gè)后綴為 satetensors 或 ckpt 的就是大模型了,隨意下載一個(gè)就好。
其中 v1-5-pruned-emaonly 比較小,4 個(gè)多 GB,需要的顯存少,適合于推理。
v1-5-pruned 比較小,7個(gè)多 GB,需要的更多的顯存,適合于微調(diào)。
5. 啟動(dòng) WebUI
進(jìn)到 Stable Diffusion WebUI 對(duì)應(yīng)的安裝目錄:
cd stable-diffusion-webui
啟動(dòng) Stable Diffusion WebUI:
./webui.sh
第一次啟動(dòng),會(huì)下載一些組件庫和依賴,可能會(huì)比較慢,大家耐心等待。
注意
如果上一步?jīng)]有下載模型,這里也會(huì)自動(dòng)幫我們下載一個(gè)默認(rèn)的模型。因?yàn)榇竽P鸵话愣己脦讉€(gè) GB,下起來比較慢,所以推薦大家還是在上一步中自己先將模型下載下來(至少放一個(gè)大模型進(jìn)去,這樣這一步就不會(huì)再自動(dòng)去下模型了)。
當(dāng)然出錯(cuò)最多的也是在啟動(dòng) WebUI 這個(gè)過程。這個(gè)過程中會(huì)遇到各種各樣的報(bào)錯(cuò)。我們需要多次停下、解決、再重新執(zhí)行 ./webui.sh
。
不過不用擔(dān)心之前的安裝都白費(fèi)了,因?yàn)樗鼤?huì)從你上次安裝到的地方接著往下安裝。
如果安裝過程中報(bào)錯(cuò)了,可以看文章的第四部分「可能會(huì)遇到的問題」,看看有沒有相應(yīng)的解釋。
當(dāng)出現(xiàn) Running on local URL: http://127.0.0.1:7860 的時(shí)候,說明 Stable Diffusion WebUI 已經(jīng)啟動(dòng)好了。
在瀏覽器中輸入 http://127.0.0.1:7860 就可以看到 Stable Diffusion WebUI 的界面了。
溫馨提示
-
在運(yùn)行過程中,不要關(guān)閉 Terminal,否則頁面就打不開了。
-
下次再啟動(dòng),進(jìn)到 Stable Diffusion WebUI 對(duì)應(yīng)的目錄,執(zhí)行
./webui.sh
即可。 -
如果安裝過程中報(bào)錯(cuò)了,可以看文章的第四部分「可能會(huì)遇到的問題」,看看有沒有解釋。
四、 可能會(huì)遇到的問題
1. 用國(guó)內(nèi)鏡像安裝 Homebrew 可能出現(xiàn)的問題
問題描述
解決
大概翻譯一下,意思是說,在 “/opt/homebrew/Library/Taps/homebrew/homebrew-core” 的倉庫中檢測(cè)到可疑的所有權(quán),若要為此目錄添加異常,請(qǐng)調(diào)用:
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core。
下面另一個(gè)錯(cuò)誤,也是類似的意思。所以我們只需要按照上面的提示,在命令行中輸入這兩行,就完美解決了。當(dāng)再執(zhí)行 brew -v 就不報(bào)錯(cuò)了!
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask
2. HTTP/2 stream 1 was not closed cleanly before end of the underlying stream
問題描述
在 git clone 的時(shí)候報(bào):
致命錯(cuò)誤:無法訪問 ‘https://github.com/AUTOMATIC1111/stable-diffusion-webui/’:HTTP/2 stream 1 was not closed cleanly before end of the underlying stream
解決:將通信協(xié)議改成 http/1.1
git config --global http.version HTTP/1.1
將通信協(xié)議改成 http/1.1 之后,發(fā)現(xiàn)可以正常下載了。
3. Couldn’t install torch.
在執(zhí)行完 ./webui.sh
后報(bào) “RuntimeError: Couldn’t install torch.”
在 modules/launch_utils.py 中看到了這段注釋:
這段注釋是說,如果遇到了 “RuntimeError: Couldn’t install torch.” 或者其他問題,可能是 Python 版本的問題,升級(jí)或者降級(jí)到 3.10 的最新版本,然后刪掉 WebUI 目錄下的 venv 目錄再重試。
但是上面我們明明執(zhí)行過 brew install cmake protobuf rust python@3.10 git wget
這個(gè)命令,其中安裝了 Python 3.10 呀。按理說不應(yīng)該呀。
懷著懷疑的態(tài)度我在命令行里輸入 python3 -V
進(jìn)行查看。
咦,一看不得了,這版本咋是 3.9.6?
這個(gè) 3.9 的 Python 版本,應(yīng)該是 Mac 自帶的 Python??赡芫褪且?yàn)檫@個(gè)原因?qū)е聠?dòng)時(shí)下載庫出錯(cuò)。
于是又從 Python 官網(wǎng)下載了 Python 3.10.10 這個(gè)版本。按提示傻瓜式安裝就好了。之后還配置了一下環(huán)境變量。
# 編輯 ~/.bash_profile
vim ~/.bash_profile
文件中加入這三行
PATH="/opt/homebrew/bin/:${PATH}"
export PATH=${PATH}
alias python="/opt/homebrew/bin/python3.10"
# 使配置生效
source ~/.bash_profile
這時(shí)版本就成 3.10.10 了。
然后刪掉 WebUI 目錄下的 venv 目錄,再執(zhí)行 ./webui.sh
,終于不報(bào)錯(cuò)了!就是下的有些慢~
4. Couldn’t install gfpgan.
在執(zhí)行完 ./webui.sh
后報(bào) “RuntimeError: Couldn’t install gfpgan.”
其實(shí)是因?yàn)闆]有下載下來 gfpgan。我們可以從報(bào)錯(cuò)信息中找到下載鏈接,如下圖中橫線部分,然后 copy 這個(gè)鏈接到瀏覽器中進(jìn)行下載,然后將下載好的 zip 文件加壓,并將目錄名改成 GFPGAN,然后拖到 stable-diffusion-webui 這個(gè)目錄下就好了。當(dāng)再次執(zhí)行 ./webui.sh
時(shí),發(fā)現(xiàn)已經(jīng)跨過 GFPGAN,繼續(xù)下載其他依賴了。完美解決!
5. Couldn’t install clip.
在執(zhí)行完 ./webui.sh
后報(bào) “RuntimeError: Couldn’t install clip.”
可以手動(dòng)下載后安裝,就像解決 “Couldn’t install gfpgan” 這個(gè)問題一樣。但是這里我們換一種解決方式。
打開 modules/launch_utils.py,搜索 https://github.com/ ,在每一處前面都加上 https://ghproxy.com/ ,加完后是這樣的 https://ghproxy.com/https://github.com/xxxxx ,如下圖。
一共是 7 處,修改完成后保存。再執(zhí)行 ./webui.sh
,就沒有問題了。
為什么這里不用上面解決 gfpgan 的手動(dòng)下載的方式呢?
看 prepare_environment()
這個(gè)方法里,一共定義了 7 處下載地址,如果不用添加代理的方式,大概率接下來在下載 K-diffusion、CodeFormer、BLIP 的時(shí)候,也是會(huì)報(bào)錯(cuò)的。所以這里一起改掉,萬事大吉!
這種方法也可以解決以下報(bào)錯(cuò):
Couldn’t install K-diffusion
Couldn’t install CodeFormer
Couldn’t install BLIP
6. Couldn’t install K-diffusion
見 5 解決方法。
7. Couldn’t install CodeFormer
見 5 解決方法。
8. Couldn’t install BLIP
見 5 解決方法。
五、 性能測(cè)試
大模型:dreamshaper
Euler:出一張 512 * 512 的圖,約 20 ~ 30s
DPM++ SDE Karras:出一張 512 * 512 的圖,約 1 ~ 1.5 min
六、 結(jié)束語
Stable Diffusion 本地部署相對(duì)于 Stable Diffusion 云部署,最大的兩個(gè)優(yōu)點(diǎn)就是:
更自由(懂的都懂)!
不花錢,完全免費(fèi)!
Kaggle 雖然每月可白嫖 30 個(gè)小時(shí)的算力,但太容易被封,稍微畫得上頭一些,就被封了。我的賬號(hào)就被祭了。
Kaggle 被封后,又轉(zhuǎn)戰(zhàn)到了 AutoDL,相比于 Kaggle 來說,不那么容易被封,但是需要花錢。大部分機(jī)器實(shí)例在 1~2 元 / 小時(shí),也不算貴,但是用完后一旦忘記給實(shí)例關(guān)機(jī),一天幾十就出去了。呃,這。。。
所以這周,一頓操作猛如虎,終于在 Mac 上成功部署了 Stable Diffusion,實(shí)現(xiàn)了 Stable Diffusion 自由!也將所有踩過的坑,一一填平并記錄了下來。希望可以幫到想在 Mac 上部署 Stable Diffusion 的同學(xué)。
其實(shí)在 Mac 本地部署 Stable Diffusion 遇到的大部分問題,基本都是網(wǎng)絡(luò)造成的。每個(gè)人的電腦配置及網(wǎng)絡(luò)環(huán)境都不一樣,所以有時(shí)會(huì)遇到試了好幾個(gè)解決方案都無法解決的情況。其實(shí)我也是。網(wǎng)友說他這么改成功了,而我那么改,依然不起作用。
所以最后想對(duì)大家說的是,耐心一點(diǎn),再耐心一點(diǎn),方法總是有的,問題總會(huì)解決!文章來源:http://www.zghlxwxcb.cn/news/detail-669437.html
大家加油!文章來源地址http://www.zghlxwxcb.cn/news/detail-669437.html
到了這里,關(guān)于Mac本地部署Stable Diffusion,超詳細(xì),含踩坑點(diǎn)(AI 繪畫保姆級(jí)教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!