重构缓存参数处理逻辑,适配ComfyUI新版`--cache-ram`双参数格式 更新中英文README文档,补充新参数的使用说明与阈值解释 优化缓存清理与切换的执行逻辑,兼容旧版ComfyUI环境 修复缓存实例创建的参数兼容问题
4.4 KiB
4.4 KiB
简体中文 | English
ComfyUI_Dynamic_RAMCache
一个ComfyUI的自定义节点,用于动态控制和优化RAM缓存管理,支持智能内存清理以提高大模型运行效率。
功能特点
- 动态缓存模式切换:支持在CLASSIC(无内存回收)和RAM_PRESSURE(自动内存清理)模式之间切换
- 智能内存管理:自动监控和清理 RAM 缓存,当内存不足时释放不必要的缓存数据
- 自定义清理阈值:支持新版
--cache-ram active inactive两个 RAM 阈值 - 无缝数据迁移:在切换缓存模式时保留现有缓存数据,避免重复计算
- 直观的节点接口:简单易用的参数设置,适用于不同水平的用户
- 极限清理节点:一次性强清理(包含虚拟内存占用)并自动恢复清理前的模式与阈值
安装方法
- 确保已安装ComfyUI(支持2025.10.31及更新版本)
- 克隆或下载本仓库
- 将
ComfyUI_Dynamic-RAMCache文件夹复制到ComfyUI的custom_nodes目录下 - 重启ComfyUI
使用方法
- 在ComfyUI中,从
utils/dynamic_ramcache类别中添加DynamicRAMCacheControl节点 - 配置以下参数:
- mode:选择缓存模式(CLASSIC或RAM_PRESSURE)
- cleanup_threshold:设置 active cache 空闲内存阈值(GB)
- inactive_threshold:可选。设置 inactive cache / pinned memory 阈值(GB),填
0或旧工作流缺少此项时沿用 ComfyUI 当前值
- 可以选择性地连接任意输入到
any_input端口(节点会透传此输入) - 可选:在工作流末尾添加
RAMCacheExtremeCleanup节点,执行一次性清理并恢复之前状态 - 运行工作流
参数说明
mode(模式)
- CLASSIC (No Eviction):传统缓存模式,不会自动清理缓存,可能导致内存使用持续增长
- RAM_PRESSURE (Auto Purge):自动内存清理模式,当可用内存低于设定阈值时会自动清理缓存
cleanup_threshold(active 阈值)
- 类型:浮点数(0.1-256.0 GB)
- 默认值:2.0 GB
- 说明:对应新版
--cache-ram的第一个值。可用内存低于此值时,RAM_PRESSURE模式会清理 active cache
inactive_threshold(inactive 阈值)
- 类型:浮点数(0-256.0 GB)
- 默认值:0
- 说明:对应新版
--cache-ram的第二个值。旧版 ComfyUI 不使用该参数时会自动忽略;0表示不改 ComfyUI 当前值;大于0时会更新 inactive cache / pinned memory 阈值
极限清理参数
- purge_threshold:一次性清理时使用的临时阈值(默认 256.0 GB)
- 恢复行为:自动恢复清理前的模式、active 阈值和 inactive 阈值
输出
- output_passthrough:如果连接了输入,则透传输入值;否则返回None
工作原理
该节点通过以下机制工作:
- 检测ComfyUI的
PromptExecutor实例 - 根据所选模式在
RAMPressureCache和HierarchicalCache之间切换 - 在切换过程中保留现有的缓存数据
- 当处于RAM_PRESSURE模式时,按 active / inactive 两个阈值触发缓存清理
兼容性要求
- ComfyUI版本:需要2025.10.31或更新版本(包含RAMPressureCache类)
- Python环境:与ComfyUI兼容的Python环境
- 依赖:使用ComfyUI内置的caching和execution模块
故障排除
常见问题
-
"RAMPressureCache class not available"错误
- 原因:使用的ComfyUI版本过低
- 解决方案:更新ComfyUI到2025.10.31或更高版本
-
"Failed to import execution module"错误
- 原因:ComfyUI的模块结构可能已更改
- 解决方案:检查ComfyUI版本,确认是否需要更新插件
-
内存清理不生效
- 原因:可能清理阈值设置过高或系统内存监控不工作
- 解决方案:尝试降低cleanup_threshold值,或检查系统内存使用情况
注意事项
- 在大型工作流中,过低的清理阈值可能导致频繁的缓存清理,反而降低性能
- 建议根据系统实际RAM大小调整清理阈值,一般建议设置为总内存的10-20%
- 首次切换到RAM_PRESSURE模式时可能需要一些时间来初始化新的缓存系统
日志信息
该节点会在以下情况输出日志:
- 缓存模式切换
- 清理阈值更新
- 错误和警告信息
日志可在ComfyUI的控制台或日志文件中查看,前缀为[DynamicRAMCache]
许可证
贡献
欢迎提交问题报告和拉取请求!