stable diffusion-部署
sd很好很强大,关键还开源,可本地化部署。网上的部署手册满天飞,这里只简单记录。
- python:作为新手对python版本和虚拟环境有一些困惑,经历了一些填坑过程。为了之后的兼容,装了python3.10.10。另外,sd的虚拟环境可以用source %sd%/venv/bin/activate激活,来查看、修改sd的python组件。用deactivate命令退出
- 安装:直接git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git,然后到目录里面运行./webui.sh,sd会自己安装需要的组件。有些组件会需要较长时间。
- 组件:sd运行必须的组件它自己会去安装,安装慢的的解决方法大概有以下几种:
- github加速:如gfpgan等。修改launch.py,找到gfpgan_package=os.environ.get('GFPGAN_PACKAGE',"git+https://github.com/TencentARC/GFPGAN.git@...")改成:gfpgan_package=os.environ.get('GFPGAN_PACKAGE',"git+https://ghproxy.com/https://github.com/TencentARC/GFPGAN.git@...")
- pip加速:使用国内镜像
- 安装网络扩展:想要从网络安装扩展,需要带--enable-insecure-extension-access启动,然后在web上装,或者直接在extensions目录下git clone https://github.com/...,然后再正常启动
- extra中需要的模型:本地没有时sd会自动从网络下载,并在命令行打出日志从哪下载到哪,这时可以用迅雷等工具去下,然后手工放到目标目录。
- 汉化:安装插件,或者从https://github.com/VinsonLaro/stable-diffusion-webui-chinese.git中拿到汉化文件(chinese-all-0306.json、chinese-english-0306.json)放到stable-diffusion-webui\localizations目录下,然后在设置、user interface中选择即可。
- controlnet:这个复杂一点,需要先安装插件(https://github.com/Mikubill/sd-webui-controlnet.git),然后下载模型文件(*.pth)放到对应目录(stable-diffusion-webui/extensions/control-net/models)。
- 启动:sd的启动命令(webui.sh)参数很多,可以把参数放到webui-user.sh文件的export COMMANDLINE_ARGS=""中,也可以在执行时指定。我用到的如下:
- --listen:将侦听0.0.0.0地址,从网络可以访问
- --port 7861:修改默认端口为7861
- --xformers:这个功能还没用到,加了这个参数会自动安装xformers模块
- --device-id 1:使用第2张显卡。默认为0,也就是第一张显卡。据说要设置环境变量CUDA_VISIBLE_DEVICES=0,1,2,3...。在webUI.py中设置:os.environ[CUDA_VISIBLE_DEVICES]="0,1,2,3";或者直接export这个环境变量
- 备忘:
- git版本过低,报错C参数不支持,升级git
- 使用CLIP反推时报错:使用该功能会自动下载”model_base_caption_capfilt_large.pth“等文件,下载完成后报“downloading default CLIP interrogate categories: FileExistsError”,原因是还需要interrogate相关文件。下载解压后连目录一起放到sd的根下,然后删除interrogate_tmp文件夹即可。还是网络问题。具体参看:https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/7193。