本地 stable-diffusion-webui v1.3.2 Win虛擬機(jī)WSL部署指南及安裝注意事項(xiàng) -20230609

WSL + Anaconda + Stable Diffusion + (ControlNet + GroundingDino鴿到下一期吧)
鑒于大家對 stable-diffusion-webui 的學(xué)習(xí)熱度不減, 更新一篇我最近的環(huán)境部署,希望能幫助到對AIGC感興趣的同學(xué)。
其實(shí)最簡單的部署方法,應(yīng)該是在B站找各路大佬提供的一鍵整合包。本文只適用于真的對Stable Diffusion感興趣,想了解整套部署流程的同學(xué)。
1.基礎(chǔ)概念
介紹必要的關(guān)鍵概念知識
Stable Diffusion : AIGC文生圖模型,很火,后文可能簡稱SD。 基本原理科普可見:
【翻譯】How Stable Diffusion Work - 給小白看的StableDiffusion原理介紹 Sparrowfc Sparrowfc? -? https://zhuanlan.zhihu.com/p/598070109
零基礎(chǔ)讀懂Stable Diffusion(III):怎么控制 -?https://zhuanlan.zhihu.com/p/598070109
Stable Diffusion Webui : 大神開發(fā)的基于python gradio的網(wǎng)頁前端,集成了很多Stable Diffusion文生圖的流程工具,很火。
WSL : Windows Linux子系統(tǒng), windows下的官方Linux虛擬機(jī)工具,用來在Windows系統(tǒng)中跑一個Ubuntu系統(tǒng)用于部署SD webui。
Anaconda : python環(huán)境的隔離工具, 防止不同版本python, 不同版本依賴軟件包互相干擾。
2.部署方案
介紹整套部署方案的軟硬件框架
硬件: ?配置一 = i5 1135G7 筆記本 + 外置顯卡塢 1080ti + 16G內(nèi)存 . 配置二 = 11代i7 , 1080ti, ?40G內(nèi)存
軟件: Win11 > WSL > Ubuntu-20.04 > anaconda > pytorch -?cuda > stable diffusion webui > controlnet - grounding dino
3.部署指南
部署 wsl + gpu驅(qū)動工具, ?配置anaconda環(huán)境, 安裝 stable diffusion webui , 安裝 sd webui內(nèi)的插件 controlnet等
注釋說明:
(default: XXX.XX) - 本人安裝時的軟件或驅(qū)動版本, 可作為默認(rèn)參考
(@@在線版@@) - 考慮到國內(nèi)網(wǎng)絡(luò)環(huán)境, 大部分的能提前下載的內(nèi)容我都放到網(wǎng)盤了。網(wǎng)絡(luò)好的同學(xué)可以按照在線版的部分, 替換對應(yīng)安裝步驟。
TLDR: ?后續(xù)所有代碼指令在這復(fù)制一份, 方便快速ctrl+c ctrl +v
3.0 將網(wǎng)盤內(nèi)的內(nèi)容都下載下來
網(wǎng)盤地址:?
鏈接:https://pan.baidu.com/s/1MjoX4pUghUYOR-2UNbAVMA?pwd=wtum?
提取碼:wtum
3.1 WSL下的Ubuntu虛擬機(jī)安裝
安裝 wsl ?的 Ununtu 20.04 虛擬機(jī), 并通過Windows Terminal終端進(jìn)入虛擬機(jī)
平時工作環(huán)境更習(xí)慣linux, 而且linux下各種環(huán)境比較容易配置。 非技術(shù)類的同學(xué)要有個預(yù)期, 后面可能會敲很多指令。
nvidia官網(wǎng)更新顯卡驅(qū)動(default: 531.79)- 應(yīng)該都會, 不細(xì)講了
https://www.nvidia.cn/Download/index.aspx?lang=cn
microsoft store 下載安裝 Windows Terminal - 后續(xù)的指令大多通過這個軟件輸入

????打開 Windows Terminal (可能名字叫 終端,自己試一下), 輸入?
????wsl --update? ?更新 wsl
????wsl -v? ?查看wsl版本 ?(default: 1.2.5.0)

microsoft store 下載 Ubuntu 20.04 - 用20.04版本而不用22.04的原因,是22版本大顯存下可能存在兼容問題, 我不確定, 可以自行嘗試 (default: 20.04.6 LTS)

????500多mb要下載, 微軟服務(wù)器可能抽風(fēng), 這里可能比較慢.
????下載完成后點(diǎn)擊打開

????此時彈出窗口, 會開始wsl虛擬機(jī)安裝流程
輸入登陸賬號用戶名(username)
輸入賬戶的密碼, 兩遍
????完成后虛擬機(jī)應(yīng)該就成功安裝了

????關(guān)閉所有終端窗口, 確保所有窗口已關(guān)閉
????重新打開 Windows Terminal 終端, 此時上方的小三角可以選擇新安裝的 Ubuntu 20.04 了

