comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 2 寻找丢失的model 和工作流中 get set 方法的应用
第一:寻找丢失的model
在上一文章 安装完 自定义节点ComfyUI-WanVideoWrapper 后 我们打开实列 工作流。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 的工作流中,get
和 set
方法 主要用于节点间动态传递数据和状态管理。它们通过 Reroute
节点(或自定义节点)实现数据的读取和写入,以下是详细说明:
1. get
方法(获取数据)
-
作用:从指定节点或全局变量中读取数据。
-
使用场景:
- 需要复用某个节点的输出数据(如图像、潜变量、条件等)。
- 避免重复计算,直接从缓存中获取结果。
-
操作步骤:
- 添加
Reroute
节点(搜索 "Reroute" 或 "Get")。 - 将
Reroute
节点的输入连接到目标节点的输出。 - 在其他节点中调用该
Reroute
节点即可获取数据。
python# 示例:自定义节点中通过 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
调用。 -
使用场景:
- 保存中间结果(如预处理后的图像、文本嵌入)。
- 跨节点共享复杂数据。
-
操作步骤:
- 添加
Reroute
节点(搜索 "Reroute" 或 "Set")。 - 将需要存储的数据输入
Reroute
节点。 - 为数据分配唯一标识符(ID)。
python# 示例:自定义节点中通过 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. 工作流中的典型应用
-
保存中间结果:
- 使用
set
节点存储潜变量 → 后续通过get
节点调用该变量生成图像。 - 避免重复运行 VAE 编码等耗时操作。
- 使用
-
动态参数传递:
- 将文本提示通过
set
存储 → 在不同采样步骤中通过get
动态修改提示词。
- 将文本提示通过
-
共享数据:
- 多个分支节点需要同一份数据时(如共享的 ControlNet 条件),用
get
统一调用。
- 多个分支节点需要同一份数据时(如共享的 ControlNet 条件),用
4. 注意事项
- 唯一标识符 :
set
和get
的data_id
需保持一致才能匹配数据。 - 作用域:数据通常保存在工作流的一次运行周期内,重启工作流后失效。
- 性能 :频繁读写小数据时直接连线更高效;大数据复用建议用
set/get
。 - 自定义节点 :可通过 Python API 扩展更复杂的
set/get
逻辑(如条件存储)。
5. 可视化示例
通过灵活组合
set
和 get
,可以显著提升复杂工作流的可维护性和效率。