最近幾天在 2 臺 Mac、2 臺 PC、一臺云無 GPU 的 Linux 安裝了 Stable Diffusion WebUI,這里記錄下如何安裝,以及一些注意點和坑。
以下內容針對 Windows(N 卡)、MacOS(m 系列芯片)、Linux(Ubuntu、無 GPU)。
Windows 安裝
Windows 安裝算是比較簡單的,首先直接到 www.python.org/downloads/r… 最下方下載 Windows Installer(注意官方建議版本是 3.10.6,不要使用太新的或太舊的版本,存在部分包不兼容的問題),然后點擊安裝,建議選擇默認安裝方式并勾選上 PATH,這樣后面就不用自己設置 PATH 環境變量了:
最后的 PATH 最大長度限制的解除可選可不選。然后就可以 clone WebUI 倉庫了,如果沒有安裝過 git 的記得先安裝一下:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
clone 完成后進入 WebUI 目錄雙擊 webui-user.bat
即可打開 WebUI,WebUI 會自動安裝需要的依賴并啟動,首次運行需要下載的依賴較多可能需要等待比較久的時間。
MacOS 安裝
MacOS 安裝同樣需要先安裝依賴,注意先安裝好 homebrew,由于 m 系列芯片支持兩個版本的 homebrew,所以一定要注意,需要使用 x86 版本的 homebrew,可以使用 which brew
查看,如果是 /usr/local/bin/brew
則是 x86,如果不是最好卸載重裝后再繼續下面的操作。
確認 homebrew 無誤后,使用 homebrew 安裝需要的依賴,并 clone Stable Diffusion WebUI:
brew install cmake protobuf rust python@3.10 git wget
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
上述操作都就緒后,就可以進入 WebUI 目錄,然后使用 ./webui.sh
啟動,WebUI 會自動安裝需要的依賴并啟動,首次運行需要下載的依賴較多可能需要等待比較久的時間。
Linux 安裝
我的云主機操作系統是 Ubuntu 22,并且由于是白嫖的甲骨文的免費云,沒有 GPU,所以只能用純 CPU 跑。
在 Linux 上跑也是一樣的路子,先安裝依賴,再 clone WebUI:
sudo apt install wget git python3 python3-venv
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
然后進入 WebUI 目錄執行 ./webui.sh
啟動即可,同樣的,WebUI 會自動安裝需要的依賴并啟動,首次運行需要下載的依賴較多可能需要等待比較久的時間。
不過需要注意的是由于機器沒有 GPU,在啟動時候需要添加參數來使用 GPU:
./webui.sh --skip-torch-cuda-test --precision full --no-half --use-cpu all
還需要注意,有一些 model 的參數需要 GPU 的支持,所以使用 CPU 跑圖很可能會發現跑半天出現不支持 CPU 的錯誤,所以如果不是沒辦法強烈不建議使用 CPU 來跑。
啟動
在 Windows 啟動時添加參數
由于 Windows 上啟動時使用的是 bat 文件,而不是命令行,所以需要添加參數時和其它系統不同,需要編輯 webui-user.bat
文件,然后將在其中的 set COMMANDLINE_ARGS=
后面加上需要添加的參數來運行。
Serve 給其它機器使用
默認情況下 WebUI 只會監聽本機的 host,如果需要從其他機器訪問,比如在局域網通過另一臺機器訪問服務器上的 WebUI 則需要增加 --listen
參數。添加參數后如果需要使用插件要添加 --enable-insecure-extension-access
參數,不然會出現最下方的問題。
當然其實也可以直接用 Nginx 反代就不會觸發 WebUI 的安全問題。
Nginx 反代
如果想用 Nginx 反代 WebUI,需要注意:WebUI 里面用到 websocket,所以反代也需要考慮到,不然 WebUI 中發出的 ws 請求 /queue/join
會一直報錯,下面放一下我的反代的配置:
server {listen 80;listen [::]:80;server_name xxx.xxx.com;return 301 https://$server_name$request_uri;
}server {listen 443 ssl;listen [::]:443 ssl;server_name xxx.xxx.com;ssl_certificate /etc/nginx/cert/xxx.pem;ssl_certificate_key /etc/nginx/cert/xxx.key;proxy_connect_timeout 60s;proxy_send_timeout 60s;proxy_read_timeout 60s;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;proxy_set_header X-Forwarded-Proto $scheme;location / {proxy_pass http://localhost:7860;}
}
使用上述配置還需要在 nginx.conf 中的 http 模塊中添加上如下聲明,不然會報錯:
map $http_upgrade $connection_upgrade {default upgrade;'' close;
}
速度
從幾臺機器和結合最近幾天在其它平臺上的經驗來看,速度差異非常大,我兩臺 Mac 都是 m1-16G,PC 由于顯卡太老舊根本跑不起來(GTX660),Linux 是甲骨文的 VM.Standard.A1.Flex-4VCPU-24G,對比后速度如下:
- Linux 跑一張默認圖耗時大概 9 分鐘左右
- m1-16G 跑一張默認圖的耗時大概在 50 秒
- Colab 的 T4 跑一張默認圖耗時大概在 4 秒左右
- 阿里云的 A10 跑一張默認圖都是秒出的
如果稍微復雜點的模型我的這臺 Linux 一晚上都跑不出幾張圖,m1 勉強能用,所以哪怕是 Colab 現在的免費時長縮短到一小時,其實也比在其他機器上瞎跑好多了,效率擺在這里。
FAQ
AssertionError: extension access disabled because of command line flags
當使用 WebUI 安裝插件時報錯,這個是因為使用了 --listen
參數,WebUI 為了安全(因為此時可以外網通過 IP 訪問 WebUI)會默認禁用插件安裝的權限,此時可以通過 --enable-insecure-extension-access
參數關閉插件的安全檢測。
參考鏈接: github.com/AUTOMATIC11…
WebSocket 連不上,queue/join 報錯
正常出現在使用 nginx 反代時,一般由于沒有反代 websocket 導致 websocket 無法連接。
沒有 GPU 怎么辦
沒有 GPU 時在啟動時需要添加 --skip-torch-cuda-test --no-half --use-cpu all
這幾個參數,關閉 CUDA 并強制開啟使用 CPU。
Mac 報錯: have ‘arm64’, need ‘x86_64’
一般這種情況下是安裝了 arm 版的 homebrew,導致安裝的其他依賴包也是 arm 版本,而有些依賴包沒有 arm 版本就會造成依賴缺失,所以遇到后需要檢查自己的 homebrew 版本并切換成 x86 版本并重新安裝依賴。
注意
最后一定要注意:在調試時出現問題需要重新安裝依賴時,一定、一定、一定要記得先清理干凈 WebUI 目錄下的緩存,比如 __pycache__
、venv
這幾個目錄,否則會一直使用緩存中的配置。
寫在最后
感興趣的小伙伴,贈送全套AIGC學習資料,包含AI繪畫、AI人工智能等前沿科技教程和軟件工具,具體看這里。
?
AIGC技術的未來發展前景廣闊,隨著人工智能技術的不斷發展,AIGC技術也將不斷提高。未來,AIGC技術將在游戲和計算領域得到更廣泛的應用,使游戲和計算系統具有更高效、更智能、更靈活的特性。同時,AIGC技術也將與人工智能技術緊密結合,在更多的領域得到廣泛應用,對程序員來說影響至關重要。未來,AIGC技術將繼續得到提高,同時也將與人工智能技術緊密結合,在更多的領域得到廣泛應用。
?
一、AIGC所有方向的學習路線
AIGC所有方向的技術點做的整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照下面的知識點去找對應的學習資源,保證自己學得較為全面。
二、AIGC必備工具
工具都幫大家整理好了,安裝就可直接上手!
三、最新AIGC學習筆記
當我學到一定基礎,有自己的理解能力的時候,會去閱讀一些前輩整理的書籍或者手寫的筆記資料,這些筆記詳細記載了他們對一些技術點的理解,這些理解是比較獨到,可以學到不一樣的思路。
四、AIGC視頻教程合集
觀看全面零基礎學習視頻,看視頻學習是最快捷也是最有效果的方式,跟著視頻中老師的思路,從基礎到深入,還是很容易入門的。
五、實戰案例
紙上得來終覺淺,要學會跟著視頻一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。
?