Mac本地部署Stable Diffusion,超详细,含踩坑点(AI 绘画保姆级教程) ...

没腿的鸟  金牌会员 | 2024-6-21 00:07:49 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 529|帖子 529|积分 1587

文章首发于公众号:X小鹿AI副业
大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年+,也一名 AIGC 爱好者,连续分享更多前沿的「AI 工具」和「AI副业玩法」,接待一起交换~
  一、 弁言

相继在两个云平台 KaggleAutoDL 上部署了 Stable Diffusion 后,这周决定再在 Mac 本地部署一下 Stable Diffusion!
实在看 Stable Diffusion WebUI 的 Github 官网,步调还是比力清晰简单的。

但实际部署过程中,确实还是碰到了不少问题,以是顺便将踩过的坑逐一记录了下来,应该涵盖了大部分同砚都会碰到的问题,是的,全帮你们填平了,有的问题还给出了多种办理方案。
以是,Mac 党的朋友,想在本地部署 Stable Diffusion,拿着这份保姆级教程,直接冲就完事!
二、 Mac 的设置

MacBook Pro(2021 年)
芯片:Apple M1 Pro
核总数:8 + 14
内存:16GB
存储:512GB
macOS:Ventura 13.3.1
这个设置下,出图的服从怎么样呢
文章的第五部分「性能测试」中,基于同一模型、差别采样方法,在举行了多组测试后,出图服从简单记录了一下,大家可以参考~
三、 安装步调

  1. 安装 Homebrew

方式一:官方安装(可能会因网络问题导致失败)

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

输入 brew -v 验证 Homebrew 是否安装乐成:出现版本号说明 Homebrew 已经安装乐成了。

补充知识:


  • Homebrew 官网:https://brew.sh/
  • 通过官网方式安装的,卸载 Homebrew 的方式如下(注意:如果是国内镜像安装的,不用这个命令卸载):
  1. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
复制代码
方式二:国内镜像安装

如果用第一种方式输入命令没有反应,或者是安装过程中出错了,多数是由于网络问题。可以用国内镜像举行 Homebrew 的安装。
  1. /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,用这个命令卸载:
  1. /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 时需要用到的依赖,这里通过一条命令直接安装了。
  1. 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 的克隆。
  1. 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 对应的安装目次:
  1. cd stable-diffusion-webui
复制代码
启动 Stable Diffusion WebUI:
  1. ./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 就不报错了!
  1. git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
  2. 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 的时间报:
致命错误:无法访问 ‘https://github.com/AUTOMATIC1111/stable-diffusion-webui/’:HTTP/2 stream 1 was not closed cleanly before end of the underlying stream

办理:将通讯协议改成 http/1.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 这个版本。按提示傻瓜式安装就好了。之后还设置了一下环境变量。
  1. # 编辑 ~/.bash_profile
  2. vim ~/.bash_profile
复制代码
文件中参加这三行
  1. PATH="/opt/homebrew/bin/:${PATH}"
  2. export PATH=${PATH}
  3. alias python="/opt/homebrew/bin/python3.10"
复制代码
  1. # 使配置生效
  2. 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,搜索 https://github.com/ ,在每一处前面都加上 https://ghproxy.com/ ,加完后是这样的 https://ghproxy.com/https://github.com/xxxxx ,如下图。

一共是 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 碰到的大部分问题,根本都是网络造成的。每个人的电脑设置及网络环境都不一样,以是有时会碰到试了好几个办理方案都无法办理的情况。实在我也是。网友说他这么改乐成了,而我那么改,依然不起作用。
以是最后想对大家说的是,耐心一点,再耐心一点,方法总是有的,问题总会办理!
大家加油!

觉得文章有帮助,记得点赞收藏关注一下呦~
我是程序员X小鹿,前互联网大厂程序员,自由职业 2 年+,一名 AIGC 爱好者,接待一起交换~
   小鹿另有一个免费的知识星球(X小鹿的发展星球),星球置顶帖可领内部AI学习资料。平常也会在这里记录日常动态。包罗但不限于 AI、副业、自媒体、自由职业等,接待大家围观~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表