一、前言
本地部署指的是将软件应用程序或服务部署在本地计算机或本地服务器上,而不是使用云服务或远程服务器。以下是一些常见的原因,解释为什么选择本地部署:
数据隐私和安全性:对于某些敏感数据或关键业务功能,保持数据在本地环境中更有保障。本地部署可以提供更高的控制权和数据安全性,以满足合规性要求。
高速和低延迟:对于需要快速响应和低延迟的应用程序,本地部署通常可以提供更快的性能。由于数据和计算资源都位于本地,可以减少与远程服务器之间的网络延迟。
网络限制和可靠性:某些地区或组织可能面临网络限制或不稳定的互联网连接。在这种情况下,本地部署可以提供更可靠的解决方案,确保应用程序的可用性和连续性。
自定义需求:本地部署可以更容易地满足特定的定制需求。根据组织的具体要求,可以灵活地配置和定制本地部署的应用程序,以适应特定的业务流程和工作流程。
成本控制:虽然云服务提供了灵活的计算资源和付费模型,但对于长期运行的应用程序,本地部署可能具有更可控的成本。一次性购买和配置本地服务器可能更经济实惠,并且在长期使用中,可能比云服务更具成本效益。
因为没有生成数量的限制,不用花钱,不用被NSFW约束,生成时间快,不用排队,自由度高很多,可以调试和个性化的地方也更多。
NSFW是"Not Safe for Work"的缩写,意为“不适合工作环境”。它用于描述那些可能包含裸露、色情、暴力、血腥或其他令人不适的内容的图像、视频、文字或链接。NSFW约束通常用于在互联网上警告用户某个内容不适合在公共或工作场所打开,以避免触犯道德、引起不适或违反组织的政策。
NSFW约束的目的是提醒用户注意内容的性质,并使其可以自主选择是否查看或接触这些内容。这种约束常见于社交媒体、在线论坛、电子邮件或其他互联网平台上,以确保用户能够遵循适当的使用规范,并保持工作环境的适宜和友好。
需要注意的是,不同的组织或平台对于NSFW的定义和约束标准可能会有所不同。一些平台会使用过滤机制或标记机制来警示用户,而其他平台可能会完全禁止或限制NSFW内容的发布和传播。因此,在使用互联网时,用户应该遵守相应的使用规则和平台政策,并对自己的行为负责。
如果说,会用各大在线的AI绘图平台来生成图像的话,算是AI绘画的小学生级别。那么,如果会使用本地化部署来运行AI绘画的话,那就已经算得上是高中毕业,进入成年啦。等你能够使用AI绘图指哪打哪,想怎么画怎么画,那就已经是大学毕业,学成归来的牛逼人物啦。
二、本地化部署的要求
本地化部署运行虽然很好,但是也有一些基本要求:
需要拥有NVIDIA显卡,GT1060起,显存4G以上。(已经不需要3080起,亲民不少)
操作系统需要win10或者win11的系统。
电脑内存16G或者以上。
最好会魔法上网,否则网络波动,有些网页打不开,有时下载很慢。
我的电脑配置供大家参考,Win11,12代I7,NVIDIA RTX3060 6G,16G。生成一张20step的图大概10-20s(若使用更高性能的电脑,生成速度更快。)
三、使用的项目Stable diffusion WebUI项目
Stable diffusion大家都知道,是当前最多人使用且效果最好的开源AI绘图软件之一。
不过,Stable diffusion项目本地化的部署,是纯代码界面,使用起来对于非程序员没那么友好。
而Stable diffusion WebUI,是基于Stable diffusion 项目的可视化操作项目。
通过可视化的网页操作,更方便调试prompt,及各种参数。
同时也附加了很多功能,比如img2img功能,extra放大图片功能等等。
四、电脑环境配置
4.1 安装Anaconda
这个是用来管理Python版本的,他可以实现Python的多版本切换。安装时按默认的一路next就行。
这里就不再介绍了。
4.2 看版本
打开conda prompt,输入conda -V 弹出版本号即为正确安装:
显示conda版本,那就对了!
4.3 配置库包下载环境,加快网络速度
替换下载库包地址为国内的清华镜像站。
执行下面:
conda config --set show_channel_urls yes
生成.condarc 文件
在C:\Users\XiaoWang下用记事本打开并修改.condarc文件。
把下面的内容全部复制进去,全部覆盖原内容,ctrl+s保存,关闭文件:
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
-
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
-
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
运行conda clean -i 清除索引缓存,以确保使用的是镜像站的地址。
切换成其他盘来创建Python环境:
如果继续操作,会把整个项目创建在C盘,而很多人C盘容量紧张,可以创建在其他盘,比如D盘。
输入D: 然后回车。
后来才发现这一步并不能把项目装在D盘,他仍然是在C盘,不过没关系,他很小,不会占用太多空间,那咱继续往下操作。
4.4 创建环境
创建Python 3.10.6版本的环境:
运行下面语句,创建环境。
conda create --name stable-diffusion-webui python=3.10.6
系统可能会提示y/n, 输入y,按回车即可。
显示done,那就完成了。已经创建了一个新的项目。
4.5 激活环境
输入conda activate stable-diffusion-webui 回车。
设置pip的默认库包下载地址为清华镜像。
每一行输入后回车,等执行完再输入下一行,再回车。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
不报错就是完成了。
4.6 安装git
安装git,用来克隆下载github的项目,比如本作中的stable diffusion webui
前往git官网git-scm.com/download/win
下载好后,一路默认安装,next即可。开始菜单-输入“git”,找到git cmd。
打开并输入下面指令:
4.7 安装cuda
cuda是NVIDIA显卡用来跑算法的依赖程序,所以我们需要它。打开NVIDIA cuda官网,developer.nvidia.com/cuda-toolkit-archive
这里有人可能会打不开网页,如果打不开,请用魔法上网。
你会发现有很多版本,下载哪个版本呢?
回到一开始的conda的小窗,输入nvidia-smi,查看你的cuda版本
比如我的是11.7的版本,我就下载11.7.0的链接。
然后安装自己的系统选择win10或者11,exe local,download下载完后安装,这个软件2个G,可以安装在C盘以外的地方。比如D盘。好了,完成这步,电脑的基础环境设置终于完事了。
下面开始正式折腾Stable diffusion了。
五、Stable diffusion环境配置
5.1 下载Stable diffusion源码
确认你的conda黑色小窗显示的是:
(stable-diffusion-weibui)D:\>
如果不是,则输入D: 按回车。(当然你也可以放在其他你想放的盘的根目录里面。不建议放在C盘,因为这个项目里面有一些模型包,都是几个G几个G的,很容易你的C盘就满了,其他盘容量在10G以上的就都行。放其他盘,则输入比如E: F: G: 等,然后回车即可。)
再来克隆Stable diffusion webui项目(下面简称sd-webui)
接着执行:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
直到显示done即可。
注意,现在克隆的本地地址,就是下面经常提到的“项目根目录”。比如,我的项目根目录是D:\CodeProject\stable-diffusion-weibui
5.2 下载Stable diffusion的训练模型
在huggingface.co/CompVis/stable-diffusion-v-1-4-original/tree/main
点击file and versions选项卡,下载sd-v1-4.ckpt训练模型。
(需要注册且同意协议,注册并同意协议之后即可下载)
注:这个模型是用于后续生成AI绘图的绘图元素基础模型库。
后面如果要用waifuai或者novelai,其实更换模型放进去sd-webui项目的模型文件夹即可。
我们现在先用stable diffusion 1.4的模型来继续往下走。
下载好之后,请把模型更名成model.ckpt,然后放置在sd-webui的models/stable-diffusion目录下。比如我的路径是D:\stable-diffusion-webui\models\Stable-diffusion
5.3 安装GFPGAN
这是腾讯旗下的一个开源项目,可以用于修复和绘制人脸,减少Stable diffusion人脸的绘制扭曲变形问题。
https://github.com/TencentARC/GFPGAN
把网页往下拉,拉到readme.md部分,找到V1.4 model,点击蓝色的1.4就可以下载。
下载好之后,放在sd-webui项目的根目录下面即可,比如我的根目录是D:\CodeProject\stable-diffusion-weibui
5.4 准备开启运行AI绘图程序sd-webui
输入:
cd stable-diffsion-webui
进入项目的根目录。如果你安装在其他地方,也是同理。
输入盘符名称加上冒号(如c: d: e:)即可进入磁盘根目录。
输入cd…即可退出至上一级目录,输入cd + abc即可进入abc文件夹。(如cd stable-diffusion-webui,前提是你有相应的文件夹,否则会报错)
总之,要进入sd-webui的项目根目录后,才能执行下面的指令,否则会报错。
webui-user.bat
然后回车,等待系统自动开始执行。
还是报错:
国内的镜像源还没有更新到 gradio==3.32,所以需要科学上网,手动去pypi官网下载whl,然后通过whl下载即可。
https://pypi.org/project/gradio/3.32.0/#files
将gradio-3.32.0-py3-none-any.whl复制到项目所在目录,输入如下安装指令:
pip --default-timeout=100 install gradio-3.32.0-py3-none-any.whl
安装成功!
但是我们运行的时候还是出错:
这个是镜像源的bug:是镜像源的bug,删除pip.ini 可以解决。
这个文件一般在C:\Users\xxx\AppData\Roaming\pip\pip.ini
再次运行:
开始顺利下载!
直到系统提示,running on local URL: http://127.0.0.1:7860
这就代表,你可以开始正式使用AI绘图了!
注意:
这一步可能经常各种报错,需要耐心和时间多次尝试。
不要关闭黑色小窗,哪怕它几分钟没有任何变化。
如果提示连接错误,可能需要开启或者关闭魔法上网,再重新执行webui-user.bat命令。
六、测试
我们简单demo一下:
我们换一下模型:
(8k, best quality, masterpiece:1.2), (realistic, photo-realistic:1.37), ultra-detailed, 1 girl,cute, solo,beautiful detailed sky,detailed cafe,night,sitting,dating,(nose blush), sitting before a table, table with afternoon tea, (smile:1.15),(closed mouth) medium breasts,beautiful detailed eyes,(collared shirt:1.1), daytime, sunshine,business attire, rain,white lace, (long hair:1.4),gold hair NovaFrogStyle, uniform, white skin,cinematic light,sunshine,street light, (av actress: 4), full body image,<lora:koreanDollLikeness_v15:0.33>, (tea table:1),(hand bag:1),<lora:japaneseDollLikeness_v10:0.33>
Negative prompt: paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, (outdoor:1.6), manboobs, backlight,(ugly:1.331), (duplicate:1.331), (morbid:1.21), (mutilated:1.21), (tranny:1.331), mutated hands, (poorly drawn hands:1.331), blurry, (bad anatomy:1.21), (bad proportions:1.331), extra limbs, (disfigured:1.331), (more than 2 nipples:1.331), (missing arms:1.331), (extra legs:1.331), (fused fingers:1.61051), (too many fingers:1.61051), (unclear eyes:1.331), bad hands, missing fingers, extra digit, (futa:1.1), bad body, NG_DeepNegative_V1_75T,pubic hair, glans
ENSD: 31337, Size: 512x768, Seed: 328582505, Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Clip skip: 2, Model hash: 3a17d0deff, AddNet Enabled: True, AddNet Model 1: nainai(3311b5bd9ff7), AddNet Module 1: LoRA, AddNet Weight A 1: 0.55, AddNet Weight B 1: 0.55