批量处理 #
批量处理概述 #
为什么需要批量处理? #
批量处理可以高效生成大量图像,适用于测试、生产、数据集创建等场景。
┌─────────────────────────────────────────────────────────────┐
│ 批量处理优势 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 效率提升: │
│ ├── 一次设置,多次执行 │
│ ├── 自动化重复任务 │
│ └── 减少人工干预 │
│ │
│ 应用场景: │
│ ├── 参数测试 - 测试不同参数效果 │
│ ├── 种子探索 - 寻找最佳种子 │
│ ├── 批量生产 - 生成大量图像 │
│ └── 数据集创建 - 创建训练数据 │
│ │
└─────────────────────────────────────────────────────────────┘
基础批量方法 #
Batch Size 设置 #
Empty Latent Image 节点:
┌─────────────────────────────────────────────────────────────┐
│ Batch Size 设置 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 参数: │
│ ├── width: 图像宽度 │
│ ├── height: 图像高度 │
│ └── batch_size: 批量大小 │
│ │
│ batch_size 说明: │
│ ├── 1 - 单张图像 │
│ ├── 4 - 同时生成 4 张 │
│ ├── 8 - 同时生成 8 张 │
│ └── 更高 - 根据显存调整 │
│ │
│ 注意事项: │
│ ├── batch_size 越大,显存占用越高 │
│ ├── 相同参数,不同种子 │
│ └── 适合快速生成变体 │
│ │
└─────────────────────────────────────────────────────────────┘
示例:
batch_size: 4
seed: 12345
结果:生成 4 张图像,种子分别为 12345, 12346, 12347, 12348
自动队列 #
Auto Queue 功能:
位置:Extra options → Auto queue
模式:
├── disabled - 禁用自动队列
├── instant - 即时模式(完成即开始下一个)
└── change - 变化触发(参数变化时触发)
使用方法:
1. 设置工作流参数
2. 启用 Auto queue (instant)
3. 点击 Queue Prompt
4. 自动持续生成
配置选项:
├── Batch count - 批量数量
└── 可设置生成总数
种子控制 #
种子控制策略:
固定种子:
├── 每次生成相同结果
├── 用于复现和调试
└── 手动设置 seed 值
随机种子:
├── 每次生成不同结果
├── 用于探索和变体
└── seed 设为随机或 -1
种子增量:
├── 自动递增种子值
├── 产生系列变化
└── 保持相似性
KSampler 种子行为:
├── 固定种子:每次相同
├── 随机种子:每次不同
└── batch_size:自动递增
高级批量技术 #
参数变化批量 #
使用 Primitive 节点:
┌─────────────┐
│ Primitive │
│ (Int/Float) │
│ value: X │
└──────┬──────┘
│
▼
┌─────────────┐
│ KSampler │
│ cfg: ←──────┘
└─────────────┘
方法:
1. 创建 Primitive 节点
2. 连接到目标参数
3. 使用 Auto queue
4. 手动调整参数值
5. 自动生成变化版本
适用参数:
├── CFG
├── Steps
├── Denoise
├── LoRA 权重
└── 其他数值参数
提示词批量 #
多提示词批量:
方法 1:手动切换
├── 准备多个提示词
├── 逐个修改生成
└── 记录结果
方法 2:使用节点
├── String Literal 节点
├── 多个提示词节点
├── Switch 选择
└── 自动切换
方法 3:外部输入
├── 从文件读取提示词
├── 逐行处理
└── 自动化生成
示例工作流:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ String 1 │ │ │ │ CLIP Text │
│ "prompt A" │────→│ Switch │────→│ Encode │
├─────────────┤ │ │ └─────────────┘
│ String 2 │────→│ │
│ "prompt B" │ └─────────────┘
└─────────────┘
批量处理工作流模板 #
批量测试工作流:
目标:测试不同参数组合
结构:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Primitive │ │ Primitive │ │
│ │ (CFG) │ │ (Steps) │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ └─────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ KSampler │ │
│ └─────────────┘ │
│ │
│ Auto queue: instant │
│ 手动调整参数 → 自动生成 │
│ │
└─────────────────────────────────────────────────────────────┘
批量生成工作流:
目标:生成大量图像
结构:
├── Empty Latent Image: batch_size = 4
├── Auto queue: instant
├── Batch count: 10
└── 总计生成: 4 x 10 = 40 张
自动化集成 #
API 批量调用 #
使用 API 进行批量处理:
1. 保存工作流为 API 格式
├── Save (API Format)
└── 获得 JSON 文件
2. 编写调用脚本
```python
import requests
import json
# 加载工作流
with open('workflow_api.json', 'r') as f:
workflow = json.load(f)
# 修改参数
workflow['3']['inputs']['seed'] = 12345
# 发送请求
response = requests.post(
'http://127.0.0.1:8188/prompt',
json={'prompt': workflow}
)
- 批量循环
python
for i in range(100): workflow['3']['inputs']['seed'] = i response = requests.post( 'http://127.0.0.1:8188/prompt', json={'prompt': workflow} )
### 队列管理
队列管理功能:
查看队列: ├── Queue size 显示当前队列数量 ├── 可查看待处理任务 └── 显示执行状态
队列操作: ├── Queue Prompt - 添加到队列 ├── Queue Prompt (front) - 插队 ├── Clear Queue - 清空队列 └── Interrupt - 中断当前任务
队列监控: ├── 查看执行进度 ├── 检查错误信息 └── 管理执行顺序
### 结果管理
批量结果管理:
文件命名: ├── filename_prefix 设置 ├── 自动编号 └── 包含参数信息
示例: filename_prefix: “test_cfg{cfg}_steps{steps}” 结果:test_cfg7_steps20_0001.png
输出目录: ├── 默认:ComfyUI/output/ ├── 可自定义 └── 按日期/项目分类
结果整理: ├── 自动命名规则 ├── 元数据记录 └── 便于筛选分析
## 效率优化
### 显存优化
批量处理显存优化:
-
合理设置 batch_size ├── 根据 GPU 显存调整 ├── 4GB: batch_size 1-2 ├── 8GB: batch_size 2-4 ├── 12GB: batch_size 4-8 └── 24GB: batch_size 8-16
-
使用低显存模式 ├── --lowvram └── 降低单次处理量
-
分批处理 ├── 多次小批量 └── 避免单次过大
-
模型管理 ├── 避免频繁切换模型 └── 使用相同模型批量处理
### 速度优化
批量处理速度优化:
-
参数优化 ├── 预览用低步数 ├── 快速采样器 └── 适当分辨率
-
工作流优化 ├── 移除不必要节点 ├── 简化处理流程 └── 合并相似操作
-
硬件优化 ├── 使用 SSD ├── 充足内存 └── 稳定电源
-
软件优化 ├── 启用 xformers ├── 最新驱动 └── 优化配置
## 常见问题
### 问题 1:队列卡住
症状:队列任务卡住不执行
解决: ├── 检查是否有错误提示 ├── 重启 ComfyUI ├── 清空队列重试 └── 检查系统资源
### 问题 2:批量中断
症状:批量处理中途停止
解决: ├── 检查错误日志 ├── 降低 batch_size ├── 检查显存使用 └── 分批处理
### 问题 3:结果混乱
症状:批量结果命名混乱或丢失
解决: ├── 设置清晰的命名规则 ├── 检查输出目录权限 ├── 确认磁盘空间 └── 使用自定义命名
## 最佳实践
### 批量处理建议
推荐流程:
-
准备阶段 ├── 确定批量目标 ├── 设计工作流 └── 设置参数范围
-
测试阶段 ├── 小批量测试 ├── 验证参数效果 └── 调整优化
-
执行阶段 ├── 设置批量参数 ├── 启动自动队列 └── 监控执行状态
-
整理阶段 ├── 检查生成结果 ├── 筛选优质图像 └── 记录有效配置
### 工作流模板
建立批量模板:
模板 1:参数测试 ├── 可变参数节点 ├── 自动队列 └── 快速迭代
模板 2:种子探索 ├── 固定其他参数 ├── 随机种子 └── 大量生成
模板 3:提示词测试 ├── 多提示词节点 ├── Switch 切换 └── 对比生成
模板 4:生产批量 ├── 优化参数 ├── 高质量设置 └── 稳定输出
## 下一步
现在你已经掌握了批量处理,接下来学习 [自定义节点](/docs/comfyui/custom-nodes),了解如何扩展 ComfyUI 功能。