MACBOOK PRO M2 MAX 安装Stable Diffusion及文生图实例

以前偶尔会使用Midjourney生成一些图片,现在使用的头像就是当时花钱在Midjourney上生成的。前段时间从某鱼上拍了一台性价比还不错的macbook,想着不如自己部署Stable Diffusion(以下简称SD)尝试一下。

网上有很多教程,但是SD持续在更新,仍然碰到了很多新的问题,花了大半天才搞定。最后更新时间:2024年3月9日。

1. 设备

型号:macbook pro 14寸

CPU:M2 MAX (12+38)

内存:96G

硬盘:8T

操作系统:maxOS 14.3.1

2. 安装过程

2.1. 参考官方教程

Installation on Apple Silicon · AUTOMATIC1111/stable-diffusion-webui Wiki · GitHub

2.2. 安装brew

使用国内的安装源,我使用的是中科大,速度还不错。根据提示一路下去就行。

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

配置环境变量

echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.bash_profile 
source ~/.bash_profile

echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc   
source ~/.zshrc

2.3. 安装GIT等依赖

比官方教程少了git,因为我的git使用anaconda来安装和隔离。

brew install cmake protobuf rust git wget

2.4. 安装anaconda

因为python版本有多种,一些软件又依赖特定的版本,所以使用anaconda进行隔离。

brew install --cask anaconda

echo 'export PATH="/opt/homebrew/anaconda3/bin:$PATH"' >> ~/.zshrc

source ~/.zshrc
conda init zsh
conda create --name sdwebui python=3.10.6

conda activate sdwebui

2.5. 下载stable-diffusion-webui

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

2.6. 下载模型

训练或微调模型对我来说过于复杂,所以我直接下载了几个模型试用。

国外的站点:https://civitai.com/

国内的站点:LiblibAI·哩布哩布AI - 中国领先的AI创作平台

试用的话,两个网站下载都比较快,根据自己的喜好就行。其中liblib当前支持不需要登录就能下载,更方便一些。

下载完成后,放到:“./stable-diffusion-webui/models/Stable-diffusion/”目录下。我下了好几个模型做测试用。

2.7. 启动及排错

进入目录“./stable-diffusion-webui/”,启动“./webui.sh”。

./webui.sh

2.7.1. 下载报错

启动后,会自行安装很多依赖包,但网络不好时,容易出现下载失败,需要多次重试。

经实践发现,建议早上安装。晚上网络特别差,经常下载到一半就被断掉,尝试了十几次都失败。最后在早上只重试了两次,就成功。

2.7.2. 缺少openai/clip-vit-large-patch14类库

各依赖下载完成后,在启动时报“OSError: Can't load tokenizer for 'openai/clip-vit-large-patch14'.”。

解决方案:手动下载https://huggingface.co/openai/clip-vit-large-patch14/tree/main,并放到:“stable-diffusion-webui/openai ”目录下,如果目录不存在就创建。

需要先安装git-lft,否则会报:“git-lfs filter-process: git-lfs: command not found”。

安装脚本:

brew install git-lfs
git lfs install

重新下载,报没有权限,需要生成ssh公私钥,再上传到站点。

先在本地生成ssh 公私钥,使用命令行窗口执行:

git config --global user.name "yinmo"
git config --global user.email "yinmo_sc@foxmail.com"
ssh-keygen -t rsa -C "yinmo_sc@foxmail.com"
ssh-add ~/.ssh/id_rsa

通过cat ~/.ssh/id_rsa.pub展示公钥内容,复制放到https://huggingface.co中的SSH and GPG Keys中配置。

重新下载成功,并复制到“./stable-diffusion-webui/openai/”目录下。

重新运行“./webui.sh”,成功的话,会自动打开游览器:http://127.0.0.1:7860/。

2.8. 安装中文包

默认是英文界面,网上有些简洁的办法安装中文界面,我安装失败,所以手动安装。

打开“Extensions->Available”,找到:https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json,使用浏览器打开。

搜索“chinese”,找到"https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN",使用游览器打开并下载。

下载后解压放到目录“./stable-diffusion-webui/extensions-builtin/”下面。

进入“Setting -> User Interface -> User Interface -> Localization”,选择“zh_CN”,保存配置,重新加载UI。

出现中文界面。

3. 测试数据

试用模型“epicrealismXL_v4Photoreal”,生成样例如下:

试用了“LEOSAM HelloWorld SDXL真实感大模型_v5.0.safetensors”,生成样例如下:

4. 整体感受

如果生成的图片比较小,一次只生成一张图,基本上是秒出,且内存消耗在20G左右。如果图片比较大,且一次生成多张,就会比较耗时和耗内存。

现在网上已经有很多公开的模型,根据自己的需求采用不同的模型,比如有真实感的,有二次元的,有建筑的,有电影风格的等等。

如果想生成精美的图,往往需要多个模型配合,比如上面的熊猫,还需要其它一些模型修饰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444349.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数组的内存执行原理

一.Java内存分配介绍 JVM虚拟机会在内存中执行程序 java内存分配介绍 方法区,栈,堆 首先将编译过后的.class文件送入方法区中。当类开始运行时将方法调入栈内存中,变量也是属于方法的,因此同方法一起进入栈内存中。当main方法要…

日期问题---算法精讲

前言 今天讲讲日期问题,所谓日期问题,在蓝桥杯中出现众多,但是解法比较固定。 一般有判断日期合法性,判断是否闰年,判断日期的特殊形式(回文或abababab型等) 目录 例题 题2 题三 总结 …

人工智能|机器学习——K-means系列聚类算法k-means/ k-modes/ k-prototypes/ ......(划分聚类)

