Рубрики
Без рубрики

Тренировать модель QA

Эта статья является частью серии учебных пособий по Txtai, платформе семантического поиска с AI. … с меткой ShowDev, MachineLearning, NLP, Python.

Эта статья является частью учебной серии о txtai , Семантический поисковый платформ с AI с AI.

Объятие модели лица Model Hub Имеет широкий спектр моделей, которые могут выполнять многие задачи. В то время как эти модели работают хорошо, лучшая производительность часто встречается при тонкой настройке модели с данными для конкретных задач.

Объятное лицо обеспечивает Количество полнофункциональных примеров Чтобы помочь с учебными моделями, специфичными для задачи. При создании моделей из командной строки эти сценарии – отличный способ начать работу.

TXTAI предоставляет тренировочный трубопровод, который можно использовать для программного обучения новых моделей с использованием структуры тренеров Transformers.

Этот пример обучает небольшой модели QA, а затем дополнительно настраивает ее с парой новых примеров (несколько выстрелов).

Установить txtai и все зависимости.

pip install txtai datasets pandas

Первым шагом является обучение модели Squad 2.0. Отряд-это набор данных с ответом на вопрос, который ставит вопрос с контекстом вместе с идентифицированным ответом. Также возможно не иметь ответа. Смотрите Сайт набора данных отряда за дополнительной информацией.

Мы будем использовать крошечную модель Bert с частью отряда 2.0 для целей эффективности.

from datasets import load_dataset
from txtai.pipeline import HFTrainer

ds = load_dataset("squad_v2")

trainer = HFTrainer()
trainer("google/bert_uncased_L-2_H-128_A-2", ds["train"].select(range(3000)), task="question-answering", output_dir="bert-tiny-squadv2")
print("Training complete")

Далее мы добавим несколько дополнительных примеров. Точная настройка модели QA поможет создать определенный тип вопроса или улучшить производительность для конкретного варианта использования.

Для более мелких моделей с узким вариантом использования это помогает модели нулевым в типах вопросов, которые должны быть заданы. В этом случае мы хотим сообщить модели именно о типах информации, которую мы ищем при просьбе ингредиентов. Это поможет улучшить уверенность в ответах, которые генерирует модель.

# Training data
data = [
    {"question": "What ingredient?", "context": "Pour 1 can whole tomatoes", "answers": "tomatoes"},
    {"question": "What ingredient?", "context": "Dice 1 yellow onion", "answers": "onion"},
    {"question": "What ingredient?", "context": "Cut 1 red pepper", "answers": "pepper"},
    {"question": "What ingredient?", "context": "Peel and dice 1 clove garlic", "answers": "garlic"},
    {"question": "What ingredient?", "context": "Put 1/2 lb beef", "answers": "beef"},
]

model, tokenizer = trainer("bert-tiny-squadv2", data, task="question-answering", num_train_epochs=10)

Теперь мы готовы проверить результаты! В следующих разделах запускается вопрос против исходной модели, обученной только с командой 2.0, и еще одной тонкой модели.

from transformers import pipeline

questions = pipeline("question-answering", model="bert-tiny-squadv2")
questions("What ingredient?", "Peel and dice 1 shallot")
{'answer': 'dice 1 shallot',
 'end': 23,
 'score': 0.05128436163067818,
 'start': 9}
from transformers import pipeline

questions = pipeline("question-answering", model=model.to("cpu"), tokenizer=tokenizer)
questions("What ingredient?", "Peel and dice 1 shallot")
{'answer': 'shallot', 'end': 23, 'score': 0.13187439739704132, 'start': 16}

Посмотрите, как результаты более уверены и имеют лучший ответ. Этот метод позволяет использовать меньшую модель с узким набором функциональности с ростом повышенной скорости. Попробуйте свои собственные данные!

Оригинал: “https://dev.to/neuml/train-a-qa-model-1l08”