Неофициальная внедрение пирога
Electra: предварительно тренировочный текстовые кодеры как дискриминаторы, а не генераторы Кевином Кларком. Мин-Тан Луонг. Quoc V. le. Кристофер Д. Мэннинг
※ Для обновлений и большей работы в будущем следуйте
Я предварительно предварительно отмену электромаллель с нуля и успешно воспроизводил результаты бумаги на клей.
| Модель | Кола | SST | MRPC | Стр | QQP | Mnli | Qnli | Rte | Ав. Avg. |
|---|---|---|---|---|---|---|---|---|---|
| Electra-Small-owt | 56.8 | 88.3 | 87.4 | 86.8 | 88.3 | 78.9 | 87.9 | 68.5 | 80.36 |
| Electra-Small-owt (мой) | 58.72 | 88.03 | 86.04 | 86.16 | 88.63 | 80.4 | 87.45 | 67.46 | 80.36 |
Таблица 1: Результаты на набор Glue Dev. Официальный результат исходит от ожидаемых результатов. Оценки являются средними оценками, которые были связаны с той же контрольной точки. (См. Эта проблема) Мой результат исходит от предварительной подготовки модели с нуля и обучения в среднем из 10 прогонов заготовления для каждой задачи. Оба результата обучаются на OpenWebText Corpus
| Модель | Кола | SST | MRPC | Стр | QQP | Mnli | Qnli | Rte | Ав. |
|---|---|---|---|---|---|---|---|---|---|
| Electra-Small ++ | 55,6 | 91.1 | 84,9 | 84,6 | 88.0 | 81.6 | 88.3 | 63,6 | 79,7 |
| Electra-small ++ (мой) | 54,8 | 91.6 | 84,6 | 84.2 | 88.5 | 82 | 89 | 64,7 | 79,92 |
Таблица 2: Результаты на наборе тестирования клея. Мой результат создает предварительную контрольную точку, загруженную из HuggingFace.
| Официальная кривая потери обучения | Моя кривая потери тренировок |
|---|---|
![]() | ![]() |
Таблица 3: Оба являются небольшими моделями, обученными на OpenWebText. Официальный отсюда. Вы должны взять ценность потери тренировок с помощью зерна соли, поскольку она не отражает эффективность последующих задач.
Вам не нужно загружать и обрабатывать наборы данных вручную, SciRpt позаботится об этом для вас автоматически. (Благодаря Huggingface/Datazets и Hugginface/Transformers)
AFAIK, самая близкая ревментация к первоначальной, заботясь о многих, легко упускаемых деталях (описано ниже).
AFAIK, единственный, кто успешно проверяет себя, повторяя результаты в статье.
Поставляется с ноутбуками Jupyter, которые вы можете изучить код и осмотреть обработанные данные.
Вам не нужно загружать и предварительно обрабатывать что -либо самостоятельно, все, что вам нужно, это запустить сценарий обучения.
| Иметь в виду | Std | Максимум | Мин | #Models |
|---|---|---|---|---|
| 81.38 | 0,57 | 82.23 | 80.42 | 14 |
Tabel 4: Статистика Glue Devset Результаты для небольших моделей. Каждая модель предварительно с нуля с разными семенами и создана для 10 случайных прогонов для каждой задачи клей. Оценка модели является средним из лучших из 10 для каждой задачи. (Процесс такой же, как и описанный в статье), как мы можем видеть, хотя Electra издевается над обучением Adeversarial, он обладает хорошей стабильностью тренировок.
| Модель | Кола | SST | MRPC | Стр | QQP | Mnli | Qnli | Rte |
|---|---|---|---|---|---|---|---|---|
| Electra-Small-owt (мой) | 1.30 | 0,49 | 0,7 | 0,29 | 0,1 | 0,15 | 0,33 | 1.93 |
Таблица 5: Стандартное отклонение для каждой задачи. Это та же модель, что и таблица 1, которая работает 10 запуска для каждой задачи.
POST FORUM HUGGINGFACE
Форум Форум
Примечание: этот проект на самом деле для моих личных исследований. Поэтому я не пытался облегчить использование для всех пользователей, но пытался облегчить чтение и изменение.
pip3 install -r requirements.txt
python pretrain.pypretrained_checkcpoint в finetune.py чтобы использовать контрольную точку, которую вы предварительно выделили и сохранили в electra_pytorch/checkpoints/pretrain .python finetune.py (с do_finetune step to True )th_runs в finetune.py в соответствии с номерами в именах выбранных вами пробежек.python finetune.py (с do_finetune установленным на False ), эти предсказания ATRPUS на TestSet, вы можете затем сжать и отправить .tsv s в electra_pytorch/test_outputs/<group_name>/*.tsv . Я не использовал аргументы CLI, поэтому настраивайте параметры, заключенные в MyConfig в файлах Python, в ваши потребности перед их запуска. (Ниже комментарии, показывающие параметры ванильных настроек)
Вам понадобится учетная запись Neptune и создать проект Neptune на веб -сайте, чтобы записать результаты Glue Maneetuning. Не забудьте заменить richarddwang/electra-glue на имя вашего проекта Neptune
Файлы Python pretrain.py , finetune.py фактически преобразуются из Pretrain.ipynb и Finetune_GLUE.ipynb . Вы также можете использовать эти записные книжки для изучения Electra Training и Manetuning.
Ниже перечислены подробности оригинальной реализации/бумаги, которые легко упустить из виду, и я позаботился. Я обнаружил, что эти детали необходимы для успешного воспроизведения результатов статьи.
ElectraClassificationHead . Если вы предварительно предварительно, Finetune и генерируете результаты теста. electra_pytorch будет генерировать их для вас.
project root
|
|── datasets
| |── glue
| |── <task>
| ...
|
|── checkpoints
| |── pretrain
| | |── <base_run_name>_<seed>_<percent>.pth
| | ...
| |
| |── glue
| |── <group_name>_<task>_<ith_run>.pth
| ...
|
|── test_outputs
| |── <group_name>
| | |── CoLA.tsv
| | ...
| |
| | ...
@inproceedings{clark2020electra,
title = {{ELECTRA}: Pre-training Text Encoders as Discriminators Rather Than Generators},
author = {Kevin Clark and Minh-Thang Luong and Quoc V. Le and Christopher D. Manning},
booktitle = {ICLR},
year = {2020},
url = {https://openreview.net/pdf?id=r1xMH1BtvB}
}
@misc{electra_pytorch,
author = {Richard Wang},
title = {PyTorch implementation of ELECTRA},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/richarddwang/electra_pytorch}}
}