點(diǎn)擊即可進(jìn)入ubuntu系統(tǒng), 注意此時有兩個標(biāo)簽頁, 左邊 Windows PowerShell 是最初打開的windows系統(tǒng)終端, 右邊的tiger@XXXX 是Ubuntu虛擬機(jī)內(nèi)的終端了. ?后續(xù)執(zhí)行命令時要分清在哪個終端輸入.

可選操作: 如果你的C盤資源比較吃緊, 可以安裝后將Ubuntu遷移到別的盤
3.2 CUDA工具包安裝
安裝虛擬機(jī)內(nèi)的CUDA工具包 ,CUDA是NVIDIA提供的GPU調(diào)用工具包 ,用來給顯卡分配工作任務(wù)
大部分的AI項(xiàng)目都需要調(diào)用CUDA工具包進(jìn)行模型的推理,訓(xùn)練等任務(wù)。 這里使用固定版本進(jìn)行安裝, 保證一致性。
(@@在線版@@) CUDA Toolkit 11.7 Downloads - https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local

安裝解壓工具
????進(jìn)入Ubuntu虛擬機(jī)終端, 執(zhí)行
?sudo apt install unzip
安裝解壓軟件 unzip.?
????會提示要輸入Ubuntu系統(tǒng)安裝時設(shè)置的密碼.

拷貝+解壓 cuda工具包
????打開文件資源管理器, 左邊應(yīng)該已經(jīng)出現(xiàn)了新裝的虛擬機(jī)的磁盤系統(tǒng)。
????在 /home/tiger/ 下新建 cuda 文件夾(此處的tiger為安裝時的賬戶名, 后文不再單獨(dú)說明)

????將網(wǎng)盤內(nèi)下載的 /2_CUDA_ToolKit/2_CUDA_ToolKit.zip 拷貝到這里(新創(chuàng)建文件夾或者拷貝文件后,看不到,可以嘗試右鍵刷新一下)
????再切回Ubuntu終端, 執(zhí)行
????cd ~/cuda ?進(jìn)入剛創(chuàng)建的cuda文件夾
????unzip 2_CUDA_ToolKit.zip ?解壓文件

安裝cuda toolkit (default: 11.7)
????sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
會提示輸入密碼
????sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
????sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
????sudo apt-get update
? //這里我沒有配置成國內(nèi)源,如果這步很慢通不過的同學(xué)可以嘗試搜索 ’ubuntu20.04 替換國內(nèi)源’
????sudo apt-get -y install cuda
????這幾步基本都是官方指令, 大概就是配置安裝源,安裝粘貼過來的軟件安裝包


????會安一大堆的東西, 這里是不是國內(nèi)網(wǎng)絡(luò)會造成安裝失敗我也不確定, 希望評論區(qū)回復(fù)
Anaconda/Miniconda環(huán)境安裝
安裝Anaconda環(huán)境。 Anaconda可以幫助配置虛擬的Python運(yùn)行環(huán)境, 而python又是各類AI項(xiàng)目必不可少的。 Anaconda可以幫助解決各種項(xiàng)目python環(huán)境的沖突
(@@在線版@@)?https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

這里我們使用的是Anaconda的精簡版Miniconda
拷貝安裝腳本
????在虛擬機(jī)/home/tiger/ 下新建文件夾 conda
????將網(wǎng)盤下的 /3_Anaconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh 文件拷貝到新建的conda文件夾
安裝miniconda
????打開Ubuntu虛擬機(jī)終端,執(zhí)行
????cd ~/conda
????chmod +x Miniconda3-py310_23.3.1-0-Linux-x86_64.sh 配置安裝文件權(quán)限為允許運(yùn)行
????./Miniconda3-py310_23.3.1-0-Linux-x86_64.sh
????會提示要看用戶協(xié)議, 一路按回車即可

????等到?jīng)]有字了, 按提示輸入 yes 回車

然后提示設(shè)置安裝位置, 不用修改直接回車。
之后會再提示要自動初始化,這里輸入yes后回車

????等安裝好后, 按提示先關(guān)閉所有終端窗口, 再打開Ubuntu終端,執(zhí)行
????conda config --set auto_activate_base false ?取消默認(rèn)進(jìn)入conda環(huán)境的設(shè)置項(xiàng)(其實(shí)這步可有可無)

配置miniconda環(huán)境
????將網(wǎng)盤下的 /3_Anaconda/.condarc 文件拷貝到Ubuntu虛擬機(jī) /home/tiger/目錄下, 文件內(nèi)寫入了國內(nèi)的軟件包下載站
????在Ubuntu終端中執(zhí)行
????conda clean -i ?清空舊的配置數(shù)據(jù), 按提示輸入y后回車
????conda create -n sd python==3.10 創(chuàng)建一個新的名為 sd 的環(huán)境, 繼續(xù)按提示輸入y后回車
????

