在蘋(píng)果M芯片上安裝Stable Diffusion前端并加載NovelAI模型

Intro
最近AI作畫(huà)突然特別火,除了NovelAI迭代了幾次以后變得厲害之外,很大一部分原因是它們?cè)缧r(shí)候訓(xùn)練出的模型因?yàn)槟硞€(gè)遠(yuǎn)程端口設(shè)置的密碼是“password”而被泄漏了出來(lái)。前兩天我也嘗試下載了這個(gè)模型包,然后按照教程搭建了一遍。雖然過(guò)程很艱難,但是最終是可以運(yùn)行并且加載NovelAI模型的。本期視頻會(huì)教大家如何在蘋(píng)果芯片的Mac上搭建Stable Diffusion web UI前端,加載模型,并提供一些常見(jiàn)問(wèn)題的解決辦法。
你可以來(lái)Notion獲得更好的閱讀體驗(yàn)
https://www.notion.so/maltmann/Stable-Diffusion-on-Apple-Silicon-6a63f15bfd824fac9d7cb4bd6ebc9adb
項(xiàng)目來(lái)源
https://github.com/CompVis/stable-diffusion
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://github.com/dylancl/stable-diffusion-webui-mps
本系統(tǒng)基于CompVis的stable-diffusion模型框架和Automatic1111的前端搭建。
需求
在開(kāi)始之前你至少需要一臺(tái)使用Apple Silicon并運(yùn)行macOS的電腦,還要有一個(gè)穩(wěn)定的網(wǎng)絡(luò)環(huán)境連上GitHub。
提前下載好novelaileak模型??梢栽谶@里下載:https://fancade-my.sharepoint.com/:u:/g/personal/maltmann_fancade_onmicrosoft_com/EWrI4OZzaVNBnkiNLuPtR9cBRKjWTxYICstvaziMo03MaQ?e=ljQWGk
開(kāi)始
步驟
打開(kāi)Stable Diffusion web UI的倉(cāng)庫(kù),向下翻動(dòng)找到Installation on Apple Silicon。在蘋(píng)果芯片上,雖然web UI運(yùn)行正常,但只有Euler
和 DPM2
兩個(gè)采樣器可以工作。與此同時(shí),如果在之前你已經(jīng)安裝好了Python和Miniconda環(huán)境,可能會(huì)讓之后的腳本執(zhí)行出現(xiàn)問(wèn)題。推薦的辦法是先卸載Python和Miniconda,之后再通過(guò)Homebrew來(lái)安裝。
Homebrew
我們先從安裝Homebrew開(kāi)始。Homebrew是一個(gè)開(kāi)源的包管理器,可以方便的管理之后所需的依賴(lài)。
進(jìn)入Homebrew的官網(wǎng) (?https://brew.sh/?) ,打開(kāi)終端。
和很多平臺(tái)一樣,macOS的終端默認(rèn)不走代理,裸連會(huì)影響之后腳本的執(zhí)行。如果你安裝了ClashX,那么可以在小貓咪的菜單欄按Command C復(fù)制終端代理指令再粘貼。如果你在使用其他軟件,可以尋找有沒(méi)有類(lèi)似的選項(xiàng),或在視頻簡(jiǎn)介復(fù)制這行指令后修改為自己的代理地址和端口。(終端代理指令一定要在conda環(huán)境外部配置)
復(fù)制Homebrew的安裝指令后在終端執(zhí)行。
輸入管理員密碼。
Homebrew會(huì)默認(rèn)將自己安裝在opt文件夾中。
接下來(lái)等待安裝完成。
在這里和之后會(huì)遇到的絕大多數(shù)問(wèn)題都將由網(wǎng)絡(luò)問(wèn)題導(dǎo)致,如果你希望未來(lái)Homebrew不通過(guò)代理安裝軟件可以考慮在終端中執(zhí)行以下指令:
這會(huì)將Homebrew的倉(cāng)庫(kù)替換為中科大維護(hù)的鏡像源。
使用Homebrew安裝環(huán)境依賴(lài)
安裝完Homebrew之后,我們開(kāi)始安裝依賴(lài)。
在終端中輸入以下指令:
這會(huì)讓Homebrew開(kāi)始安裝Python在內(nèi)的環(huán)境和依賴(lài)。
安裝完成后繼續(xù)在終端中輸入:
這會(huì)跳轉(zhuǎn)到macOS的文稿目錄,下載安裝腳本并授予執(zhí)行權(quán)限。
如果終端下載出現(xiàn)了問(wèn)題,你可以去倉(cāng)庫(kù)單獨(dú)下載這個(gè)腳本,放進(jìn)文稿文件夾,并在終端中運(yùn)行最后一條指令。
Checkpoint 1
現(xiàn)在我們回頭檢查一次:
你檢查了網(wǎng)絡(luò),通過(guò)終端代理可以連接到GitHub
你已經(jīng)安裝了Homebrew,并通過(guò)它安裝了一系列環(huán)境和依賴(lài)
你通過(guò)腳本或手動(dòng)下載,在文稿中出現(xiàn)了setup_mac.sh
使用腳本安裝web UI
現(xiàn)在我們運(yùn)行腳本,輸入以下指令:

腳本首先會(huì)在用戶(hù)目錄安裝miniconda。miniconda是一個(gè)開(kāi)源的軟件包和環(huán)境管理器。在安裝過(guò)程中腳本會(huì)多次要求確認(rèn)。在安裝完miniconda的同時(shí)也會(huì)新建一個(gè)名為web-ui的虛擬環(huán)境,Stable Diffusion的web UI將在這個(gè)環(huán)境中運(yùn)行。

miniconda安裝完成后,腳本將會(huì)克隆本項(xiàng)目的倉(cāng)庫(kù)到本地,這個(gè)過(guò)程會(huì)比較漫長(zhǎng)。
clone完成后腳本會(huì)暫停。此時(shí)你可以在文稿中看到項(xiàng)目倉(cāng)庫(kù)。
然后麻煩的地方來(lái)了。如果你只想使用Stable Diffusion模型來(lái)生成三次元圖像,可以輸入n。這樣腳本會(huì)引導(dǎo)你在Hugging face拿到token(read權(quán)限):
獲取token之后,千萬(wàn)別忘了在這里同意協(xié)議:
然后再輸入token,否則下載不會(huì)正常開(kāi)始。

如果你想使用novelai泄漏的模型,你還是得輸入n,還需要在下載完Stable Diffusion模型之后,再把泄漏的模型文件中的model.ckpt單獨(dú)復(fù)制到 “stable-diffusion-webui/models/Stable diffusion” 目錄中。其中標(biāo)有sfw(suitable for work)的模型不會(huì)生成澀圖。通常使用的模型為前兩個(gè)。
為什么需要下載Stable Diffusion模型,是因?yàn)檎麄€(gè)安裝腳本是為自家的模型定制的,在上一步模型安裝結(jié)束后會(huì)檢查自家的模型有沒(méi)有在對(duì)應(yīng)的位置。這里不需要覆蓋掉Stable Diffusion模型,在Web UI中可以切換模型。
完成這一步后,腳本將會(huì)開(kāi)始克隆其他必要的倉(cāng)庫(kù),這一步同樣比較漫長(zhǎng)。

