Поиск ответов на вопросы с помощью AutoTrain
Функция извлечения ответов на вопросы (QA) позволяет моделям искусственного интеллекта находить и извлекать точные ответы из текстовых фрагментов. В этом руководстве показано, как обучать пользовательские модели QA с помощью AutoTrain, поддерживающих популярные архитектуры, такие как BERT, RoBERTa и DeBERTa.
На что отвечает экстрактивный вопрос (QA)?
Экстрактные модели QA учатся:
- Находить точные интервалы ответов в более длинных текстовых фрагментах
- Понимать вопросы и соотносить их с соответствующим контекстом
- Извлекать точные ответы, а не генерировать их
- Обработка как простых, так и сложных запросов к тексту
Подготовка ваших данных
Вашему набору данных необходимы эти основные столбцы:
- text: Отрывок, содержащий потенциальные ответы (также называемый контекстом)
- question: Вопрос, на который вы хотите ответить
- answer: Информация о диапазоне ответов, включая текст и позицию
Вот пример того, как должен выглядеть ваш набор данных:
{ "context":"Architecturally, the school has a Catholic character. Atop the Main Building's gold dome is a golden statue of the Virgin Mary. Immediately in front of the Main Building and facing it, is a copper statue of Christ with arms upraised with the legend \"Venite Ad Me Omnes\". Next to the Main Building is the Basilica of the Sacred Heart. Immediately behind the basilica is the Grotto, a Marian place of prayer and reflection. It is a replica of the grotto at Lourdes, France where the Virgin Mary reputedly appeared to Saint Bernadette Soubirous in 1858. At the end of the main drive (and in a direct line that connects through 3 statues and the Gold Dome), is a simple, modern stone statue of Mary.", "question":"To whom did the Virgin Mary allegedly appear in 1858 in Lourdes France?", "answers":{ "text":[ "Saint Bernadette Soubirous" ], "answer_start":[515] } } { "context":"Architecturally, the school has a Catholic character. Atop the Main Building's gold dome is a golden statue of the Virgin Mary. Immediately in front of the Main Building and facing it, is a copper statue of Christ with arms upraised with the legend \"Venite Ad Me Omnes\". Next to the Main Building is the Basilica of the Sacred Heart. Immediately behind the basilica is the Grotto, a Marian place of prayer and reflection. It is a replica of the grotto at Lourdes, France where the Virgin Mary reputedly appeared to Saint Bernadette Soubirous in 1858. At the end of the main drive (and in a direct line that connects through 3 statues and the Gold Dome), is a simple, modern stone statue of Mary.", "question":"What is in front of the Notre Dame Main Building?", "answers":{ "text":[ "a copper statue of Christ" ], "answer_start":[188] } } { "context":"Architecturally, the school has a Catholic character. Atop the Main Building's gold dome is a golden statue of the Virgin Mary. Immediately in front of the Main Building and facing it, is a copper statue of Christ with arms upraised with the legend \"Venite Ad Me Omnes\". Next to the Main Building is the Basilica of the Sacred Heart. Immediately behind the basilica is the Grotto, a Marian place of prayer and reflection. It is a replica of the grotto at Lourdes, France where the Virgin Mary reputedly appeared to Saint Bernadette Soubirous in 1858. At the end of the main drive (and in a direct line that connects through 3 statues and the Gold Dome), is a simple, modern stone statue of Mary.", "question":"The Basilica of the Sacred heart at Notre Dame is beside to which structure?", "answers":{ "text":[ "the Main Building" ], "answer_start":[279] } }
Примечание: предпочтительный формат ответов на вопросы - JSONL, если вы хотите использовать CSV, столбец ответов (answers) должен быть в формате JSON с ключами text и answer_start.
Пример набора данных из Hugging Face Hub: lhoestq/squad
P.S. Вы можете использовать как формат данных squad, так и формат данных squad v2 с правильным отображением столбцов.
Варианты обучения
Местное обучение
Тренируйте модели на своем собственном оборудовании с полным контролем над процессом.
Чтобы обучить экстрактивную QA модель локально, вам понадобится конфигурационный файл:
task: extractive-qa base_model: google-bert/bert-base-uncased project_name: autotrain-bert-ex-qa1 log: tensorboard backend: local data: path: lhoestq/squad train_split: train valid_split: validation column_mapping: text_column: context question_column: question answer_column: answers params: max_seq_length: 512 max_doc_stride: 128 epochs: 3 batch_size: 4 lr: 2e-5 optimizer: adamw_torch scheduler: linear gradient_accumulation: 1 mixed_precision: fp16 hub: username: ${HF_USERNAME} token: ${HF_TOKEN} push_to_hub: true
Чтобы обучить модель, выполните следующую команду:
$ autotrain --config config.yaml
Здесь мы обучаем модель BERT на наборе данных SQuAD, используя задачу Extractive QA. Модель обучается в течение 3 периодов с размером пакета 4 и скоростью обучения 2e-5. Процесс обучения регистрируется с помощью TensorBoard. Модель проходит обучение на месте и после тренировки направляется в центр Hugging Face Hub.
Облачная тренировка на Hugging Face
Обучайте модели с использованием облачной инфраструктуры Hugging Face для лучшей масштабируемости.
Как всегда, обратите особое внимание на сопоставление столбцов.
Ссылка на параметр
class autotrain.trainers.extractive_question_answering.params.ExtractiveQuestionAnsweringParams
( data_path: str = None, model: str = 'bert-base-uncased', lr: float = 5e-05, epochs: int = 3, max_seq_length: int = 128, max_doc_stride: int = 128, batch_size: int = 8, warmup_ratio: float = 0.1, gradient_accumulation: int = 1, optimizer: str = 'adamw_torch', scheduler: str = 'linear', weight_decay: float = 0.0, max_grad_norm: float = 1.0, seed: int = 42, train_split: str = 'train', valid_split: typing.Optional[str] = None, text_column: str = 'context', question_column: str = 'question', answer_column: str = 'answers', logging_steps: int = -1, project_name: str = 'project-name', auto_find_batch_size: bool = False, mixed_precision: typing.Optional[str] = None, save_total_limit: int = 1, token: typing.Optional[str] = None, push_to_hub: bool = False, eval_strategy: str = 'epoch', username: typing.Optional[str] = None, log: str = 'none', early_stopping_patience: int = 5, early_stopping_threshold: float = 0.01 )
Параметры
- data_path (str) — Путь к набору данных.
- model (str) — Название предварительно тренированной модели. По умолчанию используется “bert-base-uncased”.
- lr (float) — Скорость обучения для оптимизатора. Значение по умолчанию 5e-5.
- epochs (int) — Количество периодов обучения. Значение по умолчанию 3.
- max_seq_length (int) — Максимальная длина последовательности для входных данных. Значение по умолчанию 128.
- max_doc_stride (int) — Максимальный шаг документа для разделения контекста. Значение по умолчанию 128.
- batch_size (int) — Размер пакета для обучения. По умолчанию 8.
- warmup_ratio (float) — Коэффициент прогрева для планировщика скорости обучения. Значение по умолчанию равно 0.1.
- gradient_accumulation (int) — Количество шагов накопления градиента. Значение по умолчанию равно 1.
- optimizer (str) — Тип оптимизатора. По умолчанию используется “adamw_torch”.
- scheduler (str) — Тип планировщика скорости обучения. По умолчанию используется “linear”.
- weight_decay (float) — Уменьшение веса для оптимизатора. Значение по умолчанию равно 0.0.
- max_grad_norm (float) — Максимальная норма градиента для отсечения. Значение по умолчанию 1.0.
- seed (int) — Выборочное значение для воспроизводимости. Значение по умолчанию 42.
- train_split (str) — Название раздела обучающих данных. По умолчанию используется “train”.
- valid_split (Optional[str]) — Название раздела проверочных данных. По умолчанию - None.
- text_column (str) — Имя столбца для контекста/текста. По умолчанию используется “context”.
- question_column (str) — Название столбца для вопросов. По умолчанию используется “question”.
- answer_column (str) — Название столбца для ответов. По умолчанию используется “answers”.
- logging_steps (int) — Количество шагов между регистрациями. По умолчанию 1.
- project_name (str) — Имя проекта для выходного каталога. По умолчанию используется “project-name”.
- auto_find_batch_size (bool) — Автоматически определяет оптимальный размер пакета. Значение по умолчанию False.
- mixed_precision (Optional[str]) — Смешанный режим точной тренировки (fp16, bf16 или нет). По умолчанию None.
- save_total_limit (int) — Максимальное количество сохраняемых контрольных точек. Значение по умолчанию 1.
- token (Optional[str]) — Токен аутентификации для Hugging Face Hub. Значение по умолчанию - None.
- push_to_hub (bool) — Следует ли перемещать модель в положение Hubg Face Hub. Значение по умолчанию - False.
- eval_strategy (str) — Стратегия оценки во время обучения. Значение по умолчанию - “epoch”.
- username (Optional[str]) — Для аутентификации имя пользователя на Hugging Face. Значение по умолчанию - None.
- log (str) — Метод ведения журнала для отслеживания эксперимента. Значение по умолчанию - “none”.
- early_stopping_patience (int) — Количество эпох без улучшений для ранней остановки. Значение по умолчанию 5.
- early_stopping_threshold (float) — Порог для ранней остановки улучшения. Значение по умолчанию 0,01.
ExtractiveQuestionAnsweringParams