在图像生成领域最牛的两个AI工具非Midjourney和StableDiffusion莫属了。Midjourney是收费的,主要以艺术、丰富的色彩见长;而StableDiffusion是开源的,它更擅长处理细节,生成的图像更逼真,尤其擅长生成人像、商品图像,能以假乱真。
这篇文章主要介绍一下如何在Windows/Linux环境下搭建StableDiffusion训练环境。
硬件要求
搭建StableDiffusion训练环境,首先你要有一张Nvidia显卡,最好内存超过16G,如果是自己搭建主机的的话,建议选择 RTX3090、RTX3090ti、RTX4080、RTX4090这类卡。
另外,硬盘最好选大此,建议最少 1T 空间,因为一般训练好的 StableDiffusion 模型都要4G左右,训练数据就更多了。
操作系统选择Windows、Linux都可以,如果是Linux建议使用Ubuntu22.04。
安装N卡驱动
当硬件准备好后,可以从这里下载N卡驱动,根据你的操作系统和N卡类型选择合适的驱动即可。如果你的N卡是我上面建议的几款,那你可以直接下载最新的驱动程序。
驱动的安装非常简单,按照提示一步步操作即可,这里就不详述了。
安装Miniconda
Miniconda是用于隔离不同的Python环境的。其实搭建StableDiffusion环境,并不需要安装Miniconda。但如果你安装了Miniconda,可以让你更方便的安装一些依赖包,同时也方便你切换不同的Python版本。
因此,我建议你在开始搭建StableDiffusion时将Miniconda安装上。Miniconda的下载地址和基本使用方法可以看这篇文章。
搭建StableDiffusion
前面的环境准备好后,接下来我们就可以开始搭建StableDiffusion环境了。
首先你要知道在 github 上有好几个StableDiffusion项目:
- AUTOMATIC1111/stable-diffusion-webui,该项目是StableDiffusion-2.1的UI版本,它依赖于下面的StableDiffusion-2.1
- Stability-AI/stablediffusion,这个项目是 StableDiffusion-2.1
- CompVis/stable-diffusion,该项目是StaleDiffusion-1
我们在部署时,最好选择 stable-diffusion-webui 这个项目,主要原因是这个项目有可视化的操作界面,使用起来比较方便。而我们下面讲的也都是关于 stable-diffusion-webui 的部署。
要部署 stable-diffusion-webui,第一步先使用 git 命令将它从 github 上下载下来:
1 | git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git |
之后,在Windows下运行:
1 | webui-user.bat |
而在Linux下,需要执行下面的命令:
1 | ./webui-user.sh |
在执行webui-user脚本时,在国内一般都会出错。一方面是有一些依赖包在国内安装不上,另一方面是使用git下载代码时会出错,这些问题该如何解决呢?
对于前一种情况,建议挂上梯子下载。而后一种则需要修改 stable-diffusion-webui 中的launch.py 文件。具体的修改位置如下:
1 | ... |
将上面的代码修改为:
1 | ... |
上述修改的作用是不让git对下载的源码进行hash值比较,这块的代码逻辑应该是有些问题。
做了上述修改后,可能运行脚本时还会报错,此时我们可以手工下载对应的源码到指定目录下,如:
1 | git clone https://github.com/Stability-AI/stablediffusion.git "stable-diffusion-webui/repository/stable-diffusion-stability-ai" |
当手工将需要的所有依赖库源码安装好后,StableDiffusion就可以正常启动了。
StableDiffusion启动后,它的默认操作地址为: http://127.0.0.1:7860
至此,我们就将StableDiffusion环境搭建好了。
小结
总的来说,无论是搭建Stable Diffusion,还是搭建其它的AI工具环境,如Whisper、Segment-Anything都不会一凡风顺,或多或少的都会出现这种或那种环境问题。当遇到问题时,一定不要着急,慢慢来,因为这是我们学习AI的必经之路。
当你装过几个AI工具之后,就有了经验,而这些经验正是我们进一步学习AI的重要一环。