← 文章 / AI视频与短剧
mickeylan 5小时前 · 2026-09-05 13:41:51 · 1 阅读

ComfyUI-MiniMax-H3-Sampler-Unlimited:低显存直出长时1080p视频

字数 5052,阅读大约需 26 分钟

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_Mqwen3.8-27B UD-IQ2_S-MTPgemma 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 帧作为参考条件
  • • H3 模型通过 <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,支持多种导演后端

    节点 IDHREndlessSampler

    输入端口

    端口名类型必需说明
    noiseLATENT噪声输入,连接噪声节点
    guiderGUIDERguider 配置
    samplerSAMPLER采样器配置
    sigmasSIGMAS噪声调度
    latent_imageLATENT初始 latent(通常为空)
    modelMODELMiniMax H3 模型
    clipCLIPCLIP/Qwen conditioning 模型
    vaeVAEH3 视频 VAE
    promptSTRING完整 H3 提示词
    fpsFLOAT帧率(通常 24)
    imagesIMAGE⚠️旧版批量参考图输入
    source_imagesIMAGE*⚠️Ref2VA 多图输入
    director_backendSTRING导演后端:gemma4/qwen3.5/qwen3.6/qwen3.8
    director_modelSTRING导演模型路径,auto 自动选择
    director_mmprojSTRING导演 mmproj 路径,auto 自动选择

    输出端口

    端口名类型说明
    outputLATENT完成的长视频/音频 latent
    denoised_outputLATENT完整去噪 latent
    chunk_promptsSTRING每块最终 H3 提示词及范围
    timelineCUSTOM分块、镜头、提示词和耗时元数据

    核心参数

    参数类型默认值说明
    chunk_framesINT124每块采样帧数(自动对齐 H3 网格)
    video_continuationINT22续接帧数(5-107)
    context_keyframesINT5上下文关键帧(5-107)
    guide_overlapINT0引导重叠帧数
    video_continuation_resSTRINGfull续接分辨率预设
    director_mtpBOOLfalseQwen MTP 推测解码
    director_mtp_draft_tokensINT2MTP draft 长度(1-8)
    director_reasoning_effortSTRINGmediumQwen3.8 推理力度
    director_cpu_moeBOOLfalseQwen MoE 卸载到 CPU
    cache_gemma_preproductionBOOLfalseGemma KV 缓存(仅 Gemma)
    gemma4_mtpBOOLfalseGemma MTP(仅 Gemma)
    pytorch_memory_fractionFLOAT0.85PyTorch 显存占用比例
    debugBOOLfalse调试模式
    debug_stop_chunkINT0停止块(0=全部)
    debug_start_chunkINT0起始块(0=从头开始)
    tiny_vaeSTRINGnone预览 VAE 模式

    3.2 HR Endless Sampler Preview(实时预览)

    功能:生成过程中实时预览已完成的块

    节点 IDHREndlessSamplerPreview

    放置位置:插在模型到 guider 的路径中

    模型 ──▶ [Preview 节点] ──▶ Guider ──▶ Sampler

    输入端口

    端口名类型说明
    modelMODELH3 模型

    输出端口

    端口名类型说明
    modelMODEL带预览补丁的模型

    功能特性

    • 分块播放:每完成一块,自动加入播放列表
    • 颜色编码:各块使用不同颜色,在时间轴上一目了然
    • 镜头括号:显示源镜头边界
    • 悬停提示:鼠标悬停可查看 H3 提示词、H3 渲染时间、Gemma 耗时等信息
    • 键盘控制:用 Left/Right 键逐帧前后移动
    • 浏览器刷新恢复:刷新页面后自动恢复预览状态
    • 采样图表:显示 sigma 和每步耗时曲线

    tiny_vae 模式

    模式说明显存占用
    none快速 H3 Latent2RGB最低
    taeh3.safetensors完整 VAE 解码较高

    3.3 HR Endless Sampler Save Video(保存视频)

    功能:保存完成的视频,保留完整的时间线和镜头信息

    节点 IDHREndlessSamplerSaveVideo

    输入端口

    端口名类型说明
    imagesIMAGE解码后的视频帧
    audioAUDIO可选:音轨
    timelineCUSTOM分块/镜头元数据
    filename_prefixSTRING文件名前缀
    formatSTRING视频格式
    fpsFLOAT输出帧率
    losslessBOOL无损压缩
    crfINT质量(0-63,越小越好)
    pix_fmtSTRING像素格式
    exr_gammaFLOATEXR gamma 值
    latentLATENT可选:原始 latent
    vaeVAE可选:原始 VAE

    输出格式

    格式说明依赖
    video/h264-mp4H.264 MP4ComfyUI 原生,无需 VHS
    video/*其他格式需要 Video Helper Suite
    video/exrEXR 图像序列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(加载视频)

    功能:加载已完成视频,恢复交互式播放

    节点 IDHREndlessSamplerLoadVideo

    输入端口

    端口名类型说明
    videoSTRING视频路径
    fpsFLOAT播放帧率(0=使用存储值)

    输出端口

    端口名类型说明
    videoVIDEO视频文件
    imagesIMAGE解码帧序列
    audioAUDIO音轨
    widthINT视频宽度
    heightINT视频高度
    frame_countINT总帧数
    fpsFLOAT实际帧率
    filenameSTRING文件名
    timelineCUSTOM时间线元数据

    视频获取方式

    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.txt

    4.2 安装依赖

    # 切换到 ComfyUI 目录
    cd ComfyUI

    # 使用 ComfyUI 的 Python 安装
    python -m pip install -r custom_nodes/ComfyUI-MiniMax-H3-Sampler-Unlimited/requirements.txt

    requirements.txt 内容

    huggingface-hub>=0.34.0
    llama-cpp-python>=0.3.35
    av>=16.0.0

    4.3 快速安装脚本

    Linux/macOS

    chmod +x install.sh
    ./install.sh

    Windows

    install.bat

    5. 导演模型配置

    5.1 模型支持对比

    模型架构参数量激活参数上下文MTPVRAM 12GB 可用
    Gemma 4 12BDense12B12B32K~6-8GB
    Qwen3.5 9BDense9B9B65K~4-5GB
    Qwen3.6 27BMoE27B~3-4B32K~5-6GB
    Qwen3.8 27BMoE27B~3-4B32K~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.gguf

    Gemma 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 drafter

    5.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 = true

    Qwen3.6

    director_backend = qwen3.6
    director_model = auto
    director_mmproj = auto
    director_mtp = true
    director_mtp_draft_tokens = 2
    director_cpu_moe = true

    Qwen3.5

    director_backend = qwen3.5
    director_model = auto
    director_mmproj = auto

    Gemma 4(>12GB 显存)

    director_backend = gemma4
    director_model = auto
    director_mmproj = auto
    gemma4_mtp = true
    cache_gemma_preproduction = false

    6. 工作流连接

    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]
    ...

    注意:不要同时连接 imagessource_images


    7. 参数详解

    7.1 采样参数

    chunk_frames(每块帧数)

    说明:每次 H3 调用采样的最大帧数

    有效值:必须对齐 H3 时间网格(5, 22, 39, 56, 73, 90, 107, 124...)

    默认值:124

    影响

    • • 值越小 → 显存越低,但导演交接次数越多
    • • 值越大 → 连续性越好,但显存峰值越高

    推荐

    显存1080p 推荐值
    12GB39-56
    16GB56-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 显存使用 mediumlow

    director_cpu_moe(MoE CPU 卸载)

    说明:将 MoE 专家层卸载到 CPU

    适用:仅限 Qwen3.6/3.8

    效果

    • • 降低显存占用
    • • 略微降低速度
    • • 仅在没有启用 MTP 时效果明显

    7.3 显存控制参数

    pytorch_memory_fraction

    说明:PyTorch CUDA 分配器的显存上限

    默认值:0.85(85%)

    说明

    • • 预留 15% 显存给 H3 的临时大缓冲区
    • • 与 cudaMallocAsync backend 配合使用时尤为重要
    • • 设为 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 = false

    8.2 显存不足时的调整顺序

    1. 1. 减小 chunk_frames(首选)
      • • 1080p: 56 → 39
      • • 720p: 78 → 56
    2. 2. 启用 director_cpu_moe
      • • 仅 Qwen3.6/3.8 有效
    3. 3. 降低 video_continuation
      • • 22 → 12 → 5
      • • 注意:会影响连续性
    4. 4. 降低 video_continuation_res
      • • full → 0.50mp → 0.20mp
    5. 5. 降低 pytorch_memory_fraction
      • • 0.85 → 0.80 → 0.75
    6. 6. 使用 tiny_vae
      • • tiny_vae = taeh3.safetensors
      • • 牺牲预览质量换取显存
    7. 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. 1. 确认模型和 mmproj 在同一目录
    2. 2. 目录名包含 qwen3.5/qwen3.6/qwen3.8
    3. 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. 1. 减小 chunk_frames
    2. 2. 启用 director_cpu_moe
    3. 3. 降低 video_continuation
    4. 4. 使用 video_continuation_res 降低分辨率
    5. 5. 减小 pytorch_memory_fraction
    6. 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.pyGemma 4 导演实现
    gemma4_mtp.pyGemma MTP 实现
    qwen35.pyQwen 导演实现
    director_backend.py模型选择逻辑
    director_errors.py错误类型定义
    gemma4_prompts.txtGemma 提示模板
    qwen35_prompts.txtQwen 提示模板

    附录 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
    }
    ]
    }

    原始来源: mickeylan

    评论 (0)