一、 引言

这周工作不是很饱和(嘘),所以相继在两个云平台 KaggleAutoDL 上布置了 Stable Diffusion 后,决议再在 Mac 本地布置一下 Stable Diffusion!

其实看 Stable Diffusion WebUI 的 Github 官网,进程仍是比较明晰简略的。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

但实践布置进程中,确实仍是遇到了不少问题,所以顺便将踩过的坑逐个记录了下来,应该涵盖了大部分同学都会遇到的问题,是的,全帮你们填平了,有的问题还给出了多种处理方案。

所以,Mac 党的朋友,想在本地布置 Stable Diffusion,拿着这份保姆级教程,直接冲就完事!

由于我的 Mac 太渣了(2015 年款),所以抢了男朋友的 Mac 来搞一下。

二、 Mac 的装备

MacBook Pro(2021 年)

芯片:Apple M1 Pro

核总数:8 + 14

内存:16GB

存储:512GB

macOS:Ventura 13.3.1

这个装备下,出图的功率怎么样呢

文章的第五部分「功能测验」中,基于同一模型、不同采样办法,在进行了多组测验后,出图功率简略记录了一下,咱们能够参考~

三、 装置进程

1. 装置 Homebrew

办法一:官方装置(或许会因网络问题导致失败)

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

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

输入 brew -v 验证 Homebrew 是否装置成功:呈现版别号阐明 Homebrew 现已装置成功了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

弥补常识:

  • Homebrew 官网:brew.sh/
  • 经过官网办法装置的,卸载 Homebrew 的办法如下(留意:假如是国内镜像装置的,不必这个指令卸载):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"

办法二:国内镜像装置

假如用第一种办法输入指令没有反应,或许是装置进程中犯错了,多数是由于网络问题。能够用国内镜像进行 Homebrew 的装置。

/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

Core、Cask、services 是 Homebrew 的其他组件,应该不是布置 Stable Diffusion WebUI 必须的。为了稳妥起见,这儿直接都装了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

有些电脑 xcode 和 git 混乱,再运转一次,此处假如有 error 正常。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

装置成功后,需求重启终端或许运转 source /Users/your_user_name/.zprofile 才干生效。

输入 brew -v 验证 Homebrew 是否装置成功:呈现版别号阐明 Homebrew 现已装置成功了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

弥补常识

  • 假如之前装置过 Homebrew,会将之前的 Homebrew 备份在桌面的 Old_Homebrew 文件夹里。假如里边没有你需求的能够删去。

  • 常用指令

    • 检查版别:brew -v
    • 更新 brew 版别:brew update
    • 查找:brew search xxx(其间 xxx 替换为要查找的关键字)
    • 装置:brew install xxx
    • 检查本地软件库列表:brew ls
  • 卸载 Homebrew 假如是经过国内镜像装置的 Homebrew,用这个指令卸载:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
  • 装置方位 在 Mac M1 上,Homebrew 的装置方位不是在曾经的 /usr/local/,而是在 /opt/homebrew,这个咱们留意。

  • 假如装置进程中还遇到了其他问题,能够看文章的第四部分 或许会遇到的问题,看看有没有解说。

2. 装置 Python 等环境依靠

cmake、protobuf、rust、python@3.10、git、wget,这些都是在后面装置 Stable Diffusion WebUI 时需求用到的依靠,这儿经过一条指令直接装置了。

brew install cmake protobuf rust python@3.10 git wget

Stable Diffusion WebUI 的 github 中建议运用 3.10.6,由于高版别的 Python 不支撑 torch:

Install Python 3.10.6 (Newer version of Python does not support torch), checking “Add Python to PATH”.

文章写于 2023 年 7 月,后续应该会支撑吧~

3. 克隆

上一步履行成功后,咱们进行 Stable Diffusino WebUI 的克隆。

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

这一步或许会遇到下载不下来,或许下载进程中犯错的问题,能够看文章的第四部分 或许会遇到的问题,看看有没有解说。

假如依然没有处理,直接,爽性,进到 SDW Github 主页,直接下载 Zip 到本地,然后解压就好了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

4. 下载模型

这儿包括三大类:大模型、Lora 模型以及 VAE 模型。(当然还有其他细分小模型,后续介绍)

这一步能够先扔一个大模型上去,后续有需求能够再慢慢下载其他的。

