项目场景:
近期安装transformers的时候发现了这个报错,之前transformers 3.5.0用的很流畅,这次突然遇到这个问题。
问题描述:
这种import error一般不是“缺胳膊少腿”,就是版本不匹配
原因分析:
按照头痛医头,脚痛医脚的思路,先去看看缺的这个包是咋回事。
报错日志不难发现是tokenizers在调用GLIBC 2.18的时候找不到。简单了解了一下GLIBC一个Linux的c运行库(glibc_百度百科),再看一下服务器现有的GLIBC版本,确实没有2.18这个版本。
百度一下有说补装2.18版本的,不过看起来不太靠谱的样子,所以还是去github上的issue看看有没有相似的问题。果然还是可以找到类似的问题:
Cannot install Transformers version >2.3.0 with pip on CentOS
The Conda package doesn't work on CentOS 7 and Ubuntu 18.04
看了一下大佬们的发言,发现似乎部分Linux系统没有GLIBC 2.18版本,所以现在只能考虑换一个tokenizers的版本,换到一个不使用GLIBC 2.18的版本。
解决方案:
这里我选择的是降级transformers以及tokenizers到一个稳定的版本,以适配当前的pytorch1.3.1版本:
pip uninstall transformers
pip uninstall tokenizers
pip install transformers==3.5.0
pip install tokenizers==0.9.3
当然了,使用tokenizers 0.10.1 / transformers 4.11.3 以适配pytorch 1.5.0+也许也是一个合理的办法。
总结:
所以这个问题总结一下依旧是一个版本不匹配的问题:
新版本的transformers中的tokenizers使用了GLIBC 2.18
但是部分CentOS或Ubuntu18.04之类的版本没有GLIBC 2.18这个版本(https://forums.centos.org/viewtopic.php?t=71740),这个原因可能和它系统本身有关系。
所以为了解决这个问题,考虑把tokenizers降低到一个不使用GLIBC 2.18的版本,然后在降低版本的过程中发现:tokenizers 0.10.1/transformers 4.11.3 要适配pytorch 1.5.0以上版本。
最终选择降低tokenizers 0.9.3/transformers 3.5.0,以适配pytorch 1.3.1来解决这个问题