AI大模型教程
一起来学习

【Mac】 Stable Diffusion 部署

Mac M芯片

一、安装步骤

1、安装 Homebrew

cmd+空格,搜索终端,打开终端,把这段代码粘贴到终端回⻋。

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

⼀路有1选1,有Y选Y,需要输⼊开机密码,不会显⽰密码,直接输⼊然后回⻋即可。
当询问 core cask services 可以回⻋跳过即可。

安装完,在终端输⼊brew -v,能查询到版本即安装成功。

切换阿里镜像源(切换其他镜像源可参考 【Mac】 Homebrew):

# 查看 brew.git 当前源
$ cd "$(brew --repo)" && git remote -v
origin    https://github.com/Homebrew/brew.git (fetch)
origin    https://github.com/Homebrew/brew.git (push)

# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin    https://github.com/Homebrew/homebrew-core.git (fetch)
origin    https://github.com/Homebrew/homebrew-core.git (push)

# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc

# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile

# 刷新源
$ brew update

2、创建Python虚拟环境

通过Anaconda来创建Python虚拟环境,若未安装可参考 【Mac】安装 Python3 二、2、通过 Anaconda 安装管理 Python

conda create -n sd python=3.10 -y
conda activate sd

Stable Diffusion 会自行创建一个虚拟环境(venv)用于运行。

3、安装依赖

brew install cmake protobuf rust git wget libjpeg

4、本地部署 SD

在需要安装的⽂件夹(任意文件夹)上右键 ,进⼊终端执行以下代码:

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

此时会安装很多东西,Install 的时候可能会卡住,不要慌,请耐心等待。

下载完成后会报错:loading stable diffusion model: FileNotFoundError,这是因为此时还没下载模型。

启动成功会自动弹出应用界面(浏览器),如没有修改端口,则为 http://127.0.0.1:7860

5、模型下载

5.1下载地址

5.2 SD模型推荐

5.3 模型安装

  • 基础模型:将“.ckpt”或“.safetensors”文件放到文件路径:stable-diffusion-webui/models/Stable-diffusion
  • 辅助模型:将“.ckpt”或“.safetensors”文件放到文件路径:stable-diffusion-webui/models/Lora

页面选择模型时,可能报错:OSError: Can't load tokenizer for 'openai/clip-vit-large-patch14'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'openai/clip-vit-large-patch14' is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.

这是因为 Hugging Face 被墙,若没有魔法是无法下载的。

解决办法:下载 Stable-diffusion openai,解压后直接丢进Stable Diffusion 目录下,重启服务(./webui.sh)即可。

压缩包文件说明:

  • tokenizer.json 和 vocab.json:这两个文件是模型的词汇表和分词器的配置。tokenizer.json通常包含了模型的分词规则和转换策略,它决定了如何将输入的文本分割成可被模型处理的令牌(tokens)。而vocab.json则存储了模型使用的词汇表,即所有可能的令牌及其对应的唯一标识符。这两个文件是模型理解和处理输入数据的关键。
  • config.json:这是模型的配置文件,其中包含了模型架构的详细信息,如层数、隐藏层大小、激活函数等。这些参数直接影响模型的性能和计算资源的需求。在部署模型时,我们需要根据这个配置来构建和初始化模型结构。
  • tokenizer_config.json:这个文件可能包含特定于分词器的附加设置,比如特殊字符的处理方式、截断策略等。它提供了关于如何使用分词器进行数据预处理的额外信息。
  • special_tokens_map.json:这个文件定义了模型中的特殊令牌,如开始序列标记、结束序列标记、填充标记等。这些特殊令牌在模型训练和推理过程中有特定的含义和用途
  • preprocessor_config.json:这个文件包含了预处理器的配置,预处理器是负责将原始输入数据转化为模型可以理解的形式的组件。这可能包括文本标准化、数据增强等步骤。
  • merges.txt:在BERT-like模型中,merges.txt文件包含了基础词汇(subwords)的合并规则,用于处理词汇表中未出现的新词。这是通过将两个基础词汇拼接起来形成新的词汇单位来实现的。
  • README.md:这是一个Markdown格式的文件,通常包含有关项目、模型或库的说明和指南,对于用户理解和使用模型是十分重要的。
  • openai:这可能是指OpenAI的相关资源或者库,OpenAI是一家专注于研究、开发和应用人工智能技术的公司,他们的GPT系列模型和tokenizer工具在NLP领域非常著名。如果与稳定扩散模型相关,可能是使用了类似的技术或者接口。

