1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/paddlepaddle-ERNIE

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.en.md

ERNIE 2.0 — это непрерывная система предварительного обучения для понимания языка, в которой задачи предварительного обучения могут быть постепенно построены и изучены с помощью многозадачного обучения.

ERNIE 2.0 создаёт прочную основу практически для всех задач НЛП: классификации текста, ранжирования, распознавания именованных сущностей (NER), машинного понимания прочитанного, генерации текста и так далее.

Новости:

  • 29 декабря 2020 года:
    • Предварительное обучение и точная настройка ERNIE с PaddlePaddle v2.0.
    • Новая функция AMP (автоматическая смешанная точность) для каждой демонстрации в этом репозитории.
    • Введение функции накопления градиента, запуск ERNIE-large только с 8 ГБ памяти.
  • 24 сентября 2020 года:
    • ERNIE-ViL теперь доступен!
      • Совместные представления с расширенными знаниями для задач, связанных с визуальным языком.
        • Построение трёх задач прогнозирования графа сцены с использованием структурированных знаний.
      • Лучшие результаты по 5 задачам нисходящего потока, 1-е место в списке лидеров VCR.
  • 20 мая 2020 года:
    • Попробуйте ERNIE в «dygraph» с:
      • Нетерпеливым выполнением с paddle.fluid.dygraph.
      • Распределённым обучением.
      • Простотой развёртывания.
      • Изучением НЛП в учебниках Aistudio.
      • Обратной совместимостью со старыми контрольными точками.
    • Теперь доступен ERNIE-GEN!
      • Лучшая предварительно обученная модель для задач генерации, принятая на IJCAI-2020.
        • Новаторская задача предварительного обучения генерации по диапазону.
        • Механизм заполнения генерации и метод генерации с учётом шума.
        • Реализован тщательно разработанной архитектурой Multi-Flow Attention.
      • Вы можете скачать все модели, включая base/large/large-430G.
  • 30 апреля 2020 года: выпуск ERNIESage, новой модели нейронной сети на основе графов с использованием ERNIE в качестве агрегатора. Это реализовано через PGL.
  • 27 марта 2020 года: чемпион в 5 подгруппах SemEval2020.
  • 26 декабря 2019 года: 1-е место на доске лидеров GLUE.
  • 6 ноября 2019 года: представление ERNIE-tiny.
  • 7 июля 2019 года: представление ERNIE2.0.
  • 16 марта 2019 года: представление ERNIE1.0.

Содержание:

Быстрый тур:

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). Бегиннерс

  • Семантический анализ
  • Клоуз тест
  • Дистилляция знаний
  • Спросите ЭРНИ
  • Загрузка чекпоинта старого стиля

Настройка

  1. Установите PaddlePaddle

Для этого репозитория требуется PaddlePaddle 1.7.0+. См. здесь инструкцию по установке.

  1. Установите ЭРНИ:
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. Скачайте предобученные модели (необязательно):
Модель Описание Аббревиатура
ЭРНИ 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
  1. Скачайте датасеты:

Английские датасеты

Скачайте датасеты 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

Тонкая настройка

  • Попробуйте нетерпеливое выполнение with 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:

  1. Анализ настроений (Sentiment Analysis) (./demo/finetune_sentiment_analysis.py).
  2. Семантическое сходство (Semantic Similarity) (./demo/finetune_classifier.py).
  3. Распознавание именованных сущностей (Name Entity Recognition (NER)) (./demo/finetune_ner.py).
  4. Понимание машинного чтения (Machine Reading Comprehension) (./demo/finetune_mrc.py).
  5. Генерация текста (Text generation) (./demo/seq2seq/README.md).
  6. Классификация текста с использованием API 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(большой)

Предварительное обучение с ERNIE 1.0

См. здесь

Онлайн-вывод

Если в 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.

Подробности о дистилляции см. ### Цитирование

ERNIE 1.0

@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}
}

ERNIE 2.0

@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}
}

ERNIE-GEN

@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}
}

ERNIE-ViL

@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 этого репозитория.

Коммуникация

  • ERNIE homepage.
  • Github Issues: сообщения об ошибках, запросы на добавление функций, проблемы с установкой, вопросы по использованию и т. д.
  • Группа обсуждения QQ: 760439550 (группа обсуждения ERNIE).
  • Группа обсуждения QQ: 958422639 (группа обсуждения ERNIE v2).
  • Форумы: обсуждение реализаций, исследований и т. п.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

ERNIE 2.0 — это семантический фреймворк для предварительного обучения с непрерывным обучением, который использует мультизадачное обучение для инкрементального построения задач предварительного обучения. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/paddlepaddle-ERNIE.git
git@api.gitlife.ru:oschina-mirror/paddlepaddle-ERNIE.git
oschina-mirror
paddlepaddle-ERNIE
paddlepaddle-ERNIE
develop