comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 2 :寻找丢失的model 和工作流中 get set 方法的应用

发布于:2025-06-03 ⋅ 阅读:(166) ⋅ 点赞:(0)

comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 2 寻找丢失的model 和工作流中 get set 方法的应用

第一:寻找丢失的model

在上一文章 安装完 自定义节点ComfyUI-WanVideoWrapper 后 我们打开实列 工作流。wanvideo_skyreels_diffusion_forcing_extension_example_01.json
选择 wanvideo_skyreels_diffusion_forcing_extension_example_01.json
后 点击 运行 会提示,丢失 各种model 和 其他vae 之类的,都是因为 工作流 节点中 用的的nodel or vae 命名和comfyui 中名称不一致导致的 例如:json 中的 model 名称是:"WanVideo\SkyreelslWan2_1-SkyReels-V2-DF-1_38-540P fp32.safetensors 但在我们的comfyUI中确说:wan2.1\Wan2 1-SkyReels-V2-DF-1_3B-540P_fp32.safetensors 需要我们一一纠正过来。基本上都是,模型的名称是对的,但目录前缀不对
错误的目录前缀
根据 json 提示的 链接地址,去 https://huggingface.co/ 下载即可(需要合理上网)
在这里插入图片描述

您可以从Kijai 的这个存储库( https://huggingface.co/Kijai/WanVideo_comfy/blob/main/Wan2_1_VAE_bf16.safetensors )下载 VAE

自定义节点:WanVideo_comfy 中需要用到的各种模型地址:
https://huggingface.co/Kijai/WanVideo_comfy/tree/main

第二:工作流中 get 和 set 方法的使用

我们打开 工作流:wanvideo_skyreels_diffusion_forcing_extension_example_01.json 后会发现 很多节点是断掉的,并没有链接向其它节点

在 ComfyUI 的工作流中,getset 方法主要用于节点间动态传递数据和状态管理。它们通过 Reroute 节点(或自定义节点)实现数据的读取和写入,以下是详细说明:


1. get 方法(获取数据)

  • 作用:从指定节点或全局变量中读取数据。

  • 使用场景

    • 需要复用某个节点的输出数据(如图像、潜变量、条件等)。
    • 避免重复计算,直接从缓存中获取结果。
  • 操作步骤

    1. 添加 Reroute 节点(搜索 “Reroute” 或 “Get”)。
    2. Reroute 节点的输入连接到目标节点的输出。
    3. 在其他节点中调用该 Reroute 节点即可获取数据。
    # 示例:自定义节点中通过 get 获取数据
    class GetDataNode:
        @classmethod
        def INPUT_TYPES(cls):
            return {"required": {"data_id": ("STRING", {"default": "my_data"})}}
        
        FUNCTION = "get_data"
        RETURN_TYPES = ("IMAGE",)  # 根据数据类型定义
        
        def get_data(self, data_id):
            # 从全局缓存中获取数据
            data = global_cache.get(data_id)
            return (data,)
    

2. set 方法(存储数据)

  • 作用:将数据存储到全局变量中,供后续节点通过 get 调用。

  • 使用场景

    • 保存中间结果(如预处理后的图像、文本嵌入)。
    • 跨节点共享复杂数据。
  • 操作步骤

    1. 添加 Reroute 节点(搜索 “Reroute” 或 “Set”)。
    2. 将需要存储的数据输入 Reroute 节点。
    3. 为数据分配唯一标识符(ID)。
    # 示例:自定义节点中通过 set 存储数据
    global_cache = {}  # 全局缓存
    
    class SetDataNode:
        @classmethod
        def INPUT_TYPES(cls):
            return {"required": {"data": ("IMAGE",), "data_id": ("STRING", {"default": "my_data"})}}
        
        FUNCTION = "set_data"
        RETURN_TYPES = ()  # 无直接输出
        
        def set_data(self, data, data_id):
            global_cache[data_id] = data  # 存储到缓存
            return ()
    

3. 工作流中的典型应用

  1. 保存中间结果

    • 使用 set 节点存储潜变量 → 后续通过 get 节点调用该变量生成图像。
    • 避免重复运行 VAE 编码等耗时操作。
  2. 动态参数传递

    • 将文本提示通过 set 存储 → 在不同采样步骤中通过 get 动态修改提示词。
  3. 共享数据

    • 多个分支节点需要同一份数据时(如共享的 ControlNet 条件),用 get 统一调用。

4. 注意事项

  • 唯一标识符setgetdata_id 需保持一致才能匹配数据。
  • 作用域:数据通常保存在工作流的一次运行周期内,重启工作流后失效。
  • 性能:频繁读写小数据时直接连线更高效;大数据复用建议用 set/get
  • 自定义节点:可通过 Python API 扩展更复杂的 set/get 逻辑(如条件存储)。

5. 可视化示例

在这里插入图片描述通过灵活组合 setget,可以显著提升复杂工作流的可维护性和效率。


网站公告

今日签到

点亮在社区的每一天
去签到