本文將分享如何在 M1 / M2 的 Macbook 上安裝 Stable Diffusion WebUI。首先會提供一些 Macbook 的規格建議,接著會介紹如何安裝環境,以及初始化 Stable Diffusion WebUI。最後還會介紹如何下載 Stable Diffusion 模型,並提供一些熱門模型的下載連結。如果你從來沒有接觸過 Python 開發也不用擔心,本文提供了詳細的安裝步驟供你參考!

建議的 Macbook 規格

澆點冷水XD,Stable Diffusion 模型計算非常消耗資源,雖然已經可以在 M1 / M2 的 Macbook 上跑,但筆電規格依然大大影響使用體驗。根據我的經驗,建議

  • CPU 至少是 M1 / M2 Pro 以上
  • Memory 32 GB 至少以上

我的 M1 Pro Macbook 是 CPU 10 核, GPU 16 核的版本,相當於 Nvidia GTX 1660 Ti。跑一張 768 x 512, 20 steps 的圖大約要兩分多鐘。對照目前一線顯卡,可能一樣時間可以跑 2048 x 2048 的解析度

另外 M1 / M2 CPU 和 GPU 是共用記憶體空間,當需要產生高解析度的圖時,記憶體壓力會迅速提升!以我的 Macbook 為例,因為記憶體限制,無法產生 1024 x 768 以上的大小。而且算圖的時候記憶體壓力會變成黃色,整台電腦相當卡。不過基本上可以使用,且能夠滿足一般性需求。文末會提供調教方法,讓小記憶體的 Macbook 也能嘗鮮!

如何在 M1 Macbook 上跑 Stable Diffusion?

安裝環境

如果你是 python 開發者,這一段大部分可以跳過。如果是新手,請細心走完安裝步驟!

延伸閱讀:
如何在 M1 macbook 上安裝 python 環境
macOS 中 Python 版本太多如何管理?試試 pyenv 吧!

安裝 Homebrew

到 console 輸入以下指令安裝

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安裝基本套件

依照 AUTOMATIC1111/stable-diffusion-webui 官方建議,安裝一些基本開發套件

$ brew install cmake protobuf rust git wget

接著安裝 python。若非 python 開發者,建議照官網建議,直接用 brew 安裝比較簡單。反之,建議用 pyenv 安裝,避免 python 版本混亂問題。

(pyenv 安裝請參考 macOS 中 Python 版本太多如何管理?試試 pyenv 吧!

需注意的是,目前(~2023/3) Stable Diffusion WebUI 僅支援 python 3.10 ,其他版本可能會有問題!安裝前可到 AUTOMATIC1111/stable-diffusion-webui 查看

# 使用 brew 安裝
$ brew install [email protected]

# 使用 pyenv 安裝
$ pyenv install 3.10.6
# 啟動 3.10.6
$ pyenv local 3.10.6

初始化 Stable Diffusion WebUI

在 console 下指令 clone 整個 repository

$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

進入 Stable Diffusion WebUI folder,執行 webui.sh script。第一啟動時會自動安裝 python 依賴套件,需要一段時間

$ cd stable-diffusion-webui
$ ./webui.sh

當看到以下訊息時,就可以用瀏覽器連 http://127.0.0.1:7860 進入 WebUI 囉!

...
Model loaded in 6.3s (create model: 0.7s, apply weights to model: 2.9s, apply half(): 1.5s, move model to device: 0.9s, load textual inversion embeddings: 0.2s).
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
如何在 M1 Macbook 上跑 Stable Diffusion?

若想停止,回到執行 webui.sh 的 console 中按 Ctrl + C 即可。下次想要用時,輸入 ./webui.sh 就能啟動囉!

註:由於這是一個 local 的 Web Server,程式是跑在 console 裡的,提醒一下非開發者的朋友們,使用時不要把 console 給關掉囉!

下載 Stable Diffusion 模型

目前只有起 Stable Diffusion 的 WebUI,若要開始算圖,還需要下載 模型權重 (checkpoint)。

Stability AI 目前釋出以下提供下載:

註:其中 2.x 的模型,還需要另外下載v2-inference-v.yaml 檔,修改成對應 2.x model 檔名,並保留 .yaml 結尾副檔名,與模型檔放在同樣目錄中。 (如模型是 768-v-ema.ckpt ,則將 yaml 改名為 768-v-ema.yaml

將模型檔放到 stable-diffusion-webui/models/Stble-diffusion

如何在 M1 Macbook 上跑 Stable Diffusion?

回到 WebUI,左上角模型選擇區點 reload 一下,就能選到新的模型

如何在 M1 Macbook 上跑 Stable Diffusion?

若想產生正妹圖,官方模型一定無法滿足你,推薦以下幾個熱門模型 (checkpoint):

若想要風景,可以試試這些:

但以上都是抓 整個重新訓練的模型 下來,非常佔空間,因此衍生出類似外掛的 LoRA 模型,大小就小非常多。

之前在新聞很常看到用來產生正妹照的模型(已經在 civitai 下架,只能從 Huggling Face 下載):

若想要水墨畫風格,可以試試:

古裝風格:

先請各位下載好備著,下一篇我們再實際上陣!

延伸閱讀:最詳細的 Stable diffusion WebUI 操作教學 – txt2img

Troubleshooting

我記憶體不夠大,有辦法跑嗎?

可以在啟動 WebUI 時加入以下參數

# 使用中量記憶體
$ ./webui.sh --opt-split-attention-v1 --medvram
# 使用低量記憶體
$ ./webui.sh --opt-split-attention-v1 --lowvram

實測發現用 --lowvram 除了算圖速度變慢,畫質也可能變差,以下是完全同樣的 prompt 、seed 等參數,用預設和加 --lowvram 算出來的圖

  • 預設
如何在 M1 Macbook 上跑 Stable Diffusion?
  • lowvram
如何在 M1 Macbook 上跑 Stable Diffusion?

除了品質差異外,連構圖也不一樣,因此建議還是儘量用預設值跑,壓榨你的筆電吧!

延伸閱讀

最詳細的 Stable diffusion WebUI 操作教學 – txt2img
LoRA 是什麼?如何使用?| Stable Diffusion
如何用 Stable Diffusion 產生高解析度的圖?
兩階段解決 Stable Diffusion 臉崩問題
免費用 Google Colab 玩 Stable Diffusion WebUI
不用顯卡也能玩 Stable Diffusion WebUI – 使用 AWS 架設

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。