Mac本地部署Stable-diffusion,别怕折腾,坑都帮你填好了

前言

刚玩完ChatGPT,看着最近大火的AI绘画、赛博coser,还不时给我推送教程视频,我本来就喜欢折腾些新鲜事物,于是心动打算加入玩耍。但Mac作为一个被孤立党(ps.小众群体),现在的大环境下都是win的教程,仅有的几篇mac教程文章又因为是某些程序猿大佬随手记录写的,我的代码水平就只会抄,阅读门槛太高根本看不懂,频频碰壁,借助国内国外资源整合后我终于在M1 Mac上成功本地部署运行stable-diffusion-webui了。而且我分享的办法大部分情况下都支持国内网络环境下安装,因为还是要连接外国网站进行下载,一些情况下载速度慢还是需要科学上网,所以我建议阅读文章的你最好手上有魔法可用,这样在过程中遇到其他问题也可以使用谷歌大法。

在本地的效果就只能说能用,正常情况下关键词(Tags)少一点是能半分钟出图,不过毕竟显卡算力摆在那,我的是M1Pro16G运存,扒拉别人分享图的参数来生成一张图,需要6、7分钟甚至更久(速度感人...),所以如果使用需求不高可以搞搞,追求效率的话也可以学别人去云端部署,文末会细讲。

下载stable-diffusion-webui项目

别人是使用"git clone"来克隆stable-diffusion-webui在GitHub仓库到本地的,但文件量比较大下载缓慢,建议使用我下载整理好的:

【「stable-diffusion-webui.zip」,点击链接下载】

这个文件只有4G左右,里面没有model和lora,下一步会分享model和lora的下载地址。

下载Homebrew

如果直接在官网复制指令会因为网络问题无法下载,我们可以下载国内大学在码云分享的homebrew

打开终端,一般在启动台“其他”文件夹,或者command+空格,搜索“终端”,运行以下代码(回车):

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

输入“1”选择中科大版本,然后输入“Y(yes)”,直接输入开机密码(不显示)开始下载

它弹窗让你先下载Git,我们同意,然后等待下载

然后在运行一遍代码和重复上面的操作,这次就下载brew本体了

下载完成,今后下载还是输入“1”,提示安装完成,复制它给你的指令运行

最后我们运行指令检查一下,没有出现error报错就行。

brew
brew doctor

下载Python3.10

接着使用brew下载python,继续在终端执行命令:

brew install cmake protobuf rust python@3.10 git wget

等待下载完成。

配置stable-diffusion-webui文件夹

新建终端,或者输入clear清除前面的记录,执行指令“open空格.”,回车。

open .

弹出一个文件窗口,把下载好的stable-diffusion-webui文件解压后拖进来

下载model、lora

我推荐比较热门的model:“ChilloutMix”Lora:“Korean Doll Likeness”

如果你想要官方原始的模型:stable-diffusion-v1-5

还有一个特别影响出图的色调文件:sd-vae-ft-mse-original at main

⬆️这个模型分享网站国内访问速度还是可以的,下载也挺快,自己去探索更多吧。

model安装:

将safetensors文件放到文件路径:stable-diffusion-webui/models/Stable-diffusion

lora安装:

将safetensors文件放到文件路径:stable-diffusion-webui/models/Lora

vae安装:

将safetensors文件放到文件路径:stable-diffusion-webui/models/Vae

运行./web.sh程序

新开一个终端,运行这两个指令:

(记住这两个指令,最好是自己打熟练,中途报错、以后每次运行都会再用到)

(第1个指令可以cd+空格+将stable-diffusion-webui文件夹拖进终端,就能自动填充文件路径)

cd stable-diffusion-webui/

./webui.sh

运行之后他就开始下载需要的依赖,有梯子的用梯子,也可以尝试UU加速器,对,没开玩笑,在UU搜索“学术资源”运行代理,可以帮助我们访问如GitHub的国际性网站。(如果途中某个环节下载失败可以尝试断开切换使用梯子来下载,有时候不用速度更快,但默认还是挂着代理)

幸运的话你可以一路顺风跑完全程(我觉得肯定没那么简单嘿嘿),我基本上每个环节都报错差点给我整放弃了,所以下面就是提供我遇到的报错和解决办法,各位按情况参考,祝福各位~

1、使用homebrew的时候,Error: Command failed with exit 128: git

分别执行这两个指令手动添加,绿色框选的(directory后面)就是路径地址,可以直接复制粘贴

git config --global --add safe.directory 你的homebrew-core路径
git config --global --add safe.directory 你的homebrew-cask路径

2、pip安装环境报错:This error originates from a subprocess, and is likely not a problem with pip

这个就是单纯的网络问题,断开/连接代理然后重新执行“./webui.sh”

3、AttributeError: 'NoneType' object has no attribute 'pop'

这个问题基本上和第4点同时触发,直接看第4点。

4、Stable diffusion model failed to load upon startup

往上面看有这句:“The file may be malicious, so the program is not going to read it.(该文件可能是恶意的,因此程序不会读取它。)”这个就是模型错误,检查model有没有放错文件夹或者用了不支持(损坏)的模型。

5、RuntimeError:Cannot add middleware after an application has started

如果用我分享的文件里面就已经默认改好了。

解决办法:open .打开SD所在文件夹,在stable-diffusion-webui文件夹中的requirements_versions.txt 文件中添加“fastapi==0.90.1”。

大功告成

相信大家最终都到达这个界面了吧,复制这个链接127.0.0.1:7860在浏览器打开就可以美美地食用了

红色框选的本地访问地址

日常使用

我们关闭终端SD程序就终止运行了,再次使用还是执行这两个指令:

cd stable-diffusion-webui/

./webui.sh

然后一些stabel-diffusion-webui的配置参数、操作可以学习一下这篇文章、这位大佬的其他文章:

结语:

折磨了自己两天终于成功在本地部署SD,吃老大苦了,一开始一直因为网络问题换了几个梯子,后来才灵机一动用试试UU学术加速,成功了;遇到问题就谷歌,翻GitHub、reddit社区,找到的还都是win的解决方法,指令根本没办法直接抄,除非找的同样是mac的或者自己想办法,大家感同身受,希望这篇文章能帮到同是Mac党的同学。

去看了云端部署的方案我直接吐血,不仅可以加快生成速度而且操作起来还简单。所以重申一遍,本地部署的优点就是可随时自由使用,不需要网络,生成一些比较特殊的图片啊(自己看)、版权啊也归你;云端部署就是使用虚拟GPU性能更好渲染生成更快,不过用Colab每次都需要重新部署(重新下载模型网络速度要求高还得科学上网),而国内的炼丹平台需要花钱租用,使用别人分享整合好的模型还要遵循他的使用规则,也就是没有本地自由。也可以考虑鱼和熊掌兼得——本地和云端协调,高效率、高自由度制图。

对了,有问题欢迎评论区、私信讨论,我也采纳建议对文章进行编辑完善,做一篇负责任的文章!

参考资料:

M1 Mac搭建Novel AI(Stable Diffusion)本地部署详细教程

--GUIDE--

THE END