你可能會(huì)經(jīng)常在這一步出錯(cuò),通常由網(wǎng)絡(luò)問(wèn)題導(dǎo)致,請(qǐng)多試幾次。如果之前的檢查點(diǎn)無(wú)誤,你可以直接按n跳過(guò)前兩步環(huán)境配置。在系統(tǒng)詢(xún)問(wèn)是否安裝模型時(shí)吧提前下載好的sd模型放入models文件夾,然后按y跳過(guò)模型下載。

Checkpoint 2
現(xiàn)在我們回頭檢查一次:
你已經(jīng)完成了miniconda的安裝,在終端輸入:
此時(shí)環(huán)境將會(huì)變?yōu)?web-ui)。
你已經(jīng)完成了Stable Diffusion模型的下載。查看“stable-diffusion-webui/models/Stable diffusion” 目錄,里面至少有一個(gè)名為sd-v1-4.ckpt的文件。
你已經(jīng)完成了相關(guān)倉(cāng)庫(kù)的下載。查看“stable-diffusion-webui/repositories” 目錄,里面至少有stable-diffusion、taming-transformers、CodeFormer和BLIP四個(gè)完整的倉(cāng)庫(kù)。
PIP安裝依賴(lài)
這個(gè)腳本的其中一個(gè)問(wèn)題是無(wú)法安裝所有需要的依賴(lài)。
這一部分腳本會(huì)自動(dòng)安裝部分依賴(lài)和1.13.0.dev20220922版本的Pytorch。
作者解釋道最新的Nightly版本會(huì)造成性能問(wèn)題,所以使用了最新的前一個(gè)版本,在我寫(xiě)到這里的時(shí)候,最新版本已經(jīng)不會(huì)出現(xiàn)類(lèi)似問(wèn)題。
在安裝完成后腳本會(huì)輸出:
這意味著PyTorch支持了蘋(píng)果芯片的硬件加速功能。如果使用純CPU版本,webUI的安裝不會(huì)出現(xiàn)問(wèn)題,但無(wú)法生成圖像。請(qǐng)注意,只有Nightly版本才支持MPS功能,千萬(wàn)別下錯(cuò)了。

