ERNIE 2.0 — это непрерывная система предварительного обучения для понимания языка, в которой задачи предварительного обучения могут быть постепенно построены и изучены с помощью многозадачного обучения.
ERNIE 2.0 создаёт прочную основу практически для всех задач НЛП: классификации текста, ранжирования, распознавания именованных сущностей (NER), машинного понимания прочитанного, генерации текста и так далее.
Новости:
import numpy as np
import paddle as P
from ernie.tokenizing_ernie import ErnieTokenizer
from ernie.modeling_ernie import ErnieModel
model = ErnieModel.from_pretrained('ernie-1.0') # Попробуйте получить предварительно обученную модель с сервера, убедитесь, что у вас есть подключение к сети
model.eval()
tokenizer = ErnieTokenizer.from_pretrained('ernie-1.0')
ids, _ = tokenizer.encode('hello world')
ids = P.to_tensor(np.expand_dims(ids, 0)) # вставить дополнительное измерение `batch`
pooled, encoded = model(ids) # нетерпеливое выполнение
print(pooled.numpy()) # преобразовать результаты в numpy
Нет графического процессора? Попробуйте ERNIE на AIStudio! (пожалуйста, выберите последнюю версию и подайте заявку на среду GPU). Бегиннерс
Для этого репозитория требуется PaddlePaddle 1.7.0+. См. здесь инструкцию по установке.
pip install paddle-ernie
или
git clone https://github.com/PaddlePaddle/ERNIE.git --depth 1
cd ERNIE
pip install -r requirements.txt
pip install -e .
Модель | Описание | Аббревиатура |
---|---|---|
ЭРНИ 1.0 База для китайского (https://ernie-github.cdn.bcebos.com/model-ernie1.0.1.tar.gz) | L12H768A12 | ЭРНИ-1.0 |
ЭРНИ Tiny (https://ernie-github.cdn.bcebos.com/model-ernie_tiny.1.tar.gz) | L3H1024A16 | ЭРНИ-Tiny |
ЭРНИ 2.0 База для английского (https://ernie-github.cdn.bcebos.com/model-ernie2.0-en.1.tar.gz) | L12H768A12 | ЭРНИ-2.0-EN |
ЭРНИ 2.0 Large для английского (https://ernie-github.cdn.bcebos.com/model-ernie2.0-large-en.1.tar.gz) | L24H1024A16 | ЭРНИ-2.0-Large-EN |
ЭРНИ Gen base для английского (https://ernie-github.cdn.bcebos.com/model-ernie-gen-base-en.1.tar.gz) | L12H768A12 | ЭРНИ-Gen-Base-EN |
ЭРНИ Gen Large для английского (https://ernie-github.cdn.bcebos.com/model-ernie-gen-large-en.1.tar.gz) | L24H1024A16 | ЭРНИ-Gen-Large-EN |
ЭРНИ Gen Large 430G для английского (https://ernie-github.cdn.bcebos.com/model-ernie-gen-large-430g-en.1.tar.gz) | Слой:24, Скрытый:1024, Головы:16 + 430G предобученный корпус | ЭРНИ-Gen-Large-430G-EN |
Английские датасеты
Скачайте датасеты GLUE, запустив этот скрипт.
Опция --data_dir
в следующем разделе предполагает древовидную структуру каталогов, подобную этой:
data/xnli
├── dev
│ └── 1
├── test
│ └── 1
└── train
└── 1
См. демо-данные для задачи MNLI.
Китайские датасеты:
Датасеты | Описание |
---|---|
XNLI (https://ernie-github.cdn.bcebos.com/data-xnli.tar.gz) | XNLI — это датасет естественного вывода на 15 языках. Он был совместно создан Facebook и Нью-Йоркским университетом. Мы используем китайские данные XNLI для оценки способности нашей модели к пониманию языка. url |
ChnSentiCorp (https://ernie-github.cdn.bcebos.comcom/data-chnsenticorp.tar.gz) | ChnSentiCorp — это датасет анализа настроений, состоящий из отзывов об онлайн-шопинге отелей, ноутбуков и книг. |
MSRA-NER (https://ernie-github.cdn.bcebos.com/data-msra_ner.tar.gz) | MSRA-NER (SIGHAN2006) — датасет, выпущенный MSRA для распознавания имён людей, мест и организаций в тексте. |
NLPCC2016-DBQA (https://ernie-github.cdn.bcebos.com/data-dbqa.tar.gz) | NLPCC2016-DBQA — подзадача NLPCC-ICCPOL 2016 Shared Task, которая проводится NLPCC(Natural Language Processing and Chinese Computing). Эта задача направлена на выбор документов из кандидатов для ответа на вопросы. [url: http://tcci.ccf.org.cn/conference/2016/dldoc/evagline2.pdf] |
CMRC2018 | CMRC2018 — оценка китайского экстрактивного понимания прочитанного, организованная Китайским обществом обработки информации Китая (CIPS-CL). url |
dygraph model
:
python3 ./demo/finetune_classifier.py \
--from_pretrained ernie-1.0 \
--data_dir ./data/xnli
укажите --use_amp
, чтобы активировать AMP-тренировку.
--bsz
обозначает глобальный размер пакета для одного шага оптимизации, --micro_bsz
— максимальный размер пакета для каждого GPU-устройства.
если --micro_bsz < --bsz
, будет активировано накопление градиента.
Распределённая доработка:
paddle.distributed.launch
— это менеджер процессов, который мы используем для запуска процессов Python на каждом доступном GPU-устройстве:
При распределённом обучении max_steps
используется в качестве критерия остановки вместо epoch
, чтобы предотвратить мёртвый блок.
Вы можете рассчитать max_steps
, используя формулу EPOCH * NUM_TRAIN_EXAMPLES / TOTAL_BATCH
.
Также обратите внимание, что мы разделяем данные обучения в соответствии с идентификатором устройства, чтобы предотвратить переобучение.
Демо (убедитесь, что у вас более двух GPU, онлайн-загрузка модели не работает в paddle.distributed.launch
, вам нужно сначала запустить однокарточную доработку или загрузить и извлечь её вручную из здесь):
python3 -m paddle.distributed.launch \
./demo/finetune_classifier_distributed.py \
--data_dir data/mnli \
--max_steps 10000 \
--from_pretrained ernie-2.0-en
Многие другие демонстрационные скрипты Python:
paddle.static
(Text classification with paddle.static
API) (./demo/finetune_classifier_static.py).Рекомендуемые гиперпараметры:
Задачи | Размер партии | Скорость обучения |
---|---|---|
CoLA | 32 / 64 (базовый) | 3e-5 |
SST-2 | 64 / 256 (базовый) | 2e-5 |
STS-B | 128 | 5e-5 |
QQP | 256 | 3e-5(базовый)/5e-5(большой) |
MNLI | 256 / 512 (базовый) | 3e-5 |
QNLI | 256 | 2e-5 |
RTE | 16 / 4 (базовый) | 2e-5(базовый)/3e-5(большой) |
MRPC | 16 / 32 (базовый) | 3e-5 |
WNLI | 8 | 2e-5 |
XNLI | 512 | 1e-4(базовый)/4e-5(большой) |
CMRC2018 | 64 | 3e-5 |
DRCD | 64 | 5e-5(базовый)/3e-5(большой) |
MSRA-NER(SIGHAN2006) | 16 | 5e-5(базовый)/1e-5(большой) |
ChnSentiCorp | 24 | 5e-5(базовый)/1e-5(большой) |
LCQMC | 32 | 2e-5(базовый)/5e-6(большой) |
NLPCC2016-DBQA | 64 | 2e-5(базовый)/1e-5(большой) |
VCR | 64 | 2e-5(базовый)/2e-5(большой) |
См. здесь
Если в finetune_classifier_dygraph.py
передаётся --inference_model_dir
,
в конце тонкой настройки будет создана готовая к обслуживанию модель, и ваша модель будет готова к работе.
Подробнее об онлайн-выводе см. в C++ inference API, или вы можете запустить многопроцессорный сервер вывода с помощью нескольких строк кода:
python -m propeller.tools.start_server -m /path/to/saved/inference_model -p 8881
и вызовите сервер так же, как вызов локальной функции (только Python3):
from propeller.service.client import InferenceClient
from ernie.tokenizing_ernie import ErnieTokenizer
client = InferenceClient('tcp://localhost:8881')
tokenizer = ErnieTokenizer.from_pretrained('ernie-1.0')
ids, sids = tokenizer.encode('hello world')
ids = np.expand_dims(ids, 0)
sids = np.expand_dims(sids, 0)
result = client(ids, sids)
Предварительно созданную модель вывода для ernie-1.0 можно загрузить по адресу здесь. Её можно использовать для точной настройки на основе функций или извлечения функций.
Дистилляция знаний — хороший способ сжатия и ускорения ERNIE.
Подробности о дистилляции см. ### Цитирование
@article{sun2019ernie,
title={Ernie: Enhanced representation through knowledge integration},
author={Sun, Yu and Wang, Shuohuan and Li, Yukun and Feng, Shikun and Chen, Xuyi and Zhang, Han and Tian, Xin and Zhu, Danxiang and Tian, Hao and Wu, Hua},
journal={arXiv preprint arXiv:1904.09223},
year={2019}
}
@article{sun2019ernie20,
title={ERNIE 2.0: A Continual Pre-training Framework for Language Understanding},
author={Sun, Yu and Wang, Shuohuan and Li, Yukun and Feng, Shikun and Tian, Hao and Wu, Hua and Wang, Haifeng},
journal={arXiv preprint arXiv:1907.12412},
year={2019}
}
@article{xiao2020ernie-gen,
title={ERNIE-GEN: An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation},
author={Xiao, Dongling and Zhang, Han and Li, Yukun and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng},
journal={arXiv preprint arXiv:2001.11314},
year={2020}
}
@article{yu2020ernie,
title={ERNIE-ViL: Knowledge Enhanced Vision-Language Representations Through Scene Graph},
author={Yu, Fei and Tang, Jiji and Yin, Weichong and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng},
journal={arXiv preprint arXiv:2006.16934},
year={2020}
}
Для полного воспроизведения результатов работы с бумагами, пожалуйста, проверьте ветку repro
этого репозитория.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )