ComfyUI-MiniMax-H3-Sampler-Unlimited:低显存直出长时1080p视频
1. 概述
1.1 什么是 HR Endless Sampler?
HR Endless Sampler 是 MiniMax H3 视频模型的长视频分块采样器,专门解决 H3 模型生成长视频时显存不足的问题。
核心能力:
- • 将长视频拆成多个小块(chunk)依次生成
- • 相邻块之间保持画面和声音的连续性
- • 用本地多模态导演模型(Gemma/Qwen)智能规划镜头
- • 通过 Qwen3.6/3.8,最低 12GB 显存即可运行
1.2 本分支特色(mickeylan fork)
本扩展 fork 自 https://github.com/wjluoxiao/ComfyUI-JZL-MiniMax-H3 。原版只支持 gemma,我在其基础上修复了一些错误,并增加了对 qwen3.5、qwen3.6、qwen3.8 的支持,支持 MOE、MTP 等新特性,显存占用更小,对中文的支持也更好。同时对 12G 显卡的适配更完善,可在 12G 显存下直出无限时长的 1080p 视频。缺点是用时间换时长和分辨率:生成一段 30 秒 1080p 视频大约需要 2 小时。我实测了 qwen3.5-9B Q4_K_M 和 qwen3.8-27B UD-IQ2_S-MTP;gemma 4 我的 4070 跑不动,没有完整测试。我 fork 的分支地址:https://github.com/mickeylan/ComfyUI-MiniMax-H3-Sampler-Unlimited 。
1.3 为什么需要分块生成?
MiniMax H3 生成视频时,需要把整个视频的隐变量(latent)全部放在显存里。对长时间视频来说:
1080p, 30秒, 24fps = 720帧
每帧 latent: [24, 帧高/16, 帧宽/16] = [24, 68, 120]
总显存: 24 × 68 × 120 × 720 × 4字节 ≈ 3.5GB (仅 latent)
加上模型参数 (~4GB) + 中间激活 (~4GB) + KV缓存 (~2GB)
总需求: 约 14-16GB分块生成把视频拆成多个小块,每次只生成一小段,显存需求大幅降低。
2. 技术原理
2.1 H3 时间网格
H3 模型使用特殊的时间编码格式:
帧覆盖模式: FRAME_PER_TOKEN = (1, 4, 4, 4, 4)
有效帧数 = 5 + 17k (k=0,1,2,3...)
示例:
- 5帧 = 2 个 video latent steps
- 22帧 = 7 个 video latent steps
- 39帧 = 12 个 video latent steps
- 124帧 = 37 个 video latent steps因此 chunk_frames 参数会自动对齐到 H3 的时间网格。
2.2 分块生成流程
┌─────────────────────────────────────────────────────────────┐
│ 完整视频生成流程 │
└─────────────────────────────────────────────────────────────┘
[Chunk 1] ──▶ [Chunk 2] ──▶ [Chunk 3] ──▶ ... ──▶ [Chunk N]
│ │ │ │
│ │ │ │
│ [续接条件] [续接条件] [续接条件]
│ │ │ │
▼ ▼ ▼ ▼
[生成帧0-124] [生成帧99-223] [生成帧198-322] ... [生成帧...]续接条件(Video1/Audio1):
- • 上一块的最后 22 帧作为参考条件
<Video N> 和 <Audio N> 标签感知这些参考2.3 导演系统架构
┌─────────────────────────────────────────────────────────────┐
│ 导演系统工作流程 │
└─────────────────────────────────────────────────────────────┘
┌──────────────────┐
│ 完整原始提示词 │
└────────┬─────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ 预制作阶段(Preproduction) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 导演模型(Gemma4/Qwen)读取完整提示词 │ │
│ │ 规划每个镜头的开始时间、结束时间、动作描述 │ │
│ │ 输出:镜头时间表(Shot Timing Plan) │ │
│ └─────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
│
▼
│ 分块执行(每块重复) │
└────────────────────────────────────┘
│
┌──────────┴──────────────┐
▼ ▼
│ H3 视频生成 │ │ 导演观察 │
│ 采样当前块 │ │ 解码画面观察 │
└────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ 输出画面帧 │────────▶ │ 编写下一块提示词 │
│ (2fps采样) │ 观察画面 │ detailed_description │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
[进入下一块] [返回第4步]2.4 显存管理策略
三层显存隔离:
1. H3 模型层
- MiniMax H3 DiT 模型 (~4GB)
- CLIP/Qwen conditioning 模型 (~1GB)
- H3 视频 VAE (~0.5GB)
2. 导演模型层(独立进程)
- Gemma4 12B Q4 (~6-8GB) ← 12GB 显存无法使用
- Qwen3.6/3.8 27B MoE UD-IQ2 (~8-9GB) ← 12GB 刚好可用
3. 采样中间层
- Latent 缓存
- 注意力激活
- 临时缓冲区串行执行原则:
1. 卸载 H3 + CLIP + VAE
2. 清理 ComfyUI 模型缓存
3. 启动导演进程(Gemma/Qwen)
4. 导演工作...
5. 导演进程退出,释放 llama.cpp CUDA 上下文
6. 重新加载 H3 + CLIP + VAE
7. H3 采样...
8. 重复 1-7 直到完成3. 节点详解
3.1 HR Endless Sampler(核心采样器)
功能:分块采样长视频 latent,支持多种导演后端
节点 ID:HREndlessSampler
输入端口
| 端口名 | 类型 | 必需 | 说明 |
|---|---|---|---|
noise | LATENT | ✅ | 噪声输入,连接噪声节点 |
guider | GUIDER | ✅ | guider 配置 |
sampler | SAMPLER | ✅ | 采样器配置 |
sigmas | SIGMAS | ✅ | 噪声调度 |
latent_image | LATENT | ✅ | 初始 latent(通常为空) |
model | MODEL | ✅ | MiniMax H3 模型 |
clip | CLIP | ✅ | CLIP/Qwen conditioning 模型 |
vae | VAE | ✅ | H3 视频 VAE |
prompt | STRING | ✅ | 完整 H3 提示词 |
fps | FLOAT | ✅ | 帧率(通常 24) |
images | IMAGE | ⚠️ | 旧版批量参考图输入 |
source_images | IMAGE* | ⚠️ | Ref2VA 多图输入 |
director_backend | STRING | ❌ | 导演后端:gemma4/qwen3.5/qwen3.6/qwen3.8 |
director_model | STRING | ❌ | 导演模型路径,auto 自动选择 |
director_mmproj | STRING | ❌ | 导演 mmproj 路径,auto 自动选择 |
输出端口
| 端口名 | 类型 | 说明 |
|---|---|---|
output | LATENT | 完成的长视频/音频 latent |
denoised_output | LATENT | 完整去噪 latent |
chunk_prompts | STRING | 每块最终 H3 提示词及范围 |
timeline | CUSTOM | 分块、镜头、提示词和耗时元数据 |
核心参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
chunk_frames | INT | 124 | 每块采样帧数(自动对齐 H3 网格) |
video_continuation | INT | 22 | 续接帧数(5-107) |
context_keyframes | INT | 5 | 上下文关键帧(5-107) |
guide_overlap | INT | 0 | 引导重叠帧数 |
video_continuation_res | STRING | full | 续接分辨率预设 |
director_mtp | BOOL | false | Qwen MTP 推测解码 |
director_mtp_draft_tokens | INT | 2 | MTP draft 长度(1-8) |
director_reasoning_effort | STRING | medium | Qwen3.8 推理力度 |
director_cpu_moe | BOOL | false | Qwen MoE 卸载到 CPU |
cache_gemma_preproduction | BOOL | false | Gemma KV 缓存(仅 Gemma) |
gemma4_mtp | BOOL | false | Gemma MTP(仅 Gemma) |
pytorch_memory_fraction | FLOAT | 0.85 | PyTorch 显存占用比例 |
debug | BOOL | false | 调试模式 |
debug_stop_chunk | INT | 0 | 停止块(0=全部) |
debug_start_chunk | INT | 0 | 起始块(0=从头开始) |
tiny_vae | STRING | none | 预览 VAE 模式 |
3.2 HR Endless Sampler Preview(实时预览)
功能:生成过程中实时预览已完成的块
节点 ID:HREndlessSamplerPreview
放置位置:插在模型到 guider 的路径中
模型 ──▶ [Preview 节点] ──▶ Guider ──▶ Sampler输入端口
| 端口名 | 类型 | 说明 |
|---|---|---|
model | MODEL | H3 模型 |
输出端口
| 端口名 | 类型 | 说明 |
|---|---|---|
model | MODEL | 带预览补丁的模型 |
功能特性
- • 分块播放:每完成一块,自动加入播放列表
- • 颜色编码:各块使用不同颜色,在时间轴上一目了然
- • 镜头括号:显示源镜头边界
- • 悬停提示:鼠标悬停可查看 H3 提示词、H3 渲染时间、Gemma 耗时等信息
- • 键盘控制:用 Left/Right 键逐帧前后移动
- • 浏览器刷新恢复:刷新页面后自动恢复预览状态
- • 采样图表:显示 sigma 和每步耗时曲线
tiny_vae 模式
| 模式 | 说明 | 显存占用 |
|---|---|---|
none | 快速 H3 Latent2RGB | 最低 |
taeh3.safetensors | 完整 VAE 解码 | 较高 |
3.3 HR Endless Sampler Save Video(保存视频)
功能:保存完成的视频,保留完整的时间线和镜头信息
节点 ID:HREndlessSamplerSaveVideo
输入端口
| 端口名 | 类型 | 说明 |
|---|---|---|
images | IMAGE | 解码后的视频帧 |
audio | AUDIO | 可选:音轨 |
timeline | CUSTOM | 分块/镜头元数据 |
filename_prefix | STRING | 文件名前缀 |
format | STRING | 视频格式 |
fps | FLOAT | 输出帧率 |
lossless | BOOL | 无损压缩 |
crf | INT | 质量(0-63,越小越好) |
pix_fmt | STRING | 像素格式 |
exr_gamma | FLOAT | EXR gamma 值 |
latent | LATENT | 可选:原始 latent |
vae | VAE | 可选:原始 VAE |
输出格式
| 格式 | 说明 | 依赖 |
|---|---|---|
video/h264-mp4 | H.264 MP4 | ComfyUI 原生,无需 VHS |
video/* | 其他格式 | 需要 Video Helper Suite |
video/exr | EXR 图像序列 | PyAV |
格式特性
H.264 MP4:
- • 使用 ComfyUI 原生编码器
- • 不需要 Video Helper Suite
- • 支持 CRF、8/10 位深、音频混合
- • 时间线写入容器元数据 + JSON sidecar
VHS 格式:
- • 调用本地安装的 Video Combine 编码器
- • 支持 GIF、WebP、MKV 等
- • 元数据通过 FFmpeg 容器写入
EXR 序列:
- • 16 位或 32 位浮点
- • 支持 RLE、ZIP1、ZIP16 压缩
- • 不经过 H3 VAE clamp,输出原始 float 值
- • 音频保存为独立的 32 位 float WAV
浏览器播放器功能
- • 分块颜色时间轴
- • 镜头边界括号
- • 悬停显示每块提示词和时间
- • 播放/暂停、时间轴定位
- • 键盘 Left/Right 逐帧
- • Matching Videos 下拉:快速比较不同渲染
3.4 HR Endless Sampler Load Video(加载视频)
功能:加载已完成视频,恢复交互式播放
节点 ID:HREndlessSamplerLoadVideo
输入端口
| 端口名 | 类型 | 说明 |
|---|---|---|
video | STRING | 视频路径 |
fps | FLOAT | 播放帧率(0=使用存储值) |
输出端口
| 端口名 | 类型 | 说明 |
|---|---|---|
video | VIDEO | 视频文件 |
images | IMAGE | 解码帧序列 |
audio | AUDIO | 音轨 |
width | INT | 视频宽度 |
height | INT | 视频高度 |
frame_count | INT | 总帧数 |
fps | FLOAT | 实际帧率 |
filename | STRING | 文件名 |
timeline | CUSTOM | 时间线元数据 |
视频获取方式
Browse output…:
- • 从 ComfyUI output 目录浏览
- • 支持嵌套文件夹
- • EXR 序列显示为一个条目
- • 支持 Name/Size/Date 排序
Upload video…:
- • 从浏览器上传
- • 16MB 分块上传
- • 存储到
output/hr_endless_sampler_uploads/
4. 安装指南
4.1 目录结构
ComfyUI/
└── custom_nodes/
└── ComfyUI-MiniMax-H3-Sampler-Unlimited/
├── __init__.py
├── nodes.py # 核心采样器
├── preview.py # 预览节点
├── video_io.py # 视频保存/加载
├── gemma4.py # Gemma 导演
├── gemma4_mtp.py # Gemma MTP
├── qwen35.py # Qwen 导演
├── director_backend.py # 模型选择
├── director_errors.py # 错误定义
├── web/ # 前端资源
│ ├── unlimited_preview.js
│ └── finished_video_player.js
├── tests/ # 测试
└── requirements.txt4.2 安装依赖
# 切换到 ComfyUI 目录
cd ComfyUI
# 使用 ComfyUI 的 Python 安装
python -m pip install -r custom_nodes/ComfyUI-MiniMax-H3-Sampler-Unlimited/requirements.txtrequirements.txt 内容:
huggingface-hub>=0.34.0
llama-cpp-python>=0.3.35
av>=16.0.04.3 快速安装脚本
Linux/macOS:
chmod +x install.sh
./install.shWindows:
install.bat5. 导演模型配置
5.1 模型支持对比
| 模型 | 架构 | 参数量 | 激活参数 | 上下文 | MTP | VRAM | 12GB 可用 |
|---|---|---|---|---|---|---|---|
| Gemma 4 12B | Dense | 12B | 12B | 32K | ✅ | ~6-8GB | ❌ |
| Qwen3.5 9B | Dense | 9B | 9B | 65K | ❌ | ~4-5GB | ✅ |
| Qwen3.6 27B | MoE | 27B | ~3-4B | 32K | ✅ | ~5-6GB | ✅ |
| Qwen3.8 27B | MoE | 27B | ~3-4B | 32K | ✅ | ~5-6GB | ✅ |
5.2 为什么 Qwen3.6/3.8 能在 12GB 上运行?
MoE(混合专家)架构:
传统 Dense 模型:
每个 token 激活 100% 的参数
比如:12B 模型 = 每步计算 12B 参数
MoE 模型(如 Qwen3.6/3.8):
只有被选中的"专家"参与计算
总参数量大(记得多),但每次计算量小(速度快)UD-IQ2-mtp 量化:
FP16: 27B × 2字节 = 54GB ← 不可能
Q4: 27B × 0.5字节 ≈ 15GB ← 勉强
IQ2: 27B × 0.25字节 ≈ 7GB ← ✅ 刚好结论:27B MoE + UD-IQ2 量化,是 12GB 显存的完美组合
5.3 模型下载目录
Qwen3.6/3.8(推荐,12GB 可用):
ComfyUI/models/LLM/GGUF/qwen3.8-27B/
├── Qwen3.8-27B-UD-IQ2_M-gguf.gguf # 主模型
└── mmproj-Qwen3.8-27B.gguf # 多模态投影器Qwen3.5 9B:
ComfyUI/models/LLM/GGUF/qwen3.5-9B/
├── Huihui-Qwen3.5-9B-abliterated.Q4_K_M.gguf
└── mmproj-Huihui-Qwen3.5-9B-abliterated.ggufGemma 4(需要 >12GB 显存):
ComfyUI/models/llama_cpp/gemma-4-12b-it-qat-q4_0/
├── gemma-4-12b-it-qat-q4_0.gguf
├── mmproj-gemma-4-12b-it-qat-q4_0.gguf
└── gemma-4-12B-it-qat-assistant-MTP-Q8_0.gguf # MTP drafter5.4 节点配置示例
Qwen3.8(12GB 推荐):
director_backend = qwen3.8
director_model = auto
director_mmproj = auto
director_mtp = true
director_mtp_draft_tokens = 2
director_reasoning_effort = medium
director_cpu_moe = trueQwen3.6:
director_backend = qwen3.6
director_model = auto
director_mmproj = auto
director_mtp = true
director_mtp_draft_tokens = 2
director_cpu_moe = trueQwen3.5:
director_backend = qwen3.5
director_model = auto
director_mmproj = autoGemma 4(>12GB 显存):
director_backend = gemma4
director_model = auto
director_mmproj = auto
gemma4_mtp = true
cache_gemma_preproduction = false6. 工作流连接
6.1 基本连接图
┌─────────────────────────────────────────┐
│ HR Endless Sampler │
│ │
Noise ──────────────┼─▶ [noise] │
│ │
Model ──────────────────▶ [model] ──▶ [Preview] ──▶ [guider]│
│ │
│ Sampler ──┼─▶ [sampler] │
│ │
│ Sigmas ───┼─▶ [sigmas] │
│ │
│ Latent ──────┼─▶ [latent_image]│
│ │
CLIP ──────────────────▶ [clip] │
│ │
VAE ──────────────────▶ [vae] │
│ │
Prompt ────────────────▶ [prompt] │
│ │
FPS ───────────────────▶ [fps] │
│ │
Images (可选) ──────────▶ [images] 或 [source_images_*] │
│ │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ Output │
│ [output] ────▶ VAE Decode ──▶ Decode │
│ [timeline] ──▶ Save Video │
│ [chunk_prompts] │
└─────────────────────────────────────────┘6.2 完整工作流示例
1. 基础模型加载
CheckpointLoader → CLIP/VAE/Model
2. 提示词准备
Text Encode (正面) ──▶ KLiteSDXLHighResFix Clip
Text Encode (负面) ──▶
3. H3 特殊处理
MiniMax H3Conditioning ──▶ K采样器 → H3Latent
4. HR Endless Sampler 连接
noise ──▶
Model (through Preview) ──▶ guider ──▶ Sampler ──▶
sigmas ──▶
latent_image ──▶
CLIP ──▶
VAE ──▶
Prompt ──▶
FPS=24 ──▶
5. 预览和保存
Sampler.output ──▶ Preview ──▶ (回到模型链)
Sampler.output ──▶ VAE Decode ──▶ Save Video
Sampler.timeline ──▶ Save Video
6.3 Ref2VA 多图连接
旧版(images):
多个 LoadImage ──▶ 合并 ──▶ [images]新版(source_images,推荐):
LoadImage(source_image_0) ──▶ [source_image_0]
LoadImage(source_image_1) ──▶ [source_image_1]
LoadImage(source_image_2) ──▶ [source_image_2]
...注意:不要同时连接 images 和 source_images。
7. 参数详解
7.1 采样参数
chunk_frames(每块帧数)
说明:每次 H3 调用采样的最大帧数
有效值:必须对齐 H3 时间网格(5, 22, 39, 56, 73, 90, 107, 124...)
默认值:124
影响:
- • 值越小 → 显存越低,但导演交接次数越多
- • 值越大 → 连续性越好,但显存峰值越高
推荐:
| 显存 | 1080p 推荐值 |
|---|---|
| 12GB | 39-56 |
| 16GB | 56-78 |
| 24GB+ | 124+ |
video_continuation(续接帧数)
说明:上一块携带到下一块的帧数,作为 <Video N> 和 <Audio N> 参考
有效值:5-107
默认值:22
推荐:
| 用途 | 推荐值 |
|---|---|
| 最高连续性 | 22 |
| 节省显存 | 5 |
| 平衡 | 12 |
video_continuation_res(续接分辨率)
说明:Video1 续接 latent 的空间分辨率
选项:
| 选项 | 分辨率 | 说明 |
|---|---|---|
full | 原始分辨率 | 无额外编码,最高画质 |
0.98mp (1344x768) | 1344×768 | 几乎无损 |
0.50mp (960x544) | 960×544 | 中等压缩 |
0.10mp (448x256) | 448×256 | 最小显存 |
7.2 导演参数
director_backend(导演后端)
选项:
- •
gemma4- Gemma 4 12B(需要 >12GB 显存) - •
qwen3.5- Qwen 3.5 9B - •
qwen3.6- Qwen 3.6 27B MoE - •
qwen3.8- Qwen 3.8 27B MoE
director_mtp(推测解码)
说明:启用 MTP 推测解码,加速生成
适用:仅限 Qwen3.6/3.8
效果:
- • 减少生成的 token 数量
- • 加快导演响应速度
- • 略微增加显存占用
director_mtp_draft_tokens(Draft 长度)
说明:MTP 每次推测的 token 数
有效值:1-8
推荐:2-4
director_reasoning_effort(推理努力度)
说明:控制 Qwen3.8 的推理努力度
选项:
| 选项 | 说明 | 速度 |
|---|---|---|
xhigh | 最高推理深度 | 最慢 |
medium | 平衡模式 | 中等 |
low | 最快 | 最快 |
推荐:12GB 显存使用 medium 或 low
director_cpu_moe(MoE CPU 卸载)
说明:将 MoE 专家层卸载到 CPU
适用:仅限 Qwen3.6/3.8
效果:
- • 降低显存占用
- • 略微降低速度
- • 仅在没有启用 MTP 时效果明显
7.3 显存控制参数
pytorch_memory_fraction
说明:PyTorch CUDA 分配器的显存上限
默认值:0.85(85%)
说明:
- • 预留 15% 显存给 H3 的临时大缓冲区
- • 与
cudaMallocAsyncbackend 配合使用时尤为重要 - • 设为 1.0 可完全利用显存
7.4 调试参数
debug
说明:启用详细日志输出
输出内容:
- • 每块的完整 H3 提示词
- • 导演请求与响应
- • 显存使用快照
- • 耗时分解
debug_stop_chunk
说明:在指定块后停止
示例:
| 值 | 效果 |
|---|---|
| 0 | 完整生成(默认) |
| 1 | 只生成第 1 块 |
| 2 | 生成到第 2 块 |
debug_start_chunk
说明:从指定块重新开始运行
用途:
- • 测试特定块的导演输出
- • 复用已完成块的结果
- • A/B 测试导演提示词
注意:设为 0 会清除重放缓存
8. 显存优化
8.1 12GB 显存完整配置
# 导演设置
director_backend = qwen3.8
director_model = auto
director_mmproj = auto
director_mtp = true
director_mtp_draft_tokens = 2
director_reasoning_effort = medium # 或 low
director_cpu_moe = true
# 采样设置
chunk_frames = 56 # 1080p 推荐
video_continuation = 22
video_continuation_res = full
pytorch_memory_fraction = 0.82
tiny_vae = none
# 关闭不支持的选项
```python
cache_gemma_preproduction = false
gemma4_mtp = false8.2 显存不足时的调整顺序
- 1. 减小 chunk_frames(首选)
- • 1080p: 56 → 39
- • 720p: 78 → 56
- 2. 启用 director_cpu_moe
- • 仅 Qwen3.6/3.8 有效
- 3. 降低 video_continuation
- • 22 → 12 → 5
- • 注意:会影响连续性
- 4. 降低 video_continuation_res
- • full → 0.50mp → 0.20mp
- 5. 降低 pytorch_memory_fraction
- • 0.85 → 0.80 → 0.75
- 6. 使用 tiny_vae
- • tiny_vae = taeh3.safetensors
- • 牺牲预览质量换取显存
- 7. 关闭其他 GPU 程序
- • 浏览器、CUDA 应用等
8.3 H3 Low VRAM Attention
推荐插件:KJNodes MiniMax H3 Low VRAM Attention
设置:设为 4
效果:
- • 显著降低 H3 注意力层的显存峰值
- • 对 Chunk 2+ 特别有效(因为有续接帧)
- • 几乎不影响画质
9. 中文提示词
9.1 提示词格式
MiniMax H3 使用镜头标记格式:
[Shot 1] 第一个镜头的描述
[Shot 2] At 00:02.833, 第二个镜头开始
[Shot 3] At 00:05.500, 第三个镜头描述9.2 对白和字幕
对白:使用 <d> 标签包裹,原样保留
[Shot 1]
一个女人站在雨中,她说:<d>[Chinese] 你终于来了。</d>字幕/文字:保持原语言
[Shot 2]
镜头对准墙上的霓虹招牌:"夜上海" 闪烁着9.3 导演输出规则
使用 Qwen 导演时,输出遵循以下规则:
| 内容 | 输出语言 | 示例 |
|---|---|---|
| 视觉描述 | 英文 | A woman stands on a neon-lit street |
| 环境描述 | 英文 | Rain reflects the red signs |
| 人物动作 | 英文 | She turns to face the camera |
| 镜头运动 | 英文 | The camera slowly tracks toward her |
| 对白 | 原语言 | <d>[Chinese] 你终于来了。</d> |
| 歌词 | 原语言 | <d>[Singing] 夜上海~夜上海~</d> |
| 画面文字 | 原语言 | A neon sign reads "夜上海" |
9.4 完整示例
输入提示词(中文):
[Shot 1]
一个女人站在雨夜的上海街道上,她回头看向镜头并说:<d>[Chinese] 你终于来了。</d>
[Shot 2] At 00:03.000,
镜头缓慢推向女人的面部,她露出微笑。背景是闪烁的霓虹灯招牌,上面写着"夜上海"。导演输出(英文 + 原语言对白):
[Shot 1]
A woman stands on a rain-soaked Shanghai street at night. The wet pavement reflects the red and blue neon signs across the road. In a continuous movement, she turns to face the camera and says: [Chinese] 你终于来了。
[Shot 2] At 00:03.000,
The camera slowly pushes in toward the woman's face as she smiles warmly. The background features flickering neon signs, including one that reads "夜上海" in bold red characters.10. 调试与排错
10.1 常见错误
错误:Qwen requires a local GGUF model and mmproj
原因:未找到同目录的 Qwen 模型和 projector
解决:
- 1. 确认模型和 mmproj 在同一目录
- 2. 目录名包含
qwen3.5/qwen3.6/qwen3.8 - 3. 在节点中显式选择两个文件
错误:Qwen does not support gemma4_mtp
原因:Qwen 模式下启用了 Gemma MTP
解决:
gemma4_mtp = false错误:llama-cpp-python version error
原因:llama-cpp-python 版本不兼容
解决:
# 确认 ComfyUI Python 中的版本
cd ComfyUI
python -c "import llama_cpp; print(llama_cpp.__version__)"
# 重新安装兼容版本
python -m pip install llama-cpp-python==0.3.35错误:Out of Memory (OOM)
原因:显存不足
解决:
- 1. 减小 chunk_frames
- 2. 启用 director_cpu_moe
- 3. 降低 video_continuation
- 4. 使用 video_continuation_res 降低分辨率
- 5. 减小 pytorch_memory_fraction
- 6. 使用 KJNodes Low VRAM Attention
10.2 调试技巧
启用调试模式
debug = true这会输出:
- • 每块的完整 H3 提示词
- • 导演请求和 JSON 响应
- • 显存使用详情
- • 耗时分解
分步测试
# 只生成前 2 块
debug_stop_chunk = 2
# 从第 2 块重新测试
debug_start_chunk = 2
debug_stop_chunk = 2查看导演日志
# 最近运行的导演记录
cat ${TMPDIR}/comfyui-hr-endless-sampler/last_gemma_chunk_prompts.txt
# 导演观察的画面
ls ${TMPDIR}/comfyui-hr-endless-sampler/last_gemma_images/10.3 重放缓存
位置:${TMPDIR}/comfyui-hr-endless-sampler/last_run_replay/
内容:
- • 噪声状态
- • 已完成块
- • 续接边界
- • 提示词哈希
清除:设置 debug_start_chunk = 0
10.4 性能监控
运行结束时,控制台会输出:
=== HR Endless Sampler Timing ===
H3 sampling: 1234.5s
VAE decode: 45.2s
Director (Gemma): 67.8s总计: 1347.5s
峰值内存:8.2 GB
峰值显存:10.8 GB
附录 A:文件清单
| 文件 | 说明 |
|---|---|
__init__.py | 插件入口,注册节点 |
nodes.py | 核心采样器实现 |
preview.py | 实时预览节点 |
video_io.py | 视频保存/加载节点 |
gemma4.py | Gemma 4 导演实现 |
gemma4_mtp.py | Gemma MTP 实现 |
qwen35.py | Qwen 导演实现 |
director_backend.py | 模型选择逻辑 |
director_errors.py | 错误类型定义 |
gemma4_prompts.txt | Gemma 提示模板 |
qwen35_prompts.txt | Qwen 提示模板 |
附录 B:时间线 JSON 格式
{
"fps": 24,
"total_frames": 625,
"chunks": [
{
"chunk": 1,
"start": 0,
"end": 124,
"gemma_detailed_description": "..."
},
{
"chunk": 2,
"start": 99,
"end": 223,
"gemma_detailed_description": "..."
}
],
"shots": [
{
"shot_number": 1,
"start": 0,
"end": 72
},
{
"shot_number": 2,
"start": 72,
"end": 180
}
]
}