1. 为什么我劝你趁早把 ComfyUI 搬到本地
先说结论:如果你打算长期玩 AI 绘图,本地部署 ComfyUI 这件事,早晚都得做,早做早省心。我自己是从在线版一路用过来的,最开始图省事,觉得网页打开就能跑,何必折腾本地环境。结果用了不到两周就受不了了——排队、限流、模型不能随便换、生成参数被锁死、图片还得一张张手动下载。最要命的是,你想装个自定义节点,发现根本没权限。那种感觉就像你租了个毛坯房,房东还不让你动墙。
ComfyUI 跟传统的 WebUI 完全是两个思路。它把整个绘图流程拆成了节点,每个节点负责一件事——加载模型、编码提示词、采样、解码、保存。你把这些节点用线连起来,就构成了一张工作流图。这种设计的好处是极度灵活:你想在采样前插一个图像缩放,直接拖个节点进去就行;你想同时跑两个不同的采样器做对比,复制一份连线就完事。但灵活也意味着门槛,很多人第一次打开 ComfyUI 的界面,看到满屏的节点和连线,直接就懵了。
所以这篇内容就是来解决这个问题的。我会从零开始,把本地部署 ComfyUI 的完整流程拆开讲清楚——包括硬件怎么选、环境怎么配、模型放哪里、工作流怎么搭、常见报错怎么修。不管你是刚接触 AI 绘图的新手,还是从其他工具转过来的老玩家,照着走一遍,基本都能在自己的机器上跑起来。整个过程不需要你懂 Python,也不需要你会写代码,跟着操作就行。
提示:本地部署的核心价值在于数据完全留在自己手里,生成过程不受网络波动影响,模型和插件想装就装。代价是需要一台配置过得去的电脑,以及花一两个小时做初始配置。
2. 部署前的硬件与环境盘点
2.1 你的电脑能不能跑 ComfyUI
ComfyUI 对硬件的要求,说白了就一句话:显卡决定上限,内存决定下限。显卡方面,NVIDIA 的卡支持最好,因为 CUDA 生态成熟,大部分自定义节点都是优先适配 N 卡的。显存 8GB 是起步线,能跑 SD1.5 和 SDXL 的基础模型;12GB 以上会比较舒服,可以跑一些较大的模型和更高的分辨率;16GB 以上基本就没什么限制了,视频生成类的模型也能碰一碰。AMD 的卡也能跑,但需要走 DirectML 或者 ROCm 路线,配置起来麻烦一些,部分节点可能不兼容。Apple Silicon 的 Mac 可以用 MPS 后端,速度比不上 N 卡,但胜在安静省电。
内存方面,16GB 是底线,32GB 推荐。因为 ComfyUI 在加载模型的时候会把权重读到内存里,模型越大占得越多。我试过在 16GB 的机器上加载一个 6GB 的大模型,系统直接开始用交换分区,生成一张图等了快三分钟。换成 32GB 之后,同样的模型加载只要十几秒。硬盘方面,强烈建议用固态,因为模型文件动辄好几个 G,机械硬盘加载起来那个等待时间够你泡杯茶。容量的话,准备至少 100GB 的可用空间,模型这东西只会越下越多。
| 硬件项 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 显卡 | NVIDIA 6GB 显存 | NVIDIA 12GB 以上 | N 卡兼容性最好 |
| 内存 | 16GB | 32GB | 影响模型加载速度 |
| 硬盘 | 50GB 可用空间 | 200GB 以上固态 | 模型文件体积大 |
| 系统 | Windows 10 / Linux | Windows 11 / Ubuntu 22.04 | Mac 也可但速度受限 |
2.2 系统环境的选择与取舍
Windows 和 Linux 我都部署过,各有各的优缺点。Windows 的好处是驱动安装简单,图形界面操作直观,适合大多数用户。缺点是路径里经常有中文和空格,容易导致一些节点报错。Linux 的好处是环境干净、性能释放更充分、命令行操作效率高,缺点是对新手不太友好,装驱动和依赖的时候容易卡住。如果你是第一次部署,我建议先用 Windows 跑通,等熟悉了再考虑迁移到 Linux。
Python 版本这块要注意,ComfyUI 目前推荐用 3.10 或 3.11,太新的版本(比如 3.12)部分依赖包可能还没适配,太老的版本(3.8 以下)又不支持一些新特性。我实测下来 3.11 最稳,兼容性最好。另外一定要装 Git,因为后面拉取项目和更新节点都要用到。如果不想自己配 Python 环境,也可以用整合包,解压就能用,省去了装依赖的麻烦。但整合包的缺点是更新不及时,而且你不太清楚里面到底装了什么。
注意:不管用哪种方式部署,安装路径里千万不要有中文和空格。我见过太多人因为路径问题折腾半天,最后发现把文件夹从“AI 绘图”改成“ai_draw”就好了。
3. 手把手完成 ComfyUI 本地部署
3.1 获取 ComfyUI 主程序
第一步是拿到 ComfyUI 的代码。最直接的方式是用 Git 克隆官方仓库。打开命令行工具,切换到你想要存放的目录,然后执行克隆命令。这个过程会把最新的主程序下载下来,大概几十兆,很快。如果你没有装 Git,也可以直接去代码托管页面下载压缩包,解压到指定目录。两种方式效果一样,但用 Git 的好处是后续更新只需要一条命令,不用重新下载。
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI克隆完成之后,你会看到目录里有一堆文件和文件夹。先别急着运行,接下来要配置 Python 环境。我强烈建议用虚拟环境,这样不会污染系统里的 Python,也不会因为不同项目的依赖冲突导致各种奇怪的报错。创建虚拟环境的命令很简单,一行就搞定。创建完之后激活它,你会看到命令行前面多了一个括号,说明已经进入虚拟环境了。
python -m venv venv # Windows venv\Scripts\activate # Linux / Mac source venv/bin/activate3.2 安装依赖与 PyTorch 的正确姿势
激活虚拟环境之后,下一步是安装依赖。ComfyUI 的依赖清单在 requirements.txt 文件里,用 pip 一键安装就行。但这里有个坑:PyTorch 的安装不能直接用默认命令,因为默认会装 CPU 版本,跑图的时候慢得你想砸电脑。你需要根据自己的 CUDA 版本去 PyTorch 官网找对应的安装命令。比如你的显卡驱动支持 CUDA 12.1,那就装 cu121 版本的 PyTorch。
# 先装 PyTorch,注意替换成适合你环境的版本 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 再装 ComfyUI 的其他依赖 pip install -r requirements.txt怎么确认 PyTorch 装对了?激活虚拟环境后输入 python 进入交互模式,然后执行两行代码:导入 torch,打印 torch.cuda.is_available()。如果返回 True,说明 GPU 可用;如果返回 False,说明装成了 CPU 版本,需要卸载重装。这个检查步骤非常重要,我见过不少人跑图慢得离谱,最后发现根本没用上显卡。
import torch print(torch.cuda.is_available()) # 应该输出 True print(torch.cuda.get_device_name(0)) # 显示你的显卡型号3.3 模型文件的目录结构与放置规则
ComfyUI 跑起来之后,你需要把模型文件放到对应的目录里。它的目录结构很清晰,不同类型的模型放在不同的文件夹下。主模型(也就是 checkpoint)放在 models/checkpoints 目录,VAE 模型放在 models/vae,LoRA 放在 models/loras,ControlNet 放在 models/controlnet。放错位置的话,节点里是找不到模型的。我刚开始用的时候把 LoRA 扔到了 checkpoints 里,结果加载器里死活刷不出来,排查了半天才发现是路径问题。
| 模型类型 | 存放目录 | 常见格式 | 用途 |
|---|---|---|---|
| 主模型 | models/checkpoints | .safetensors / .ckpt | 决定整体画风 |
| VAE | models/vae | .safetensors / .pt | 影响色彩和细节 |
| LoRA | models/loras | .safetensors | 微调特定风格或角色 |
| ControlNet | models/controlnet | .safetensors / .pth | 控制构图和姿态 |
| 放大模型 | models/upscale_models | .pth | 提升图片分辨率 |
模型文件一般从模型分享社区下载,格式优先选 safetensors,比 ckpt 更安全,不容易携带恶意代码。下载完之后直接拖进对应文件夹就行,不需要解压。如果你不确定某个模型该放哪里,可以看它的文件大小和扩展名来推断:几个 G 的通常是主模型,几十到几百兆的可能是 LoRA 或 VAE,ControlNet 一般在一到两个 G 左右。
3.4 启动与首次运行验证
一切就绪之后,在 ComfyUI 根目录下执行启动命令。如果你用的是 NVIDIA 显卡,直接运行 main.py 就行。启动过程中命令行会刷出一堆信息,包括加载了哪些节点、监听的端口号等。看到“To see the GUI go to: http://127.0.0.1:8188”这行字,说明服务已经起来了。打开浏览器输入这个地址,就能看到 ComfyUI 的界面了。
python main.py首次打开界面,你会看到一个默认的工作流,包含加载模型、正向提示词、负向提示词、采样器、解码、保存这几个核心节点。先别急着改,直接点运行按钮,看看能不能出图。如果顺利生成了一张图片,恭喜你,部署成功了。如果报错,别慌,下一节我会把常见的报错和解决方法整理出来。第一次运行可能会比较慢,因为要加载模型到显存,耐心等一会儿。
提示:如果你的显存比较小,可以在启动命令后面加 --lowvram 参数,让 ComfyUI 用更省显存的方式运行。代价是速度会慢一些,但至少不会爆显存。
4. 核心工作流的搭建与参数调优
4.1 理解节点式工作流的底层逻辑
ComfyUI 的工作流本质上是一张有向无环图,数据从左侧的加载节点流入,经过一系列处理节点,最后从右侧的输出节点流出。每个节点有输入端口和输出端口,连线代表数据的传递方向。这种设计的好处是你可以精确控制每一步的处理过程,而不是像传统界面那样把所有参数塞在一个表单里。举个例子,你想在采样之前对图像做一次缩放,只需要在加载图像和采样器之间插入一个缩放节点就行,其他部分完全不受影响。
理解了这个逻辑,你就能看懂大部分工作流了。默认工作流是最基础的文生图流程:加载模型 → 编码正向提示词 → 编码负向提示词 → 采样 → 解码 → 保存。每一步都有对应的节点,节点之间的连线就是数据流向。你可以把这条链路想象成一条流水线,原料从一头进去,成品从另一头出来。中间任何一个环节都可以替换或增加新的处理步骤。
4.2 关键参数的含义与调节技巧
采样器是工作流里最核心的节点,它决定了图片的生成质量。里面有几个关键参数需要理解。步数(steps)控制采样的迭代次数,一般 20 到 30 步就够了,再往上提升不明显但时间翻倍。CFG 值控制提示词的遵循程度,7 到 9 之间比较平衡,太低会忽略提示词,太高会导致画面过饱和。采样器(sampler)和调度器(scheduler)的组合影响生成风格,euler 配 normal 是通用选择,dpmpp_2m 配 karras 适合追求细节的场景。
| 参数 | 推荐范围 | 作用 | 调节建议 |
|---|---|---|---|
| 步数 | 20-30 | 迭代次数 | 超过 30 收益递减 |
| CFG | 7-9 | 提示词遵循度 | 太高画面发灰 |
| 采样器 | euler / dpmpp_2m | 采样算法 | 前者快后者细 |
| 调度器 | normal / karras | 噪声调度 | karras 细节更丰富 |
| 种子 | 随机 / 固定 | 控制随机性 | 固定可复现结果 |
种子这个参数值得单独说一下。默认是随机模式,每次运行都会生成不同的图片。如果你想复现某张满意的图,就把种子固定下来,其他参数不变,再运行一次就能得到几乎一样的结果。但要注意,如果你改了模型或者采样器,即使种子相同,结果也会不一样。所以复现的前提是所有参数都保持一致。
4.3 从零搭建一个自定义工作流
默认工作流只能满足最基础的需求,实际使用中你肯定需要根据自己的场景来调整。比如你想做图生图,就需要把加载图像节点替换掉空 latent 节点,然后调整去噪强度。去噪强度决定了保留多少原图信息,0.3 左右是轻微改动,0.7 以上基本就是重新画了。再比如你想加一个 LoRA,就在模型加载器和采样器之间插入一个 LoRA 加载器节点,把模型输出接到 LoRA 的输入,再把 LoRA 的输出接到采样器。
搭建工作流的时候有个小技巧:先把所有需要的节点都拖到画布上,再统一连线。这样不容易乱。连线的时候注意端口类型要匹配,模型输出只能接模型输入,图像输出只能接图像输入,接错了会报错。如果连线太多看不清,可以用分组功能把相关的节点框在一起,给分组起个名字,这样工作流大了也不会乱。我见过一些复杂的工作流,节点上百个,没有分组的话根本没法维护。
注意:修改工作流之后记得保存,ComfyUI 支持把工作流导出成 JSON 文件。这样下次可以直接加载,不用重新搭。建议每调好一个满意的流程就导出备份,免得手滑改坏了找不回来。
5. 常见报错与排查技巧实录
5.1 启动阶段的典型问题
启动阶段最常见的报错是缺依赖。命令行会提示 ModuleNotFoundError,告诉你缺了哪个包。这种情况直接用 pip 装上就行。但有时候装了还是报错,那可能是版本不匹配,需要指定版本号安装。还有一种情况是 PyTorch 和 CUDA 版本对不上,报错信息里会出现 CUDA 相关的字样。这时候需要去 PyTorch 官网查对应关系,重新安装匹配的版本。
另一个常见问题是端口被占用。ComfyUI 默认用 8188 端口,如果这个端口已经被其他程序占了,启动会失败。解决方法是在启动命令后面加 --port 参数指定一个新端口,比如 --port 8189。还有一种情况是防火墙拦截了本地访问,浏览器打不开界面。这时候检查一下防火墙设置,把 Python 或者 ComfyUI 加入白名单就行。
5.2 运行阶段的显存与内存问题
运行阶段最让人头疼的就是显存不足。报错信息通常是 CUDA out of memory,意思是显存不够用了。解决方法有几个:一是降低生成分辨率,比如从 1024 降到 768;二是减少批量生成的数量;三是启动时加 --lowvram 或 --medvram 参数;四是换一个更小的模型。我自己的经验是,8GB 显存跑 SDXL 的 1024 分辨率基本是极限,再高就会爆。如果经常遇到这个问题,可以考虑升级显卡,或者用一些显存优化节点。
内存不足的表现是系统变得极卡,硬盘灯狂闪,生成速度骤降。这是因为系统在用交换分区,速度比内存慢几十倍。解决方法是关掉其他占内存的程序,或者加内存条。另外,ComfyUI 在切换模型的时候不会自动释放旧模型占用的内存,如果你频繁切换大模型,内存会越占越多。这时候可以重启一下 ComfyUI,或者用一些清理节点的插件来手动释放。
| 报错类型 | 典型提示 | 原因 | 解决方法 |
|---|---|---|---|
| 缺依赖 | ModuleNotFoundError | 包没装或版本不对 | pip 安装指定版本 |
| 显存不足 | CUDA out of memory | 显存不够 | 降分辨率或加启动参数 |
| 端口占用 | Address already in use | 端口被占 | 换端口启动 |
| 模型加载失败 | Error loading model | 文件损坏或路径错 | 检查文件完整性 |
| 节点缺失 | Node not found | 自定义节点没装 | 通过管理器安装 |
5.3 自定义节点的安装与冲突处理
自定义节点是 ComfyUI 生态里最有意思的部分,但也是问题最多的部分。安装节点一般有两种方式:一种是通过节点管理器搜索安装,另一种是手动把节点仓库克隆到 custom_nodes 目录。推荐用管理器,它会自动处理依赖,省心很多。但管理器也不是万能的,有些节点需要特定的依赖版本,装了之后可能和其他节点冲突。
冲突的表现通常是启动时报错,或者某个节点突然不能用了。排查方法是看启动日志,找到报错的那个节点,把它禁用或者卸载。如果不知道是哪个节点的问题,可以先把 custom_nodes 目录清空,然后一个一个装回来,每装一个重启一次,直到找到罪魁祸首。这个过程比较费时间,但能彻底解决问题。我一般会在装新节点之前先备份一下整个 custom_nodes 目录,出问题了直接还原。
提示:不要一次性装太多自定义节点,尤其是来源不明的。有些节点会修改 ComfyUI 的核心文件,导致整个环境崩溃。装之前先看看这个节点的更新频率和社区评价,太久没更新的慎用。
6. 性能优化与日常使用建议
6.1 让生成速度再快一点的几个设置
生成速度主要受显卡性能和模型大小影响,但有一些设置可以在不换硬件的情况下提升效率。首先是开启 xformers,这是一个注意力优化库,能显著降低显存占用并提升速度。安装命令很简单,pip 装一下就行,ComfyUI 会自动检测并启用。我实测在同样的硬件上,开启 xformers 之后生成速度提升了大概百分之二十到三十。
pip install xformers另一个技巧是使用 TensorRT 加速,不过这需要额外的配置步骤,而且对模型格式有要求,适合愿意折腾的进阶用户。对于大多数人来说,xformers 加上合理的参数设置就足够了。还有一点是关闭不必要的预览和日志输出,这些虽然不直接影响生成速度,但能减少界面卡顿,让操作更流畅。在设置里可以把预览质量调低,或者关掉实时预览。
6.2 模型管理与磁盘空间清理
用了一段时间之后,你会发现硬盘空间被模型吃得差不多了。一个主模型好几个 G,LoRA 虽然小但架不住数量多,再加上生成的图片和缓存文件,100GB 很快就满了。所以定期清理很有必要。首先是清理不再使用的模型,可以直接删掉,或者移到外置硬盘里归档。其次是清理缓存文件,ComfyUI 在运行过程中会产生一些临时文件,这些可以安全删除。
图片管理也是个问题。默认情况下生成的图片都堆在一个文件夹里,时间长了根本找不到想要的。建议按日期或者项目建子文件夹,每次生成的时候指定输出路径。或者用一些图片管理工具,给图片打标签、加评分,方便后续检索。我自己是每周整理一次,把满意的图挑出来单独存放,不满意的直接删掉,这样既省空间又不会让文件夹太乱。
6.3 工作流备份与迁移的实用方案
辛苦调好的工作流一定要备份,不然哪天系统崩了或者手滑删了,哭都来不及。备份的方式很简单,在 ComfyUI 界面里导出工作流 JSON 文件,存到云盘或者移动硬盘里。但要注意,JSON 文件只保存了节点和连线的结构,不包含模型文件。所以迁移到新机器的时候,除了导入工作流,还要把对应的模型也拷过去,并且保持相同的目录结构。
如果想把整个环境迁移到另一台电脑,最省事的方法是直接拷贝整个 ComfyUI 文件夹,包括虚拟环境和模型。但这样有个问题,虚拟环境里的路径是写死的,换机器之后可能用不了。所以更稳妥的做法是在新机器上重新部署,然后把模型和工作流拷过去。虽然麻烦一点,但不容易出问题。我一般会把模型清单记下来,包括文件名和下载来源,这样换机器的时候照着清单重新下载就行。
7. 我踩过的那些坑和最后的小建议
回头看这段折腾的经历,有几个坑印象特别深。第一个是路径里的中文,当时把 ComfyUI 放在了一个中文命名的文件夹里,结果各种莫名其妙的报错,排查了一整天才发现是路径问题。第二个是 PyTorch 装成了 CPU 版本,跑图慢得以为电脑坏了,后来用 torch.cuda.is_available() 一查才发现根本没用到显卡。第三个是自定义节点冲突,装了一个冷门节点之后整个界面都打不开了,最后只能清空 custom_nodes 重新来过。
这些坑其实都有共性,就是没有按规范来。路径用英文、装完 PyTorch 先验证、装节点前先备份,这三条如果一开始就做到,能省下大量时间。另外我想说的是,本地部署这件事没有想象中那么难,但也没有一键搞定那么简单。花一两个小时认真配一次,后面用起来就顺了。遇到报错不要慌,先看命令行输出的错误信息,大部分问题都能从里面找到线索。
最后分享一个小习惯:我会在 ComfyUI 根目录下放一个文本文件,记录每次改动的内容,比如装了什么节点、改了什么参数、遇到了什么问题怎么解决的。时间长了这就是一本自己的运维手册,下次再遇到同样的问题,翻一下就知道怎么处理了。这个习惯看起来不起眼,但真的能省很多事。