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)本地部署详细教程