Учебные заметки по библиотеке трансформаторов (1): установка и тестирование

глубокое обучение

По моему мнению, я думаю, что Трансформеры - бегемот, но после фактического контакта он чрезвычайно дружелюбен. Спасибо, обнимающее лицо. посмотреть оригинал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\, после загрузки модели ее можно сохранить в других местах. Описание каждого файла выглядит следующим образом:

  1. Файл json содержит теги «url» и «etag» соответствующего файла.

  2. «a41...» — это файл конфигурации: distilbert-base-uncased-config.

  3. '26b...' - это файл словаря: bert-base-uncased-vocab.

  4. «437...» — это файл конфигурации Finetuned-sst-2: distilbert-base-uncased-finetuned-sst-2-english-config, обратите внимание, что он отличается от файла «a41...».

  5. '57d...' - это файл Modelcard: distilbert-base-uncased-finetuned-sst-2-english-modelcard.

  6. «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 в качестве примера:

  1. Сначала мы создаем папку с именем distilbert-base-cased-distilled-squad, затем помещаем в эту папку файл словаря, файл конфигурации модели, файл параметров модели и переименовываем файл в config.json, vocab.txt, pytorch_model.bin. быть.

  2. Определите каталог модели в коде,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")
    

Ссылаться на

Метод объятий test.co/transformer…