По моему мнению, я думаю, что Трансформеры - бегемот, но после фактического контакта он чрезвычайно дружелюбен. Спасибо, обнимающее лицо. посмотреть оригиналtmylla.github.io.
Установить
Мои номера версий: python 3.6.9, pytorch 1.2.0, CUDA 10.0.
pip install transformers
Обязательно установите pytorch1.1.0+ перед pip.
контрольная работа
Код проверки и результат
python -c "from transformers import pipeline; print(pipeline('sentiment-analysis')('I hate you'))"
После ввода вышеуказанной команды в командной строке трансформеры автоматически загрузят зависимую модель. Выведите следующие результаты, результаты установки.
[{'label': 'NEGATIVE', 'score': 0.9991129040718079}]
Описание файла модели загрузки трансформаторного трубопровода
Трансформеры автоматически загружают место хранения модели: C:\Users\имя_пользователя\.cache\torch\, после загрузки модели ее можно сохранить в других местах. Описание каждого файла выглядит следующим образом:
-
Файл json содержит теги «url» и «etag» соответствующего файла.
-
«a41...» — это файл конфигурации: distilbert-base-uncased-config.
-
'26b...' - это файл словаря: bert-base-uncased-vocab.
-
«437...» — это файл конфигурации Finetuned-sst-2: distilbert-base-uncased-finetuned-sst-2-english-config, обратите внимание, что он отличается от файла «a41...».
-
'57d...' - это файл Modelcard: distilbert-base-uncased-finetuned-sst-2-english-modelcard.
-
«dd7...» — это файл параметров модели: distilbert-base-uncased-finetuned-sst-2-english-pytorch_model.bin.
Введение в конвейер()
Видно, что при выполненииpipeline('sentiment-analysis')('I hate you')
, преобразователи автоматически загружают модель distilbert-base-uncased-finetuned-sst-2 набора данных sst2 в GLUE для анализа настроений «Я тебя ненавижу».
Pipeline — это простой интерфейс задачи НЛП, который выполняетInput -> Tokenization -> Model Inference -> Post-Processing (Task dependent) -> Outputряд операций. В настоящее время поддерживаетсяNamed Entity Recognition, Masked Language Modeling, Sentiment Analysis, Feature Extraction and Question Answeringи другие задачи.
Возьмите ответ на вопрос в качестве примера:
from transformers import pipeline
nlp = pipeline("question-answering")
context = "Extractive Question Answering is the task of extracting an answer from a text given a question. An example of a question answering dataset is the SQuAD dataset, which is entirely based on that task. If you would like to fine-tune a model on a SQuAD task, you may leverage the `run_squad.py`."
print(nlp(question="What is extractive question answering?", context=context))
print(nlp(question="What is a good example of a question answering dataset?", context=context))
Для задач контроля качества трансформеры используют модель distilbert-base-cased-distilled-squad набора данных SQuAD, а файл модели такой же, как описано выше.
Переместить модель в пользовательскую папку

Возьмите QA в качестве примера:
-
Сначала мы создаем папку с именем distilbert-base-cased-distilled-squad, затем помещаем в эту папку файл словаря, файл конфигурации модели, файл параметров модели и переименовываем файл в config.json, vocab.txt, pytorch_model.bin. быть.
-
Определите каталог модели в коде,
DISTILLED = './distilbert-base-cased-distilled-squad'
, полный код выглядит следующим образом.from transformers import AutoTokenizer, AutoModelForQuestionAnswering import torch DISTILLED = './distilbert-base-cased-distilled-squad' tokenizer = AutoTokenizer.from_pretrained(DISTILLED) model = AutoModelForQuestionAnswering.from_pretrained(DISTILLED) text = """ Transformers (formerly known as pytorch-transformers and pytorch-pretrained-bert) provides general-purpose architectures (BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet…) for Natural Language Understanding (NLU) and Natural Language Generation (NLG) with over 32+ pretrained models in 100+ languages and deep interoperability between TensorFlow 2.0 and PyTorch. """ questions = [ "How many pretrained models are available in Transformers?", "What does Transformers provide?", "Transformers provides interoperability between which frameworks?", ] for question in questions: inputs = tokenizer.encode_plus(question, text, add_special_tokens=True, return_tensors="pt") input_ids = inputs["input_ids"].tolist()[0] text_tokens = tokenizer.convert_ids_to_tokens(input_ids) answer_start_scores, answer_end_scores = model(**inputs) answer_start = torch.argmax(answer_start_scores) # Get the most likely beginning of answer with the argmax of the score answer_end = torch.argmax(answer_end_scores) + 1 # Get the most likely end of answer with the argmax of the score answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(input_ids[answer_start:answer_end])) print(f"Question: {question}") print(f"Answer: {answer}\n")