不想自己下载的话,能够找我要网盘链接。

大模型

放在 stable-diffusion-webui/models/Stable-diffusion 下面

文件后缀:ckpt 或许 safetensors

Lora 模型

放在 stable-diffusion-webui/models/Lora 下面(在没有履行 ./webui.sh 前,是没有 Lora 这个目录的,能够先不放)

VAE 模型

Variational Auto Encoder

能够简略理解为滤镜

放在 stable-diffusion-webui/models/VAE 下面

下载办法一:从 C 站下载(需求特别网络)

选中「Models」-「筛选」- 挑选「Model types」(是大模型、仍是 LoRA、仍是 VAE等) – 然后挑选一个模型点进去。

假如知道要下载的模型的名称的话,也能够直接在搜索框搜索模型姓名,然后点进模型。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

直接点「Download」按钮进行下载。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

下载办法二:从 huggingface 下载

假如登不上 C 站,能够试试 huggingface,办法也比较简略。

挑选「Text-to-Image」,按下载量排序,咱们选第一个下载量最多的,然后点进去。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

切换到「Files and versions」,下面四个后缀为 satetensors 或 ckpt 的便是大模型了,随意下载一个就好。

其间 v1-5-pruned-emaonly 比较小,4 个多 GB,需求的显存少,适合于推理。

v1-5-pruned 比较小,7个多 GB,需求的更多的显存,适合于微调。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

5. 发动 WebUI

进到 Stable Diffusion WebUI 对应的装置目录:

 cd stable-diffusion-webui

发动 Stable Diffusion WebUI:

./webui.sh

第一次发动,会下载一些组件库和依靠,或许会比较慢,咱们耐性等候。

留意

假如上一步没有下载模型,这儿也会主动帮咱们下载一个默认的模型。由于大模型一般都好几个 GB,下起来比较慢,所以推荐咱们仍是在上一步中自己先将模型下载下来(至少放一个大模型进去,这样这一步就不会再主动去下模型了)。

当然犯错最多的也是在发动 WebUI 这个进程。这个进程中会遇到各种各样的报错。咱们需求屡次停下、处理、再重新履行 ./webui.sh

不过不必担心之前的装置都白费了,由于它会从你上次装置到的当地接着往下装置。

假如装置进程中报错了,能够看文章的第四部分「或许会遇到的问题」,看看有没有相应的解说。

当呈现 Running on local URL: http://127.0.0.1:7860 的时分,阐明 Stable Diffusion WebUI 现已发动好了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

在浏览器中输入 http://127.0.0.1:7860 就能够看到 Stable Diffusion WebUI 的界面了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

温馨提示

  1. 在运转进程中,不要封闭 Terminal,否则页面就打不开了。

  2. 下次再发动,进到 Stable Diffusion WebUI 对应的目录,履行 ./webui.sh 即可。

  3. 假如装置进程中报错了,能够看文章的第四部分「或许会遇到的问题」,看看有没有解说。

四、 或许会遇到的问题

1. 用国内镜像装置 Homebrew 或许呈现的问题

问题描述

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

处理

大约翻译一下,意思是说,在 “/opt/homebrew/Library/Taps/homebrew/homebrew-core” 的库房中检测到可疑的所有权,若要为此目录添加异常,请调用:

git config –global –add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core。

下面另一个错误,也是相似的意思。所以咱们只需求按照上面的提示,在指令行中输入这两行,就完美处理了。当再履行 brew -v 就不报错了!

git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

2. HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

问题描述

在 git clone 的时分报:

致命错误:无法访问 ‘github.com/AUTOMATIC11… stream 1 was not closed cleanly before end of the underlying stream

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

处理:将通信协议改成 http/1.1

git config --global http.version HTTP/1.1

将通信协议改成 http/1.1 之后,发现能够正常下载了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

3. Couldn’t install torch.

在履行完 ./webui.sh 后报 “RuntimeError: Couldn’t install torch.”

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

在 modules/launch_utils.py 中看到了这段注释:

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

这段注释是说,假如遇到了 “RuntimeError: Couldn’t install torch.” 或许其他问题,或许是 Python 版别的问题,晋级或许降级到 3.10 的最新版别,然后删掉 WebUI 目录下的 venv 目录再重试。

