一、 引言
这周工作不是很饱和(嘘),所以相继在两个云平台 Kaggle 和 AutoDL 上布置了 Stable Diffusion 后,决议再在 Mac 本地布置一下 Stable Diffusion!
其实看 Stable Diffusion WebUI 的 Github 官网,进程仍是比较明晰简略的。
但实践布置进程中,确实仍是遇到了不少问题,所以顺便将踩过的坑逐个记录了下来,应该涵盖了大部分同学都会遇到的问题,是的,全帮你们填平了,有的问题还给出了多种处理方案。
所以,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)"
输入 brew -v
验证 Homebrew 是否装置成功:呈现版别号阐明 Homebrew 现已装置成功了。
弥补常识:
- 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)"
Core、Cask、services 是 Homebrew 的其他组件,应该不是布置 Stable Diffusion WebUI 必须的。为了稳妥起见,这儿直接都装了。
有些电脑 xcode 和 git 混乱,再运转一次,此处假如有 error 正常。
装置成功后,需求重启终端或许运转 source /Users/your_user_name/.zprofile
才干生效。
输入 brew -v
验证 Homebrew 是否装置成功:呈现版别号阐明 Homebrew 现已装置成功了。
弥补常识
-
假如之前装置过 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 到本地,然后解压就好了。
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等) – 然后挑选一个模型点进去。
假如知道要下载的模型的名称的话,也能够直接在搜索框搜索模型姓名,然后点进模型。
直接点「Download」按钮进行下载。
下载办法二:从 huggingface 下载
假如登不上 C 站,能够试试 huggingface,办法也比较简略。
挑选「Text-to-Image」,按下载量排序,咱们选第一个下载量最多的,然后点进去。
切换到「Files and versions」,下面四个后缀为 satetensors 或 ckpt 的便是大模型了,随意下载一个就好。
其间 v1-5-pruned-emaonly 比较小,4 个多 GB,需求的显存少,适合于推理。
v1-5-pruned 比较小,7个多 GB,需求的更多的显存,适合于微调。
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 现已发动好了。
在浏览器中输入 http://127.0.0.1:7860 就能够看到 Stable Diffusion WebUI 的界面了。
温馨提示
-
在运转进程中,不要封闭 Terminal,否则页面就打不开了。
-
下次再发动,进到 Stable Diffusion WebUI 对应的目录,履行
./webui.sh
即可。 -
假如装置进程中报错了,能够看文章的第四部分「或许会遇到的问题」,看看有没有解说。
四、 或许会遇到的问题
1. 用国内镜像装置 Homebrew 或许呈现的问题
问题描述
处理
大约翻译一下,意思是说,在 “/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
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
处理:将通信协议改成 http/1.1
git config --global http.version HTTP/1.1
将通信协议改成 http/1.1 之后,发现能够正常下载了。
3. Couldn’t install torch.
在履行完 ./webui.sh
后报 “RuntimeError: Couldn’t install torch.”
在 modules/launch_utils.py 中看到了这段注释:
这段注释是说,假如遇到了 “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?
这个 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 了。
然后删掉 WebUI 目录下的 venv 目录,再履行 ./webui.sh
,终于不报错了!便是下的有些慢~
4. Couldn’t install gfpgan.
在履行完 ./webui.sh
后报 “RuntimeError: Couldn’t install gfpgan.”
其实是由于没有下载下来 gfpgan。咱们能够从报错信息中找到下载链接,如下图中横线部分,然后 copy 这个链接到浏览器中进行下载,然后将下载好的 zip 文件加压,并将目录名改成 GFPGAN,然后拖到 stable-diffusion-webui 这个目录下就好了。当再次履行 ./webui.sh
时,发现现已跨过 GFPGAN,继续下载其他依靠了。完美处理!
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… ,如下图。
一共是 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 个小时的算力,但太简单被封,稍微画得上头一些,就被封了。我的账号就被祭了。
Kaggle 被封后,又转战到了 AutoDL,相比于 Kaggle 来说,不那么简单被封,可是需求花钱。大部分机器实例在 1~2 元 / 小时,也不算贵,可是用完后一旦忘记给实例关机,一天几十就出去了。呃,这。。。
所以这周,一顿操作猛如虎,终于在 Mac 上成功布置了 Stable Diffusion,实现了 Stable Diffusion 自在!也将所有踩过的坑,逐个填平并记录了下来。期望能够帮到想在 Mac 上布置 Stable Diffusion 的同学。
其实在 Mac 本地布置 Stable Diffusion 遇到的大部分问题,基本都是网络造成的。每个人的电脑装备及网络环境都不相同,所以有时会遇到试了好几个处理方案都无法处理的状况。其实我也是。网友说他这么改成功了,而我那么改,依然不起作用。
所以最后想对咱们说的是,耐性一点,再耐性一点,办法总是有的,问题总会处理!
咱们加油!也期望这篇教程能够真的帮到咱们!