1.k-means聚类 1.1.算法简介 K-Means算法又称K均值算法,属于聚类(clustering)算法的一种,是应用最广泛的聚类算法之一。所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,…

CentOS 7.6安装部署Seafile服务器

今天飞飞和你们分享CentOS 7.6上安装基于MySQL/MariaDB的Seafile服务器的方法,包括下载和安装7.0.5版本、配置数据库、启动服务器等步骤。安装成功后,需要通过nginx反向代理才能访问seafile服务。 通过预编译好的安装包来安装并运行基于 MySQL/MariaDB …

Day27:安全开发-PHP应用TP框架路由访问对象操作内置过滤绕过核心漏洞

目录 TP框架-开发-配置架构&路由&MVC模型 TP框架-安全-不安全写法&版本过滤绕过 思维导图 PHP知识点 功能:新闻列表,会员中心,资源下载,留言版,后台模块,模版引用,框架开发等 技…

网络触手获取天气数据存入mysql 项目

首先这个案例不一定能直接拿来用,虽然我觉得可以但是里面肯定有一些我没考虑到的地方。 有问题评论或者私信我: 这个案例适合我这种学生小白 获取天气数据网址: https://lishi.tianqi.com/xianyang/202201.html 网络触手获取天气数据代码直…

Svg Flow Editor 原生svg流程图编辑器(二)

系列文章 Svg Flow Editor 原生svg流程图编辑器(一) 说明 这项目也是我第一次写TS代码哈,现在还被绕在类型中头昏脑胀,更新可能会慢点,大家见谅~ 目前实现的功能:1. 元件的创建、移动、形变;2…

运动想象 (MI) 迁移学习系列 (3) : MSFT

运动想象迁移学习系列:MSFT 0. 引言1. 主要贡献2. 数据增强方法3. 基于度量的空间滤波转换器3.1 空间过滤3.2 脑电图ViT3.2.1 变压器编码器层3.2.2 基于度量的损失函数 4. 实验结果4.1 消融实验4.2 基线任务对比4.3 跨主题 5. 总结欢迎来稿 论文地址:https://www.s…

深入浅出计算机网络 day.1 概论② 因特网概述

当你回头看的时候,你会发现自己走了一段,自己都没想到的路 —— 24.3.9 内容概述 01.网络、互连(联)网与因特网的区别与联系 02.因特网简介 一、网络、互连(联)网与因特网的区别与联系 1.若干节点和链路互连…

Java 客户端向服务端上传文件(TCP通信)

一、实验内容 编写一个客户端向服务端上传文件的程序,要求使用TCP通信的的知识,完成将本地机器输入的路径下的文件上传到D盘中名称为upload的文件夹中。并把客户端的IP地址加上count标识作为上传后文件的文件名,即IP(count&#…

excel统计分析——嵌套设计

参考资料:生物统计学,巢式嵌套设计的方差分析 嵌套设计(nested design)也称为系统分组设计或巢式设计,是把试验空间逐级向低层次划分的试验设计方法。与裂区设计相似,先按一级因素设计试验,然后…

Linux网络套接字之预备知识

(。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、预备知识 1.理解源IP地址和目的IP地址 …

真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标

做硬件,堆经验。 分享一个案例:MOS管电源开关电路,遇到上电冲击电流超标,怎么解决的呢? 下面是正文部分。 —— 正文 —— 最近有一颗用了挺久的MOSFET发了停产通知,供应链部门找到我们研发部门&#xff0c…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢&…

C++——string模拟实现

前言:上篇文章我们对string类及其常用的接口方法的使用进行了分享,这篇文章将着重进行对这些常用的接口方法的内部细节进行分享和模拟实现。 目录 一.基础框架 二.遍历字符串 1.[]运算符重载 2.迭代器 3.范围for 三.常用方法 1.增加 2.删除 3.调…

spring boot 2.4.x 之前版本(对应spring-cloud-openfeign 3.0.0之前版本)feign请求异常逻辑

目录 feign SynchronousMethodHandler 第一部分 第二部分 第三部分 spring-cloud-openfeign LoadBalancerFeignClient ribbon AbstractLoadBalancerAwareClient 在之前写的文章配置基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 因为从 spring …

Excel F4键的作用

目录 一. 单元格相对/绝对引用转换二. 重复上一步操作 一. 单元格相对/绝对引用转换 ⏹ 使用F4键 如下图所示,B1单元格引用了A1单元格的内容。此时是使用相对引用,可以按下键盘上的F4键进行相对引用和绝对引用的转换。 二. 重复上一步操作 ⏹添加或删除…

【Python】装饰器函数

专栏文章索引:Python 原文章:装饰器函数基础_装饰函数-CSDN博客 目录 1. 学习装饰器的基础 2.最简单的装饰器 3.闭包函数装饰器 4.装饰器将传入的函数中的值大写 5. 装饰器的好处 6. 多个装饰器的执行顺序 7. 装饰器传递参数 8. 结语 1. 学习装饰…

c++中string的模拟实现(超详细!!!)

1.string的成员变量、(拷贝)构造、析构函数 1.1.成员变量 private:char* _str;size_t _size; //string中有效字符个数size_t _capacity; //string中能存储有效字符个数的大小 1.2(拷贝)构造函数 //构造函数string(const char* …

Chain of Verification(验证链、CoVe)—理解与实现

原文地址:Chain of Verification (CoVe) — Understanding & Implementation 2023 年 10 月 9 日 GitHub 存储库 介绍 在处理大型语言模型(LLM)时,一个重大挑战,特别是在事实问答中,是幻觉问题。当答案…