1. 部署方式选型:官方部署、整合包、Docker到底怎么选
先说结论:这三种方式没有绝对的谁好谁坏,它们对应的是完全不同的使用场景。我在本地反复折腾过三四种部署方案之后,最大的体会就是——先想清楚自己要用多久、怎么用、要不要换机器,再决定走哪条路,比直接照着教程往下装重要得多。
Stable Diffusion这个生态发展到现在,核心的东西其实就两块:一个是模型推理引擎(也就是底层跑生成的那套东西),另一个是前端操作界面。WebUI和ComfyUI都是界面层的工具,它们调用的是同一套底层的PyTorch和扩散模型推理逻辑。这也是为什么很多教程里说“模型文件可以通用”,SD 1.5、SDXL、SD3这些大模型文件放在哪个工具里都能用,区别只是在操作逻辑和工作流的组织方式上。
- 官方部署:适合愿意折腾、想搞清楚运行逻辑的人。你能完整看到依赖关系、启动过程、日志输出,出问题的时候好排查,也方便自己改代码、写插件。但门槛确实高一点,尤其是在Windows上,环境问题能炸出一堆奇奇怪怪的报错。
- 一键整合包:适合大多数普通用户,尤其是不想碰命令行的人。解压即用,省去环境配置的繁琐过程。但缺点也很明显——你不知道里面装了什么,也不知道它帮你改了什么配置,一旦之后想升级某个组件,很容易把整个环境弄坏。
- Docker容器化:适合有部署需求、想保持环境干净、或者打算把SD服务以API形式提供给其他程序调用的人。隔离性好,不会污染宿主机系统,换机器的时候迁移也方便。但GPU直通和显存分配的问题在Windows上比较头疼,做得好的都是Linux环境。
结合2026年这个时间节点,现在还有一个很值得注意的趋势:ComfyUI Desktop版本已经非常成熟了,它本身就是一个官方打包好的桌面应用,大大降低了ComfyUI的上手门槛。我在后面的实操部分会专门讲到这个,它跟WebUI走了完全不同的路线。
2. 官方部署:从零开始搭建Stable Diffusion WebUI
2.1 环境准备:Python版本和Git工具
官方部署的第一步是准备环境。如果你以前在Windows上装过其他深度学习相关的工具,大概率已经踩过Python环境混乱的坑了,比如项目A需要Python 3.10,项目B需要Python 3.11,系统变量里只有一个python,怎么改都会崩掉其中一个。
我的建议是装一个Anaconda或者Miniconda,它是环境管理的利器,能用独立的虚拟环境隔离各个项目的依赖,互不干扰。在Anaconda的终端里执行:
conda create -n sd-webui python=3.10
然后激活环境:
conda activate sd-webui
这里有个选版本的细节需要注意。Stable Diffusion WebUI官方推荐的Python版本是3.10.x,不是最新的3.12或者3.13。原因很简单:PyTorch和一些底层库对最新Python版本的支持有一定的滞后周期,3.10已被当前生态验证得最充分,依赖冲突最少。如果你固执地装上3.12,大概率会在pip install的时候碰到一堆依赖编译报错,纯属给自己找不痛快。
Git也是必备的。方便拉取项目代码和后续更新,官方渠道下载Git for Windows,一路next装完就行,没难度。
2.2 拉取项目并安装依赖
环境准备好之后,选择一个不包含中文字符和空格的路径来存放项目,这很重要——很多人在启动时遇到诡异路径报错,根源就是用户名带中文。
打开命令行,切到你要放项目的目录,然后:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui进入项目目录后执行启动脚本。Windows下是webui-user.bat,Linux/macOS下是./webui.sh。
这是整个安装过程中最需要耐心的一步。脚本会自动检测Python环境,创建虚拟环境,安装PyTorch、xformers、gradio等一系列依赖,第一次运行可能要十几分钟甚至更久,期间网络不稳定还会下载中断。脚本本身做了一些优化,但如果网络条件确实太差,你可以先手动配置好国内镜像源,给pip换个源再跑。
第一次启动成功后会弹出浏览器访问http://127.0.0.1:7860,看到WebUI的界面就说明部署成功了。默认使用的是SD 1.5模型,你需要自己去下载模型放入models/Stable-diffusion/目录,再在界面左上角点击刷新按钮,模型才会出现在下拉列表里。
2.3 官方部署的进阶配置
如果你用的是NVIDIA显卡,建议在webui-user.bat里的COMMANDLINE_ARGS变量中加入一些参数来提升性能和稳定性。我常用的配置是这样:
set COMMANDLINE_ARGS=--xformers --no-half-vae --autolaunch --theme dark各参数的作用说明一下:
--xformers:启用xformers加速注意力计算,在NVIDIA显卡上能明显提升生成速度并降低显存占用。前提是你需要安装好对应版本的xformers库。--no-half-vae:部分显卡在用半精度方式加载VAE时会生成黑图或花屏,禁用半精度可以解决这个问题。代价是增加一点显存占用。--autolaunch:启动完成后自动打开浏览器,省事。--theme dark:默认使用深色主题,夜间连续出图时眼睛舒服很多。
还有一个很多人容易忽略的:如果显存较小(8GB以下),启动时可以在启动参数中加入--medvram或--lowvram来降低显存占用模式,代价是生成速度会略降。
3. ComfyUI部署:官方源码安装和Desktop版
3.1 源码安装方式
ComfyUI的源码安装方式和WebUI类似:
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python -m venv venv source venv/bin/activate # Windows下是 venv\Scripts\activate pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 pip install -r requirements.txt安装完成后运行:
python main.py然后浏览器访问http://127.0.0.1:8188,看到画布式界面就成功了。ComfyUI的最大特点就是基于节点的工作流——你不需要像WebUI那样填表单、点生成,而是把各个功能模块用连线组织起来,自由度极高,模块之间的逻辑关系一目了然。用过的很多人都觉得它更像专业工具,而WebUI更像傻瓜式相机。事实上,Azalea开源官网上的Stable Diffusion相关图片,除了注明用了LoRA的那几张,其余绝大多数都是用ComfyUI跑的——他们IP设计的流程就是完整的ComfyUI工作流,从出图到抠图到吊坠细化全串起来的。
3.2 2026年的推荐:ComfyUI Desktop版
ComfyUI v0.35.0发布之后,Desktop版本的使用体验已经到了一个非常成熟的程度。它本质上是一个官方打包的桌面应用,内置了Python环境、依赖项、ComfyUI核心和ComfyUI Manager,用户不需要手动配置Python,也不需要跟命令行打交道,装上就能用,升级机制也做得相当顺滑。
Desktop版还内置了模型管理功能,可以直接在界面里下载Stable Diffusion系列模型,并自动放入正确的目录。对新手来说,这几乎消除了最大的障碍。
但有一点你得清楚:Desktop版在节点调试和工作流设计时,其体验和源码版完全一致,底层逻辑没有区别。它只是帮你把环境问题全部解决了,省下的时间和精力非常多。所以我的建议很明确——除非你有二次开发需求,否则2026年的今天,ComfyUI直接装Desktop版就好。
如果你是那种要自己写自定义节点的进阶用户,源码版更合适,因为它更方便调试代码、查看日志、管理依赖关系。不过Desktop版也支持把自定义节点插件放入ComfyUI/custom_nodes/目录,区别只在于对环境的掌控度。
3.3 秋叶一键整合包:还有必要用吗?
秋叶整合包在这个圈子里几乎是无人不知的代名词。它的最大价值在于把WebUI和ComfyUI两个都打包好了,内置了全套可直接用的模型、插件、常用配置,下载之后解压即用,还配套了中文界面和更新工具,对国内用户非常友好,连模型下载渠道都给你配好了。
2026年的最新版本已经是v10了。以ComfyUI整合包为例,它内部已经把环境优化到相当好的程度:适配了一批常用插件、加入了中文化方案、预置了多种采样器参数方案,连启动器都做成了图形界面,可以一键切换不同模型目录、查看显卡运行状态、管理ControlNet插件等。
但它的缺点也很明显:第一,整个包体积巨大,下载耗时;第二,由于打包了全家桶,整体更新相对滞后;第三,对于想深入了解SD运行机制的人来说,这种"黑盒"做法不太利于学习和排查问题。
我的观点是:整合包适合完全没接触过命令行的小白快速入门,但它不应该是终点。熟悉基本流程之后,还是建议自己尝试部署一次,理解了运行机制之后,以后出问题也不慌,毕竟是AI绘画这条路子上绕不开的基础功。
4. Docker容器化部署:从零开始搭建可用环境
4.1 为什么选择Docker部署
Docker部署这个事,在AI绘画领域其实有点两极分化。有人觉得多此一举,有人用惯了之后再也回不去了。
我的判断是:如果你只是想在自己的电脑上玩玩,那完全没有必要用Docker。但有两类场景特别适合Docker:
第一类是服务化部署。你需要把SD/ComfyUI以后台服务的形式长期运行,提供API接口供其他程序调用,比如批量生成、图生图服务、或者接进自己的自动化流程。此时Docker的隔离性和稳定性会省去很多维护上的麻烦。
第二类是环境一致性。你自己调试好的环境,想在别的机器上复现,或者团队协作时确保大家运行的环境完全一致,Docker镜像就是最好的载体。主机换了无所谓,镜像在,环境就在。
当然,Docker部署也有一些不太方便的地方:更新和调试不如本地直接改代码灵活,数据卷和端口映射需要额外操心,而且Windows环境下GPU直通比较麻烦,需要额外配置WSL2。
4.2 官方Docker镜像和使用docker-compose
ComfyUI官方提供了Docker镜像,这是最省事的容器化方案。它的做法是借助PyTorch官方镜像,把ComfyUI核心代码和依赖全部装好,然后在宿主机上用docker run搭配参数启动。
先说你必须准备的Dockerfile,内容大概长这样:
FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ python3.10 python3.10-venv python3-pip git ffmpeg libsm6 libxext6 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app RUN git clone https://github.com/comfyanonymous/ComfyUI.git . RUN python3.10 -m venv venv && \ ./venv/bin/pip install --upgrade pip && \ ./venv/bin/pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 && \ ./venv/bin/pip install -r requirements.txt EXPOSE 8188 CMD ["./venv/bin/python", "main.py", "--listen", "0.0.0.0"]构建镜像:
docker build -t comfyui:2026 .启动容器时最关键的两个操作,一个是GPU直通,另一个是把模型目录挂载出来。模型文件动辄几个GB到几十GB,如果放在容器内部,每次重新创建容器都要重新导入,纯粹自找麻烦。正确做法是挂载数据卷,把宿主机上的目录映射到容器的模型路径里:
docker run -d \ --name comfyui \ --gpus all \ -p 8188:8188 \ -v /绝对路径/ComfyUI/models:/app/models \ -v /绝对路径/ComfyUI/custom_nodes:/app/custom_nodes \ -v /绝对路径/ComfyUI/output:/app/output \ comfyui:2026这样模型、自定义节点、输出图片都存在宿主机上,容器随便删了重建都不影响数据。后面改工作流、换插件都在宿主机目录操作,非常灵活。
4.3 更省事的方案:用docker-compose管理
如果怕记不住上面那串docker run参数,推荐用docker-compose来管理。先创建目录,里面放一个docker-compose.yml:
version: "3.8" services: comfyui: build: . container_name: comfyui restart: unless-stopped ports: - "8188:8188" volumes: - ./models:/app/models - ./custom_nodes:/app/custom_nodes - ./output:/app/output environment: - NVIDIA_VISIBLE_DEVICES=all deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu]然后在同一目录下启动:
docker compose up -d这个方案的好处是配置直观,可版本化,以后迁移到其他机器时只需要把整个目录复制过去,再执行docker compose up -d就恢复了和原来完全一样的环境。对需要频繁调试、迭代部署的场景来说,这比手动装环境省心太多了。
但这里我特别提醒一句:NVIDIA_CONTAINER_RUNTIME或NVIDIA_VISIBLE_DEVICES这样的环境变量和配置,需要在宿主机上安装了NVIDIA Container Toolkit之后才生效。没装这个工具就去跑带--gpus参数的容器,会直接报错提示找不到GPU设备。这也是很多新手第一次在Docker里跑SD失败的主要原因。
5. 模型放置与核心配置:一次讲透
5.1 模型类型和目录结构
配置稳定运行的基础,除了代码本身之外,就是模型文件的正确放置。很多人代码装好了,但生成时报错或者效果很差,多半是模型位置放错或者文件损坏。
以WebUI为例,核心的模型目录结构如下表所示:
| 类型 | 路径 | 说明 |
|---|---|---|
| 大模型 | models/Stable-diffusion/ | 放置SD 1.5、SDXL、SD3等主模型 |
| VAE | models/VAE/ | 变分自编码器,影响成图色彩 |
| LoRA | models/Lora/ | 低秩适配模型,风格迁移用 |
| 嵌入 | models/embeddings/ | 负向提示词模板用的嵌入向量 |
| ControlNet | models/ControlNet/ | 控制生成结构用的预处理模型 |
| 超分放大 | models/ESRGAN/ | 放成大图用的模型 |
| 预设样式 | styles/ | 存放自定义风格模板 |
ComfyUI的模型目录结构主要是models/checkpoints/(对应WebUI的Stable-diffusion)、models/loras/、models/vae/、models/controlnet/,命名更直白。因为两个工具底层兼容,很多模型文件可以直接相互借用,只是放到对应目录就行。
对刚入门的新手,我建议一开始不要贪多,就下载一个SDXL系列的模型和一个写实风格的模型,足够你跑通完整的生成流程了。等你对参数、采样器、提示词都有了感觉,再去扩充模型库。
5.2 采样器和步数怎么选
很多新手拿到WebUI之后第一件事就是把步数拉到50、60步,觉得步数越多越好。实际这是个误区。
以2026年主流的采样器来看,DPM++ 2M Karras配合20到30步,或者Euler a配合20到40步,已经能够生成很好的效果了。把步数顶到100以上,除了浪费计算时间,对画质的提升几乎可以忽略不计,反而可能因为过度迭代在细节上出现奇怪纹理。
这里涉及到一个原理:扩散模型生成图像的本质是从噪声开始逐步去噪。步数决定了去噪过程的精细度,但当步数超过一定阈值之后,继续增加并不会让图像明显更清晰——因为模型在这个过程中已经收敛了。就像一个画家反复修改一幅画,改到一定程度后,再改就是在画蛇添足了。
不同采样器各有特点:DPM++ 2M Karras比较均衡,适合大多数场景;Euler a在相同步数下随机性稍高,容易出惊喜但也容易出废图;DDIM速度在二步到六步左右就能得到一个还过得去的结果,适合快速预览构图。ComfyUI里可以通过工作流灵活切换采样器,比WebUI方便很多。
5.3 显存不足时的核心配置
显存是跑生成式AI绕不开的大山。低配置设备仍然可以跑一些特别轻量级的AI应用,但SD系列模型对显存的要求并不低。实际上,只要掌握下面这几个核心参数,8GB显存也能顺利出图:
- 生成分辨率控制在512x512或768x768,不盲目追求高清
- 批量大小设为1,而不是一次生成4张或8张
- 开启
--medvram或--lowvram中等/低显存模式 - 配合
--xformers减少显存占用 - 生成后再用图生图放大,而不是直接生成高分辨率图
如果是ComfyUI,可以通过延迟加载模型和卸载机制来动态管理显存,它的这个设计比WebUI优秀很多——某个模型用完就自动释放显存,下一个模型再加载。这也解释了为什么同样配置的电脑,跑ComfyUI比跑WebUI更不容易爆显存。在实际测试中,ComfyUI在相同出图参数下峰值显存占用比WebUI低不少,在低显存设备上体验差距很明显。
6. 常见问题与排查技巧实录
6.1 WebUI启动报错的几类典型问题
问题一:Torch not compiled with CUDA enabled
这个报错几乎是所有新手都会遇到的。原因不是代码问题,而是你安装的PyTorch版本是CPU版的,没有安装GPU版本。解决方法是在虚拟环境里重新安装对应CUDA版本的PyTorch,比如:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121安装完成之后在Python里执行import torch; print(torch.cuda.is_available()),返回True就说明正常了。
问题二:在ultralytics或者bitsandbytes时报错
多是因为你的显卡不支持某些特性的旧版本。以bitsandbytes为例,如果版本不匹配,会提示找不到动态链接库或者缺少某段编译代码。常用的解决方式是更新pip安装的相关包到最新版本,或者直接卸载后重新安装。
6.2 ComfyUI节点红色报错排查
ComfyUI的报错形式与WebUI完全不同——它的节点会变成红色,并在界面上显示错误信息。节点变红的原因通常有两类:一类是缺少依赖的前置节点或模型文件,另一类是节点本身代码报错。
遇到红色节点,第一步先看错误信息最后一行提到哪个文件缺失,再去对应目录补上。如果是因为缺依赖导致的,在Manager里选中对应节点执行"Install Missing Custom Nodes",会自动从GitHub拉取并安装。这一步对新手来说非常友好,如果装了秋叶整合包,Manager还会自动帮你检查插件兼容性和更新状态。
6.3 Docker部署的坑
Docker部署出问题,九成集中在GPU直通和网络端口上。GPU直通的报错已经在前面说过,NVIDIA Container Toolkit没装好是最常见的原因。还有一个坑是容器内解析不了下载地址,导致自动安装插件失败,这种时候需要在构建镜像时就配置好apt和pip的国内镜像源。
另外注意,Docker容器默认是UTC时区,如果你要做定时批量生成,输出文件的时间会和本地时间对不上。解决办法是在docker-compose.yml里给容器挂载时区设置,比如设置TZ=Asia/Shanghai。
6.4 出图结果异常的最快定位方法
这个值得单独说。很多人模型装好了、程序也跑起来了,但生成出来的图要么一片黑,要么全是噪点,要么色彩怪异,于是开始怀疑电脑配置不行。其实这类问题九成以上的原因是模型文件损坏或在下载过程中没有下载完整。
最快的定位方法很简单:先切换一个官方原版模型跑一张256x256的图。如果原版模型输出正常,说明你的自定义模型或LoRA有问题;如果原版模型也输出异常,那就要检查VAE的设置和采样器参数了。
7. 我的最后几点心得
从第一次跑通SD到今天,我装了不下二十次环境,各种方式都试过。说实话,折腾部署这件事本身就是学习的一部分。官方部署让我理解了依赖关系和启动流程,Docker让我学会了环境隔离和迁移部署,整合包让我明白了什么叫做"开箱即用"的用户体验。这些经验最终都会反哺到你对Stable Diffusion原理的理解上。
现在回想起最初踩过的那些坑——路径带中文、Python版本不对、CUDA没装、显存爆了——每一件当时困扰很久的事,现在看来都简单得可笑。但正是这些解决过程,让我对这套工具的底层逻辑有了更深的理解。
如果你想长期玩SD,我给你最实用的建议是三句话:模型不要贪多,用精几个就行;报错先看英文原始信息,不要到处问;有空就研究下ComfyUI的工作流,它代表了工具的未来方向。
内容创作这条路上,工具永远只是起点,真正重要的是你的想法和审美。哪怕部署一万次,也只是为了让你想画的东西能顺利画出来。