
How to use gpu when clip encoding?
快速结论:当你使用“Load CLIP”节点且设备选项设为“default”时,CLIP文本编码模型仍被强制加载到CPU上运行,导致编码速度极慢。优先排查方式:检查日志中是否出现CLIP/text encoder model load device: cpu,并尝试临时修改ComfyUI源码中的nodes.py文件。
问题场景
在ComfyUI中使用Load CLIP节点加载CLIP模型进行文本编码时,尽管节点设备选项已设为“default”,但ComfyUI仍然将CLIP/text encoder模型强制加载到CPU上运行,导致编码极慢。该问题在加载WanTEModel等视觉语言模型时也会出现。日志中明确显示CLIP/text encoder model load device: cpu, offload device: cpu。
报错原文
Using scaled fp8: fp8 matrix mult: False, scale input: False
Requested to load WanTEModel
loaded completely; 95367431640625005117571072.00 MB usable, 6419.48 MB loaded, full load: True
CLIP/text encoder model load device: cpu, offload device: cpu, current: cpu, dtype: torch.float16
原因分析
可能原因:ComfyUI的nodes.py文件中,当设备选项不为“cpu”时,可能没有正确将CLIP模型的加载设备指向CUDA。从评论分析,代码逻辑中设备判断分支可能遗漏了对“default”选项的处理,导致所有非“cpu”的选项(包括“default”)都回退到CPU。此外,有用户指出较旧GPU(计算能力Major版本<6)以及Linux下的NVIDIA 10×0系列显卡,会因model_management.py中的should_use_fp16()函数假设这些GPU无法加载fp16模型而导致CLIP被分配到CPU。
环境排查
- ComfyUI版本(例如,v3.68之前版本可能已修复,但v3.75+未确认)
- Python版本
- CUDA版本
- PyTorch版本(确保支持CUDA)
- 显卡型号及驱动版本(检查是否支持FP16/BF16)
- 确认ComfyUI日志中
CLIP/text encoder model load device是否为cpu
解决步骤
- 检查日志:运行任意包含CLIP编码的工作流,查看日志中是否出现
CLIP/text encoder model load device: cpu。 - 临时修复(修改源码):评论中提供了临时解决方案——修改
ComfyUI/nodes.py文件(约第948行处)。将原代码的设备分配逻辑替换为:if device == "cpu": model_options["load_device"] = model_options["offload_device"] = torch.device("cpu") else: model_options["load_device"] = model_options["offload_device"] = torch.device("cuda")注意:如果拥有多GPU,有用户报告需要将
"cuda"改为"cuda:0"才能正确运行。请根据你的显卡编号调整。 - 替代方案(针对特定模型):如果是Flux.2等模型,可尝试使用GGUF Clip Loader加载CLIP,通常能绕过此问题。
- 等待官方修复:根据评论,部分用户在较新版本中问题已自动解决。但RTX 5090等新显卡在最新版中仍有用户报告问题。如果上述修改不适用,建议关注ComfyUI后续更新。
- 注意VRAM卸载:评论中指出,GPU编码后CLIP模型可能不会从VRAM卸载,导致可用显存减少。修改源码后需自行监控显存使用情况。
验证方法
重新运行工作流,观察日志:如果CLIP/text encoder model load device变为cuda:0或cuda,且编码速度明显提升(通常从秒级延迟降至毫秒级),则问题已解决。同时检查任务管理器中GPU利用率是否上升。



