Hugging-Face Transformers: загрузка модели из ошибки пути

Я новичок в трансформерах 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')

Буду признателен за любую помощь.

3 ответа

Я предполагаю, что вы создали этот каталог, как описано в документации, с помощью:

tokenizer.save_pretrained('YOURPATH')

В настоящее время исследуется проблема, которая влияет только на автоматические токенизаторы, но не на базовые токенизаторы, такие как (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')

Я рекомендую либо использовать другой путь для токенизаторов и модели, либо сохранить config.json вашей модели, потому что некоторые изменения, которые вы применяете к вашей модели, будут храниться в config.json, который создается во времяmodel.save_pretrained() и будет перезаписан, когда вы сохраните токенизатор, как описано выше, после вашей модели (т.е. вы не сможете загрузить свою измененную модель с помощью токенизатора config.json).

Я столкнулся с тем же сообщением об ошибке, чтобы исправить это, вы можете добавить use_fast=True в аргументах.

generator = AutoTokenizer.from_pretrained(generator_path, config=config.generator, use_fast=True) 

Я столкнулся с той же проблемой. Использовать модели с локальной машины.

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

Это говорит библиотеке использовать только локальные файлы. Вы можете узнать больше об этом в разделе Установка Hugging Face - Автономный режим.

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

Путь должен быть путем расположения папки модели из текущего файлового каталога. Например, если файлы моделей находятся в папке моделей, путь к папке xlm-roberta-base должен быть «models / xlm-roberta-base /».

Другие вопросы по тегам