????這時會開始安裝一些基礎(chǔ)的軟件包, 安裝完成后執(zhí)行
????conda activate sd 切換到新建的 sd 環(huán)境
????注意這一句后續(xù)會經(jīng)常輸入, 保存好. ?基本上每次關(guān)閉終端再打開后都需要輸入這句指令
離線安裝依賴軟件包
????大部分需要用到的Python軟件包我都進(jìn)行了離線下載, 方便無科學(xué)上網(wǎng)的同學(xué)使用。對自己網(wǎng)絡(luò)有自信的同學(xué)可以略過這一步, 不過不推薦。
????在虛擬機(jī) /home/tiger/ 目錄下新建文件夾 sd ?(如看不到新建的文件夾的, 右鍵刷新一下)
????將網(wǎng)盤內(nèi)/4_Python_Packages/下的 pip_package.zip 拷貝到新建的 /home/tiger/sd 目錄
????在虛擬機(jī)終端中執(zhí)行
????cd ~/sd
????unzip pip_package.zip 解壓壓縮包

????解壓完成后執(zhí)行(如果沒在新建的sd的環(huán)境下,輸入 conda activate sd , 保證終端顯示的用戶名前有”(sd)”的標(biāo)記)
????pip install --upgrade pip setuptools wheel 更新一下安裝工具
????

????繼續(xù)執(zhí)行
????pip install --no-index --find-links=~/sd/pip_package ~/sd/pip_package/*?安裝軟件包

????這就完成了軟件包的離線安裝(這里我將大部分需要的軟件包都提前進(jìn)行了下載, 盡可能避免網(wǎng)絡(luò)問題)
????至此,基本的環(huán)境配置就大致完成了
3.4 SD WebUI配置
部署 stable-diffusion-webui 項(xiàng)目, 原項(xiàng)目地址https://github.com/AUTOMATIC1111/stable-diffusion-webui, 通過Python的gradio工具搭建了一個web端的便于使用的圖形化工具。 類似于我們平時玩的游戲客戶端, 其游戲本身是基于虛幻或者Unity引擎開發(fā)的,stable-diffusion-webui 使用的引擎就是 Stability AI 的 stable diffusion. 這個圖形化工具依賴了很多第三方的python軟件包,大家安裝時出現(xiàn)的各種問題,大多都是因?yàn)檫@些復(fù)雜的依賴關(guān)系,某一個軟件包安裝失敗, 整個項(xiàng)目都跑不起來
項(xiàng)目文件位于網(wǎng)盤 /1_Github_SD_WebUI/stable-diffusion-webui.zip , ?拷貝到上面創(chuàng)建的sd文件夾內(nèi)
在Ubuntu終端執(zhí)行
cd ~/sd
unzip stable-diffusion-webui.zip

進(jìn)入解壓出的 stable-diffusion-webui 文件夾, 將網(wǎng)盤內(nèi)的 /1_Github_SD_WebUI/repositories.zip 文件拷貝到這里,?這里是本項(xiàng)目依賴的一些第三方的開源項(xiàng)目
在Ubuntu終端執(zhí)行
cd ~/sd/stable-diffusion-webui
unzip repositories.zip

將網(wǎng)盤內(nèi)的 /1_Github_SD_WebUI/v1-5-pruned-emaonly.safetensors 這一 stable diffusion 的官方模型文件拷貝到 sd/stable-diffusion-webui/models/Stable-diffusion文件夾內(nèi)

將網(wǎng)盤內(nèi)的 /1_Github_SD_WebUI/webui.sh 文件拷貝到 stable-diffusion-webui 文件夾內(nèi), 替換原文件。 然后執(zhí)行
cd ~/sd/stable-diffusion-webui
chmod +x ./webui.sh
./webui.sh

這里的 webui.sh 只進(jìn)行了部分代碼的注釋,從而使用我們配置好的conda的python環(huán)境,而不是重新創(chuàng)建python的虛擬環(huán)境??梢宰孕泻驮?xiàng)目文件對比。
此時就會開始初始化webui的python代碼,因?yàn)榇蟛糠忠蕾嚩茧x線安裝了,因此應(yīng)該不會耗費(fèi)太長的時間(可能還會訪問一下github的代碼庫, 如果有卡在這里的同學(xué)也可以反饋一下)
至此, 整體的安裝就完成了。 在瀏覽器訪問 127.0.0.1:7860 就可以打開sd webui了。

如果想退出程序, 關(guān)閉Ubuntu終端, 或者在Ubuntu終端里按Ctrl+c 都可以。 下次想再打開程序時,在Ubuntu終端執(zhí)行
cd ~/sd/stable-diffusion-webui
conda activate sd
./webui.sh
4. 部署問題QA
最后執(zhí)行 webui.sh 時提示 Can't load tokenizer for 'openai/clip-vit-large-patch14’ ?
A: 大概率是網(wǎng)絡(luò)問題, 嘗試訪問 https://huggingface.co/ 看是否正常, 可以嘗試更新dns為 8.8.8.8 或 8.8.4.4 后重啟電腦重試
出現(xiàn) Permission denied?

????????A: ?記得在./webui.sh前執(zhí)行 chmod +x ./webui.sh
????3. 出現(xiàn) Couldn’t install 某個包 或者 Import 某個包失敗之類的問題?

????????A: 先檢查是否在conda環(huán)境下 (conda activate sd)