AttributeError: ‘Gemma3TextForSequenceClassification’ object has no attribute ‘peft_config’“`

在使用 PEFT 对 Embedding Gemma(google/embeddinggemma-300m)加分类头做 LoRA 微调时,调用 model.add_adapter() 会抛出 AttributeError: 'Gemma3TextForSequenceClassification'

快速结论:在使用 PEFT 对 Embedding Gemma(google/embeddinggemma-300m)加分类头做 LoRA 微调时,调用 model.add_adapter() 会抛出 AttributeError: ‘Gemma3TextForSequenceClassification’ object has no attribute ‘peft_config’。通常优先排查 PEFT 版本是否满足 Transformers 的要求,以及运行环境是否被污染(例如 Colab 会话状态异常)。

适用环境:Issue 中确认的环境为:transformers 5.16.1、Python 3.13.15、huggingface_hub 1.29.0、safetensors 0.8.0、Accelerate 1.14.0、PyTorch 2.11.0+cu128(CUDA)、GPU 为 Tesla T4、平台 Linux-6.6.122+-x86_64-with-glibc2.39。报告者未提供 PEFT 版本。DeepSpeed 未安装。

最快修复方案:暂无确认的一步修复方案。Issue 中原报告者表示在重置 Colab 运行环境后问题自行消失;维护者用 peft 0.19.1、0.20.0、0.21.0 均无法复现该报错。可优先尝试在干净环境中重装依赖并确认 PEFT 版本满足要求。

注意事项:维护者未给出根因结论,仅确认无法复现并指出版本要求。原报告者的“重置 Colab 后自愈”不能确认适用于本地或其他环境,也未能确认具体触发的依赖冲突。modules_to_save=[“score.weight”] 的写法在 PEFT 文档中被指出应指向模块,而 score.weight 是 nn.Parameter,这一点与报错本身是否存在因果关系尚未被验证。

问题场景

用户在自建任务(sr5434/multitask-classification-dataset)中,使用 Transformers 的 AutoModelForSequenceClassification 加载 google/embeddinggemma-300m 并设置 num_labels=20,再通过 LoraConfig(task_type=TaskType.SEQ_CLS,inference_mode=False,r=8,lora_alpha=32,lora_dropout=0.1,modules_to_save=[“score.weight”])调用 model.add_adapter(lora_config, adapter_name=”my_adapter”),期望给 Embedding Gemma 挂上新的分类头并应用 LoRA,结果报错中断。

报错原文

AttributeError: 'Gemma3TextForSequenceClassification' object has no attribute 'peft_config'

原因分析

可能原因:该报错源自 PEFT 与 Transformers 的集成路径在调用 add_adapter 时未能在模型对象上找到 peft_config 属性,通常与 PEFT 与 Transformers 的版本兼容性相关。维护者指出 transformers 5.16.1 要求 peft >= 0.19.1(参考 src/transformers/integrations/peft.py),而原报告者未提供 PEFT 版本,因此无法确认是否违反该要求。维护者用 peft 0.19.1、0.20.0、0.21.0 均未能复现,说明本机环境状态(例如 Colab 运行时的残留/污染)也可能是诱因之一——原报告者在重置 Colab 运行时后问题自行消失。此外,维护者提到 modules_to_save 按 PEFT 文档应指向模块,而示例中给的是 score.weight(nn.Parameter),但这与 peft_config 属性缺失之间的因果关系未被证实。

环境排查

  • 确认 PEFT 版本:Issue 未提供,需自行核对是否满足 transformers 5.16.1 对 peft >= 0.19.1 的要求。
  • 确认 Transformers 版本:Issue 为 5.16.1,维护者基于该版本给出 peft 版本下限。
  • 确认 PyTorch 与 CUDA:Issue 为 PyTorch 2.11.0+cu128,CUDA 环境,GPU 为 Tesla T4。
  • 确认 Python 版本:Issue 为 Python 3.13.15。
  • 确认其他相关依赖:huggingface_hub 1.29.0、safetensors 0.8.0、Accelerate 1.14.0;DeepSpeed 未安装。
  • 确认运行环境是否为 Colab 等持久会话:原报告者在重置 Colab 运行时后报错消失,提示会话状态可能需要作为排查项。

解决步骤

  1. 先记录当前 PEFT 版本,并与 transformers 5.16.1 要求的 peft >= 0.19.1 对照。
  2. 若当前 PEFT 版本低于该下限,升级到不低于 0.19.1 的版本(可优先尝试)。
  3. 在与原报告者一致的依赖组合下尝试复现:transformers 5.16.1 + peft 0.19.1/0.20.0/0.21.0(维护者已用这三组尝试,均未复现)。
  4. 若在 Colab 等持久会话中运行,重置运行环境后重新安装依赖并再次执行 add_adapter(原报告者按此方式问题消失,属个案证据)。
  5. 检查 modules_to_save 配置:维护者指出其应指向模块,而示例中的 score.weight 是 nn.Parameter;如需保存分类层,可参考 PEFT 文档调整写法(此项为提示,非确认修复手段)。
  6. 若仍失败,在干净虚拟环境中重建依赖后再测试,排除多版本互相残留导致的属性挂载异常。

验证方法

在满足版本要求且环境干净的前提下重新运行脚本,若 model.add_adapter(lora_config, adapter_name=”my_adapter”) 不再抛出 AttributeError: ‘Gemma3TextForSequenceClassification’ object has no attribute ‘peft_config’,即认为问题已解决。可通过打印模型的 PEFT 相关属性、确认适配器已挂载,以及观察后续训练是否正常启动来进一步验证。由于维护者未能复现且原报告者的解决方式为环境重置,验证时需要尽量保持依赖版本与运行环境一致。

参考来源

huggingface/transformers #48964

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24659

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注