搞了两张3060显卡不知道干什么用,于是想到了本地部署生图,倒腾了将近一天,终于是部署好了,参考教程【保姆级教程】Linux上部署Stable Diffusion WebUI和LoRA训练,拥有你的专属图片生成模型_stable diffusion linux-CSDN博客,成功上线到我的blog中,但是为了防止有坏蛋干坏事,所以我设置了验证,联系我获取登录账密哦。

在部署和使用 Stable Diffusion WebUI 过程中,我先后遇到了代理协议冲突、Lora 模型识别异常、多显卡负载不均、生成图片灰蒙蒙等一系列问题,每一步都踩过典型 “坑点”,最终通过针对性配置逐一解决。以下是完整问题复盘与解决方案总结。

一、代理配置:从 “socks5h 协议报错” 到 HTTP 代理适配

1. 初始问题:WebUI 启动报 “Unknown scheme for proxy URL socks5h”

在通过 Clash 代理下载 CLIP 模型时,即使配置了混合端口(Mixed Port 7890),启动 WebUI 仍报错 “ValueError: Unknown scheme for proxy URL URL ('socks5h://127.0.0.1:7890')”。问题根源:Clash 的 clashctl on 命令会自动注入 socks5h 协议变量,而 WebUI 依赖的 httpx 库不兼容该协议;同时混合端口默认优先使用 socks5h,导致代理配置与 WebUI 需求冲突。

2. 解决过程:关闭自动注入 + 手动指定 HTTP 代理

  • 第一步:停止 Clash 自动代理注入

    执行 clashctl off 清除 socks5h 残留变量,再通过 unset HTTP_PROXY HTTPS_PROXY ALL_PROXY 彻底删除终端代理缓存。

  • 第二步:启用 Clash HTTP 端口(替代混合模式)

    在 Clash 配置中关闭混合端口(注释 mixed-port: 7890),新增 port: 7890 启用纯 HTTP 代理,避免协议冲突。

  • 第三步:手动配置代理变量并启动 WebUI

    执行 export HTTP_PROXY="http://127.0.0.1:7890" 配置代理,再通过 ./webui.sh -f 启动,成功解决模型下载报错。

二、Lora 模型:从 “文件名错误” 到 WebUI 识别

1. 初始问题:wget 下载 Lora 后 WebUI 无法识别

通过 wget https://civitai.com/api/download/models/96736?type=Model 下载 Lora 模型后,文件名为 96736?type=Model,无 .safetensors 后缀,WebUI 左侧 Lora 面板未显示该模型。问题根源:CivitAI 下载链接含特殊字符 ?wget 默认以 URL 最后一段作为文件名,导致缺失 WebUI 识别必需的 .safetensors 后缀。

2. 解决过程:重命名 + 规范下载命令

  • 紧急处理:手动重命名文件

    models/Lora 目录下执行 mv '96736?type=Model' 80year03.safetensors(文件名参考下载日志中的 filename="80year03.safetensors"),刷新 WebUI 后成功识别。

  • 长期优化:下载时指定文件名

    后续用 wget -O 目标名.safetensors 下载链接 命令,例如 wget -O bl5_v10.safetensors "https://civitai-delivery-worker-prod.xxx",直接生成带正确后缀的文件,避免二次操作。

三、多显卡配置:从 “单卡满载” 到双 RTX 3060 协同

1. 初始问题:双 RTX 3060 仅主卡(GPU 0)工作

配置 export CUDA_VISIBLE_DEVICES=0,1 后,启动 WebUI 仍只有 GPU 0 处于 100% 负载(显存占用 6GB+),GPU 1 始终空闲(显存占用 2.2GB,使用率 0%)。问题根源

  • WebUI 默认不自动支持多卡并行,CUDA_VISIBLE_DEVICES=0,1 仅让程序 “看到” 双卡,不会主动拆分负载;

  • 非官方 WebUI 分支(v1.10.1)缺失 --multi-gpu 参数,无法通过常规参数启用多卡;

  • GPU 1 被无关 python3.12 进程占用(2290MiB 显存),无剩余空间加载模型层。

2. 解决过程:清理进程 + 强制模型拆分

  • 第一步:清理 GPU 1 占用进程

    执行 ps -p 1616 -o cmd 确认无关进程,再用 kill -9 1616 杀掉,释放显存(GPU 1 显存降至 100MiB 以下)。

  • 第二步:用 --lowvram 参数强制拆分

    启动命令改为 export CUDA_VISIBLE_DEVICES=0,1 && ./webui.sh -f --xformers --lowvram--lowvram--medvram 更激进地将模型层拆分到双卡,生成 1024x1024 图像时,GPU 1 使用率升至 50%-80%,显存占用 5GB+,实现协同工作。

  • 终极方案:修改代码强制多卡

    若仍不生效,编辑 modules/sd_models.py,在 load_model_weights 函数中添加逻辑:将含 “transformer”“attn” 的模型层移动到 GPU 1,确保双卡均参与计算。

四、图像质量:从 “画面灰蒙蒙” 到 VAE 手动适配

1. 初始问题:生成图片色彩暗淡、发灰

使用社区微调大模型(如 bl5_v10.safetensors)时,输出图片整体偏灰,色彩饱和度低。问题根源:部分合并模型会导致内置 VAE 失效,而 WebUI 默认未启用外部 VAE,缺少色彩校正环节。

2. 解决过程:手动配置外部 VAE

  • 第一步:下载通用 VAE 模型

    从 Hugging Face 下载官方 VAE(如 vae-ft-ema-560000-ema-pruned.safetensors),适用于多数风格模型。

  • 第二步:放置并选择 VAE

    将 VAE 文件放入 models/VAE 目录,在 WebUI “设置 - Stable Diffusion - SD VAE” 下拉菜单选择该模型,点击 “Apply settings” 保存并刷新。

  • 补全配置:添加 VAE 快速选项

    若 “SD VAE” 选项缺失,在 “设置 - User Interface-Quick settings list” 中添加 sd_vae,重启 WebUI 后即可在顶部快速切换 VAE,解决画面发灰问题。

五、总结:避坑关键要点

  1. 代理优先选 HTTP:WebUI 对 HTTP 代理兼容性远高于 socks5,避免因协议冲突卡壳;

  2. Lora 下载带后缀:用 wget -O 指定 .safetensors 后缀,直接适配 WebUI 识别规则;

  3. 多卡先清占用:启动前用 nvidia-smi 检查双卡状态,确保无无关进程占用显存;

  4. VAE 必配外部:社区模型优先手动指定官方 VAE,避免色彩暗淡问题;

  5. 参数适配分支:非官方 WebUI 分支缺失关键参数时,用 --lowvram 替代 --multi-gpu,或通过代码修改实现功能。