Это скорее случайный, чем строгий исследовательский пост, но я хотел рассмотреть текущий (сентябрь 2020 г.) быстрый и простой способ настройки пользовательской модели GPT-2.

Если вы работаете на английском языке: вам повезло! Вы можете начать с основных предварительно обученных моделей GPT-2 из OpenAI и настроить их для конкретного варианта использования. Я рекомендую SimpleTransformers, и есть множество других руководств. тонкая настройка:
ft_model.tokenizer.add_tokens([“liopleurodon”])
ft_model.model.resize_token_embeddings(len(ft_model.tokenizer))

Создание арабской базовой модели

Для моделей, не владеющих английским языком, потребуется переобучить GPT-2 на большом корпусе. Два популярных метода, которые я видел, начинаются с одной из предварительно обученных моделей и заменяют эти токены и веса в течение нескольких часов обучения. Корпус может быть взят из недавней дампы статей Википедии и/или архива CommonCrawl веб-контента.

  • Урок 1: Блокнот Португальский GPT-2 Пьера Гийу. Я рекомендовал обновить этот код, чтобы решить некоторые проблемы с его зависимостями. Из-за повторяющегося кода для отслеживания новых и старых вложений я потерял сюжет и не смог самостоятельно обучить модель.
  • Урок 2: Статья Нг Вай Фунга Вилка GPT-2. Для создания закодированного корпуса NPZ требуется много оперативной памяти; на своем ноутбуке я мог обработать около 2 000 000 строк из арабской Википедии — не очень хорошо, но лучше, чем это было возможно на CoLab.
  • Мой текущий подход: загрузить вики-корпус с помощью метода из Учебника 1 и обучить модель кодом из Учебника 2.

До сих пор я тренировался в течение ночи (‹24 часа, чтобы соответствовать ограничениям CoLab).

Экспорт модели

Если вы следовали Учебнику 2, у вас будет контрольная точка модели TensorFlow с несколькими связанными файлами. Вот что вам нужно для создания модели, совместимой с HuggingFace:

  • все файлы в checkpoints, начиная с model-### (где # — самый высокий завершенный номер шага); удалить номер из имени файла.
  • файл в checkpoints просто названномcheckpoint
  • конфигурационные файлы внутри models/117M (кодер, hparams, vocab)
  • config.json от аналогичной модели ГПТ-2 (пример)

Вы должны иметь возможность загрузить папку как Transformers AutoModel и экспортировать обратно как модель PyTorch:
m = AutoModel.from_pretrained(‘./argpt’, from_tf=True)
m.save_pretrained(“export”)

vocab.json немного сложнее; в конце блокнота я использую код из ответвления GPT-2, чтобы загрузить их собственный кодировщик слов и вывести эти слова в более стандартном формате. Вам понадобится tokenizer-config.json для готовой модели.

Я опубликовал оригинальный арабский GPT-2 как Sanaa. Помимо того, что это упрощает использование в своих проектах для большего числа пользователей, он добавляет небольшую карточку с моделью и виджет API на свой сайт, чтобы люди могли попробовать его.

Обновление 2021 г.

Ознакомьтесь с AraGPT2 и обновленной диалектной моделью.

Создание новой, отлаженной модели

Ранее я просмотрел и объединил наборы данных арабского диалекта для обучения классификатора на основе mBERT. Для этого нового проекта я объединил эти три.

Затем я добавил специальные токены в набор данных и в токенизатор, где они служат управляющими символами (т. е. следующее содержимое — [диалект]). Нет необходимости добавлять пробел между токеном и следующим символом в предложении.

ft_model.tokenizer.add_tokens(
["[EGYPTIAN]", "[GULF]", "[LEVANTINE]", "[MSA]", "[MAGHREBI]"])
ft_model.model.resize_token_embeddings(len(ft_model.tokenizer))

Вот код, который я использовал:



Эта модель сейчас публикуется как сана-диалект. Я бы все же хотел переобучить обе модели на более полных данных. Что было важно, так это построить конвейер, который выдержит этот первый проход данных, и определить болевые точки.

Тем временем, делая адаптер

Отдельно я использовал наборы данных диалектов для обучения классификатора диалектов. Затем я опубликовал эти веса в виде адаптера, своего рода упакованного тонко настроенного слоя. Вы можете найти это на AdapterHub https://adapterhub.ml/adapters/mapmeld/bert-base-arabert-ar-dialect/

Возможные улучшения:

  • начиная с более крупной модели GPT-2 (>117M)
  • использование большего корпуса
  • больше времени на обучение
  • также публикуем интерактивную модель на Streamlit / Gradio

Обновления?

Эта статья была опубликована в сентябре 2020 года. Чтобы узнать о новых рекомендуемых моделях и наборах данных, посетите https://github.com/mapmeld/use-this-now/blob/main/README.md#arabic-nlp.