老版本transformers安装等一系列问题(推荐系统P5复现)

本文讲述了作者在安装和编译transformers4.2.1时遇到的问题,涉及版本不匹配、rust编译器需求、tokenizers0.9.4依赖及编译错误,最终通过修改依赖和版本解决了部分冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用transformers时报错没有head_mask这个属性,猜到应该是版本不同导致函数接口不同,于是看readme发现需要的版本是transformers 4.2.1。

尝试使用pip直接安装,报错没有rust编译器

安装rust编译器之后再次尝试pip安装,这次报错`Install error: failed to parse the edition key`,并提示需要2021年或更新的rust,但是我下载的版本是2024年最新的版本,后来发现在编译时根本不使用我安装的环境,而是它自己下载的老版本rust。因此直接使用pip安装失败

转而下载transformers源码自己编译,transformers依赖的tokenizers版本为0.9.4,主要是在安装tokenizers报错,下载tokenizers源码,tokenizers 0.9.4依赖rust进行编译,目录里的rust-toolchain指定编译使用的rust版本,建议修改为较新版本,问题会比较少,我使用1.70.0

实际在编译过程中仍然报错,遇到很多问题,使用1.70.0版本时遇到 use serde::export::Formatter报错,因为serde中没有这个方法,尝试降低依赖的serde版本,实际并不生效,可能是各个包之间互相依赖的关系导致无法按照我需要的版本解决依赖冲突。为了通过编译我直接修改use serde::export::Formatter为 use std::fmt::Formatter,实际运行不清楚会不会遇到问题,但确实能通过编译

### 安装指定旧版本的 Transformers 库 为了安装特定旧版本的 `transformers` 库,可以利用 Python 的包管理工具 pip 来精确控制所要安装的版本。具体操作如下: 对于安装某个确切的历史版本而言,在命令行输入带有版本号的安装指令即可完成目标版本的部署。例如,如果希望安装 4.18.0 版本,则应执行以下命令[^3]: ```bash pip install transformers==4.18.0 ``` 当遇到因依赖项冲突或其他原因导致的新版软件无法正常工作的情况时,回退到之前稳定运行过的较低版本不失为一种有效的解决方案。 另外,考虑到不同项目可能基于不同的环境配置需求,建议创建虚拟环境来隔离各个项目的依赖关系,从而避免全局环境中出现版本兼容性问题。这可以通过 venv 或 conda 工具轻松达成。 值得注意的是,有时即使指定了 Rust 编译器的版本,某些库仍然可能会自行下载所需的构建工具链。为了避免这种情况影响 `transformers` 的安装过程,确保本地开发环境中的 Rust 设置被正确识别是非常重要的。如果发现程序忽略了已有的新版本而选择了过期版本进行编译,那么应该检查相关文档或社区反馈以获取更详细的指导信息[^1]。 最后,除了通过 pip 指定版本外,还可以考虑从源码仓库克隆特定标签下的代码并手动安装。这种方式虽然稍微复杂一些,但对于需要定制化修改或是深入理解内部机制的人来说非常有用。使用 Git 命令可以从 GitHub 上拉取所需版本的源码,并按照官方说明完成后续步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值