LARK

ERNIE 系列各种预训练模型的正式实施,涵盖语言理解与生成、多模态理解与生成等主题。「Official implementations for various pre-training models of ERNIE-family, covering topics of Language Understanding & Generation, Multimodal Understanding & Generation, and beyond.」

Github stars Tracking Chart

ERNIE_milestone_20210519_zh

文心大模型ERNIE是百度发布的产业级知识增强大模型,涵盖了NLP大模型和跨模态大模型。2019年3月,开源了国内首个开源预训练模型文心ERNIE 1.0,此后在语言与跨模态的理解和生成等领域取得一系列技术突破,并对外开源与开放了系列模型,助力大模型研究与产业化应用发展。提醒: ERNIE老版本代码已经迁移至repro分支,欢迎使用我们全新升级的基于动静结合的新版ERNIE套件进行开发。另外,也欢迎上EasyDLBML体验更丰富的功能。
【了解更多】

开源Roadmap

  • 2022.8.18:
    • 图文跨模态预训练模型ERNIE-ViL 2.0 (base) 正式开源
  • 2022.5.20:
    • 最新开源ERNIE 3.0系列预训练模型:
      • 110M参数通用模型ERNIE 3.0 Base
      • 280M参数重量级通用模型ERNIE 3.0 XBase
      • 74M轻量级通用模型ERNIE 3.0 Medium
    • 新增语音-语言跨模态模型ERNIE-SAT 正式开源
    • 新增ERNIE-Gen(中文)预训练模型,支持多类主流生成任务:主要包括摘要、问题生成、对话、问答
    • 动静结合的文心ERNIE开发套件:基于飞桨动态图功能,支持文心ERNIE模型动态图训练。您仅需要在模型训练开启前,修改一个参数配置,即可实现模型训练的动静切换。
    • 将文本预处理、预训练模型、网络搭建、模型评估、上线部署等NLP开发流程规范封装。
    • 支持NLP常用任务:文本分类、文本匹配、序列标注、信息抽取、文本生成、数据蒸馏等。
    • 提供数据清洗、数据增强、分词、格式转换、大小写转换等数据预处理工具。
  • 2021.12.3:
  • 2021.5.20:
    • ERNIE 最新开源四大预训练模型:
      • 多粒度语言知识模型ERNIE-Gram 正式开源
      • 超长文本双向建模预训练模型ERNIE-Doc 正式开源
      • 融合场景图知识的跨模态预训练模型教程ERNIE-ViL 正式开源
      • 语言与视觉一体的预训练模型ERNIE-UNIMO 正式开源
  • 2020.9.24:
    • ERNIE-ViL 技术发布! (点击进入)
      • 面向视觉-语言知识增强的预训练框架,首次在视觉-语言预训练引入结构化的知识。
        • 利用场景图中的知识,构建了物体、属性和关系预测任务,精细刻画模态间细粒度语义对齐。
      • 五项视觉-语言下游任务取得最好效果,视觉常识推理榜单取得第一。
  • 2020.5.20:
    • ERNIE-GEN 模型正式开源! (点击进入)
      • 最强文本生成预训练模型正式开源,相关工作已被 IJCAI-2020 收录。
        • 首次把 ERNIE 预训练技术能力扩展至文本生成领域,在多个典型任务上取得最佳。
        • 您现在即可下载论文报告的所有模型(包含 base/large/large-430G)。
      • 首次在预训练阶段加入span-by-span 生成任务,让模型每次能够生成一个语义完整的片段。
      • 提出填充式生成机制和噪声感知机制来缓解曝光偏差问题。
      • 精巧的 Mulit-Flow Attention 实现框架。
  • 2020.4.30 发布ERNIESage, 一种新型图神经网络模型,采用ERNIE做为aggreagtor. 由PGL实现。
  • 2020.3.27 在SemEval2020五项子任务上夺冠
  • 2019.12.26 GLUE榜第一名
  • 2019.11.6 发布ERNIE Tiny
  • 2019.7.7 发布ERNIE 2.0
  • 2019.3.16 发布ERNIE 1.0

环境安装

  1. 安装环境依赖:环境安装
  2. 安装Ernie套件
git clone https://github.com/PaddlePaddle/ERNIE.git

快速上手:使用文心ERNIE大模型进行训练

  • 使用ERNIE3.0作为预训练模型,准备工作包括:
    • 下载模型
    • 准备数据
    • 配置训练json文件
    • 启动训练模型
    • 配置预测json文件
    • 启动预测
  • 我们以文本分类任务为例,来快速上手ERNIE大模型的使用

