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 /».