ComfyUI这两年在国内AI绘画圈里已经从“小众工具”变成“人手必备”了。很多人一开始是从WebUI入门的,用久了就发现出图流程稍微复杂一点,比如要做局部重绘、要叠多个LoRA、要控制生成批次,WebUI的页面就变得又卡又乱。这时候看到别人分享的ComfyUI工作流,那种“节点连线”的界面,第一反应是抗拒,第二反应是真香。这篇教程没有废话,直接从本地部署讲起,把环境配置、模型放置、文生图工作流一步一步拆给你看。既适合第一次接触ComfyUI的新手,也能帮已经装了但总觉得“跑图不正常”的朋友排查问题。文中的所有方案都是基于我个人的实际装机经验,不是纸上谈兵。
1. 本地部署前,先把这几个底层问题想明白
1.1 显卡显存决定你能玩多大
写任何本地部署教程,我都习惯先聊显卡。很多朋友下了一堆整合包,装完之后打开界面,结果一生成就报错,八成卡在显存上。
Stable Diffusion出图的过程分两半:前半段是“文本编码 + 噪声预测”,后半段是“VAE解码出像素”,全程都在GPU显存里做。显存不够最直接的后果不是不能跑,而是要用CPU硬扛,一张512x512的图能等好几分钟。更现实的是,不同底模对显存要求差别很大:
- 玩SD 1.5系列模型,512x512分辨率,显卡显存4G以上就能顺畅跑;
- 玩SDXL,1024x1024分辨率,建议8G显存起步;
- 玩FLUX这类新架构模型,模型文件本身十几个G,16G显存都是入门线,想流畅反复调参最好上24G。
所以部署之前先打开任务管理器,或者用我下面会说的nvidia-smi命令看一眼,至少确认你的显卡型号和显存大小。只有集成显卡或者显卡太旧的话,老实说,本地玩文生图会很痛苦,不如考虑用云显卡服务或者直接玩在线出图,别硬折腾。
1.2 整合包和源码部署,我劝你先分清楚
现在网上流传最多的是“秋叶ComfyUI整合包”,解压即用,确实适合只想安安稳稳出图的朋友。但整合包有个麻烦:你很难搞清楚它内部到底用了哪一套Python环境、哪个版本的PyTorch,遇到要装自定义节点或者升级依赖的时候,搞不好就把环境弄乱了。
我的习惯是直接用官方源码部署。虽然第一次要敲的命令多几条,但好处非常明显:每个依赖装在哪个虚拟环境里清清楚楚,出问题能精准定位;想更新就git pull;想给某套工作流单独做隔离也很方便。而且源码部署本质上没有比解压整合包多多少操作,只是把“黑盒”变成了“白盒”而已。
如果你已经用了整合包,后面的配置部分也能对照着看,因为底层原理完全一样。只是整合包帮你省掉了装环境的过程,遇到问题时的排查思路仍然通用。
1.3 先把基础工具准备齐:Python、Git、目录规划
ComfyUI官方推荐Python 3.10以上,Windows下我建议装3.10.x或者3.11.x,不要追最新版。很多C扩展包对新版本Python的预编译支持会慢半拍,等你某天想装一个加速依赖时,就会卡在“没有对应版本的预编译包”这种问题上。
Git也是必需的,不光是为了克隆源码,后面装插件、更新插件的命令全是git clone。
另外强烈建议把ComfyUI项目单独放在一个空间充足的盘里,因为模型和虚拟环境加起来经常占用几十个G。我自己在D盘专门建了一个D:\AiComfy目录,所有模型、Python环境、插件都放在这个项目树里,以后备份和迁移都方便,不会出现C盘爆满的惨剧。
2. 驱动、CUDA和PyTorch:跑图环境的“铁三角”
2.1 先用一行命令检查显卡驱动
打开命令行工具(Windows下是cmd或者PowerShell,Linux下是终端),输入:
nvidia-smi输出信息里有两项最关键:右上角显示的是Driver Version,下面表格里还会显示一个CUDA Version。很多人误以为这里显示的CUDA Version就是系统已经装好的CUDA,其实它只是当前驱动支持的最高CUDA版本,并不代表你已经安装了CUDA环境。
显卡驱动只需要满足一个原则:支持你接下来要装的PyTorch所对应的CUDA版本就行。驱动建议装NVIDIA官方提供的Game Ready或者Studio驱动,Studio驱动稳定性通常稍好一点。驱动版本别太低,老驱动对新显卡支持很差,经常会出现“CUDA初始化失败”的奇怪毛病。
2.2 PyTorch的安装才是重头戏
ComfyUI跑在PyTorch框架上,而PyTorch又依赖CUDA。官方部署流程里其实不需要手动装完整CUDA Toolkit,只需要安装GPU版PyTorch包,它会自动带上对应的CUDA runtime组件。这一点新手特别容易理解反。
安装GPU版PyTorch时,推荐直接去PyTorch官网找到针对当前系统和CUDA版本的安装命令。目前常见的是cu121、cu124、cu126这类版本标记,命令长得像下面这样:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124这里的cu124表示CUDA 12.4版本。实际配置时要以PyTorch官网当前提供的最新版本为准,因为CUDA版本和显卡驱动版本是配套的。装完之后必须用下面这句验证GPU能不能被正确识别:
python -c "import torch; print(torch.cuda.is_available())"如果输出True,这块就过了。我见过不少朋友装完PyTorch之后实际在CPU上跑的例子,根本原因就是装成了CPU版,所以这一步千万别偷懒。输出False时,优先检查安装命令里有没有带--index-url,或者去查torch版本里有没有+cu后缀。
2.3 创建干净的虚拟环境
ComfyUI官方现在建议把项目装在venv虚拟环境里,不要直接装到系统Python环境。原因很简单:ComfyUI依赖的包版本比较挑,直接装在全局环境里很容易破坏别的项目,其他项目的依赖也可能反过来把ComfyUI搞挂。
在Windows下创建虚拟环境的常用步骤是:
cd D:\AiComfy python -m venv venv venv\Scripts\activate看到命令行前面出现(venv)标记,说明已经进入这个隔离环境了。后续所有pip安装命令都要在这个激活状态下执行,否则就白装进系统里了。Linux下对应的激活命令是source venv/bin/activate,这一点要记清楚,别在Windows教程里复制Linux命令然后发现找不到activate文件。
3. 拉取源码、安装依赖、启动ComfyUI
3.1 克隆ComfyUI官方仓库
进入项目目录,执行:
git clone https://github.com/comfyanonymous/ComfyUI.git如果国内直连官方仓库比较慢,也可以用一些镜像地址拉取。注意这里只是普通的代码克隆操作,和下载普通开源项目没区别,选一个你认为方便的源就行。克隆完成后,ComfyUI目录下会自动生成基本文件结构,包括main.py、requirements.txt、models目录等。
3.2 按requirements安装Python依赖
进入ComfyUI目录:
cd ComfyUI pip install -r requirements.txt如果你的pip下载速度慢,可以换成国内镜像源,例如清华或者阿里云的PyPI镜像,用法就是给pip加-i参数。这一步纯粹是网络加速问题,不涉及代理那套东西。
装依赖过程中最常碰到的报错是某个编译型包装失败,比如torch装错成了CPU版,或者triton编译失败报出一大段红色错误。此时先回头确认虚拟环境有没有激活,再确认安装的是GPU版PyTorch,最后再检查网络问题。依赖装完之后再跑一次torch.cuda.is_available(),确保整个过程没有装错。
3.3 启动参数和首次访问
激活虚拟环境后,直接执行:
python main.py默认监听8188端口,浏览器会自动打开,或者手动访问http://127.0.0.1:8188。看到那个黑底节点操作界面,说明第一步部署成功了。
如果需要局域网内其他设备访问,可以加参数启动:
python main.py --listen 0.0.0.0如果显存紧张,可以加--lowvram;如果显存很大,可以加--highvram来减少反复加载模型造成的等待。比较理想的组合是我个人常用的:
python main.py --cuda-malloc --disable-auto-launch--cuda-malloc可以明显降低显存碎片,对反复调参很友好;--disable-auto-launch关掉自动跳浏览器,避免每次启动都被浏览器弹窗打扰。
首次启动还会自动补齐models文件夹里所有子目录。你只需要把下载好的模型文件放进对应子目录,刷新界面就能在节点里看到。
4. 模型、VAE、CLIP:配置最容易出问题的环节
4.1 看懂models目录结构
ComfyUI的模型存放目录比WebUI清晰得多,这是它的一个优点。启动之后,你会在ComfyUI根目录看到models子目录,里面常见的文件夹有:
| 目录名 | 作用 |
|---|---|
| checkpoints | 主模型,也就是大模型,通常后缀是.safetensors |
| vae | 单独的VAE文件 |
| loras | LoRA模型 |
| clip | CLIP文本编码器,部分新模型需要 |
| text_encoders | 新架构模型的文本编码器 |
| unet | 某些新模型拆出来的UNet文件 |
| diffusion_models | 拆分式扩散模型文件 |
| controlnet | ControlNet模型 |
| upscale_models | 放大模型 |
老手一般会把文件按目录归位,不要全都塞进checkpoints。ComfyUI大部分模型加载节点都会在指定目录里找文件,放到别的地方就会报“模型文件不存在”,其实可能只是路径放错了。
4.2 主模型到底怎么选、怎么放
整个文生图环节里,checkpoints是最核心的模型。下载的时候注意后缀是.safetensors,尽量不要用.ckpt格式,前者加载更快,也没有历史包袱。
如果是SDXL模型,通常下载到的就是一个完整checkpoint,里面已经内置VAE,算是懒人首选。如果是SD 1.5模型,很多分享包里的模型不一定自带了正确VAE,那就需要额外找一个通用VAE文件,比如常见的vae-ft-mse-840000,放到models/vae目录里。
放完模型之后,重启一下ComfyUI,或者点界面左上角的刷新按钮。节点里面选择模型的地方就能看到你放进去的文件了。模型文件名建议改成纯英文,中文文件名在部分环境下会出现编码错误,出图时白屏或者报错都遇到过。
4.3 CLIP和文本编码器别胡乱删
最近新出的底模开始把CLIP拆得越来越细。比如FLUX除了UNet模型,还需要单独的clip_l和t5xxl文本编码器。下载这类模型时,别人标注了要放在哪个文件夹,就老老实实放到对应的clip或text_encoders目录里,别全部塞进checkpoints里图省事。
我自己踩过一个坑:某次图生图老跑出灰蒙蒙的图,检查了很久发现是VAE选错,换回正确的VAE之后立刻恢复正常。如果你的输出颜色发灰、发白或者细节突然变差,先检查VAE,再检查CLIP,最后才怀疑模型本身。顺序别搞反,否则浪费时间在模型上反复下载。
4.4 关于“模型下载不到”的补充
新朋友最容易卡在“模型去哪下载”上。常规渠道包括Hugging Face、CivitAI以及国内一些模型站。下载时优先看别人标的文件类型:是checkpoint还是LoRA,是完整版还是拆分版。很多“模型下载不了”的问题,其实是因为下载到的文件本身就是损坏的,或者文件名后缀不对导致ComfyUI识别不了。
网络不好的情况下,可以用huggingface-cli的断点续传功能,或者直接用浏览器插件下载,只要能确保文件完整性就行。下载完先看一眼文件大小是不是和页面上标的一致,差太多就说明文件缺了,这种模型加载后要么报错要么出黑图。
5. 文生图工作流:从零拼出第一张图
5.1 认识最基本的节点链
ComfyUI默认新工作流可能是空白的,也可能带有一个基础示例。文生图最保守的一套核心节点如下:
Load Checkpoint:选择主模型CLIP Text Encode(Prompt):写正向提示词CLIP Text Encode(Negative):写反向提示词Empty Latent Image:设定输出图的宽高KSampler:采样器节点,负责去噪生成VAE Decode:把潜空间张量解码成像素图Save Image:保存到output目录
连接关系可以这样理解:模型节点把MODEL、CLIP、VAE三条输出分别接给采样器、文本编码器、VAE解码器;文本编码器的正反两个conditioning输出接给采样器的两个输入;采样器输出的LATENT接给VAE解码的samples;解码后的图像接给保存节点。
理清这个思路之后,后面再加ControlNet、LoRA、修脸、放大这类节点时就不会乱了。ComfyUI的节点本质上就是把Stable Diffusion的推理流程图形化,流程搞懂,插件再多都是在这条链上插花。
5.2 采样参数到底应该怎么调
很多人拿到工作流直接照抄参数,结果出图不满意又不知道改哪里。其实理解参数含义之后,判断起来就快了。
- steps:采样步数。SD 1.5常见20到30步,SDXL 20步左右就够,FLUX则要看具体工作流设置。步数太多不等于更精致,反而可能引入奇怪纹理或者拖慢速度。
- cfg:提示词相关度。SD 1.5常用7,SDXL常用7到10。cfg太高画面容易过饱和、发硬,太低则内容容易离散、糊成一团。
- sampler_name:采样器决定去噪算法。
euler、dpmpp_2m都是我常用的;追求细腻画质可以试dpmpp_2m_sde,代价是速度更慢。 - scheduler:调度器。
karras在多数模型上表现很稳,normal则和Stable Diffusion默认行为更贴近。 - seed:随机种子。固定种子后,同样参数下重复出图结果一致;想探索构图就随机,想复现别人效果就固定。
一句经验:画质发灰先调cfg和VAE,构图不清晰先加步数,色彩脏乱先检查CLIP和反向提示词。复现别人工作流时,先固定别人的seed,再逐步调整自己的参数,这样排查起来最快。
5.3 实操生成与保存
实操流程很简单:选好模型,写好提示词,设置好尺寸和参数,点击右侧的Queue按钮。底部会出现任务进度,完成之后,Save Image节点会在output目录下生成一张PNG图片。
第一次跑图建议用偏小的尺寸,比如512x512或者768x768,先把流程跑通,再往高分辨率冲。如果加载模型时看到底部日志里出现“Model loaded”字样,说明模型读取正常;如果卡在“Loading model”很久,要么模型文件太大,要么显卡没被正确识别。
还有一个很容易被忽略的点:批量生成时,Empty Latent Image节点的batch_size参数可以一次生成多张。很多人做多图对比时喜欢反复点Queue,其实直接调大batch_size效率更高,而且一次生成时显存复用会更充分。
5.4 常用加速和人体经验
当前版本的ComfyUI已经默认启用不少优化,但如果你的显卡支持,还可以考虑装xformers或者triton来进一步提速。装xformers的命令通常是:
pip install xformers装完之后启动时可以用--xformers参数开启。注意部分显卡驱动和PyTorch版本组合下,xformers会报不兼容,遇到这种情况直接卸载就行,不装也不影响正常使用。
另外两个我个人强烈推荐的小习惯:
每次改大参数之前,先用小尺寸快速跑一张验证效果,再应用到正式尺寸,节省时间; 出图不满意时优先改动提示词而不是硬调步数和cfg,因为后者容易把画面带到奇怪方向。
6. 常见问题排查与提速技巧
6.1 六个高频报错速查表
| 现象 | 可能原因 | 解决方向 |
|---|---|---|
| 生成时报CUDA out of memory | 显存不足 | 降低分辨率、开启低显存模式 |
| 提示xxx model not found | 模型没放到对应目录 | 检查models下各子目录 |
| 跑一张图CPU占用很高 | torch装成了CPU版 | 重装GPU版PyTorch |
| 浏览器打不开界面 | 端口8188被占用 | 用--port参数换端口 |
| 出图发灰发白 | VAE错误或缺失 | 换正确VAE |
| 加载特别慢 | 显卡没被识别 | 检查nvidia-smi和torch版本 |
6.2 端口冲突和访问问题
8188端口被占用时,要么找到占用进程并结束它,要么启动时换一个端口:
python main.py --port 8888局域网访问时,--listen 0.0.0.0加上防火墙放行对应端口即可。这里提醒一句:不要把绑定公网IP和本地监听混为一谈,本地网络不要随意暴露到公网,不然别人能直接控制你的出图服务,安全上很危险。
另外,如果你在Linux服务器上跑,记得用screen或nohup挂后台,不然ssh断开之后ComfyUI就跟着停了。常见的启动方式是:
nohup python main.py --listen 0.0.0.0 --port 8188 > comfy.log 2>&1 &然后通过日志文件排查运行情况。
6.3 自定义节点和插件管理
ComfyUI生态最强大的地方就是custom_nodes。最简单的插件安装方式是把插件仓库克隆到这个目录:
cd custom_nodes git clone https://github.com/某个插件仓库.git cd .. python main.py重启后插件会出现在界面上。插件装多了之后启动会变慢,如果某个插件让你启动直接报错,删除对应插件目录就能回到干净环境。我平时用ComfyUI-Manager做插件管理,但不要贪多装一堆用不上的。每次新装插件之后,先跑一次最简单的文生图,确认没破坏环境再加下一个。
6.4 提速的底层思路
出图速度取决于采样步数、图像分辨率、模型大小和显存带宽。除了调低分辨率之外,还有一个容易被忽略的点:尽量使用FP16精度。如果显卡支持,可以在启动时加--force-fp16。显卡性能较强的可以尝试官方推荐的高性能参数组合,但前提是先确认自己的驱动和PyTorch版本支持FP16相关特性。
还有一个很反直觉的经验:显存不大时,不要开太多后台应用。浏览器多开几十个标签、后台有视频在放,都会占用显存。我自己的机器8G显存,跑SDXL时经常开着好几个网页和通讯软件,结果总卡在OOM上;后来把浏览器关掉,同样的参数就能跑得稳稳当当。
6.5 出图结果不满意怎么调
如果模型和参数都没问题,但图就是不好看,优先级是这样的:
- 换提示词表达方式,写得更具体,比如加上镜头、光线、材质描述;
- 换采样器和调度器组合,不同模型对sampler的适配程度不同;
- 换主模型,SD 1.5和SDXL模型画风差异巨大;
- 考虑加LoRA微调风格,比如人像、插画类LoRA;
- 最后才考虑加ControlNet做结构化控制。
很多人一上来就推ControlNet,其实新手阶段最好只做提示词和模型切换,等基础节点手感稳定之后再上ControlNet,不然问题会被叠加得越来越复杂。
我这个月实际重装的一遍流程
顺便记录一下我这个月在一台新机器上重装的全过程,供参考。机器是Windows 11,显卡为RTX 4070 12G显存。我的顺序是先装Python 3.11.9,然后装Git,接着建目录和虚拟环境,激活后先装GPU版PyTorch,验证torch.cuda.is_available()为True,再克隆ComfyUI源码,进入目录执行pip install -r requirements.txt,最后python main.py --cuda-malloc启动。
整个流程大概二十分钟,其中下载模型另算时间。过程中唯一一次报错是我手误在系统全局环境里装了PyTorch,没激活虚拟环境就跑requirements,导致ComfyUI启动时找不到torch。后来激活venv重新安装,问题立刻消失。所以再次强调:每次打开新终端,先确认(venv)是不是出现了。
如果你跟我一样同时玩WebUI和ComfyUI,建议两者用完全独立的虚拟环境和模型目录,或者通过软链共享模型文件,但环境一定要隔离。两套工具混装的后果就是各种版本冲突,排查起来真的很头大。
我个人在实际操作中的体会是,ComfyUI最吸引人的地方不是所谓“高级”,而是把每一步生成流程都透明化了。你看到的是因果链路,而不再是黑盒按钮。哪怕你最后还是会回到WebUI去批量出图,也值得花一个晚上把ComfyUI本地方案跑通一次。同样的提示词,在ComfyUI里稍微调一调连接方式,能玩出的花样比想象中多太多了。这篇部署和文生图教程,希望帮你把第一晚熬得顺利一点。