我们之所以有很多痛苦,其实不是因为,你真实生活当中的痛苦,而是因为你觉得自己不好,你在怪自己。
大家好,我是柒八九。
许久未更文了,不知道是否有些许的想念啊。最近,在忙公司的事情。然后,很多更文都属于头脑风暴阶段。但是呢,这篇文章本来打算上周发布的,但是思来想去,还是做了一些内容的变更。
然后,还有一件事需要告知大家,我 {又双叒叕|yòu,shuāng,ruò,zhuó}打算新开辟一个系列文章 -- AI模型
。 但是,大家不要担心,不是啥高大上的东西,不会做一些AI模型训练的(后期如果有机会,也不是不可以尝试一下,本事我也是在自我进化中...)都是一些大家都能上手实践的。
同时,最近也会在规划,自己搭建一个国内版本的ChatGPT
问答网站和小程序和AI
集合。这也是近期的一个规划。
但是,大家放心,咱们的主业还是偏向前端
/Rust
。毕竟,只有解决了温饱问题,才可以考虑更高级的享受。
碎碎念
但凡,混迹于互联网的Coder
,在最近的1-2个月内,都主动或者被动的听过ChatGPT/AutoGPT/Midjourney/Stable-Diffusion
等五花八门的AI
产品和模型。 本着,对技术的敏感度,同时公司业务也有AI相关的业务和场景。所以,在工作和业余时间也在逐步的使用相关的AI产品。
同时就在上周,很有幸,被腾讯云开发者开了白名单。
然后在文章列表中,一眼就相中利用AIGC:从0搭一个图文视频生成网站,准备转载。本着,这么好的东西,不自己亲手搭建一个,那不是很 {暴殄天物|bào tiǎn tiān wù}。所以,就按照上文的步骤进行搭建。但是,在搭建的时候,愈发感觉不对劲。后来才发现stable-diffusion
的安装分系统环境。上文中提到的是Windows
的安装步骤,而我本地环境的是Mac
(非M1版本)。所以,这本就是南辕北辙
的,它无论如何都无法达到自己想要的效果。
同时,在原文中,他过多的省略了很多安装步骤和必要的解释。(这里不是说原文写的不好,可能自己的水平没有达到那个水平),所以在安装步骤搭建起来,感觉很生硬。同时,由于涉及到其他的语言概念(python
等)和安装方式。也会让平时不咋接触这些语言的开发者,望而却步。
所以,本着好东西要分享的态度,今天这篇文章。我们来仔细讲讲 如何在Mac环境下,stable-diffusion搭建一个图文网站。
这里先放几张,利用SD
在本地生成的图片。是不是很哇噻。(放心,只要跟着这个教程走,你也可以生成属于你的好看的图片)
你能所学到的知识点
- 啥是
AIGC
推荐阅读指数 ⭐️⭐️⭐️⭐️- 何为
StableDiffusion
推荐阅读指数 ⭐️⭐️⭐️⭐️- 项目启动(很重要) 推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️
- 下载插件(也很重要)推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️
- 生成图片(最后但非常重要)推荐阅读指数 ⭐️⭐️⭐️⭐️⭐️
好了,天不早了,干点正事哇。
啥是AIGC
AIGC
指的是“Artificial Intelligence Generated Content”,也就是“人工智能生成内容”。
“人工智能生成内容”是指利用人工智能技术生成文本、图像、音频等各种形式的内容。这些内容通常是基于大规模数据训练的深度学习模型
生成的,比如自然语言处理模型、图像生成模型和语音合成模型等。人工智能生成内容在许多领域都有广泛的应用,比如语言翻译、音乐生成、虚拟现实和广告营销等。
常见的AIGC应用方向
现在市面上常见的AIGC应用有很多,以下是一些常见的应用以及使用的模型或技术:
文本生成
自然语言处理技术被广泛应用于文本生成任务中,常见的模型包括:
- {语言模型|Language Model}:用于生成符合语言规则的句子或段落。
- {翻译模型|Translation Model}:用于翻译不同语言的文本。
- {对话模型|Dialog Model}:用于生成符合上下文语境的对话。
- {摘要模型|Summarization Model}:用于生成文本的概括或摘要。
- {生成式模型|Generative Model}:用于生成新的文本,例如GPT系列模型。
市面上比较常用的产品如下。其实还有很多,记住搞定最头部的几个产品。
然后,针对AI
编程,其中Tabnine
强烈推荐。最近在用这个,感觉太好用了。
图像生成
深度学习技术在图像生成领域也得到了广泛的应用,常见的模型包括:
- {对抗生成网络|Generative Adversarial Networks},:(
GANs
)利用两个神经网络进行博弈的方式生成逼真的图像。 - {变分自编码器|Variational Autoencoder}(
VAE
):用于将图像编码为潜在向量并通过解码器生成逼真的图像。 - {流模型|Flow-based Model}:用于对图像的像素进行建模,然后从建模分布中采样生成图像。
音频生成
在音频生成领域,常见的模型包括:
- {自回归模型|Autoregressive Model}:用于预测下一个音频样本。
- {流模型|Flow-based Model}:用于对音频信号建模,然后从建模分布中采样生成音频。
WaveNet
:一种基于深度卷积神经网络的语音合成模型,可以生成逼真的语音。
何为Stable Diffusion
Stable Diffusion
,通常是指一种用于文本到图像合成的深度学习模型,它可以在给定文本描述的情况下生成高质量、多样化的图像。
具体来说,Stable Diffusion
是一个基于流程的生成模型,它在潜在空间中使用扩散过程来生成图像。在训练过程中,模型通过随机抽样生成中间图像序列
,然后根据这些中间图像生成最终的输出图像。这个生成过程是由一个潜在向量和一个标准正态分布组成的,这两个分布相加后经过一个可逆的非线性变换得到最终的图像。
Stable Diffusion
的优势在于它能够生成高质量、多样化的图像,并且可以在给定的文本描述下生成与之相关的图像。这使得它在计算机视觉、虚拟现实、游戏开发等领域具有广泛的应用。同时,它也为图像编辑和处理任务提供了新的可能性,例如物体移除和图像修补等任务。
总的来说,
Stable Diffusion
是一种有前途的文本到图像合成方法,有潜力在计算机视觉、虚拟现实和创意艺术等广泛领域中发挥作用。
后期,我们会有两篇专门针对
Stable Diffusion
的介绍文章。已经在规划中....
项目启动
这里我们参考Stable Diffusion
官网的配置流程。
但是,别看就这么点东西,但是里面的坑还是不少,所以,我就带着大家一起搭建网站。
这里有几点需要说明,因为这也算是一个科普文章,为了让大部分人,甚至是非科班的人,也可以搭建成功,有些大家可能感觉到很习以为常的概念也会有简单的介绍和讲解。
1.安装Homebrew
何为Homebrew
Homebrew
是一款 macOS
平台上的包管理器,可以帮助用户方便地安装和管理各种开源软件和工具。它的作用类似于 Linux
系统上的 apt-get
或者 yum
包管理器。如果熟悉前端开发的同学,你可以将它比做npm/yarn/PNPM
。
使用 Homebrew
,用户可以通过命令行界面快速地安装、更新和卸载各种软件,也可以管理软件包的版本,同时还可以解决各种依赖关系。例如,用户可以使用 Homebrew
安装 Git
、Node.js
、Python
等常用的开发工具和软件。
安装Homebrew
以下是在 macOS
上安装和使用 Homebrew
的步骤:
-
打开
macOS
终端应用程序,可以通过按下Command+Space
,然后输入Terminal
来搜索并打开终端。 -
在终端中运行以下命令,安装
Homebrew
:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
但是,在国内安装Homebrew
的时候,因为网络原因,所以这个官方命令很大可能是失败的。很快就能看到下面的提示信息
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
我们可以切换为国内源
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
-
在安装过程中,
Homebrew
会要求用户输入管理员密码,以便进行必要的系统权限操作。安装完成后,Homebrew
会自动添加一些必要的路径到系统的环境变量中。 -
安装完成后,可以通过运行
brew doctor
命令来检查安装是否正确。如果有任何警告或错误信息,可以根据提示进行修改。
如果上述步骤还是不成功,请私聊博主。我是你值得信赖的后盾。
2.下载对应的包
对应官网的第二步。
在第一步配置成功的基础上,将如下命令复制到终端,然后进行下载。
brew install cmake protobuf rust python@3.10 git wget
当然,如果你电脑中已经配置过上面的某些库,也可以将其从中删除掉。比方说,大家在项目开发中,都用git
,那就没有必要在将git
写入。同理,其他库也是如此。
然后,这一步是自动的,不需要你做其他的操作。
这里,我们从上帝视角来看看为什么要指定一些包。因为,这是在后期启动项目时,需要用到的工具。
我们直接从代码角度看。(因为,我已经把项目下载下来了,所以我就直接按照代码讲解了)
针对macOS
用户来讲,我们后期启动项目的文件就是webui.sh
文件。它会先从./webui-macos-env.sh
中获取自定义的参数,这个我们后面讲。
然后,在下面有一个bash
语法。
if [[ -z "${python_cmd}" ]]
then
python_cmd="python3"
fi
这段代码是一个 Bash
脚本中的条件语句
,主要作用是检查变量 python_cmd
是否为空值,如果是空值则将其赋值为字符串 "python3"
。
具体来说,[[ -z "${python_cmd}" ]]
是一个条件判断语句,其中 [[
和 ]]
是 Bash
的条件测试语法,-z
表示测试一个字符串是否为空。 ${python_cmd}
是一个变量,${}
用来引用变量。
因此,整个语句的意思是:如果 python_cmd
变量的值为空字符串,则执行后续的命令将其赋值为 "python3"
。如果 python_cmd
已经有了值,则不会执行条件语句中的命令。
3. 从github上下载对应的项目
找一个合适的文件目录,然后下载对应的项目。
这里就不在过多解释了哈。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
4. 下载和安装对应的模型
这里不是最重要的点,但是很麻烦,因为无论是官网还是Hugging Face
中提供的模型,不仅动辄4-5G,而且你下载的时候,还需要指定的🪜。
为了,让大家能够获得更好的安装体验,我已经把我下载好的比较好玩的模型都存放好了。
这是我从各种地方下载的大模型。然后,大家可以在后台回复 AI模型获取。
如果大家,有靠谱的🪜,也可以自行下载。
这里贴出官网的推荐的模型。
也可以在Hugging Face
找自己喜欢的模型
当然,也可以在C
站上下载基于大模型下的小模型。(这个先给大家贴出来,如何使用我们后期再讲)
好了,模型下载,咱们就先聊到这里,这里面学问很多,我们会单开一篇文章,详细讲讲。
5. 项目运行(这里很重要,不要分神)
按照官网的说法,我们运行cd stable-diffusion-webui
命令切换到stable-diffusion-webui
然后,通过./webui.sh
运行项目。(为什么要运行这个命令,我们之前介绍过了,这里不再赘述)。
第一步,没啥说明的,就一带而过
第二步
因为,我不是第一次运行该项目,所以执行速度会比第一次快。如果你是首次安装,在执行到第二步的时候,它会从利用git
下载对应的依赖。
它的会将指定的大模型的依赖下载到repositoires
中。如我们截图中箭头所指方向。
但是呢,在下载指定模型仓库的时候,会报错。
具体错误提示,我这里就不贴图了。然后,如何解决报错,我们可以移步到launch.py
文件中的prepare_environment()
中。
将对应github
地址的@xxx
去掉。这是想下载特定版本(commit
)xxx
的代码。
但是,你如果把这三个的其中一个复制到浏览器中,你会发现资源不存在。所以,我们直接就把对应的@xxx
去掉。下载全量的仓库信息。
第三步
见名知意,Create and activate python venv
。 该步骤就是创建和激活一个名为 venv的python环境。
在webui.sh
中有这行代码
if [[ ! -d "${venv_dir}" ]]
then
"${python_cmd}" -m venv "${venv_dir}"
first_launch=1
fi
它的大致意思就是,安装一个名为venv
的python
环境。
这里我们讲点小知识
使用conda激活特定版本的Python
打开终端或命令提示符窗口。
输入以下命令并按Enter
键,以激活指定版本的Python环境
:
conda activate <环境名称>
其中,<环境名称>是要激活的Python
环境的名称。
例如,如果要激活名为py37
的Python 3.7
环境,可以使用以下命令:
conda activate py37
激活环境后,可以使用以下命令来验证已经激活了正确的Python
版本:
python --version
如果一切正常,这个命令应该显示已经激活的Python版本号
。
请注意,必须已经安装了要激活的Python环境。如果还没有安装该环境,请先使用conda create
命令创建一个新的环境,并在创建时指定要安装的Python版本
。
例如,要创建一个名为py37
的Python 3.7
环境,请使用以下命令:
conda create --name py37 python=3.7
这将创建一个新的Python 3.7
环境,并将其命名为py37
。完成后,可以使用上述conda activate
命令来激活该环境。
第四步,主要是代码运行,这里也不做解释了。
重要参数(很重要)
可以看到,在控制台中,输出了一段代码。
Launching Web UI with arguments: --skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate
就是以某些参数,来启动了项目。
我们就来逐个解释下每个参数的含义:
--skip-torch-cuda-test
:这个参数在运行PyTorch
库时跳过CUDA
兼容性检查。如果你没有兼容的CUDA设备或想加快启动时间,这可能很有用。--upcast-sampling
:这个参数启用了一种称为“upcasting”
的采样技术。Upcasting
可以用来减少随机梯度下降中梯度估计的方差,这有助于提高收敛性和训练稳定性。--no-half-vae
:这个参数禁用了使用16位精度的VAE
(变分自动编码器)模型。VAE模型
用于无监督学习和特征提取,使用16位精度可以提高训练速度和内存使用。--use-cpu
:这个参数强制使用CPU而不是GPU进行计算。如果没有兼容的GPU或想节省电力,这可能很有用。interrogate
:这可能是一个位置参数,指定正在使用上述命令行参数启动的程序或脚本的名称或路径。
如果你想修改参数的话,可以在webui-user.sh
中的COMMANDLINE_ARGS
进行修改。
这里附上官网的一些常规参数。
命令行参数 | 解释 |
---|---|
--xformers | 使用xformers 库。极大地改善了内存消耗和速度。Windows 版本安装由C43H66N12O12S2 维护的二进制文件 |
--force-enable-xformers | 无论程序是否认为您可以运行它,都启用 xformers 。不要报告运行时错误。 |
--opt-split-attention | Cross attention layer optimization 优化显着减少了内存使用,几乎没有成本(一些报告改进了性能)。 黑魔法。 默认情况下 torch.cuda ,包括 NVIDIA 和 AMD 卡。(新版默认开启) |
--disable-opt-split-attention | 禁用上述优化 |
--opt-split-attention-v1 | 使用上述优化的旧版本,它不会占用大量内存 (它将使用更少的 VRAM,但会限制您可以制作的最大图片大小)。 |
--medvram | 通过将稳定扩散模型分为三部分,使其消耗更少的 VRAM ,即 cond (用于将文本转换为数字表示)、first_stage (用于将图片转换为潜在空间并返回)和 unet (用于潜在空间的实际去噪),并使其始终只有一个在 VRAM 中,将其他部分发送到 CPU RAM 。降低性能,但只会降低一点-除非启用实时预览。 |
--lowvram | 对上面更彻底的优化,将 unet 拆分成多个模块,VRAM 中只保留一个模块,破坏性能 |
*do-not-batch-cond-uncond | 防止在采样过程中对正面和负面提示进行批处理,这基本上可以让您以 0.5 批量大小运行,从而节省大量内存。 降低性能。 不是命令行选项,而是使用 --medvramor 隐式启用的优化--lowvram 。 |
--always-batch-cond-uncond | 禁用上述优化。 只有与 --medvram 或--lowvram 一起使用才有意义 |
--opt-channelslast | 更改 torch 内存类型,以稳定扩散到最后一个通道,效果没有仔细研究。 |
无法使用 CUDA 加速
在解释原因之前我们先来讲讲啥是CUDA
加速。
何为CUDA加速
CUDA加速
是指使用NVIDIA
公司的CUDA
(Compute Unified Device Architecture
)技术,通过显卡GPU进行计算加速。
一般来说,传统的计算机CPU
只能处理有限的计算任务,而GPU
拥有更多的核心和更高的并行处理能力,能够同时处理大量的计算任务。CUDA
技术利用GPU的并行处理能力,将一部分计算任务转移到GPU中进行处理,从而提高计算速度和效率。
通过使用CUDA加速
,一些需要大量计算的应用程序(如科学计算、数据分析、深度学习、图形渲染等)能够获得数倍甚至数十倍的计算速度提升。同时,由于显卡GPU的价格相对于传统的CPU较为亲民,因此使用CUDA技术也能降低计算成本。
但是,理想很丰满,现实很骨感。现代的Mac笔记本电脑(如MacBook Air
,MacBook Pro
等)都是基于英特尔(Intel
)或者Apple
自研的M系列芯片(如M1芯片)的,这些芯片不支持NVIDIA CUDA技术。
所以,在我们启动SD
后,无法利用CUDA
加速。也就是说,在配置启动参数时,--use-cpu
是必须要配置的。不然你的项目不能启动和使用。
但是,如果你非要使用
CUDA加速
。为了实现这一点,你需要安装一个第三方软件包
,如macOS版的CUDA驱动程序
和CUDA Toolkit
,以便将CUDA代码编译为适用于Mac的二进制文件。同时,你需要安装一张支持CUDA技术的NVIDIA显卡
,并在Mac笔记本上安装相应的驱动程序。
注意,这种方法可能会对你的电脑造成不稳定,所以请确保在操作前备份你的数据,并严格遵循安装说明。
上述的桎梏是由于本地启动项目,后期我们也会将项目部署到云服务器上,然后就可以利用CUDA
加速体验更流畅的开发体验。
下载插件
安装中文插件
由于StableDiffusion
是国外开源项目, 有一些专业术语,在英文环境下,很让人抓狂。所以,我们可以利用一个开源库,将项目本地化处理。
这里,我们使用stable-diffusion-webui-localization-zh_CN对项目进行本地化操作。
我们切换到项目的extensions
,然后利用git
进行资源的获取。
git clone https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN.git
如何使用
确保扩展已经正确加载
- 重启webUI以确保扩展已经加载了
- 在
Settings
选项卡,点击 页面右上角的 橙色Reload UI
按钮 刷新扩展列表
- 在
Extensions
选项卡,确定已勾选本扩展☑️;如未勾选,勾选后点击橙色按钮启用本扩展。
选择简体中文语言包(zh_CN)
-
在
Settings
选项卡中,找到User interface
子选项 -
然后去页面最底部,找到 Localization (requires restart) 小项,找到在下拉选单中选中 zh_CN (如果没有就按一下🔄按钮),如图
- 然后按一下 页面顶部左边的 橙色
Apply settings
按钮 保存设置,再按 右边的 橙色Reload UI
按钮 重启webUI
在重启项目后,相关的文字就变成了中文。如下是我本地的效果图。
安装C站助手
这时候祭出一个大杀招 - C站。
在这里你可以选择大模型,也可以选择基于大模型下的各种小模型。
然后,如何使用,我们稍后介绍。
安装步骤
- 选择扩展 Tab。
- 点击从网址安装。
- 填写网址:
https://github.com/butaixianran/Stable-Diffusion-Webui-Civitai-Helper
。 - 点击安装按钮。
配置插件
- 在扩展 Tab 下,点击已安装。
- 确保
Civitai Helper
处于勾选状态 - 然后点击应用并重启。
这样C站就配置好了。
其实还有很多插件可以辅助我们生成图片。有很多,这里就不展开说明。后期,我们也会单开一篇文章,讲讲比较常见的插件。
生成图片(最后但非常重要)
模型下载
既然,我们已经配置好C站助手
,那我们就好好利用这个插件来生成比较唯美的图片。
- 点击这个
C站助手
Tab。 - 将喜欢的 C站模型链接放入
Civitai
网址框中:https://civitai.com/models/8217?modelVersionId=12998
。 - 点击从网址获取模型信息。
- 这一步是显示模型名称
- 选择
/
作为子文件夹。 - 在模型版本中选择最新的版本。
- 点击下载模型,然后系统会开始下载该模型。
重启一下UI,就可以在 ckpt
下拉框中出现新添加的模型了。
开始炼丹
从C站
指定模型中,挑选你想生成的图片信息。然后点进去。
从截图中,可以看到右侧有很多参数。
然后,你就对应的参数复制到指定的位置。
然后,你就等待出图就完事了。
由于,我们是使用CPU
进行画图,所以所用时间和你电脑配置有关系。然后相比GPU
生成肯定慢。只需静静等待就完事了。
后记
分享是一种态度。
参考资料:
全文完,既然看到这里了,如果觉得不错,随手点个赞和“在看”吧。
本文正在参加「金石计划」