尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ComfyUI节点式AI绘画工作流:从源码安装到视频生成实战

ComfyUI节点式AI绘画工作流:从源码安装到视频生成实战 如果你最近在逛 AI 绘画相关社区一定绕不开ComfyUI这个名字。很多人从 Stable Diffusion WebUI 转过来第一反应是“节点连线太麻烦了”但用过一段时间后又会觉得“真香”。这背后其实是 ComfyUI 对生成流程的彻底重构它把“文生图”“图生图”“ControlNet”“视频生成”这些能力拆成了一个个可复用的节点让使用者能精确控制每一个环节。本文不会只停留在“怎么下载、怎么安装”的层面而是会从原理讲起带你完整走一遍从环境准备、源码部署到工作流搭建的全过程同时补充当前社区里讨论较多的高频问题ComfyUI 与 LLM 是否必须同一台电脑、双卡怎么用、视频生成工作流怎么落地、插件生态怎么管理。无论你是刚接触 AI 绘图的初学者还是已经玩过 WebUI 想迁移到节点式工作流的老手这篇文章都能提供一个系统化的参考。1. 为什么是 ComfyUI节点式 AI 绘画工具的定位1.1 ComfyUI 是什么ComfyUI 是由Comfy-Org社区维护的一款开源 AI 图像生成工具核心是 Stable Diffusion 及其衍生模型的图形化工作流引擎。它不像传统工具那样提供固定的操作页面而是把所有能力抽象成“节点”节点之间通过“连线”传递数据最终生成一张图片或一段视频。你可以把它理解成一块画布左边拖入“模型加载器”中间放入“采样器”右边接上“保存图片”再把提示词编码器、潜空间图像、VAE 解码器依次连接起来就构成了一条完整的生成链路。这套设计思路源自 Blender 的 Shader Editor、Unreal 的 Blueprint 这类可视化编程工具天然适合“组合、复用、调参”。1.2 它解决什么问题传统 WebUI 的一大痛点是流程固定用户能在页面上改参数但不能调整“先做什么、后做什么”。ComfyUI 把流程控制权完全交给用户解决了几类典型问题显存控制更精细。你可以通过自定义流程把中间结果直接留在显存或转移到 CPU避免多步操作导致显存溢出。复杂工作流可复用。一套 ControlNet LoRA 高清修复的流程在 WebUI 里需要切换多个选项卡在 ComfyUI 里可以保存为一个 JSON 文件随时加载。调试更直观。某个环节出图不理想直接单独替换对应节点不用重启整个界面。新模型支持更快。SDXL、SD3.5、FLUX、WAN、LTX 等新模型发布后ComfyUI 往往会第一时间提供官方工作流模板。1.3 与 WebUI 的核心区别很多新手会在 WebUI 和 ComfyUI 之间纠结这里列一个简单对比维度WebUI如 A1111ComfyUI操作方式表单 选项卡节点拖拽 连线流程自定义低高上手门槛低中等显存优化空间一般大工作流分享通常是参数截图JSON 文件直接加载新模型支持速度较慢快适合人群轻度用户、快速出图进阶玩家、追求可控性如果你的需求只是“输入提示词出一张好看图片”WebUI 足够如果你希望精细控制生成链路或者经常复现 GitHub 上的高阶工作流ComfyUI 是更好的选择。本文后续内容都围绕 ComfyUI 展开。2. 安装前的概念与版本说明2.1 硬件与软件环境ComfyUI 的运行依赖 PyTorch 和 GPU 加速虽然也有 CPU 模式但实际体验会比较吃力。本文以最常见的场景为例操作系统Windows 10 / Windows 11 或 Ubuntu 20.04。GPUNVIDIA 显卡显存建议 8GB 起步。如果你使用的是 6GB 显存也可以通过低分辨率、tiled VAE、低显存优化等工作流方案运行。Python3.10 或 3.11 是当前兼容性较好的版本3.12 部分自定义节点可能还不完全兼容。Git用于克隆仓库和更新代码。浏览器Chrome / Edge通过浏览器访问 ComfyUI 界面。如果你的环境是 AMD 显卡或 Apple Silicon安装方式会有所不同需要按照官方文档或社区教程单独处理。本文以 NVIDIA CUDA 为例重点演示配置思路。2.2 ComfyUI 的版本演进ComfyUI 的更新频率很快几乎每隔几天就会向 GitHub 主干推送新特性。以社区中讨论较多的 v0.33.1 来说这个阶段的版本已经能够较好地支持 SD3.5、FLUX 以及多种视频生成模型的工作流。这里不建议把版本号写死。因为 ComfyUI 本身就处于快速迭代期插件生态和节点接口经常变化今天可用的工作流 JSON明天可能因为某个自定义节点升级而出现问题。比较稳妥的做法是通过git checkout或直接拉取最新代码保持更新。在升级前备份custom_nodes目录和models目录。关注官方 Release Notes而不是只看小版本号。2.3 源码安装与一键整合包的选择社区里搜索 ComfyUI 相关热词时“秋叶整合包”出现频率很高。这类整合包把 Python 环境、ComfyUI 主体、常用模型、自定义节点都打包在一起适合不想折腾环境的用户。它的优点是省心缺点是集成的内容不一定是最新版本升级时需要留意。第三方打包来源需要自己判断安全性建议从可信渠道下载。出现问题后社区排错难度相对更高因为你不知道内部环境具体改了什么。如果你的目标是深入使用 ComfyUI我更推荐源码安装。源码安装虽然多几个命令但你能清楚知道每一个依赖装在哪个目录、每个模型的存放位置后续排查和升级都更可控。3. 核心工作流概念节点、连线与潜空间3.1 节点NodeComfyUI 界面中最核心的元素是节点。每个节点承担一个明确功能常见节点包括Checkpoint 加载器Load Checkpoint加载 Stable Diffusion 主模型同时输出模型、CLIP、VAE 三路数据。CLIP 文本编码器CLIP Text Encode把提示词转换成模型能理解的条件向量。空潜空间图像Empty Latent Image生成一张空白的潜空间画布指定宽度、高度和批次大小。采样器KSampler根据条件向量和输入潜空间执行去噪采样。VAE 解码VAE Decode把采样后的潜空间向量解码为像素图片。保存图片Save Image将图片保存到输出目录。3.2 连线Wire连线代表数据的流动方向。ComfyUI 里的连线并不仅仅表示“谁先谁后”它还携带数据类型。比如MODEL模型权重数据。CLIP文本编码器。VAE变分自编码器。CONDITIONING提示词编码后的条件数据。LATENT潜空间向量。IMAGE像素图片。当你把 A 节点的输出连到 B 节点的输入时ComfyUI 会校验数据类型。如果类型不匹配连线会失败这也是新手容易卡住的地方。3.3 潜空间Latent Space潜空间是理解 ComfyUI 的关键。Stable Diffusion 并不是直接在像素空间生成图片而是先把图片压缩到一个低维潜空间在潜空间里完成去噪最后再通过 VAE 解码回像素图片。所以你会看到生成图片前首先要创建Empty Latent Image。采样器输入和输出的都是LATENT。只有经过VAE DecodeLATENT才变成肉眼可看的IMAGE。这种方式显著降低了显存占用也是 ComfyUI 能支持超长工作流的原因之一。3.4 工作流文件格式 .json工作流在 ComfyUI 中保存为 JSON 文件。JSON 里记录了节点位置、节点类型、参数设置、连线关系。社区分享工作流时通常直接分享一个 JSON 文件你只需要把它拖入 ComfyUI 界面就可以自动重建整个工作流。需要注意的是JSON 文件只包含工作流逻辑不包含模型文件本身。所以加载别人的工作流后通常还要手动指定你本地的 Checkpoint 路径、LoRA 路径等。4. 实战从源码安装 ComfyUI4.1 创建项目目录首先选择一个磁盘空间充足的目录。ComfyUI 的模型文件通常很大SDXL 一个模型就有 6~7GB视频生成模型甚至几十 GB建议预留至少 50GB 空间。mkdir -p ~/ai-tools cd ~/ai-tools4.2 克隆官方仓库git clone https://github.com/Comfy-Org/ComfyUI.git cd ComfyUI执行完成后目录结构大致如下ComfyUI/ ├── main.py # 启动入口 ├── requirements.txt # Python 依赖 ├── models/ # 模型目录 │ ├── checkpoints/ # 主模型 │ ├── vae/ # VAE 模型 │ ├── loras/ # LoRA 模型 │ ├── controlnet/ # ControlNet 模型 │ └── ... ├── custom_nodes/ # 自定义节点目录 ├── input/ # 输入图片目录 ├── output/ # 输出图片目录 └── web/ # 前端页面如果你使用 Windows也可以直接在图形界面中创建文件夹然后下载仓库 ZIP 解压效果相同。4.3 创建虚拟环境并安装依赖建议使用虚拟环境避免污染系统 Python 环境。python -m venv venv source venv/bin/activate # Windows 下为 venv\Scripts\activate pip install -r requirements.txt如果已经有 NVIDIA 显卡且安装过 CUDA这里会默认安装 PyTorch 的对应版本。如果你的环境比较特殊还需要根据 PyTorch 官方文档单独确认 CUDA 版本是否匹配。安装完成后可以通过以下命令验证 PyTorch 是否可用python -c import torch; print(torch.cuda.is_available())输出True说明 GPU 可用输出False则需要回到依赖安装步骤排查 CUDA 与 PyTorch 版本问题。4.4 下载模型模型是 ComfyUI 运行的必要条件。以最常用的 Stable Diffusion 模型为例你需要把模型文件放到models/checkpoints/目录下。models/ └── checkpoints/ └── sd_xl_base_1.0.safetensors模型从哪来有些来自官方渠道有些来自社区训练。由于不同模型适用的版本和协议不同这里不具体推荐某个下载站。你可以从 Hugging Face 等模型平台获取模型文件也可以使用社区整合包中自带的模型关键是注意模型使用许可并确保下载来源可信。如果下载速度不理想可以换成社区提供的镜像站点。注意models/checkpoints/目录只放主模型文件VAE、LoRA、ControlNet 要分别放到对应子目录否则加载时会找不到文件。4.5 启动服务模型就绪后在虚拟环境激活状态下启动python main.py --listen 127.0.0.1 --port 8188说明--listen 127.0.0.1只允许本机访问。如果想让局域网内其他设备访问可以改成--listen 0.0.0.0但此时要注意安全防护。--port 8188默认端口就是 8188不写也可以。启动成功后浏览器访问http://127.0.0.1:8188如果一切正常你会看到一个带节点画布的界面左侧是节点列表中间是画布区域。4.6 验证安装最简单的验证方式是使用 ComfyUI 自带的默认工作流。如果你在首次启动时选择加载默认模板页面会自动出现一个最基础的文生图流程。如果没有自动加载可以通过菜单栏的Workflow - Browse Templates找到官方模板。点击Queue执行一次看到图片生成成功就说明环境已经完整打通。5. 实战搭建第一个文生图工作流5.1 认识默认工作流ComfyUI 默认的文生图工作流由以下节点组成Load Checkpoint - CLIP Text Encode (Prompt) - KSampler - VAE Decode - Save Image ↑ Empty Latent Image - 送入 KSampler 的 latent 输入拆开来看Load Checkpoint加载主模型输出MODEL、CLIP、VAE。CLIP Text Encode把正向提示词编码成条件数据另一个CLIP Text Encode用于负向提示词。Empty Latent Image指定图片尺寸和批次。KSampler在潜空间执行去噪采样。VAE Decode把潜在向量解码为像素图。Save Image保存图片。5.2 新建一个干净的画布在菜单栏选择Workflow - New画布会清空。然后双击画布空白处会弹出节点搜索框。依次搜索并添加以下节点Load CheckpointCLIP Text EncodeEmpty Latent ImageKSamplerVAE DecodeSave Image5.3 配置节点参数Load Checkpoint 节点在ckpt_name下拉框中选择你的模型文件。正向提示词节点Prompt: a beautiful landscape, sunset, mountains, lake, highly detailed负向提示词节点Prompt: lowres, bad anatomy, bad hands, extra fingers, blurryEmpty Latent Image 节点设置width: 1024 height: 1024 batch_size: 1KSampler 节点这是最核心的采样参数设置区域。seed: 0 steps: 20 cfg: 7 sampler_name: euler scheduler: normal denoise: 1seed随机种子。每次改变都会生成不同结果固定种子可以复现同一张图。steps采样步数。20 步是 SDXL 的常用值。cfg提示词引导强度一般 5~8 之间。denoise去噪强度。文生图通常为 1图生图时填 0.3~0.7数值越大变化越剧烈。5.4 连接节点按照下面顺序连线Load Checkpoint.MODEL - KSampler.model Load Checkpoint.CLIP - CLIP Text Encode (正向).clip Load Checkpoint.CLIP - CLIP Text Encode (负向).clip Load Checkpoint.VAE - VAE Decode.vae CLIP Text Encode (正向).CONDITIONING - KSampler.positive CLIP Text Encode (负向).CONDITIONING - KSampler.negative Empty Latent Image.LATENT - KSampler.latent_image KSampler.LATENT - VAE Decode.samples VAE Decode.IMAGE - Save Image.images连接完成后点击右侧Queue按钮开始运行。如果节点没有报错几十秒后你会在Save Image节点看到输出同时图片会保存到output/目录。5.5 保存与分享工作流工作流搭建完成后点击Save保存为 JSON 文件。下次打开时直接拖入这个 JSON 文件即可恢复整套节点。这里有一个小技巧保存工作流时可以用菜单中的Export导出也可以直接在浏览器里把 JSON 文件拖入画布。恢复后如果发现某些节点是红色说明对应的自定义节点插件未安装需要先补齐插件。6. 高频进阶玩法插件、LLM、双卡与视频生成6.1 必装插件与自定义节点ComfyUI 的原生节点只覆盖基础功能真正放大它能力的是custom_nodes目录下的插件。社区里讨论较多的插件包括ComfyUI Manager插件管理器可以直接在界面中搜索、安装、更新自定义节点。ControlNet 相关节点用于姿态控制、深度控制、边缘控制。AnimateDiff 相关节点用于视频生成和逐帧动画。VideoHelperSuite视频加载、抽帧、合成辅助节点。ComfyUI-VideoHelperSuite处理视频输入输出的常用工具。安装插件时如果你使用的是源码安装可以直接进入custom_nodes目录cd custom_nodes git clone https://github.com/用户名/插件仓库.git然后重启 ComfyUI。如果插件有额外的 Python 依赖还需要按照插件 README 说明单独安装。注意插件并非越多越好。每增加一个插件都会让启动更慢也可能引入版本冲突。建议按需安装先解决当前工作流跑通的问题。6.2 ComfyUI 与 LLM 必须在同一台电脑上吗很多人在搭建自动化工作流时会问ComfyUI 里能不能接大语言模型LLM大语言模型是不是必须和 ComfyUI 装在同一台机器上答案是不必须。ComfyUI 的本质是图像生成工具图像生成依赖的是 Checkpoint、VAE、采样器这些本地模型。LLM 可以作为“提示词生成器”“节点参数解释器”或“图像理解模块”接入工作流但它与图像生成是解耦的。常见的做法有两种本地接入如果你本机内存和显存足够可以运行一个量化版 LLM如 Qwen、Llama 的 GGUF 版本通过自定义节点把 LLM 输出转化为提示词。这种情况下LLM 和 ComfyUI 确实在同一台电脑。远程接口接入通过 HTTP 请求调用部署在另一台服务器上的 LLM API。ComfyUI 中写一个简单的 Python 节点发起请求把返回的文本作为提示词输入。第二种方式更加灵活。因为 LLM 通常需要大内存和强力 CPU图像生成则需要大显存两者不一定要抢同一张卡。你可以把 LLM 部署在一台 CPU 内存较大的机器上把 ComfyUI 部署在 GPU 机器上通过网络服务连接。6.3 双卡怎么配置双卡场景是进阶用户最常问的问题之一。ComfyUI 默认是单进程调度它不会自动把一张工作流的计算负载分摊到两张显卡上。但你可以通过以下方式使用双卡多实例部署在两块显卡上各启动一个 ComfyUI 实例分别指定CUDA_VISIBLE_DEVICES环境变量再通过外部负载均衡或队列服务分发请求。工作流拆散如果工作流包含多个独立的分支可以手动把它们分到不同实例上执行再把结果合并。插件方案社区有一些针对多卡调度的插件但成熟度和稳定性参差不齐需要实际测试。以多实例部署为例基本命令如下# 终端 1使用显卡 0 CUDA_VISIBLE_DEVICES0 python main.py --port 8188 # 终端 2使用显卡 1 CUDA_VISIBLE_DEVICES1 python main.py --port 8189然后分别访问http://127.0.0.1:8188和http://127.0.0.1:8189。这种方式的好处是隔离干净缺点是需要自己做任务分发与结果聚合。6.4 视频生成工作流社区中“ComfyUI 无限生成视频”“ComfyUI 无限时长视频”这些热词实际指的是视频生成模型的批量工作流例如 WAN、LTX 等。它们的基本思路是使用视频生成模型每次生成一段短视频片段。把上一段的末尾帧作为下一段的起始帧实现连续生成。通过 VideoHelperSuite 等节点把所有片段拼接成一个完整视频。这类工作流对显存要求很高通常需要 16GB 以上显存并且要搭配专用的视频模型和低显存优化策略。不建议新手一上来就挑战可以先跑通文生图流程再逐步向视频生成扩展。7. 常见问题与排查思路7.1 安装启动阶段排查问题现象常见原因解决思路启动时提示缺少依赖requirements.txt 未安装完整重新执行pip install -r requirements.txt提示CUDA not availablePyTorch 与 CUDA 版本不匹配按 PyTorch 官方命令重装对应版本8088 端口被占用端口冲突改成--port 8189浏览器访问白屏前端文件未正常加载刷新页面或检查web/目录是否完整Windows 下 Git 提示unable to set system config diff.astextplain.textconvGit 配置异常检查 Git 安装路径与全局配置不需要卸载重装时先执行git config --global --list确认无冲突7.2 运行时报错排查问题现象常见原因解决思路生成图片全黑或全灰VAE 未正确连接或模型文件损坏检查 VAE 连线重新下载模型显存不足 OutOfMemory分辨率过高、batch_size 过大降低分辨率启用 tiled VAE或改用低显存优化节点节点显示为红色缺少自定义节点或版本不兼容根据节点名称安装对应插件加载工作流后图片尺寸变成 512默认模板使用 512 分辨率根据模型类型调整为 1024 或模型建议值模型加载很慢模型文件大、未使用 NVMe 磁盘把模型放到读取速度更快的磁盘或使用低精度加载工作流 JSON 拖入后节点丢失使用的自定义节点未安装安装对应插件后重新加载7.3 排查思路清单如果你遇到一个不确定原因的问题可以按以下顺序排查看控制台日志。ComfyUI 的所有报错都会输出在终端先找到第一行Error/Traceback。确认模型是否存在。检查models/checkpoints/目录里是否有对应文件模型路径是否包含中文或空格。确认连线是否完整。尤其是MODEL、CLIP、VAE三路输出是否都接上了。更新后回归。如果问题出现在git pull之后尝试回退到更新前的 Commit或者更新所有自定义节点。最小化复现。新建空白画布只保留最少节点看是否还会报错以此判断是工作流逻辑问题还是环境问题。8. 最佳实践与工程建议8.1 项目目录与命名规范ComfyUI 的目录看似简单但项目一多就会混乱。建议在models/下按用途继续分类例如models/ ├── checkpoints/ │ ├── sd15/ │ ├── sdxl/ │ └── flux/ ├── loras/ │ ├── character/ │ ├── style/ │ └── concept/ ├── controlnet/ │ ├── canny/ │ └── depth/ └── vae/工作流 JSON 的命名也要有规律建议格式用途_模型_关键参数_日期.json例如文生图_sdxl_steps20_seed0_20250101.json 图生图_重绘_denoise0.5_20250102.json好的命名既方便自己回溯也方便在社区交流时让他人快速理解工作流用途。8.2 模型管理与备份模型文件动辄几个 GB不适合频繁下载。建议遵循只保留常用的 Checkpoint其他模型放到外部移动硬盘需要时再拷贝回来。定期备份custom_nodes/目录因为插件更新可能引入兼容问题保留一份可回滚的版本很有必要。不要随意覆盖模型文件。很多模型文件名相同但内容不同覆盖后很难找回。8.3 安全边界与网络暴露ComfyUI 是一个本地生成工具但它也提供了对外 API。当你使用--listen 0.0.0.0时等于把端口暴露到局域网甚至公网存在被他人调用接口、消耗算力的风险。建议默认只监听127.0.0.1。需要远程访问时使用 SSH 隧道或内网穿透服务的受控通道而不是直接裸奔到公网。不要在生产环境使用弱密码或无认证方式直接暴露 ComfyUI 服务。如涉及生产系统集成必须确保你拥有合法授权并在测试环境验证后再切换。8.4 升级与回滚策略由于 ComfyUI 迭代很快每次git pull都可能带来破坏性变更。社区里常见的策略是cd ComfyUI git stash # 暂存本地改动 git pull # 拉取最新代码 git stash pop # 恢复本地改动如果在更新后发现功能异常可以通过git log查看历史 Commit并回退到上一个稳定点git log --oneline -10 git checkout commit_id但要注意回退代码后custom_nodes里的插件版本可能又变得不兼容。所以最稳妥的做法是“代码回退 插件回退”一起考虑保持主体与插件版本匹配。8.5 Python 节点的边界与性能ComfyUI 允许你通过自定义节点编写 Python 逻辑。这里有一点工程建议不要在节点里做重量级图像算法。优先使用 ComfyUI 已有的节点只有确实没有现成功能时才写 Python 节点。Python 节点要处理好异常日志不要把错误信息吞掉。涉及文件读写时使用相对路径或配置化路径避免因为绝对路径不同导致别人的工作流加载失败。注意节点间的数据传输量。在 Python 节点和普通节点之间传递大图时会占用大量内存和显存能用LATENT尽量用LATENT避免反复 VAE 编解码。9. 最后的一些实操建议ComfyUI 是一个学习曲线相对陡峭但上限很高的工具。对我个人来说从 WebUI 迁移到 ComfyUI 最大的转折点是理解了“所有生成任务都可以拆成一条数据流”这个思路。一旦你开始把问题拆成“加载模型、编码条件、初始化潜空间、采样、解码、保存”这几个环节很多高阶工作流就不再神秘。如果你刚接触 ComfyUI建议按以下顺序练习先跑通默认文生图工作流重点理解MODEL、CLIP、VAE、LATENT这四类数据的流动。手动做一个图生图工作流体验denoise参数对结果的影响。尝试加载一张参考图接 ControlNet 节点感受条件控制的效果。再尝试 LoRA 加载、批量生成、队列调度。最后再进入视频生成、LLM 接入等更复杂的场景。在动手过程中记得定期保存工作流并记录参数。因为很多问题不是一次能调试出来的留下运行记录会帮你更快复盘。希望这篇文章能帮你少走一些弯路。如果你在安装或工作流搭建过程中遇到某个具体报错不妨按本文第 7 节的排查思路先试一遍大概率能定位到问题所在。如果觉得本文有用可以收藏备用也欢迎在评论区交流工作中的实际案例。
返回列表