這一切結(jié)束后,腳本會(huì)在文稿目錄下新建一個(gè) “run_webui_mac.sh” 腳本,同時(shí)給予運(yùn)行權(quán)限。
Checkpoint 3
現(xiàn)在我們回頭檢查一次:
腳本使用pip安裝了部分依賴(lài)并沒(méi)有報(bào)錯(cuò)。
腳本安裝完后輸出了啟用MPS的字符串。
文稿目錄下出現(xiàn)了一個(gè)名為 “run_webui_mac.sh” 的腳本。
執(zhí)行運(yùn)行腳本
腳本運(yùn)行到這里會(huì)自動(dòng)執(zhí)行運(yùn)行腳本。

之后腳本會(huì)報(bào)錯(cuò),提示缺少必要的依賴(lài)。這里是所有缺失的依賴(lài):
你需要手動(dòng)安裝這些依賴(lài)。方法是:
啟動(dòng)web-ui虛擬環(huán)境:
conda activate web-ui
使用pip安裝缺失的依賴(lài):
安裝transformers
你會(huì)發(fā)現(xiàn),想要安裝transformers還需要Rust編譯器。進(jìn)入終端上的地址(https://rustup.rs),復(fù)制Rust的安裝指令:
跟隨腳本的引導(dǎo)完成安裝,并復(fù)制兩條指令完成環(huán)境配置。
安裝完成后需要重啟終端才能生效。
再次執(zhí)行運(yùn)行腳本:
現(xiàn)在腳本應(yīng)該能正確的運(yùn)行,加載模型,并在本地端口創(chuàng)建一個(gè)前端頁(yè)面。
在瀏覽器中輸入終端中的地址。
自此你已經(jīng)完成了Stable Diffusion Web UI的搭建。
如果出現(xiàn)了問(wèn)題
我們正在重構(gòu)腳本,致力于創(chuàng)造一個(gè)使用國(guó)內(nèi)鏡像的一鍵式部署腳本。在新的腳本發(fā)布以后我們也會(huì)做一期視頻輔助講解。如果在這片文章遇到了問(wèn)題不妨稍等一下。
同時(shí)你也可以使用Google CoLab在云端搭建環(huán)境。主流的教程幾乎都使用了NAIFU。建議大家不要在本地環(huán)境搭建NAIFU。
如果幫到了你就給我個(gè)三連吧。
感謝
Stable Diffusion -?https://github.com/CompVis/stable-diffusion
Taming Transformers - https://github.com/CompVis/taming-transformers
Stable Diffusion Web UI - https://github.com/AUTOMATIC1111/stable-diffusion-webui
Stable Diffusion Web UI - MPS - https://github.com/dylancl/stable-diffusion-webui-mps
甘城なつき -?https://amashiro.com/