6、添加 「外挂 VAE 模型」、「CLIP 终止层数」

① 选择 Settings,拖到最下面,点击 Show all pages

command+F 打开搜索,输入 quick 回车,会定位到 Quicksettings list 配置。

③ 在 Quicksettings list 里再添加两项:sd_vaeCLIP_stop_at_last_layers

④ 点击Apply settings,再点击 Reload UI

7、SD 界面基本功能

  • Stable Diffusion大模型:绘图的主要模型,大小一般都在几个G。
  • VAE模型:可以理解为让图片更明亮一些,推荐阅读下 秋葉aaaki大佬 的文章【AI绘画】不是每个模型都需要外挂VAE! VAE真正的作用是什么?
  • CLIP终止层数:值越大,出的结果和你预想的差别越大。这个值一般固定用1-4,默认用2就行。
  • 文生图:根据提示词来生成图片。框中就是我们写的提示词,只能用英文。
    • 正向提示词:告诉 SD 需要生成什么样的图片,比如,一个桃子。
    • 反向提示词:告诉 SD 图片中不需要什么元素,比如,狗。意思是不要狗。
  • 图生图:图像生成图像。
  • 后期处理:图片处理。
  • PNG信息:这是一个快速获取图片生成参数的便捷功能。如果图像是在SD里生成的,您可以使用“发送到”按钮将参数快速复制到各个页面。
  • 模型融合:您最多可以组合 3 个模型来创建新模型。它通常用于混合两个或多个模型的风格。但是,不能保证合并结果。它有时会产生不需要的伪影。
  • 训练:训练页面用于训练模型。它目前支持textual inversion(embedding) 和hypernetwork。
  • 设置:更改任何设置后,记得单击“保存设置”后再重载界面。
  • 扩展:安装扩展插件。
  • 迭代步数:一般地,数值越高,画得越好,时间越长。30是比较合适的数值。
  • 采样方法:Euler a 方法是扩散类型的,结果很难控制。一般采用 DPM++ 2S a Karras 等几个,结果不会发生大的变化,而是不断丰富细节,容易控制。

选好基本参数,大模型,迭代步数30,采样方法DPM++ 2S a Karras,再加上提示词,就可以画出一幅比较完整的画了。

二、扩展插件

1、安装方式

Stable Diffusion 插件页面有四个标签页:Installed(已安装)、Available(可下载)、Install From URL(从网址下载)、Backup/Restore(备份/恢复)

1.1 Available(可下载)

点击 Extension⇒ 点击 Available⇒ 点击 Load from⇒ 取消勾选 Localization、Installed⇒ 在搜索框输入插件名称⇒ 回车⇒ Install

安装完成 Install 将会变成 installed,也可以在 Extension-installed 下查看

1.2 Install From URL(从网址下载)

点击 Extension⇒ 点击 Install from URL ⇒ 在URL for extension’s git repository 下方的输入框中黏贴 Github项目地址⇒ 点击 Install

1.3 手动下载

通过 git clone 项目地址 或 下载项目到本地再解压,将项目文件夹放到 stable-diffusion-webui/extensions 下边,此时在 Extension-installed 下可以看到已安装好对应的项目

2、应用插件

安装好插件需要应用插件

  • 第一步, Extension⇒ installed ⇒ apply and restart UI
  • 第二步,在 setting 里修改对应的设置,以汉化插件为例:点击 setting⇒ 在搜索框输入 localization ⇒ 在 localization 中选择 zh_cn ⇒ 点击 apply settings⇒ 点击 reload UI

3、插件推荐

3.1 界面中文汉化包

  • https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN
  • https://github.com/hanamizuki-ai/stable-diffusion-webui-localization-zh_Hans

