# Mac 上安裝 Automatic1111 Stable Diffusion WebUI 這裡參考了[這篇文章](https://ivonblog.com/posts/macos-stable-diffusion-webui), 還有 [Automatic1111 的官方說明](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon)。不過安裝上當然裝自己的 Anaconda, 可以由官安裝的 (如 `rust`) 就官方安裝。 首先, 打開可愛的終端機, 讓我們開始吧。 ## 1. 安裝 `XCode` 工具 這應該是要裝的, 因為我們整天在裝有的沒有的都早裝了。所以如果出來混遲早會碰到, 就裝下去就是了。 xcode-select --install ## 2. 安裝 Anaconda Anaconda 是 Python 的大補帖, 相信很多寫 Python 的都裝了 (那自然可跳過本節)。如果早晚要來寫 Python, 就早早在可愛的 Mac 上裝吧。現在對 GPU 支援也很 okay, 所以可以一路到深度學習 (比如說我們需要的 PyTorch)。 請到 [Anaconda Distrbution](https://www.anaconda.com/products/distribution) 下載安裝 Mac 的版本。 唯一要注意的是, 要確定下載 M1/M2 用的, 請在蘋果上點一下。 ![anaconda distribution](https://hackmd.io/_uploads/HkZjbbT-3.png) 記得選 M1 那個版本, 你開心用圖形介面的或 command line 安裝的都可以。 ![Anaconda M1/M2](https://hackmd.io/_uploads/B15vMbaWn.png) ## 3. 安裝 `Homebrew` `Homebrew` 是 Mac 上有名的安裝管理工具, 安裝 Unix 系的程式。安裝很簡單, 就是到 [Homebrew](https://brew.sh/index_zh-tw) (看, 還有中文, 是不是很親切?), copy 那一行指令, 再貼到終端機執行就好。 ![brew](https://hackmd.io/_uploads/HkFQVbabn.png) 通常那行指令就是: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 裝好了不要太開心, 它有告訴你還要執行兩行指令, 不然你可愛的 Mac 是找不到 `Homebrew` 安裝的程式的! ![homebrew-path](https://hackmd.io/_uploads/r1KeIbTW3.png) 這兩行通常是 (一次執行一行): ```bash (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/yenlung/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" ``` 這樣你的 `Homebrew` 就安裝設定好了。 ## 4. 安裝 `rust` 語言 這也是都要裝了, 我們就官方安裝吧。一樣是到 [Rust 官網](https://www.rust-lang.org/tools/install), 一行文安裝。 ![rust](https://hackmd.io/_uploads/HyT_pZ6W2.png) 就一樣是 copy 那一行指令到你的終端機, 再執行。 ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` 裝好後關掉重開一個終端機。 ## 5. 用 `Homebrew` 安裝需要的程式 這裡要說明一下, 因為在 Automatic1111 官網建議用 `brew` (`Homebrew` 安裝指令), 安裝: brew install cmake protobuf rust python@3.10 git wget 但這對一般在用 Python 的, 怎麼會想讓 `brew` 再裝一個染指我們的 Python 呢? 還有 `git` 是 Mac 內建、Mac 內建、Mac 內建, `wget` 在 Anaconda 裡有裝。所以不要一堆都來大雜燴, 加上剛剛 `rust` 我們裝了, 所以就只要下: ```bash brew install cmake protobuf ``` 如此一來, 我們該有的準備都好了, 現在可以正式打造 Automatic1111 版的 Stable Diffusion WebUI 環境。 ## 6. 用 `conda` 打造一個虛擬環境 相信用 Python 的很熟悉了, 就是我們要打造一個虛擬環境, 這獨立於其他 Python, 萬一出了什麼亂子, 我們砍掉這個環境就好, 不需要一切重來。在這虛擬世界 (其實是真的存在), 我們裝什麼 Python 的套件都勇敢裝下去, 不會影響到其他的 Python 環境。 首先, 我們自己為這個虛擬環境取個名字, 例如叫 `sdwebui` 好了。那就是在終端機中打入: ```bash conda create -n sdwebui python=3.10.6 ``` 後面是指定 Python 的版本。通常其實不指定也可以, 但一般我們都會用先賢先烈已經確認可以的版本。這個 3.10.6 是 Automatic1111 原本推薦版本。 ## 7. `clone` Automatic1111 WebUI GitHub `git` 是一個版本控制系統, GitHub 可以說是雲端的 `git`。但我們先不用管這麼多, 總之先把 Automatic1111 的 Stable Diffusion WebUI 專案 `clone` 過來。這不是單純複製, 但管他啦。這時位置就是重要的, 請選擇你覺得吉祥的位置下這個指令。如果你想放在家目錄下, 就先做: ```bash cd ``` 這樣就確認回到你的家目錄。然後再來就 `clone` 一份 Automatic1111 的 Stable Diffusion WebUI 過來: ```bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui ``` 做完了就可以進到這個目錄下。 ```bash cd stable-diffusion-webui ``` 一般直接開始就好, 但寫這篇的時候, 正是這套 WebUI 災情出現的時候。但因為 `git` 本來就是版本控制系統, 我們可以很方便快速的回到前面某個穩定的版本。 ```bash git checkout a9eab236 ``` ## 8. 安裝和未來每次執行的方式 從現在起, 要執行或是安裝都是做這樣的動作。首先, 先進到我們為 Stable Diffusion 設的虛擬環境: ```bash conda activate sdwebui ``` 接著我們就執行 `webui.sh`: ```bash ./webui.sh ``` 順利的話就會出現, 通常是在 http://localhost:7860 如網路上傳言, Automatic1111 雖然應該有用到 Mac M1/M2 晶片加速 (稱為 MPS 技術), 但是並沒有特別為 Mac 優化。不過還是可以明顯感受到初階 M1/M2 和高階 M1/M2 的差異, 也就是你花大錢還是有差異。 ![webui](https://hackmd.io/_uploads/BJnvVDTZn.png)