自托管 Stable Diffusion 需要什么硬件?
了解 CPU VPS、4至24 GB显存运行 SDXL 的真实速度与限制,包含 ComfyUI 安装命令、6.94 GB 模型文件和磁盘预算。
自托管 AI 图像生成器的实际需求
自托管 AI 图像生成器由一个 Web 应用和一个模型文件组成。应用是 ComfyUI,可在任何 Linux 主机上运行。硬件需求取决于模型。SDXL 级别的检查点是一个 6.94 GB 的文件,需要放在 GPU 内存中。这个事实决定了整体预算,因此在租用任何服务器前,请先阅读下面的硬件梯度。
总结来说:仅使用 CPU 的 VPS 可以安装并提供该软件,也可以使用较旧的 Stable Diffusion 1.5 模型,以 512x512 分辨率生成图像,每张需要一两分钟。同一台服务器使用 SDXL 以 1024x1024 分辨率生成图像时,每张需要十到二十分钟。这并不表示配置损坏。这是计算结果,本指南将对此进行说明。
模型大小决定所需机器
图像生成会运行去噪循环。一次 30 步的渲染会让去噪器,也就是 SDXL 的 UNet,对图像运行 30 次,并且每一步都会读取 UNet 的全部权重。两个文本编码器会在循环前运行一次,VAE 会在循环后解码一次,因此它们不属于每步成本。在半精度下,SDXL 的 UNet 权重大小为 5.14 GB。按这个简化模型计算,一次 30 步的渲染在你看到图像前,大约要将 154 GB 的权重读入内存,此外还会产生更多中间张量。
拥有 24 GB 显存的 GPU(VRAM,即焊接在图形芯片旁的内存)每秒可读取数百 GB 的数据,并且可以同时容纳全部 6.9 GB。CPU VPS 每秒只能读取数十 GB 的系统内存,而且没有用于卷积运算的矩阵硬件,因此同一循环的运行速度会慢 1 到 2 个数量级。这与决定文本模型性能的内存带宽原理相同,建议结合阅读何时使用带 GPU 的 VPS 才真正划算。
图像生成与文本生成有一个重要区别。聊天模型会流式生成 token,因此即使机器较慢,用户仍能在阅读过程中看到文字,使用感受不会太差。图像只有在最后一步完成后才会出现。运行缓慢就意味着只能盯着进度条等待。
实际数字:硬件阶梯
下面的数据是截至 July 2026,使用 SDXL 生成一张 1024x1024 图像、30 steps 和 Euler sampler 时的典型数值。将其视为数量级参考。您使用的 sampler、step 数量和分辨率都会改变这些数值。
此图表背后的数据
[
{
"label": "8 vCPU VPS, no GPU",
"seconds_per_image": 780
},
{
"label": "8GB VRAM GPU",
"seconds_per_image": 32
},
{
"label": "12GB VRAM GPU",
"seconds_per_image": 18
},
{
"label": "24GB VRAM GPU",
"seconds_per_image": 9
}
]CPU 一行是 780 秒,约 13 分钟。24 GB 显卡需要 9 秒。这就是您需要通过硬件投入缩小的差距。
可以这样理解这条阶梯。在 8 GB VRAM 以下,SDXL 仍然可以运行,因为 ComfyUI 会统一管理 VRAM 和系统 RAM,并自动卸载模型权重。截至 October 2026,该项目的 README 将最低要求列为 4 GB VRAM 加 8 GB 系统 RAM,并使用其异步权重流式传输功能。卸载会在每个 step 增加耗时,因此 6 GB 显卡生成一张图更接近 1 分钟,而不是 30 秒。8 GB 显存可以容纳基础模型,渲染过程也较为顺畅。12 GB 显存可以在不卸载的情况下,同时加载一个或两个 ControlNet 以及 checkpoint。24 GB 显存可以在一个工作流中运行 SDXL、refiner 和 upscaling,并为训练 LoRA adapter 留出充足空间。训练所需显存可以更少:kohya-ss sd-scripts trainer 的 SDXL 训练指南称,LoRA 训练可以使用 8 GB GPU memory 完成,建议使用 10 GB。为此,该指南要求只训练 U-Net,启用 gradient checkpointing,缓存 text encoder 输出和 latents,使用 8-bit optimizer 或 Adafactor,并在 8 GB 显卡上将 LoRA dim 降至 4 到 8。封装这些脚本的 kohya_ss GUI 的 LoRA 指南更加保守:它建议使用至少 12 GB memory 的 GPU 进行 LoRA 训练。
CPU VPS 能做什么,不能做什么
它能做的事情比很多人预期的更多,但比营销宣传暗示的更少。应明确两者之间的界限。
CPU VPS 可以安装 ComfyUI、提供 Web 界面、存放模型库、运行队列,并且完全不需要 GPU 就能生成图像。使用 Stable Diffusion 1.5、512x512 分辨率和 20 步采样时,8 个现代 vCPU、16 GB RAM 通常每张图需要约 60 到 150 秒。对于运行一整晚的批处理任务,或通过队列处理的低流量图像接口,这样的性能完全够用。
CPU VPS 无法提供交互式工作体验。提示词迭代意味着每小时生成 20 张图;如果每张需要 13 分钟,一小时只能生成 4 张。它也无法用于训练。CPU 上的 LoRA 微调通常需要按天计算,而不是按小时计算,因此应视为不可用。
仅使用 CPU 时,内存要求不同于 GPU。模型权重会加载到系统 RAM,因此需要为模型大小和运行空间预留内存:SDXL 约需 16 GB RAM,SD 1.5 约需 8 GB。4 GB 的主机会先启动 ComfyUI,随后在第一次生成过程中被 out-of-memory killer 终止。此时进程会消失,并在 dmesg 中显示 Killed,但不会留下 Python traceback。
在 GPU 服务器上安装 ComfyUI
以下是上游提供的命令。请从已安装 NVIDIA 驱动的全新 Ubuntu 24.04 开始。先确认驱动,因为不执行这一步,后续所有故障看起来都一样。
nvidia-smi该命令必须输出包含显卡信息和 CUDA 版本的表格。出现 command not found 或 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver,表示驱动缺失,或升级后内核模块未加载。继续之前先修复此问题,否则 ComfyUI 会静默回退到 CPU,最后你会误以为是软件本身的问题。
sudo apt update
sudo apt install -y git python3-venv python3-pip wget
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txt虚拟环境不是可选建议。PyTorch 会拉取大量依赖。在还运行其他程序的服务器上全局安装 PyTorch,通常会破坏其他程序。继续之前,先确认 PyTorch 可以识别显卡。
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True 加上显卡名称,表示整个软件栈工作正常。False 表示已安装的 wheel 与驱动不匹配,通常是因为之前缓存了仅支持 CPU 的 torch wheel。请使用上面的 index URL 重新安装。
获取模型并规划磁盘空间
ComfyUI 不包含模型权重。将 checkpoint 放入 models/checkpoints,将 VAE 文件放入 models/vae,将 LoRA 适配器放入 models/loras。
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors始终优先使用 .safetensors,而不是 .ckpt。.ckpt 文件是经过 pickle 序列化的 Python 对象,加载它会执行构建该文件的人员写入的代码。safetensors 格式只保存张量,因此恶意文件无法执行任何代码。
存储空间是人们最容易忽略的成本。一个 SDXL 基础 checkpoint 占用 6.94 GB。Refiner 还需要 6 GB。SDXL ControlNet 模型在半精度下的大小从小型 Canny 模型的 320 MB 到完整模型的 2.5 GB 不等。放大模型占用空间较小:标准 Real-ESRGAN x4plus 模型为 67 MB,其 anime 模型为 17.9 MB,anime video 模型为 2.5 MB。LoRA 的大小从几十 MB 到 ByteDance 的 Hyper-SDXL 适配器的 787 MB 不等。喜欢使用这类模型的人通常会在一周内再下载第二个和第三个基础模型。为可正常使用的安装预留 100 GB 磁盘空间,同时监控输出目录:1024x1024 的 PNG 文件每个占用 1 到 2 MB,无人值守的批处理会悄悄填满小容量磁盘。将 models/ 和 output/ 放在可扩容的卷上,并使用类似 对对象存储执行加密增量备份 的方式备份工作流 JSON 文件。模型权重可以重新下载。经过调整的工作流无法重新生成。
运行并安全访问
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI 使用 8188 端口。在仅使用 CPU 的服务器上,添加 --cpu,强制使用 CPU 路径,避免因找不到 CUDA 设备而失败。
绑定到 127.0.0.1,不要绑定到 0.0.0.0。ComfyUI 现在支持账户,但这些账户都不能保护您的服务器。Settings 的 User 部分中的登录功能用于登录 Comfy 账户,并且本地安装也可以使用该功能:Comfy 文档列出了通过电子邮件、Google、GitHub 和 API key 登录的方式。文档将该账户描述为访问合作伙伴节点和 Comfy Cloud 订阅的凭据,其中没有任何内容表明它可以为您自己的服务器设置密码保护。--multi-user 标志只启用按用户区分的存储:截至 October 2026,服务器从 comfy-user 请求标头中获取用户名,并且不检查密码。任何能够访问该端口的对象都可以排队执行任务、读取您生成的所有图像;如果您使用 --enable-manager 启动服务,还可以安装自定义节点,从而在您的服务器上执行任意代码。请改为从笔记本电脑通过 SSH 隧道访问它。
ssh -N -L 8188:127.0.0.1:8188 you@your-server然后在本地打开 http://127.0.0.1:8188。如果需要真正的多用户访问,请在前面配置带身份验证的反向代理,并让应用绑定到 localhost。相同的原则适用于任何未提供身份验证的自托管服务,这也是 VPS 上的 Docker Compose 部署 的标准模式。
在 systemd 下保持运行
SSH 会话关闭后就退出的渲染队列不算服务。使用没有登录权限的 comfy 用户运行它,不要使用您自己的账户:自定义节点属于代码,不应在拥有您主目录访问权限的账户下运行。创建该用户,并将安装目录移入其主目录:
sudo useradd --system --create-home --home-dir /home/comfy --shell /usr/sbin/nologin comfy
sudo mv ~/ComfyUI /home/comfy/
sudo chown -R comfy:comfy /home/comfy/ComfyUI移动后,虚拟环境仍然可以正常工作,因为该单元会直接调用其 python。然后写入 /etc/systemd/system/comfyui.service。
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/home/comfy/ComfyUI
ExecStart=/home/comfy/ComfyUI/venv/bin/python main.py --listen 127.0.0.1 --port 8188
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now comfyui
systemctl status comfyuiactive (running),并且日志中出现 To see the GUI go to: http://127.0.0.1:8188,表示服务已启动。请注意,ExecStart 直接指定了虚拟环境中的解释器,因为 systemd 不会加载您的 shell profile,因此不会发生 activate。
按预算给出的实用建议
如果您想尝试图像生成,并且成本比速度更重要,可以选择一台配备 16 GB RAM 的 CPU VPS,以 512x512 的分辨率运行 SD 1.5,并接受每张图像需要一到两分钟。这是诚实的入门方案,成本只是配备 GPU 的方案的一小部分。在您做出决定前,也可以用它托管模型库和工作流。
如果您每天都要反复调整提示词,可以按小时从 GPU 云租用至少配备 12 GB VRAM 的 GPU,并在停止使用后将其关闭。图像生成通常是突发性工作;按月计费却处于空闲状态的 GPU,是人们在这方面超支的最常见原因。将检查点保存在廉价的块存储上,并将其挂载到系统中。
如果您要为其他人提供服务,或经常训练 LoRA 适配器,应规划 24 GB VRAM 和一台长期运行的机器。sd-scripts 的 SDXL 指南说明,使用其节省显存的设置时,LoRA 训练可以在 8 GB 显存上完成,建议使用 10 GB;kohya_ss GUI 的 LoRA 指南则要求至少 12 GB。sd-scripts 指南中的 24 GB 数值,针对的是 batch size 为 1 的完整 SDXL 微调,因此 24 GB 显卡可以满足 LoRA 工作,并且仍能进行微调。到了这个阶段,同一台机器通常也可以运行本地语言模型,从而发挥更大价值;相关配置见 自行托管 LLM 与 Ollama。
无论您选择哪个级别,都应先测试自己的机器,再相信任何已发布的数值。使用同一个提示词排队运行五次,并读取 ComfyUI 在控制台中输出的每次迭代耗时。这个数值才是您实际所处的级别。
FAQ
我可以在没有 GPU 的情况下运行 Stable Diffusion 吗?
可以。ComfyUI 使用 python main.py --cpu,即使没有显卡也能生成实际图像。使用 8 个现代 vCPU 时,Stable Diffusion 1.5 在 512x512 分辨率下每张图大约需要 60 到 150 秒,SDXL 在 1024x1024 分辨率下每张图需要 10 到 20 分钟。这适合处理过夜批次任务和低流量端点。不适合反复调整提示词,完全无法用于训练。
SDXL 需要多少 VRAM?
8 GB VRAM 可以让 SDXL 在 1024x1024 分辨率下稳定运行。低于这个容量时,ComfyUI 会自动将模型权重卸载到系统 RAM,仍然可以运行。截至 2026 年 10 月,其 README 声明最低需要 4 GB VRAM 和 8 GB 系统 RAM,而且每个卸载步骤都会增加耗时。12 GB VRAM 可以在加载 checkpoint 的同时容纳一个 ControlNet,24 GB 则可以在同一工作流中同时运行基础模型、refiner 和放大流程。kohya-ss sd-scripts 指南称,启用其节省内存的设置后,SDXL LoRA 训练可以使用 8 GB VRAM,建议使用 10 GB;而 kohya_ss GUI 的 LoRA 指南要求至少 12 GB。SDXL 完整微调在 batch size 为 1 时需要 24 GB。
模型需要多少磁盘空间?
仅 SDXL 基础 checkpoint 就有 6.94 GB,refiner 还会增加约 6 GB。SDXL ControlNet 模型在半精度下每个占用 320 MB 到 2.5 GB,LoRA 适配器占用几十 MB 到 787 MB,Real-ESRGAN 放大模型占用 2.5 MB 到 67 MB。应为包含几个基础模型的可用安装预留 100 GB,并单独监控输出目录,因为 1024x1024 的 PNG 文件每个通常占用 1 到 2 MB。
将 ComfyUI 暴露到公网安全吗?
不安全。ComfyUI 设置中的 Comfy 账户登录适用于本地安装,但它只能让您访问 Comfy 的合作伙伴节点和云订阅;Comfy 文档没有将其描述为服务器防护机制。--multi-user 标志只会隔离各用户的存储,不会验证任何密码。启用 ComfyUI-Manager 后,界面可以安装自定义节点;这些节点是运行在服务器上的 Python 代码,因此开放端口意味着存在远程代码执行风险。将其绑定到 127.0.0.1,通过带有 ssh -N -L 8188:127.0.0.1:8188 you@your-server 的 SSH 隧道访问;如果需要让多个人访问,应在前面配置需要身份验证的反向代理。
为什么渲染进程被终止,却没有错误消息?
如果进程消失,并且 dmesg 中出现 Killed,同时没有 Python traceback,这表示 Linux 的内存不足终止机制介入,而不是 ComfyUI 的错误。在仅使用 CPU 的服务器上,模型权重位于系统 RAM 中,因此 SDXL 大约需要 16 GB,SD 1.5 大约需要 8 GB,此外还需要工作空间。增加 RAM、增加 swap,或者改用更小的模型并降低分辨率。