🛠️ 在线工具
📰 新闻动态

欢迎回来

登录你的 AI Flow 账号,继续创作之旅

验证码错误
还没有账号?立即注册

创建账号

加入 AI Flow,解锁全部 ComfyUI 教程与工作流

两次输入的密码不一致
验证码错误
已有账号?去登录

LayerStyle节点中'BertModel' object has no attribute 'invert_attention_mask'错误

这个错误 'BertModel' object has no attribute 'invert_attention_mask' 是一个典型的 Transformers 库版本不兼容 问题。

🔍 错误根因分析

  1. 代码层面:ComfyUI_LayerStyle_Advance 节点包内部集成了一个本地版的 GroundingDINO (local_groundingdino)。在其 bertwarper.py 第36行,代码试图直接访问 bert_model.invert_attention_mask 属性。
  2. 库版本冲突:invert_attention_mask 是 HuggingFace transformers 库中 PreTrainedModel 基类的一个方法。在较新的 transformers 版本(通常是 >= 4.36.0)中,该方法的实现方式或可见性发生了重构,导致旧版 GroundingDINO 代码无法通过 __getattr__ 正确获取该属性。
  3. 结论:你当前 Miniconda 环境 (comfyuicu126) 中的 transformers 版本太新,与 ComfyUI_LayerStyle_Advance 内置的老旧 GroundingDINO 代码产生了冲突。

🛠️ 解决方案(按推荐顺序执行)

方案一:降级 transformers 库(最快、最有效)

将 transformers 降级到兼容版本即可立即修复此问题。打开你的 ComfyUI 启动命令行(确保激活了 comfyuicu126 环境),运行:
pip install transformers==4.35.2

注:4.35.2 是 GroundingDINO 生态测试最稳定的版本。安装完成后重启 ComfyUI。

方案二:更新 ComfyUI_LayerStyle_Advance 节点

节点作者可能已经在新版中修复了此兼容性问题。
  1. 打开 ComfyUI Manager。
  2. 点击 Update All 或找到 ComfyUI_LayerStyle_Advance 单独更新。
  3. 重启 ComfyUI。
    (如果更新后依然报同样的错,说明作者尚未修复,请退回使用方案一)

方案三:手动打补丁(仅限不想降级 transformers 的高级用户)

如果你因为其他节点必须使用最新版 transformers,可以手动修改报错文件:
  1. 打开文件:custom_nodes\ComfyUI_LayerStyle_Advance\py\local_groundingdino\models\GroundingDINO\bertwarper.py
  2. 找到第 36 行:
    python
    self.invert_attention_mask = bert_model.invert_attention_mask
    
    
    替换为带有兼容性检查的代码:
        # 兼容新版 transformers (请确保此行前有8个空格) 
        if hasattr(bert_model, "invert_attention_mask"): 
            self.invert_attention_mask = bert_model.invert_attention_mask 
        else: 
            from transformers.modeling_utils import PreTrainedModel self.invert_attention_mask = lambda mask: PreTrainedModel.invert_attention_mask(bert_model, mask)


保存并重启 ComfyUI。

⚠️ 重要提醒

  • 优先推荐方案一。GroundingDINO 对 transformers 版本极其敏感,强行使用新版极易出现各种隐性 Bug。
  • 降级 transformers 不会影响 SAM 模型(sam_vit_h)的加载和运行,SAM 依赖的是 torch 和 torchvision,与 transformers 解耦。
  • 方案二,修改亲测有用