GPT2-Chinese: инструменты для обучения модели GPT2 на китайском языке
Описание:
Китайская версия обучающего кода GPT2, использующая токенизатор BERT или токенизатор Sentencepiece. Основан на чрезвычайно потрясающем репозитории от команды HuggingFace Transformers. Может писать стихи, новости, романы или обучать общим языковым моделям. Поддерживает уровень символов, слов и уровень BPE. Поддерживает большой обучающий корпус.
Китайский код обучения GPT2 использует токенизатор BERT или модель Sentencepiece BPE (спасибо [kangzhonghua] за вклад, для использования режима BPE необходимо немного изменить код train.py). Может писать стихи, новости, рассказы или обучать универсальным языковым моделям. Поддержка уровня символов или режима сегментации слов или уровня BPE (необходимо немного изменить код train.py). Поддерживает большое количество обучающих данных.
NEWS 12.9.2019:
Выпущен новый проект GPT2-chitchat, частично основанный на коде этого проекта. Включает в себя код для обучения диалоговой модели GPT2 и код для генерации примеров. Приглашаем всех посетить.
NEWS 12.7.2019:
Новый проект Decoders-Chinese-TF2.0 также поддерживает обучение китайского GPT2. В использовании он более прост и менее склонен к возникновению различных проблем. В настоящее время всё ещё находится на стадии тестирования, приглашаем всех высказать своё мнение.
NEWS 11.9:
GPT2-ML (не имеет прямого отношения к этому проекту) выпущен и включает в себя китайскую модель GPT2 1,5B. Если у вас есть интерес или потребность, вы можете преобразовать её в формат PyTorch, поддерживаемый этим проектом, для дальнейшего обучения или создания тестов.
UPDATE 10.25:
Первая предварительно обученная модель этого проекта была опубликована и представляет собой модель для создания прозы. Конкретные детали можно найти в разделе README о совместном использовании моделей.
Состояние проекта:
Когда этот проект был опубликован, ресурсы китайского GPT2 были практически нулевыми, но теперь ситуация изменилась. Кроме того, функциональность проекта уже в основном стабильна, поэтому в настоящее время проект временно прекратил обновление. Я написал этот код с целью практики использования PyTorch. Даже если позже я проделал некоторую работу по заполнению пробелов, всё равно остаётся много незрелых мест, пожалуйста, поймите.
Использование:
Создайте папку data в корневом каталоге проекта. Поместите обучающие данные в виде файла train.json в папку data. Train.json — это список JSON, каждый элемент которого представляет собой текст статьи для обучения (а не ссылку на файл).
Запустите файл train.py и выберите --raw, чтобы автоматически обработать данные. После завершения предварительной обработки автоматически запускается обучение.
Генерация текста:
python ./generate.py --length=50 --nsamples=4 --prefix=xxx --fast_pattern --save_samples --save_samples_path=/mnt/xx
--fast_pattern (вклад [LeeCP8]): если сгенерированная длина параметра относительно мала, скорость практически не отличается. Лично я протестировал длину = 250, что быстрее на 2 секунды. Поэтому, если вы не добавите --fast_pattern, то по умолчанию не будет использоваться метод fast_pattern. --save_samples: по умолчанию выходные образцы будут напрямую выводиться на консоль. При передаче этого параметра они будут сохранены в файле samples.txt в корневом каталоге. --save_sample_path: вы можете указать каталог сохранения самостоятельно. Вы можете создать многоуровневый каталог рекурсивно. Не передавайте имя файла, имя файла по умолчанию — samples.txt.
Структура файлов:
Файлы generate.py и train.py являются сценариями генерации и обучения соответственно. Train_single.py является расширением train.py, которое можно использовать для очень большого отдельного списка элементов (например, обучение одной книге «Битва сквозь небеса»). Eval.py используется для оценки значения ppl сгенерированной модели. Generate_texts.py — это расширение generate.py, которое может генерировать несколько предложений на основе начального ключевого слова из списка и выводить их в файл. Файл train.json является примером формата обучающих образцов. Папка cache содержит несколько таблиц слов BERT, make_vocab.py — скрипт, который помогает создавать таблицы слов на основе файлов train.json. vocab.txt — исходная таблица слов BERT, vocab_all.txt добавляет дополнительные слова древнекитайского языка, а vocab_small.txt — небольшая таблица слов. В папке tokenizations находятся три доступных токенизатора, включая стандартный токенизатор Bert, сегментированный токенизатор Bert и токенизатор BPE. Скрипты содержат примеры сценариев обучения и генерации.
Примечание:
Этот проект использует токенизатор Bert для обработки китайских символов. Если вы не используете сегментированный токенизатор, вам не нужно предварительно сегментировать, токенизатор сделает это за вас. Если вы используете сегментированный токенизатор, рекомендуется сначала использовать файл make_vocab.py в папке cache для создания таблицы слов, соответствующей вашим данным. Модель должна быть рассчитана самостоятельно. Если вы завершили предварительное обучение, добро пожаловать на общение. Если ваша память очень большая или данные обучения небольшие, вы можете удалить соответствующий код в build files в train.py и обрабатывать данные без разделения. При использовании токенизатора BPE вам необходимо создать собственную таблицу китайских слов.
Данные:
Можно загрузить из здесь и здесь. Данные Doupo можно загрузить из здесь.
FP16 и Gradient Accumulation:
Я добавил поддержку FP16 и градиентного накопления в файл train.py. Если у вас установлен apex и вы знаете, что такое FP16, вы можете изменить переменную fp16 = True, чтобы включить его. Однако в настоящее время FP16 может не сходиться, причина неизвестна.
Связаться с автором:
Почта: ned1991@gmail.com
Цитирование:
@misc{GPT2-Chinese,
author = {Zeyao Du},
title = {GPT2-Chinese: Tools for training GPT2 model in Chinese language},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/Morizeyao/GPT2-Chinese}},
}
Совместное использование моделей:
Модель | Описание | Автор | Ссылка 1 | Ссылка 2 |
---|---|---|---|---|
Прозаическая модель | Обучена на 130 МБ знаменитых рассказов, эмоциональных рассказов и поэтических рассказов. | hughqiu | 百度网盘【fpyu】 | GDrive |
Это модель, полученная в результате обучения страстного и щедрого друга git. Она открыта для всех друзей, и мы также приветствуем всех коллег, которые публикуют свои завершённые модели здесь.
Демо:
Модель, обученная на основе изменённого кода этого репозитория, используется в качестве фона для стихов и стихов в фоновом режиме юридической поэзии и новой версии Jiuge Poetry Generator. leemengtaiwan внес свой вклад и предоставил статью, которая наглядно знакомит с GPT-2 и визуализирует механизм самовнимания. Также предоставляется [Colab].
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )