ImportError: cannot import name ‘AutoModelWithLMHead’ from ‘transformers’

用户在 Conda 虚拟环境中运行 peer-reviewed 研究源码,尝试从 transformers 导入 AutoModelWithLMHead 、 AutoTokenizer 和 EsmModel 。此时已安装 PyTorch 2.12.0 和 transformers 5.10.0.de

快速结论:此报错发生于使用新版 transformers(如 5.10.0.dev0)运行旧版研究代码时,因为 AutoModelWithLMHead 已被弃用并移除。优先尝试降级到已知兼容版本,例如 4.28.0,或改用 AutoModelForCausalLM 等替代 API。

问题场景

用户在 Conda 虚拟环境中运行 peer-reviewed 研究源码,尝试从 transformers 导入 AutoModelWithLMHeadAutoTokenizerEsmModel。此时已安装 PyTorch 2.12.0 和 transformers 5.10.0.dev0(开发版本)。用户无法修改所使用的模型,因为需要复现已发表论文的代码逻辑。

报错原文

ImportError: cannot import name 'AutoModelWithLMHead' from 'transformers'

原因分析

AutoModelWithLMHead 是一个被弃用的 API,在较新的 transformers 发行版中已被完全移除。用户安装的是 transformers 5.10.0.dev0 开发版本,该版本已不再包含此模块。由于用户复现的是旧版研究代码,且不能修改模型引用方式,因此需要固定到一个仍支持此 API 的稳定版本。

环境排查

  • Python 和 Conda:确认 Python 版本是否符合研究代码要求(通常 3.8-3.10)。
  • PyTorch 版本:当前为 2.12.0,可能需要注意与 transformers 旧版本的兼容性。
  • transformers 版本:检查当前版本 5.10.0.dev0,该版本已移除已弃用的 API。
  • 显卡/CUDA:如果使用 GPU,确保 CUDA 版本与 PyTorch 匹配(特别是降级后)。
  • 研究代码的依赖文件:检查原论文仓库是否有 requirements.txtenvironment.yml,以确认原始已验证的版本。

解决步骤

  1. 降级 transformers(可优先尝试):将 transformers 固定到已知包含 AutoModelWithLMHead 的旧版本,例如 4.28.0
  2. 处理可能的 PyTorch 兼容性问题:如果降级后出现 PyTorch 兼容性问题,可尝试同时固定 transformers 和 PyTorch 的版本,例如 transformers 4.28.0 配合 PyTorch 1.13.1(但需注意与 CUDA 的兼容性)。
  3. 检查原始论文仓库:查找原研究代码是否有 requirements.txtenvironment.yml,研究代码通常只对特定稳定版本进行验证。开发版本(如 5.10.0.dev0)可能已激进地移除弃用 API。
  4. 替代方案(如无法降级):如果由于某些原因不能降级 transformers,可以考虑:
    • 对于因果/解码器模型(如 GPT),改用 from transformers import AutoModelForCausalLM
    • 对于特定模型如 ESM,直接使用 from transformers import EsmModel,并通过 EsmModel.from_pretrained("facebook/esm2_t6_8M_UR50D") 加载
    • 注意 AutoTokenizer 本身不受影响,无需更改

验证方法

在降级或更换 API 后,重新运行导入语句 from transformers import AutoModelWithLMHead(如果降级)或对应的替代导入。如果不再抛出 ImportError,且后续的模型加载和推理步骤正常执行,则问题解决。

参考来源

huggingface/transformers #46228

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 16156

发表回复

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