Загрузите предварительно обученную модель преобразователей предложений локально

Я использую библиотеку SentenceTransformers (здесь: https://pypi.org/project/sentence-transformers/#pretrained-models) для создания вложений предложений с использованием предварительно обученной модели bert-base-nli-mean-tokens. У меня есть приложение, которое будет развернуто на устройстве без доступа в Интернет. Здесь уже был дан ответ, как сохранить модель Загрузить предварительно обученную модель BERT локально < / а>. Тем не менее, я застрял при загрузке сохраненной модели из локально сохраненного пути.

Когда я пытаюсь сохранить модель, используя вышеупомянутую технику, это выходные файлы:

('/bert-base-nli-mean-tokens/tokenizer_config.json',
 '/bert-base-nli-mean-tokens/special_tokens_map.json',
 '/bert-base-nli-mean-tokens/vocab.txt',
 '/bert-base-nli-mean-tokens/added_tokens.json')

Когда я пытаюсь загрузить его в память, используя

tokenizer = AutoTokenizer.from_pretrained(to_save_path)

Я получаю

Can't load config for '/bert-base-nli-mean-tokens'. Make sure that:

- '/bert-base-nli-mean-tokens' is a correct model identifier listed on 'https://huggingface.co/models'

- or '/bert-base-nli-mean-tokens' is the correct path to a directory containing a config.json 



Ответы (1)


Есть много способов решить эту проблему:

  • Предполагая, что вы обучили свою базовую модель BERT локально (colab / notebook), чтобы использовать ее с Huggingface AutoClass, затем модель (вместе с токенизаторами, vocab.txt, конфигами, специальными токенами и весами tf / pytorch) должна быть загружена в Huggingface. Действия для этого упомянуты здесь. После загрузки будет создан репозиторий с вашим именем пользователя, а затем к модели можно будет получить доступ следующим образом:
from transformers import AutoTokenizer
from transformers import pipeline

tokenizer = AutoTokenizer.from_pretrained("<username>/<model-name>")
  • Второй способ - использовать обученную модель локально, и это можно сделать с помощью конвейеров. Ниже приведен пример того, как использовать эту обученную (и сохраненную) модель локально для вашего варианта использования (приведен пример из моей локально обученной модели контроля качества):
from transformers import AutoModelForQuestionAnswering,AutoTokenizer,pipeline
nlp_QA=pipeline('question-answering',model='./abhilash1910/distilbert-squadv1',tokenizer='./abhilash1910/distilbert-squadv1')
QA_inp={
    'question': 'What is the fund price of Huggingface in NYSE?',
    'context': 'Huggingface Co. has a total fund price of $19.6 million dollars'
}
result=nlp_QA(QA_inp)
result

Есть и другие способы решить эту проблему, но они могут помочь. Также этот список предварительно обученных моделей может помочь.

person Abhilash Majumder    schedule 23.12.2020
comment
Я хочу использовать предварительно обученную модель bert-base-nli-mean-tokens. Третий вариант невозможен, поскольку у меня нет доступа в Интернет к моей локальной системе. Я должен иметь возможность сохранить его один раз (загрузка из Интернета) и далее, он должен быть загружен из системы без доступа к Интернету. из трансформаторов import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained (предложения-преобразователи / bert-base-nli-mean-tokens) tokenizer.save_pretrained (local_path) loaded_tokenizer = AutoTokenizer.from_pretrained (local_path) Когда я загружаю модель, я получаю указанную выше ошибку - person neha tamore; 23.12.2020