使用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,实际运行不清楚会不会遇到问题,但确实能通过编译