从transformers库导入BertTokenizer时出现ImportError错误

6

我的代码是:

import torch
from transformers import BertTokenizer
from IPython.display import clear_output

我在from transformers import BertTokenizer这行代码上出现了错误:

ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /mnt/home/wbj/anaconda3/envs/pytorch/lib/python3.8/site-packages/tokenizers/tokenizers.cpython-38-x86_64-linux-gnu.so)

我发现一个答案表明问题是由文件/lib/x86_64-linux-gnu/libm.so.6引起的。当我使用代码strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_时,我得到以下输出:

GLIBC_2.2.5
GLIBC_2.4
GLIBC_2.15
GLIBC_2.18
GLIBC_2.23
GLIBC_PRIVATE

文件不支持 GLIBC_2.29,我该如何解决这个问题?

请问您能否在问题中包含完整的错误回溯信息? - jkr
2个回答

8

我遇到了同样的问题。这是由于tokenizers包要求的GLIBC版本导致的。

你有两个选择:

  1. 如果有权限,可以升级glibc库

  2. 我使用的是第二种选项。例如通过anaconda安装较旧的tokenizers版本。

在第二种情况下,只需运行此命令:

conda install -c huggingface tokenizers=0.10.1 transformers=4.6.1

注意:您可以选择其他版本的transformers,但在这种情况下,只有当您选择更新版本的分词器时,错误才会出现。

1
是的,这是由于我在Ubuntu 18.04 LTS上运行的transformers版本。我按照以下路径进行操作:
conda install -c huggingface tokenizers=0.10.1 transformers=4.6.1
然而,如果您的依赖关系依赖于其他需要更高版本transformers和tokenizers的软件包,则这并不理想。
我发现这是由于Ubuntu不适合此任务,因此您面临以下问题:
第一种选择是将应用程序迁移到支持GLIBC版本大于或等于2.29的系统。虽然这意味着很多工作,但似乎Ubuntu 19.04实际上使用了该版本。
第二种选择是实际上使用您想要或需要的版本从源代码构建您的GLIBC。我进行了一些研究,并找到了一个网站,该网站为您提供了从源代码构建软件包的步骤:

http://www.linuxfromscratch.org/lfs/view/9.0-systemd/chapter05/glibc.html

我希望这对任何使用Ubuntu 18.04的用户有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接