ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Stable Diffusion部署四路线:官方原版、整合包、Docker与ComfyUI选型指南

2026/9/26 9:29:16 拓冰建站 浏览量
Stable Diffusion部署四路线:官方原版、整合包、Docker与ComfyUI选型指南 1. 为什么部署方式的选择比模型本身更影响体验很多人第一次接触 Stable Diffusion注意力全在模型上——哪个大模型画风好、哪个 LoRA 出图精致却忽略了真正决定日常使用体验的其实是部署方式。我见过太多人下载了上百 G 的模型结果卡在环境配置上三天没出一张图最后热情耗尽直接弃坑。也见过有人用整合包跑通了但想加个插件就各种报错因为整合包的 Python 环境被锁死了。部署方式的选择直接决定了三件事上手速度、可扩展性、长期维护成本。官方原版最干净但门槛最高整合包最快但容易变成黑盒Docker 最规范但需要理解容器概念ComfyUI 则是另一套完全不同的工作流逻辑。这四种路线没有绝对优劣只有适不适合你当前阶段。这篇文章我会把四条路线全部拆开讲透包括每条路线适合什么人、核心原理是什么、具体怎么操作、踩坑了怎么排查。不管你是完全没碰过命令行的新手还是想从整合包迁移到规范化部署的老玩家都能找到对应的方案。核心关键词会自然融入各个章节不堆砌只讲能直接抄作业的实操内容。2. 四条部署路线的整体设计与选型逻辑2.1 先搞清楚这四条路线到底在解决什么问题Stable Diffusion 本质上是一个需要 GPU 算力的深度学习推理程序它的运行依赖 Python 环境、PyTorch 框架、CUDA 驱动、一系列图像处理库以及一个前端界面。所谓部署就是把这一整条依赖链在你的机器上跑通并且提供一个能交互的入口。官方原版Automatic1111 WebUI 或 Forge是最接近源码的形态。你手动安装 Python、手动装 PyTorch、手动克隆仓库、手动装依赖。好处是环境透明任何插件、任何自定义节点都能装出问题你知道去哪找。坏处是每一步都可能因为版本不匹配而失败尤其是国内网络环境下pip 装依赖经常卡在 installing requirement 那一步动不了。整合包是社区玩家把上述所有步骤预先打包好的产物典型代表就是秋叶系列。它内置了便携版 Python、预配置好的依赖、一键启动脚本甚至帮你设好了国内镜像源。解压即用双击启动五分钟出图。代价是环境被封装成黑盒你想升级某个库或者装一个依赖冲突的插件可能会把整个环境搞崩。Docker 部署是把整个运行环境封装进容器镜像。它的核心价值在于环境隔离和可复现——镜像里是什么版本就是什么版本不会因为你宿主机装了什么而改变。适合有多台机器、需要团队协作、或者想在同一台机器上跑多个不同版本 SD 的场景。门槛在于你需要理解镜像、容器、端口映射、卷挂载这几个概念。ComfyUI严格来说不是另一种部署方式而是另一种前端。它和 WebUI 可以共用同一套模型文件但工作流逻辑完全不同。WebUI 是表单式操作填参数点生成ComfyUI 是节点式编程你把加载模型、编码提示词、采样、解码这些步骤用节点连起来。灵活度极高适合做复杂工作流和批量自动化但学习曲线陡峭。2.2 选型决策对号入座比盲目追新更重要我整理了一张决策表你直接对照自己的情况选你的情况推荐路线核心理由完全新手只想快速出图整合包零配置五分钟上手想深入学原理装各种插件官方原版环境透明扩展无限制有多台机器或团队协作Docker环境一致迁移方便做复杂工作流、批量生产ComfyUI节点灵活自动化强显卡显存小于 6GForge 或 ComfyUI显存优化更好想同时跑多个版本Docker容器隔离互不干扰这里有个很多人忽略的点整合包和官方原版并不是对立的。你可以先用整合包快速跑通建立信心等熟悉了再迁移到官方原版。我自己就是这么过来的——第一个月用整合包出了几百张图摸清了采样器、CFG、步数这些参数的作用然后才动手搭官方环境这时候遇到报错也不会慌因为我知道每个环节在干什么。2.3 硬件门槛的真实情况网上很多教程把硬件要求说得很吓人实际体验下来显存 4G能跑但只能用 512x512 分辨率出图慢部分模型加载会爆显存显存 6G主流甜点768x768 流畅可以用大部分优化手段显存 8G 以上1024x1024 无压力可以开高分辨率修复显存 12G 以上可以跑 SDXL 和视频模型内存建议 16G 起步32G 更稳。硬盘一定要 SSD模型加载速度差距非常明显——机械硬盘加载一个 6G 的大模型可能要一两分钟SSD 十几秒就搞定。另外预留至少 100G 空间模型文件动辄几个 G很快就能塞满。3. 官方原版部署从零搭建透明可控的环境3.1 环境准备的核心逻辑官方原版部署最容易出问题的地方就是环境。我把它拆成四个必须对齐的组件显卡驱动、CUDA、Python、PyTorch。这四个东西版本必须互相兼容错一个就报错。先说显卡驱动。N 卡用户去官网下最新驱动就行装完在命令行敲nvidia-smi能看到显卡信息和 CUDA Version 就说明驱动没问题。注意这里显示的 CUDA Version 是驱动支持的最高版本不是你实际装的版本。Python 版本选择很关键。目前 WebUI 和 Forge 主流支持 Python 3.10.x强烈建议用 3.10.6 或 3.10.11不要用 3.11 或 3.12很多依赖包还没适配。安装时务必勾选Add Python to PATH否则后面命令行找不到 python。PyTorch 的安装是重头戏。你需要根据显卡驱动支持的 CUDA 版本去 PyTorch 官网找对应的安装命令。比如驱动支持 CUDA 12.1就装torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121。装完验证一下import torch print(torch.__version__) print(torch.cuda.is_available())第二行输出 True 才算成功。如果是 False说明 PyTorch 没识别到显卡八成是 CUDA 版本不匹配。3.2 拉取仓库与安装依赖环境搞定后克隆仓库。WebUI 和 Forge 二选一git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git # 或者 Forge 版本 git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git然后进入目录运行启动脚本。Windows 下双击webui-user.batLinux 下运行webui.sh。第一次启动会自动创建虚拟环境并安装依赖这一步就是很多人卡住的installing requirement。卡住的核心原因通常是网络。pip 默认从国外源下载速度极慢甚至超时。解决办法是配置国内镜像源。在 webui 目录下找到或创建pip.iniWindows或pip.confLinux写入[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple timeout 120如果已经卡住了先 CtrlC 中断配好镜像源再重新启动。有时候是某个特定包下载失败可以看日志里最后一行是哪个包单独用pip install 包名 -i 镜像源装一下再继续。3.3 模型放置与首次出图依赖装完后把下载的模型文件.safetensors 或 .ckpt放进models/Stable-diffusion/目录。VAE 放models/VAE/LoRA 放models/Lora/。刷新一下界面就能在模型下拉框里看到。首次出图建议用最简单的参数采样器选 Euler a步数 20CFG 7分辨率 512x512提示词写个简单的英文描述。点生成如果几秒到几十秒后出图恭喜你环境搭好了。注意第一次生成会加载模型到显存比较慢之后会快很多。如果报 CUDA out of memory降低分辨率或加--medvram启动参数。3.4 启动参数优化实战官方原版的启动参数直接决定性能和功能。在webui-user.bat里找到set COMMANDLINE_ARGS这一行按需添加--xformers启用 xformers 加速注意力计算能显著降低显存占用并提速强烈推荐--medvram显存 6G 左右用牺牲一点速度换显存--lowvram显存 4G 用速度更慢但能跑--api开启 API 接口方便其他程序调用--listen允许局域网访问手机也能连--port 7861改端口避免冲突我实测下来--xformers在 3060 上能把出图速度提升 30% 左右显存占用降低约 1G属于必开项。如果你的显卡比较新40 系可能 xformers 兼容性有问题可以改用--opt-sdp-attention。4. 整合包部署最快出图路线与它的边界4.1 整合包到底整合了什么秋叶整合包之所以能做到解压即用是因为它把一整套运行环境都打包进去了。具体包括便携版 Python 解释器、预装好的 PyTorch 和 CUDA 运行时、所有依赖库、预配置的国内镜像源、一键启动脚本、常用插件和模型。它的工作原理是启动脚本调用包内的便携 Python而不是你系统里的 Python所以不会和你系统环境冲突。所有依赖都装在包内的python目录下模型放在models目录。整个包就是一个自包含的沙盒。这种设计的好处是零污染、零配置。你系统里装没装 Python、装了几个版本都不影响它运行。坏处是升级困难——你想升级 PyTorch 版本得手动替换包内文件很容易搞坏。而且整合包通常锁定在某个版本新出的插件如果依赖更新的库可能装不上。4.2 下载与启动的正确姿势下载整合包要注意两点来源可靠和解压路径不含中文。路径含中文是新手最常见的坑会导致各种莫名其妙的编码错误。建议解压到D:\SD这种纯英文短路径。解压后目录结构大致是SD/ ├── launch.bat # 启动脚本 ├── python/ # 便携 Python 环境 ├── models/ # 模型目录 ├── extensions/ # 插件目录 ├── webui/ # 主程序 └── output/ # 出图目录双击launch.bat会弹出一个命令行窗口开始加载。第一次启动会检查依赖可能需要几分钟。看到Running on local URL: http://127.0.0.1:7860就说明成功了浏览器会自动打开界面。4.3 整合包的扩展与迁移整合包用久了想装新插件直接在 WebUI 的扩展标签页里从 URL 安装即可大部分插件能正常装。如果装完启动报错通常是依赖冲突可以在整合包的 Python 环境里手动装依赖# 进入整合包目录 cd D:\SD # 用包内 Python 装依赖 python\python.exe -m pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple如果整合包彻底玩坏了最省事的办法是重新解压一份把models和output目录拷过去几分钟就恢复。这也是整合包的一个隐性优势——容错成本低。实操心得整合包建议保留一份纯净备份玩坏了直接覆盖比排查问题快得多。模型目录可以单独放用软链接或者启动参数指向这样换整合包不用重新下模型。4.4 什么时候该从整合包毕业整合包不是终点。当你出现以下需求时就该考虑迁移到官方原版或 Docker 了想用最新的 PyTorch 或 CUDA 特性需要装依赖冲突严重的插件想同时跑多个不同配置的实例需要精细控制启动参数和性能调优想理解每一步到底发生了什么迁移的时候模型文件直接拷过去就行插件列表可以导出剩下的就是重新搭一遍环境。有了整合包的使用经验你对整个流程已经有直觉了迁移不会太难。5. Docker 部署环境隔离与可复现的终极方案5.1 Docker 部署 SD 的核心价值Docker 解决的是在我机器上能跑这个经典问题。它把 SD 运行所需的一切——操作系统层、Python、CUDA、依赖库、程序代码——全部封装进一个镜像。你在任何装了 Docker 的机器上运行这个镜像得到的环境完全一致。对 SD 来说Docker 的价值体现在几个具体场景多版本共存一个容器跑 WebUI一个跑 ComfyUI互不干扰、快速迁移换机器只需拉镜像、团队协作大家用同一个镜像不会出现你的能跑我的不能跑、干净卸载删容器就完事不留垃圾。代价是GPU 直通配置有一定门槛。Docker 默认不能访问宿主机 GPU需要装 NVIDIA Container Toolkit 并配置。这一步配好了后面就一劳永逸。5.2 环境准备与 GPU 直通配置先装 Docker DesktopWindows/Mac或 Docker EngineLinux。Windows 用户注意Docker Desktop 需要开启 WSL2 或 Hyper-V。如果启动时报 virtualization support not detected说明 BIOS 里没开虚拟化重启进 BIOS 打开 VT-x/AMD-V 即可。装完 Docker 后配置 GPU 支持。Linux 下# 添加 NVIDIA 容器工具包源 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list # 安装并重启 Docker sudo apt-get update sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker验证 GPU 直通是否成功docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi能看到显卡信息就说明配置好了。Windows 下 Docker Desktop 较新版本已经内置 GPU 支持勾选设置里的Use the WSL 2 based engine即可。5.3 运行 SD 容器实战社区有现成的 SD 镜像可以直接用。以 WebUI 为例docker run -d \ --name sd-webui \ --gpus all \ -p 7860:7860 \ -v /path/to/models:/app/models \ -v /path/to/output:/app/output \ --restart unless-stopped \ sd-webui-image参数逐个解释--gpus all让容器用所有 GPU-p 7860:7860把容器端口映射到宿主机-v把模型和输出目录挂载出来这样容器删了数据还在--restart unless-stopped让容器开机自启。挂载卷这一步非常关键。千万不要把模型放在容器内部否则容器一删模型全没。所有需要持久化的数据——模型、输出、配置——都要挂载到宿主机。5.4 Docker Compose 管理多实例当你需要同时跑多个服务时用 Docker Compose 管理更清晰。创建一个docker-compose.ymlversion: 3.8 services: sd-webui: image: sd-webui-image ports: - 7860:7860 volumes: - ./models:/app/models - ./output-webui:/app/output deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] restart: unless-stopped comfyui: image: comfyui-image ports: - 8188:8188 volumes: - ./models:/app/models - ./output-comfy:/app/output deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] restart: unless-stopped这样两个服务共用同一份模型目录节省硬盘空间各自输出到不同目录。docker compose up -d一键启动docker compose logs -f看日志docker compose down停止。注意两个容器同时跑会争抢显存如果显存不够建议用CUDA_VISIBLE_DEVICES环境变量给它们分配不同显卡或者错峰使用。5.5 Docker 部署的常见坑坑一镜像拉取慢。配置国内镜像加速器在 Docker Desktop 设置里添加 registry-mirrors。坑二容器内路径和宿主机路径混淆。记住-v左边是宿主机右边是容器。你在容器里看到的/app/models实际对应宿主机的/path/to/models。坑三权限问题。Linux 下容器内用户可能没权限写挂载目录加--user $(id -u):$(id -g)或者调整目录权限。坑四显存不释放。容器停止后显存有时不会立即释放nvidia-smi看到残留进程可以手动 kill或者重启 Docker 服务。6. ComfyUI 实战节点式工作流的威力与门槛6.1 ComfyUI 和 WebUI 的本质区别WebUI 是填表式的——你在一堆输入框里填提示词、选模型、调参数点生成。ComfyUI 是连线式的——界面上是一堆节点每个节点做一件事你用线把它们连起来定义数据流向。这个区别带来的影响是根本性的。WebUI 里你想换个采样流程只能用它预设好的那套ComfyUI 里你可以把采样器拆开中间插入任何处理节点。比如你想在采样过程中间做一次图像缩放再继续采样WebUI 做不到ComfyUI 连几根线就行。代价是学习曲线。第一次打开 ComfyUI满屏节点和连线会让人懵。但理解几个核心节点后你会发现它其实很直观——无非是加载模型→编码提示词→采样→解码→保存这条主线。6.2 核心节点与最小工作流一个能出图的最小工作流包含这些节点Load Checkpoint加载大模型CLIP Text Encode两个分别编码正向和负向提示词Empty Latent Image定义生成图像的尺寸KSampler采样器核心中的核心VAE Decode把潜空间数据解码成图像Save Image保存结果把它们按数据流连起来Checkpoint 的 MODEL 输出接 KSampler 的 model 输入CLIP 输出接两个 Text EncodeText Encode 输出接 KSampler 的 positive 和 negativeEmpty Latent 接 KSampler 的 latent_imageKSampler 输出接 VAE Decode最后接 Save Image。KSampler 的参数和 WebUI 一一对应steps 是步数cfg 是提示词引导强度sampler_name 是采样器scheduler 是调度器denoise 是重绘幅度。理解这些参数在 WebUI 里的作用迁移到 ComfyUI 就很快。6.3 秋叶 ComfyUI 整合包的使用和 WebUI 整合包一样秋叶也出了 ComfyUI 整合包解压即用。启动后浏览器打开http://127.0.0.1:8188。它预装了常用节点和 ComfyUI Manager后者是管理插件的利器。ComfyUI Manager 可以一键安装、更新、卸载插件还能检查缺失节点。当你加载别人分享的工作流时如果提示缺少节点打开 Manager 点Install Missing Custom Nodes就能自动补齐。这个功能极大降低了使用门槛。模型目录结构和 WebUI 类似models/checkpoints放大模型models/loras放 LoRAmodels/vae放 VAE。如果你已经装了 WebUI可以在 ComfyUI 的配置文件里把模型路径指向 WebUI 的目录省一份硬盘空间。6.4 工作流分享与复用ComfyUI 最强大的地方是工作流可以导出成 JSON 文件分享。别人拿到你的 JSON拖进界面就能复现你的完整流程包括所有参数和节点连接。这比 WebUI 分享一张图的参数要完整得多。社区有大量现成工作流可以下载比如图生图、局部重绘、ControlNet 组合、批量处理等。我的建议是先从别人的工作流开始用跑通了再逐个节点研究它在干什么最后自己改。这比从零搭工作流效率高得多。实操心得工作流里如果用了自定义节点分享给别人时对方可能没装。导出前用 Manager 的Save功能它会提示哪些节点是自定义的。或者干脆截图加文字说明比 JSON 更通用。6.5 ComfyUI 的性能调优ComfyUI 在显存管理上比 WebUI 更激进默认就会把不用的模型从显存卸载。启动参数里可以加--lowvram低显存模式--normalvram正常模式--highvram高显存模式模型常驻显存速度快但占显存--fp8_e4m3fn-unet用 fp8 精度跑 UNet显存减半画质损失很小实测在 8G 显存上用 fp8 精度可以跑 SDXL 模型这在 WebUI 上比较吃力。ComfyUI 的显存优化确实做得更好这也是它在低配机器上受欢迎的原因。7. 常见问题与排查技巧实录7.1 启动阶段问题速查现象可能原因解决方法卡在 installing requirement网络问题或依赖冲突配国内镜像源单独装卡住的包CUDA out of memory显存不足降分辨率加 medvram/lowvramtorch.cuda.is_available() 为 FalseCUDA 版本不匹配重装对应版本的 PyTorch启动报编码错误路径含中文移到纯英文路径端口被占用7860 被其他程序占用改端口或关掉占用程序Docker 启动失败提示虚拟化未开启BIOS 未开 VT-x进 BIOS 开启虚拟化7.2 出图阶段问题排查出图全黑或全灰通常是 VAE 问题。检查是否加载了正确的 VAE有些模型需要配套 VAE。也可能是提示词太短或 CFG 太低。出图人物扭曲分辨率太低或模型不适合该题材。SD 1.5 在 512x512 下人物容易崩可以开高分辨率修复或者换 SDXL 模型。出图速度突然变慢检查是否有其他程序占用 GPU或者显存快满了在频繁交换。用nvidia-smi看显存占用。插件装了但界面不显示重启 WebUI或者检查插件是否兼容当前版本。有些插件需要特定版本的依赖。7.3 我踩过的几个真实坑坑一整合包和官方版共用模型目录导致冲突。我一开始把两个环境的模型目录设成同一个结果两边同时启动时互相锁文件。后来改成各自独立目录用软链接共享问题解决。坑二Docker 容器时区不对导致输出文件时间戳混乱。加-e TZAsia/Shanghai环境变量解决。坑三ComfyUI 工作流加载后节点全红。这是缺少自定义节点用 Manager 装缺失节点即可。如果 Manager 也装不上可能是网络问题手动 git clone 到 custom_nodes 目录。坑四xformers 和某些插件冲突导致出图花屏。关掉 xformers 改用 sdp attention 就正常了。这种兼容性问题没有通用解只能一个个试。7.4 性能优化的几个实用技巧模型格式选择优先用 safetensors 格式加载快且安全。ckpt 格式有安全风险且加载慢。精度选择fp16 比 fp32 快一倍且显存减半画质几乎无差别。除非模型明确要求 fp32否则都用 fp16。批处理一次生成多张比多次生成单张效率高因为模型只加载一次。但显存占用会成倍增加量力而行。缓存利用ComfyUI 会缓存已加载的模型连续用同一个模型出图会越来越快。频繁切换模型反而慢。系统层面关掉不必要的后台程序尤其是浏览器多标签页它们会占用显存。Windows 下可以在显卡设置里把 Python 设为高性能模式。8. 四条路线的协同与进阶思路部署不是一次性的选择而是可以组合使用的。我现在的配置是Docker 跑一个 WebUI 做日常出图本地装一个 ComfyUI 做复杂工作流模型目录通过挂载共享。这样既有 Docker 的稳定性又有 ComfyUI 的灵活性。如果你还在纠结选哪条路线我的建议是先用整合包跑通建立对 SD 的直觉然后花一个周末搭官方原版理解每个环节最后按需上 Docker 或 ComfyUI。这个过程走下来你对 SD 的理解会超过 90% 的用户遇到任何问题都能自己定位。部署这件事本质上是在省事和可控之间找平衡。整合包省事但可控性差官方原版可控但费事Docker 和 ComfyUI 在各自维度上提供了新的平衡点。没有最好的方案只有最适合你当前阶段的方案。等你把四条路线都摸过一遍自然就知道自己该长期用哪套了。