我的R9700 在ubuntu下用ComfyUI,每次开启模型后的第一次调用要好几分钟,之后就快多了。但一旦换模型,就又得等。根据Claude的诊断,
if (not comfy.model_management.WINDOWS
or not comfy.memory_management.aimdo_enabled
or ...):
return super()._load_from_state_dict(...) # ← 慢路径,你走的这条
disable_weight_init._lazy_load_from_state_dict(...) # ← 快路径,懒加载
comfy_aimdo 的懒加载优化只在 Windows 上启用。 所以在 Ubuntu里面,WINDOWS 是 False,第一个条件立刻为真,直接走 super()._load_from_state_dict() —— 逐层同步加载全部权重。
Windows 上走的是 _lazy_load_from_state_dict:权重按需加载、边用边取,所以感觉几乎瞬间就好了。
这就是为啥 Windows 快、Ubuntu 慢的直接原因。不是硬件、不是内存、不是磁盘,是 ComfyUI 的这个优化没在 Linux 上启用。
能做什么
-
接受它。 这是上游的设计选择,不是你配置错了。日常用 --highvram 让模型常驻,少切换模型,影响就不大。
-
试试改条件。 理论上可以把 not comfy.model_management.WINDOWS 这个判断去掉,看懒加载在 Linux 上能不能跑。但风险不小——这个限制可能是因为在非 Windows 平台有已知 bug。