1. 前言
最近在研究如何使用Controlnet细粒度控制Stable Diffusion生成满意的图片,无奈自己本地的显卡只有6G的显存,而Controlnet的Openpose功能需要10G以上的显存才能正常出图。于是只能租用GPU云服务器并将SD模型部署在服务器上,然后再通过本地浏览器访问。
2. 关于云服务器的选择
推荐这篇文章:GPU云服务器平台对比!哪家最值得推荐?
自己使用的是AutoDL,但是并没有使用它家自带的Stable Diffusion模型,还是自己从头开始部署。不太推荐这家,原因是如果使用按量计费,关机后经常会出现无卡可用的情况,尤其是3090这种热门卡。
3. 关于机器的选择
以AutoDL为例,注册完成后来到以下界面选机器:
一般来说,现阶段3090从价格、显存大小各个方面综合来看是比较好选择,当然也是经常被一抢而空。
关于计费方式,只推荐按量计费,很多有优惠的平台可以用1~2块/小时租到3090的显卡。除非是需要训练大模型,只是自己用的话不推荐包日/周/月,那价格1年自己都快能买一块了。按量计费的缺点就是关机后可能会因为空闲显卡不足无法正常开机。
AutoDL自带了NovelAI,但是实际使用起来可能会有各种错误,其中最多的是Python版本的问题。我这个时间点,它们的机器上自带的都是Python3.8,但是最新版本的stable-diffusion需要3.10的环境,所以不推荐用它自带的,而是选择如下的配置:
这里需要提一下,一些出场早一点的显卡可能会不让使用CUDA11.8的环境(如RTX3080),所以这里还是推荐使用3090及以后的显卡。
4. 部署Stable Diffusion
Python和CUDA
一般GPU服务器已经自带Python和显卡驱动,建议使用服务器厂商自带的,否则后续会出现很多问题。
检查pip源
这一步很重要。Stable Diffusion的更新速度很快,但是有一部分厂商的机器所使用的的pip源没有及时更新,没有SD所需要的一些依赖的最新版本,就会导致一直报错。
以autodl为例,我的机器默认使用了华为源,导致自己在后续安装依赖的时候facexlib和numpy一直找不到最新的版本,最后换成阿里源才成功解决,同时换源后记得再更新一下pip的版本。
具体的操作方式见:pip换源 -pip更换国内镜像源
下载Stable Diffusion web UI
在终端中输入以下命令,这里推荐部署在数据盘而不是系统盘,因为后续还需要下载各种模型,占用空间较大。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
如果连接超时,建议多试几次,因为git的连接有时很不稳定。
尝试运行Stable Diffusion
下载完成后,进入项目根目录,执行命令:
cd stable-diffusion-webui
COMMANDLINE_ARGS="--medvram --always-batch-cond-uncond --port 6006" REQS_FILE="requirements.txt" python launch.py
其中launch.py是执行脚本,medvram和always-batch-cond-uncond都是显存优化的参数;
port 6006指定进程运行在机器的6006端口上。因为autodl自带了一个对外暴露的服务,端口号为6006,所以这样设置。当然,也有其他的方法,会在后面说明;
最后的REQS_FILE是运行所需要的的依赖,命令执行后会自动安装依赖。
使用命令手动下载依赖
如果租用的是国内节点的云服务器,大概率会碰到各种连接失败和超时的问题。比如:
The TLS connection was non-properly terminated
如果出现这种问题推荐手动下载。
基础模型
首先在主目录下创建repositories目录:
mkdir repositories
Stable Diffusion web UI有四个依赖模型,需要分别下载。
StableDiffusion:
git clone https://github.com/CompVis/stable-diffusion.git repositories/stable-diffusion
taming-transformers:
git clone https://github.com/CompVis/taming-transformers.git repositories/taming-transformers
CodeFormer:
git clone https://github.com/sczhou/CodeFormer.git repositories/CodeFormer
BLIP:
git clone https://github.com/salesforce/BLIP.git repositories/BLIP
安装完成后再次执行命令,会自动安装剩下的依赖,当然后续也可能因为连接超时而报错:
COMMANDLINE_ARGS="--medvram --always-batch-cond-uncond --port 6006" REQS_FILE="requirements.txt" python launch.py
python库依赖
在安装依赖的时候也可能会因为网络而卡住,尤其是gfpgan库,这时候建议使用pip install命令手动安装依赖。如果出现类似以下错误:
No matching distribution found for facexlib>=0.2.5
这是因为无法从pip中获取最新版本的库,建议升级一下pip,并且检查一下pip源是否太久没更新。
本机下载依赖并上传到服务器
如果网络实在无法连接,则只能用本机下载模型并上传到服务器上。
在Stable Diffusion的依赖中有一个v1-5-pruned-emaonly.safetensors模型需要从huggingface网站中下载,但是终端的下载速度巨慢。按量计费每分每秒都是money,所以更推荐本地下载后直接上传到服务器。这里以autodl的服务器为例。
下载模型
网址:
https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.safetensors
上传服务器
常规可以使用Xshell的方式,详情可以参加文档:AutoDL数据上传
我这里介绍通过阿里云盘(因为没有限速)的方式上传到autodl的服务器。
-
模型上传至阿里云盘,如果没有账号,需要先注册。
-
在控制台界面(开机状态),打开AutoPanel:
- 打开公网网盘,选择阿里云盘,下方会出现一个二维码,需要在手机上下载阿里云盘的app然后扫描并授权。
- 点击下载,使用服务器从云盘中下载模型:
下载后的文件存放在数据盘的根目录中,进入数据存放的文件夹后,将模型移动到项目主目录:
mv v1-5-pruned-emaonly.safetensors stable-diffusion-webui/
后续其他模型都可以用这种方式上传至服务器。
5. 运行
前面所有依赖安装完毕后,在项目主目录下再次执行命令:
COMMANDLINE_ARGS="--medvram --always-batch-cond-uncond --port 6006" REQS_FILE="requirements.txt" python launch.py
如果出现以下输出则表示运行成功:
使用autodl的情况下,在控制台中点击自定义服务:
后面会出现提示,让进行实名,因为监管进一步收紧,如果不希望实名建议换其他服务器厂商。完成实名后就可以在本地浏览器中操作Stable Diffusion作画了。
界面如下:
Controlnet使用成功!文章来源:https://www.toymoban.com/news/detail-411747.html
文章来源地址https://www.toymoban.com/news/detail-411747.html
6. 参考
- https://zhuanlan.zhihu.com/p/386821676
- https://zhuanlan.zhihu.com/p/574200991
到了这里,关于在GPU云服务器中部署Stable Diffusion web UI的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!