5

我对 Hugging-Face 变形金刚很陌生。当我尝试从给定路径加载xlm-roberta-base模型时,我遇到了以下问题:

>> tokenizer = AutoTokenizer.from_pretrained(model_path)
>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user/anaconda3/lib/python3.7/site-packages/transformers/tokenization_auto.py", line 182, in from_pretrained
    return tokenizer_class.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)
  File "/home/user/anaconda3/lib/python3.7/site-packages/transformers/tokenization_utils.py", line 309, in from_pretrained
    return cls._from_pretrained(*inputs, **kwargs)
  File "/home/user/anaconda3/lib/python3.7/site-packages/transformers/tokenization_utils.py", line 458, in _from_pretrained
    tokenizer = cls(*init_inputs, **init_kwargs)
  File "/home/user/anaconda3/lib/python3.7/site-packages/transformers/tokenization_roberta.py", line 98, in __init__
    **kwargs,
  File "/home/user/anaconda3/lib/python3.7/site-packages/transformers/tokenization_gpt2.py", line 133, in __init__
    with open(vocab_file, encoding="utf-8") as vocab_handle:
TypeError: expected str, bytes or os.PathLike object, not NoneType

但是,如果我按其名称加载它,则没有问题:

>> tokenizer = AutoTokenizer.from_pretrained('xlm-roberta-base')

我将不胜感激任何帮助。

4

3 回答 3

2

我假设您已经按照文档中的描述创建了该目录:

tokenizer.save_pretrained('YOURPATH')

目前有一个问题正在调查中,该问题仅影响 AutoTokenizers,但不影响底层的 tokenizers,如 (XLMRobertaTokenizer)。例如以下应该工作:

from transformers import XLMRobertaTokenizer

tokenizer = XLMRobertaTokenizer.from_pretrained('YOURPATH')

要使用 AutoTokenizer,您还需要保存配置以离线加载:

from transformers import AutoTokenizer, AutoConfig

tokenizer = AutoTokenizer.from_pretrained('xlm-roberta-base')
config = AutoConfig.from_pretrained('xlm-roberta-base')

tokenizer.save_pretrained('YOURPATH')
config.save_pretrained('YOURPATH')

tokenizer = AutoTokenizer.from_pretrained('YOURPATH')

我建议为标记器和模型使用不同的路径,或者model.save_pretrained()保留模型的 config.json,因为您应用于模型的一些修改将存储在 config.json 中在您的模型之后保存如上所述的标记器(即,您将无法使用标记器 config.json 加载修改后的模型)。

于 2020-06-30T18:51:29.193 回答
0

我遇到了同样的错误信息,要修复它,您可以添加use_fast=True参数。

generator = AutoTokenizer.from_pretrained(generator_path, config=config.generator, use_fast=True) 
于 2020-11-24T12:13:31.973 回答
0

我遇到了同样的问题。使用本地机器上的模型。

os.environ['TRANSFORMERS_OFFLINE']='1'

这告诉库只使用本地文件。您可以在Hugging Face Installation - Offline Mode上阅读更多相关信息

from transformers import RobertaTokenizer
tokenizer = RobertaTokenizer.from_pretrained('Model_Path')

路径应该是当前文件目录中模型文件夹的位置路径。例如,如果模型文件位于 xlm-roberta-base 文件夹下的模型文件夹中,则路径应为“models/xlm-roberta-base/”

于 2021-08-26T09:43:22.627 回答