下载模型

  • 使用ERNIE3.0预训练模型进行文本分类任务
  • ERNNIE3.0预训练模型的下载与配置
# ernie_3.0 模型下载
# 进入models_hub目录
cd ./applications/models_hub
# 运行下载脚本
sh download_ernie_3.0_base_ch.sh

准备数据

  • 文心各个任务的data目录下自带一些示例数据,能够实现直接使用,方便快速熟悉文心的使用。
  • 文本分类任务的数据
#进入文本分类任务文件夹
cd ./applications/tasks/text_classification/
#查看文本分类任务自带数据集
ls ./data
  • 注:示例数据仅作为格式演示使用,在真正训练模型时请替换为真实数据。

配置训练json文件

  • 其预置json文件在./examples/目录下,使用ERNIE3.0预训练模型进行训练的配置文件为的./examples/cls_ernie_fc_ch.json,在该json文件中对数据、模型、训练方式等逻辑进行了配置。
#查看 ERNIE3.0预训练模型 训练文本分类任务的配置文件
cat ./examples/cls_ernie_fc_ch.json

启动训练

  • 将数据集存放妥当,并配置好cls_ernie_fc_ch.json,我们就可以运行模型训练的命令。
  • 其中,单卡指令为python run_trainer.py,如下所示,使用基于ernie的中文文本分类模型在训练集上进行本地模型训练。
# ernie 中文文本分类模型
# 基于json实现预置网络训练。其调用了配置文件./examples/cls_ernie_fc_ch.json
python run_trainer.py --param_path ./examples/cls_ernie_fc_ch.json
  • 多卡指令为:
fleetrun --gpus=x,y run_trainer.py./examples/cls_ernie_fc_ch.json
  • 训练运行的日志会自动保存在**./log/test.log**文件中。
  • 训练中以及结束后产生的模型文件会默认保存在./output/目录下,其中save_inference_model/文件夹会保存用于预测的模型文件,save_checkpoint/ 文件夹会保存用于热启动的模型文件。

配置预测json文件

  • 其预置json文件在./examples/目录下,使用ERNIE2.0预训练模型训练的模型进行预测的配置文件为的./examples/cls_ernie_fc_ch_infer.json
  • 主要修改./examples/cls_ernie_fc_ch_infer.json文件的预测模型的输入路径、预测文件的输入路径、预测结果的输出路径,对应修改配置如下:
{
"dataset_reader":{"train_reader":{"config":{"data_path":"./data/predict_data"}}},
"inference":{"inference_model_path":"./output/cls_ernie_fc_ch/save_inference_model/inference_step_251",
                        "output_path": "./output/predict_result.txt"}
}

启动预测

  • 运行run_infer.py ,选择对应的参数配置文件即可。如下所示:
python run_infer.py --param_path ./examples/cls_ernie_fc_ch_infer.json
  • 预测过程中的日志自动保存在./output/predict_result.txt文件中。

预训练模型介绍

  • 参考预训练模型原理介绍:模型介绍
  • 预训练模型下载:进入./applications/models_hub目录下,下载示例:
#进入预训练模型下载目录
cd ./applications/models_hub
#下载ERNIE3.0 base模型
sh downlaod_ernie_3.0_base_ch.sh

数据集下载

CLUE数据集

DuIE2.0数据集

MSRA_NER数据集

模型效果评估

评估数据集

CLUE 评测结果:

配置 模型 CLUEWSC2020 IFLYTEK TNEWS AFQMC CMNLI CSL OCNLI 平均值
24L1024H RoBERTa-wwm-ext-large 90.79 62.02 59.33 76.00 83.88 83.67 78.81 76.36
20L1024H ERNIE 3.0-XBase 91.12 62.22 60.34 76.95 84.98 84.27 82.07 77.42
12L768H RoBERTa-wwm-ext-base 88.55 61.22 58.08 74.75 81.66 81.63 77.25 74.73
12L768H ERNIE 3.0-Base 88.18 60.72 58.73 76.53 83.65 83.30 80.31 75.63
6L768H RBT6, Chinese 75.00 59.68 56.62 73.15 79.26 80.04 73.15 70.99
6L768H ERNIE 3.0-Medium 79.93 60.14 57.16 74.56 80.87 81.23 77.02 72.99

具体评测方式

  1. 以上所有任务均基于 Grid Search 方式进行超参寻优。分类任务训练每间隔 100 steps 评估验证集效果,取验证集最优效果作为表格中的汇报指标。
  2. 分类任务 Grid Search 超参范围: batch_size: 16, 32, 64; learning rates: 1e-5, 2e-5, 3e-5, 5e-5;因为 CLUEWSC2020 数据集较小,所以模型在该数据集上的效果对 batch_size 较敏感,所以对 CLUEWSC2020 评测时额外增加了 batch_size = 8 的超参搜索; 因为CLUEWSC2020 和 IFLYTEK 数据集对 dropout 概率值较为敏感,所以对 CLUEWSC2020 和 IFLYTEK 数据集评测时增加dropout_prob = 0.0 的超参搜索。

下游任务的固定超参配置

分类和匹配任务:

TASK AFQMC TNEWS IFLYTEK CMNLI OCNLI CLUEWSC2020 CSL
epoch 3 3 3 2 5 50 5
max_seq_length 128 128 128 128 128 128 256
warmup_proportion 0.1 0.1 0.1 0.1 0.1 0.1 0.1

ERNIE模型Grid Search 最优超参

Model AFQMC TNEWS IFLYTEK CMNLI OCNLI CLUEWSC2020 CSL
ERNIE 3.0-Medium bsz_32_lr_2e-05 bsz_16_lr_3e-05 bsz_16_lr_5e-05 bsz_16_lr_1e-05/bsz_64_lr_2e-05 bsz_64_lr_2e-05 bsz_8_lr_2e-05 bsz_32_lr_1e-05
ERNIE 3.0-Base bsz_16_lr_2e-05 bsz_64_lr_3e-05 bsz_16_lr_5e-05 bsz_16_lr_2e-05 bsz_16_lr_2e-05 bsz_8_lr_2e-05(drop_out _0.1) bsz_16_lr_3e-05
ERNIE 3.0-XBase bsz_16_lr_1e-05 bsz_16_lr_2e-05 bsz_16_lr_3e-05 bsz_16_lr_1e-05 bsz_32_lr_2e-05 bsz_8_lr_2e-05 bsz_64_lr_1e-05

应用场景

文本分类(文本分类

文本匹配(文本匹配

序列标注(序列标注

信息抽取(信息抽取

文本生成(文本生成

图文匹配(图文匹配

数据蒸馏(数据蒸馏

工具使用(工具使用

文献引用

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

@inproceedings{sun2020ernie,
  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},
  booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},
  volume={34},
  number={05},
  pages={8968--8975},
  year={2020}
}

ERNIE-GEN

@article{xiao2020ernie,
  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}
}

ERNIE-Gram

@article{xiao2020ernie,
  title={ERNIE-Gram: Pre-Training with Explicitly N-Gram Masked Language Modeling for Natural Language Understanding},
  author={Xiao, Dongling and Li, Yu-Kun and Zhang, Han and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng},
  journal={arXiv preprint arXiv:2010.12148},
  year={2020}
}

ERNIE-Doc

@article{ding2020ernie,
  title={ERNIE-Doc: A retrospective long-document modeling transformer},
  author={Ding, Siyu and Shang, Junyuan and Wang, Shuohuan and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng},
  journal={arXiv preprint arXiv:2012.15688},
  year={2020}
}

ERNIE-UNIMO

@article{li2020unimo,
  title={Unimo: Towards unified-modal understanding and generation via cross-modal contrastive learning},
  author={Li, Wei and Gao, Can and Niu, Guocheng and Xiao, Xinyan and Liu, Hao and Liu, Jiachen and Wu, Hua and Wang, Haifeng},
  journal={arXiv preprint arXiv:2012.15409},
  year={2020}
}

ERNIE-M

@article{ouyang2020ernie,
  title={Ernie-m: Enhanced multilingual representation by aligning cross-lingual semantics with monolingual corpora},
  author={Ouyang, Xuan and Wang, Shuohuan and Pang, Chao and Sun, Yu and Tian, Hao and Wu, Hua and Wang, Haifeng},
  journal={arXiv preprint arXiv:2012.15674},
  year={2020}
}

Main metrics

Overview
Name With OwnerPaddlePaddle/ERNIE
Primary LanguagePython
Program languagePython (Language Count: 2)
Platform
License:
所有者活动
Created At2019-03-03 07:31:29
Pushed At2024-08-31 00:09:47
Last Commit At
Release Count8
Last Release Namev2.6.0 (Posted on )
First Release Namev2.0 (Posted on )
用户参与
Stargazers Count6.3k
Watchers Count196
Fork Count1.3k
Commits Count453
Has Issues Enabled
Issues Count661
Issue Open Count14
Pull Requests Count196
Pull Requests Open Count1
Pull Requests Close Count46
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private