3.2 提示词自动补全/翻译

  • https://github.com/DominikDoom/a1111-sd-webui-tagcomplete

3.3 prompt翻译

  • https://github.com/Physton/sd-webui-prompt-all-in-one

3.4 反向提示词

项目地址:https://github.com/picobyte/stable-diffusion-webui-wd14-tagger

比默认图片提取prompt更精准的插件,功能也更强大。

安装成功会看到上面的设置栏多了一个 WD 1.4标签器 (Tagger),点击进入界面

上传一张图片让它分析,首次运行会下载一些依赖,可以在终端窗口查看进度

使用结束后,记得点击下方的“卸载所有反推模型”,不然模型会占用很高的显存。

3.5 Inpaint-Anything

项目地址:https://github.com/geekyutao/Inpaint-Anything

Inpaint-Anything 是一款强大的图像编辑工具,能修复和编辑图像内容,用于删除和替换图像中的任何内容,使用人工智能自动识别和修复图像中的缺陷,无需使用遮罩,比如删除图像中不需要的对象或瑕疵、修复图像中的损坏、替换图像中的对象或背景、创建创意图像效果等

3.6 图库浏览器

项目地址:https://github.com/AlUlkesh/stable-diffusion-webui-images-browser

这个插件用来浏览和管理图片,就不用通过访达来查看图片。

3.7 Tiled VAE

项目地址: https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111

显卡内存不够报错:RuntimeError: MPS backend out of memory (MPS allocated: 5.05 GB, other allocations: 2.28 GB, max allowed: 6.80 GB). Tried to allocate 1024.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO-0.0 to disable upper limit for memory allocations (may cause system failure).

启用 Tiled VAE 插件后,它会先生成一个个小的图块,然后再组合在一起形成高分辨率图像,这样就有效防止爆显存情况的出现,不过生成时间会更长一些。

六、进阶学习

八、报错汇总

  • Stable diffusion model failed to load

    手动下载基础模型,放入models文件夹下的Stable-diffusion文件夹里,点此立即下载

  • OSError: Can't load tokenizer for '/clip-vit-large-patch14'

    mkdir openai
    cd openai
    git clone https://www.modelscope.cn/AI-ModelScope/clip-vit-large-patch14
    
  • no module 'xformers'. Processing without...

    • 方案一:手动在sd虚拟环境venv中安装xformers
      cd stable-diffusion-webui
      source venv/bin/activate
      pip install xformers
      

      此时可能报错 No module named torch,通常是因为 xformers与torch版本不兼容,可在 Github-xformers 查看PyTorch的版本要求

    • 方案二:将 xformers 安装在虚拟环境sd中,将
      conda install pytorch torchvision torchaudio -c pytorch-nightly
      conda install xformers -c xformers
      
      # 不启用虚拟环境venv:将启动脚本第 26 行 use_venv=1 改为 use_venv=0
      vi stable-diffusion-webui/webui.sh
      
    • 方案三:https://zhuanlan.zhihu.com/p/602240691
  • clang: error unsupported option '-fopenmp'

    brew install gcc
    echo "export CC=/opt/homebrew/Cellar/gcc/14.2.0/bin/gcc-14" >  ~/.zshrc 
    echo "export CXX=/opt/homebrew/Cellar/gcc/14.2.0/bin/g++-14" > ~/.zshrc
    source ~/.zshrc
    
  • urllib.error.URLError:

    汉化的时候,浏览器可以访问,终端无法网站

    通过配置本地域名解析修改:在 IP地址查询网站 查询Github IP地址,修改hosts文件

    $ sudo vi /etc/hosts
    

    输入开机密码,在打开的文件末添加以下内容

    (查询到的ip地址) github.com
    

十、资料

文章来源于互联网:【Mac】 Stable Diffusion 部署

相关推荐: Llama 2 70B Chat 模型简介:基本概念与特点

Llama 2 70B Chat 模型简介:基本概念与特点 Llama-2-70B-Chat-GPTQ 项目地址: https://gitcode.com/hf_mirrors/ai-gitcode/Llama-2-70B-Chat-GPTQ 引言 在人工智能…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 【Mac】 Stable Diffusion 部署
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们