可是上面咱们分明履行过 brew install cmake protobuf rust python@3.10 git wget 这个指令,其间装置了 Python 3.10 呀。按理说不应该呀。

怀着置疑的情绪我在指令行里输入 python3 -V 进行检查。

咦,一看不得了,这版别咋是 3.9.6?

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

这个 3.9 的 Python 版别,应该是 Mac 自带的 Python。或许便是由于这个原因导致发动时下载库犯错。

所以又从 Python 官网下载了 Python 3.10.10 这个版别。按提示傻瓜式装置就好了。之后还装备了一下环境变量。

# 编辑 ~/.bash_profile
vim ~/.bash_profile

文件中加入这三行

PATH="/opt/homebrew/bin/:${PATH}"
export PATH=${PATH}
alias python="/opt/homebrew/bin/python3.10"
# 使装备生效
source ~/.bash_profile

这时版别就成 3.10.10 了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

然后删掉 WebUI 目录下的 venv 目录,再履行 ./webui.sh,终于不报错了!便是下的有些慢~

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

4. Couldn’t install gfpgan.

在履行完 ./webui.sh 后报 “RuntimeError: Couldn’t install gfpgan.”

其实是由于没有下载下来 gfpgan。咱们能够从报错信息中找到下载链接,如下图中横线部分,然后 copy 这个链接到浏览器中进行下载,然后将下载好的 zip 文件加压,并将目录名改成 GFPGAN,然后拖到 stable-diffusion-webui 这个目录下就好了。当再次履行 ./webui.sh 时,发现现已跨过 GFPGAN,继续下载其他依靠了。完美处理!

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

5. Couldn’t install clip.

在履行完 ./webui.sh 后报 “RuntimeError: Couldn’t install clip.”

能够手动下载后装置,就像处理 “Couldn’t install gfpgan” 这个问题相同。可是这儿咱们换一种处理办法。

打开 modules/launch_utils.py,搜索 github.com/ ,在每一处前面都加上 ghproxy.com/ ,加完后是这样的 ghproxy.com/https://git… ,如下图。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

一共是 7 处,修改完成后保存。再履行 ./webui.sh,就没有问题了。

为什么这儿不必上面处理 gfpgan 的手动下载的办法呢?

prepare_environment() 这个办法里,一共定义了 7 处下载地址,假如不必添加代理的办法,大约率接下来在下载 K-diffusion、CodeFormer、BLIP 的时分,也是会报错的。所以这儿一同改掉,万事大吉!

这种办法也能够处理以下报错:

Couldn’t install K-diffusion

Couldn’t install CodeFormer

Couldn’t install BLIP

6. Couldn’t install K-diffusion

见 5 处理办法。

7. Couldn’t install CodeFormer

见 5 处理办法。

8. Couldn’t install BLIP

见 5 处理办法。

五、 功能测验

大模型:dreamshaper

Euler:出一张 512 * 512 的图,约 20 ~ 30s

DPM++ SDE Karras:出一张 512 * 512 的图,约 1 ~ 1.5 min

六、 结束语

Stable Diffusion 本地布置相对于 Stable Diffusion 云布置,最大的两个长处便是:

更自在(懂的都懂)!

不花钱,完全免费!

Kaggle 尽管每月可白嫖 30 个小时的算力,但太简单被封,稍微画得上头一些,就被封了。我的账号就被祭了。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

Kaggle 被封后,又转战到了 AutoDL,相比于 Kaggle 来说,不那么简单被封,可是需求花钱。大部分机器实例在 1~2 元 / 小时,也不算贵,可是用完后一旦忘记给实例关机,一天几十就出去了。呃,这。。。

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程)

所以这周,一顿操作猛如虎,终于在 Mac 上成功布置了 Stable Diffusion,实现了 Stable Diffusion 自在!也将所有踩过的坑,逐个填平并记录了下来。期望能够帮到想在 Mac 上布置 Stable Diffusion 的同学。

其实在 Mac 本地布置 Stable Diffusion 遇到的大部分问题,基本都是网络造成的。每个人的电脑装备及网络环境都不相同,所以有时会遇到试了好几个处理方案都无法处理的状况。其实我也是。网友说他这么改成功了,而我那么改,依然不起作用。

所以最后想对咱们说的是,耐性一点,再耐性一点,办法总是有的,问题总会处理!

咱们加油!也期望这篇教程能够真的帮到咱们!