Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pulid模型使用完后的显存占用量 #3

Open
Windecay opened this issue Jan 16, 2025 · 14 comments
Open

pulid模型使用完后的显存占用量 #3

Windecay opened this issue Jan 16, 2025 · 14 comments

Comments

@Windecay
Copy link

旧版pulid使用后会残留900MB,新版解决了污染模型问题。但似乎使用后残留显存更多了。应该有1.5G?
我尝试过清理但清不干净,是不是使用了钩子的问题这部分数据必须存放于gpu显存上。

感谢你,这个节点解决了我一个大难题!

@lldacing
Copy link
Owner

旧版pulid使用后会残留900MB,新版解决了污染模型问题。但似乎使用后残留显存更多了。应该有1.5G? 我尝试过清理但清不干净,是不是使用了钩子的问题这部分数据必须存放于gpu显存上。

感谢你,这个节点解决了我一个大难题!

我现在没有机器无法进行测试,理论上应该不会,因为在ksampler节点执行之后对临时数据的引用都做了清理操作,当然具体释放时间取决于操作系统。

@lldacing
Copy link
Owner

钩子的实现方式是和非flux版本的pulid插件一样的

@Windecay
Copy link
Author

钩子的实现方式是和非flux版本的pulid插件一样的

谢谢你,我再研究对比下显存占用曲线。要在低配机器上防止OOM,要合理分配。

@Windecay
Copy link
Author

comfy开启后默认状态约0.5GB占用,pulid生成一次后,显存残留占用2.3GB。
修改代码加入del eva_clip后,生成一次后占用1.5GB。后续每次一样,运作正常。
加入del pulid_flux清理无效。还是1.5GB
应该是"pulid_model": pulid_flux,被引用太多次了。研究了一天没弄好~

@lldacing
Copy link
Owner

comfy开启后默认状态约0.5GB占用,pulid生成一次后,显存残留占用2.3GB。 修改代码加入del eva_clip后,生成一次后占用1.5GB。后续每次一样,运作正常。 加入del pulid_flux清理无效。还是1.5GB 应该是"pulid_model": pulid_flux,被引用太多次了。研究了一天没弄好~

我测试不出效果,因为我用的测试机显存比较充足,不过每次执行后显存剩余量是一样的,今天提交的代码支持了attn_mask也加了一些临时变量引用清除,你可以看看有没有效果(我测试没差别),引用次数影响应该不大,因为不是复制一份模型数据

@lldacing
Copy link
Owner

lldacing commented Jan 17, 2025

comfy开启后默认状态约0.5GB占用,pulid生成一次后,显存残留占用2.3GB。 修改代码加入del eva_clip后,生成一次后占用1.5GB。后续每次一样,运作正常。 加入del pulid_flux清理无效。还是1.5GB 应该是"pulid_model": pulid_flux,被引用太多次了。研究了一天没弄好~

你说的2.3G和1.5G指的是加了模型卸载节点之后占用量,还是运行后你显存的剩余量(不知道总显存多少),我在最后加了一个模型卸载节点,运行后,显存占用始终是3.5G

@lldacing
Copy link
Owner

Image

你如果像运行完之后完全卸载掉数据,可以用我另一个插件的这个节点打开第一个开关,缺点就是每次执行都会重新执行加载模型节点

@Windecay
Copy link
Author

comfy开启后默认状态约0.5GB占用,pulid生成一次后,显存残留占用2.3GB。 修改代码加入del eva_clip后,生成一次后占用1.5GB。后续每次一样,运作正常。 加入del pulid_flux清理无效。还是1.5GB 应该是"pulid_model": pulid_flux,被引用太多次了。研究了一天没弄好~

你说的2.3G和1.5G指的是加了模型卸载节点之后占用量,还是运行后你显存的剩余量(不知道总显存多少),我在最后加了一个模型卸载节点,运行后,显存占用始终是3.5G

我的数据是使用了简单采样工作流后总残留的显存数量(监控python.exe进程)。普通的模型卸载节点对这剩余数据没有改变。

@Windecay
Copy link
Author

Image

你如果像运行完之后完全卸载掉数据,可以用我另一个插件的这个节点打开第一个开关,缺点就是每次执行都会重新执行加载模型节点

这确实是一个很彻底的办法。 万不得已才使用。 你的新版节点我已经同步更新~有空继续研究。

@Windecay
Copy link
Author

我修改了一下[ComfyUI_BiRefNet_ll]在我的仓库。 里面简单的执行了to.device移动操作就可以把显存清空。 而且不影响反复使用。 但pulid这个情况就复杂多了。

@lldacing
Copy link
Owner

我修改了一下[ComfyUI_BiRefNet_ll]在我的仓库。 里面简单的执行了to.device移动操作就可以把显存清空。 而且不影响反复使用。 但pulid这个情况就复杂多了。

是的,我正想告诉你,把eva_clip移到cpu可以释放一点,pulid_flux这个我也没想到好的办法,缺少to(gpu)和to(cpu)的合适位置

@Windecay
Copy link
Author

我修改了一下[ComfyUI_BiRefNet_ll]在我的仓库。 里面简单的执行了to.device移动操作就可以把显存清空。 而且不影响反复使用。 但pulid这个情况就复杂多了。

是的,我正想告诉你,把eva_clip移到cpu可以释放一点,pulid_flux这个我也没想到好的办法,缺少to(gpu)和to(cpu)的合适位置

eva_clip先to(cpu)再del。就可以释放大约800MB,采样过程也同样会减少800MB,对小显存变友好。 pulid_flux在整个采样过程中都会被回调函数反复调用,不是太好办。总的来说目前问题不大。

@lldacing
Copy link
Owner

我修改了一下[ComfyUI_BiRefNet_ll]在我的仓库。 里面简单的执行了to.device移动操作就可以把显存清空。 而且不影响反复使用。 但pulid这个情况就复杂多了。

是的,我正想告诉你,把eva_clip移到cpu可以释放一点,pulid_flux这个我也没想到好的办法,缺少to(gpu)和to(cpu)的合适位置

eva_clip先to(cpu)再del。就可以释放大约800MB,采样过程也同样会减少800MB,对小显存变友好。 pulid_flux在整个采样过程中都会被回调函数反复调用,不是太好办。总的来说目前问题不大。

优化了下模型管理,降了点

@Windecay
Copy link
Author

我修改了一下[ComfyUI_BiRefNet_ll]在我的仓库。 里面简单的执行了to.device移动操作就可以把显存清空。 而且不影响反复使用。 但pulid这个情况就复杂多了。

是的,我正想告诉你,把eva_clip移到cpu可以释放一点,pulid_flux这个我也没想到好的办法,缺少to(gpu)和to(cpu)的合适位置

eva_clip先to(cpu)再del。就可以释放大约800MB,采样过程也同样会减少800MB,对小显存变友好。 pulid_flux在整个采样过程中都会被回调函数反复调用,不是太好办。总的来说目前问题不大。

优化了下模型管理,降了点

确实有下降!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants