# ERNIE 3.0 轻量级模型
**目录**
* [模型介绍](#模型介绍)
* [在线蒸馏技术](#在线蒸馏技术)
* [模型效果](#模型效果)
* [开始运行](#开始运行)
* [环境要求](#环境要求)
* [数据准备](#数据准备)
* [模型训练](#模型训练)
* [模型预测](#模型预测)
* [模型压缩](#模型压缩)
* [环境依赖](#环境依赖)
* [模型压缩 API 使用](#模型压缩API使用)
* [压缩效果](#压缩效果)
* [精度测试](#精度测试)
* [性能测试](#性能测试)
* [CPU 性能](#CPU性能)
* [GPU 性能](#CPU性能)
* [使用 FastTokenizer 加速](#使用FastTokenizer加速)
* [部署](#部署)
* [FastDeploy 部署](#FastDeploy部署)
* [Python 部署](#Python部署)
* [C++ 部署](#C++部署)
* [服务化部署](#服务化部署)
* [Notebook教程](#Notebook教程)
* [参考文献](#参考文献)
<a name="模型介绍"></a>
## 模型介绍
本次开源的模型是文心大模型 ERNIE 3.0, 文心大模型 ERNIE 3.0 作为百亿参数知识增强的大模型,除了从海量文本数据中学习词汇、结构、语义等知识外,还从大规模知识图谱中学习。 基础上通过**在线蒸馏技术**得到的轻量级模型,模型结构与 ERNIE 2.0 保持一致,相比 ERNIE 2.0 具有更强的中文效果。
相关技术详解可参考文章[《解析全球最大中文单体模型鹏城-百度·文心技术细节》](https://www.jiqizhixin.com/articles/2021-12-08-9)
### 在线蒸馏技术
在线蒸馏技术在模型学习的过程中周期性地将知识信号传递给若干个学生模型同时训练,从而在蒸馏阶段一次性产出多种尺寸的学生模型。相对传统蒸馏技术,该技术极大节省了因大模型额外蒸馏计算以及多个学生的重复知识传递带来的算力消耗。
这种新颖的蒸馏方式利用了文心大模型的规模优势,在蒸馏完成后保证了学生模型的效果和尺寸丰富性,方便不同性能需求的应用场景使用。此外,由于文心大模型的模型尺寸与学生模型差距巨大,模型蒸馏难度极大甚至容易失效。为此,通过引入了助教模型进行蒸馏的技术,利用助教作为知识传递的桥梁以缩短学生模型和大模型表达空间相距过大的问题,从而促进蒸馏效率的提升。
更多技术细节可以参考论文:
- [ERNIE-Tiny: A Progressive Distillation Framework for Pretrained Transformer Compression](https://arxiv.org/abs/2106.02241)
- [ERNIE 3.0 Titan: Exploring Larger-scale Knowledge Enhanced Pre-training for Language Understanding and Generation](https://arxiv.org/abs/2112.12731)
<p align="center">
<img width="644" alt="image" src="https://user-images.githubusercontent.com/1371212/168516904-3fff73e0-010d-4bef-adc1-4d7c97a9c6ff.png" title="ERNIE 3.0 Online Distillation">
</p>
<a name="模型效果"></a>
### 模型效果
本项目开源 **ERNIE 3.0 _Base_** 、**ERNIE 3.0 _Medium_** 、 **ERNIE 3.0 _Mini_** 、 **ERNIE 3.0 _Micro_** 、 **ERNIE 3.0 _Nano_** 五个模型:
- [**ERNIE 3.0-_Base_**](https://bj.bcebos.com/paddlenlp/models/transformers/ernie_3.0/ernie_3.0_base_zh.pdparams) (_12-layer, 768-hidden, 12-heads_)
- [**ERNIE 3.0-_Medium_**](https://bj.bcebos.com/paddlenlp/models/transformers/ernie_3.0/ernie_3.0_medium_zh.pdparams) (_6-layer, 768-hidden, 12-heads_)
- [**ERNIE 3.0-_Mini_**](https://bj.bcebos.com/paddlenlp/models/transformers/ernie_3.0/ernie_3.0_mini_zh.pdparams) (_6-layer, 384-hidden, 12-heads_)
- [**ERNIE 3.0-_Micro_**](https://bj.bcebos.com/paddlenlp/models/transformers/ernie_3.0/ernie_3.0_micro_zh.pdparams) (_4-layer, 384-hidden, 12-heads_)
- [**ERNIE 3.0-_Nano_**](https://bj.bcebos.com/paddlenlp/models/transformers/ernie_3.0/ernie_3.0_nano_zh.pdparams) (_4-layer, 312-hidden, 12-heads_)
下面是 PaddleNLP 中轻量级中文模型的**效果-时延图**。横坐标表示在 IFLYTEK 数据集 (最大序列长度设置为 128) 上测试的延迟(latency,单位:ms),纵坐标是 CLUE 10 个任务上的平均精度(包含文本分类、文本匹配、自然语言推理、代词消歧、阅读理解等任务),其中 CMRC2018 阅读理解任务的评价指标是 Exact Match(EM),其他任务的评价指标均是 Accuracy。图中越靠**左上**的模型,精度和性能水平越高。
图中模型名下方标注了模型的参数量,测试环境见[性能测试](#性能测试)。
batch_size=32 时,CPU 下的效果-时延图(线程数 1 和 8):
<table>
<tr>
<td><a><img src="https://user-images.githubusercontent.com/26483581/175852121-2798b5c9-d122-4ac0-b4c8-da46b89b5512.png"></a></td>
<td><a><img src="https://user-images.githubusercontent.com/26483581/175852129-bbe58835-8eec-45d5-a4a9-cc2cf9a3db6a.png"></a></td>
</tr>
</table>
batch_size=1 时,CPU 下的效果-时延图(线程数 1 和 8):
<table>
<tr>
<td><a><img src="https://user-images.githubusercontent.com/26483581/175852106-658e18e7-705b-4f53-bad0-027281163ae3.png"></a></td>
<td><a><img src="https://user-images.githubusercontent.com/26483581/175852112-4b89d675-7c95-4d75-84b6-db5a6ea95e2c.png"></a></td>
</tr>
</table>
batch_size=32 和 1,预测精度为 FP16 时,GPU 下的效果-时延图:
<table>
<tr>
<td><a><img src="https://user-images.githubusercontent.com/26483581/175854679-3247f42e-8716-4a36-b5c6-9ce4661b36c7.png"></a></td>
<td><a><img src="https://user-images.githubusercontent.com/26483581/175854670-57878b34-c213-47ac-b620-aaaec082f435.png"></a></td>
</tr>
</table>
从图上可看出,ERNIE 3.0 系列轻量级模型在精度和性能上的综合表现已全面领先于 UER-py、Huawei-Noah 以及 HFL 的中文模型。且当 batch_size=1、预测精度为 FP16 时,在 GPU 上宽且浅的模型的推理性能更有优势。
在 CLUE **验证集**上评测指标如下表所示:
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td style="text-align:center;vertical-align:middle">
<span style="font-size:18px;">Arch</span>
</td>
<td style="text-align:center">
<span style="font-size:18px;">Model</span>
</td>
<td style="text-align:center">
<span style="font-size:18px;">AVG</span>
</td>
<td style="text-align:center">
<span style="font-size:18px;">AFQMC</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">TNEWS</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">IFLYTEK</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">CMNLI</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">OCNLI</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">CLUEWSC2020</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">CSL</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">CMRC2018</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">CHID</span>
</td>
<td style="text-align:center;">
<span style="font-size:18px;">C<sup>3</sup></span>
</td>
</tr>
<tr>
<td rowspan=3 align=center> 24L1024H </td>
<td style="text-align:center">
<span style="font-size:18px">ERNIE 1.0-Large-cw</span>
没有合适的资源?快使用搜索试试~ 我知道了~
基于PaddlePaddle的自然语言处理库.zip
共2000个文件
py:1179个
md:339个
sh:214个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 69 浏览量
2024-05-27
17:52:48
上传
评论
收藏 28.31MB ZIP 举报
温馨提示
深度学习 智能问答系统(QA)是信息检索系统的一种高级形式,用准确简洁的自然语言回答用户所提出的问题,是NLP领域一个备受关注并具有广泛发展前景的方向。 智能问答系统主要由问题理解、知识检索、答案生成3个部分组成,其中问题理解包括问题分类、关键词提取、知识检索包括结构化与非结构化的信息检索,答案生成包括答案提取和答案验证,核心问题就是处理好对问题的理解以及问题与答案之间的匹配程度。 智能问答机器人使用的神经网络与图像处理的神经网络有所不同,数据源不同,提取信息的网络结构也是不同的,智能问答机器人使用的是循环神经网络。其中问题语料构成输入,答案语料构成输出,形成了序列到序列的字符对应机制。 序列到序列的方法典型的应用是翻译任务,对话任务与翻译任务是相似的,均是一问一答的形式,翻译使用的是两种语言,单纯地对话使用的是同一种语言。 智能对话机器人同样也是采取了序列到序列的方法进行模型训练,其数据处理由两部分组成即包括编码网络和解码网络,其中编码网络和解码网络都是一个独立的循环神经网络,编码网络与解码网络直接通过公隐藏层和最后一个时刻的输出进行信息传递,c为编码网络最后一个时刻的输出
资源推荐
资源详情
资源评论
收起资源包目录
基于PaddlePaddle的自然语言处理库.zip (2000个子文件)
helpers.cpp 28KB
fast_index_map_helpers.cpp 26KB
ln_api.cpp 11KB
sentiment_classfication.cpp 7KB
example_docx.docx 13KB
variant.h 94KB
open_decoder.h 70KB
decoding_beamsearch.h 58KB
decoding_sampling.h 53KB
open_attention.h 50KB
gptj.h 47KB
opt.h 46KB
gpt.h 45KB
layer_norm_cuda.h 44KB
standard_encoder.h 40KB
bert_encoder_transformer.h 38KB
t5_beamsearch.h 35KB
t5_sampling.h 29KB
ln_utils.h 26KB
base.h 12KB
ln_bwd_kernels.h 12KB
masked_multihead_attention_utils.h 10KB
cuda_kernels.h 10KB
tokenizer.h 9KB
shared_mutex.h 9KB
utf8.h 7KB
normalizer.h 7KB
template.h 7KB
ln_kernel_traits.h 7KB
common.h 7KB
lattice.h 6KB
convert_jni.h 6KB
utils.h 6KB
arguments.h 5KB
encoding.h 5KB
added_vocabulary.h 5KB
ln.h 5KB
trie.h 4KB
pretokenizer.h 4KB
ln_fwd_kernels.h 4KB
parallel_utils.h 4KB
failure.h 4KB
utils.h 4KB
fast_wordpiece.h 4KB
masked_multihead_attention.h 4KB
fusion_miro_op.h 4KB
sentencepiece_normalizer.h 4KB
fusion_unified_decoding_op.h 4KB
fusion_t5_decoding_op.h 3KB
fusion_mbart_decoding_op.h 3KB
bpe.h 3KB
fusion_pegasus_decoding_op.h 3KB
allocator.h 3KB
fusion_bart_decoding_op.h 3KB
unigram.h 3KB
fusion_force_decoding_op.h 3KB
fusion_decoding_op.h 3KB
wordpiece.h 3KB
ernie_fast_tokenizer.h 3KB
cache.h 3KB
fusion_opt_op.h 3KB
fusion_gpt_op.h 2KB
fusion_decoder_op.h 2KB
fusion_encoder_op.h 2KB
unicode.h 2KB
common_structure.h 2KB
clip_fast_tokenizer.h 2KB
fusion_gptj_op.h 2KB
unique_ptr.h 2KB
helper.h 2KB
roberta.h 2KB
utils.h 2KB
strip.h 2KB
byte_level.h 2KB
bert.h 2KB
perf_jni.h 2KB
metaspace.h 2KB
cublas_handle.h 2KB
bert.h 2KB
precompiled.h 2KB
split.h 2KB
sequence.h 2KB
path.h 2KB
byte_level.h 2KB
replace.h 2KB
exception.h 1KB
string_view.h 1KB
postprocessor.h 1KB
model.h 1KB
wordpiece.h 1KB
whitespace_and_punctuation.h 1KB
bert.h 1KB
whitespace.h 1KB
pd_traits.h 1KB
utils.h 1KB
runtime_option_jni.h 1KB
pretokenizers.h 1KB
decoder.h 1001B
normalizers.h 944B
postprocessors.h 870B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
野生的狒狒
- 粉丝: 3390
- 资源: 2436
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SparkSQL进阶操作相关数据
- java制作的小游戏,作为巩固java知识之用.zip
- Java语言写的围棋小游戏 半成品A Go game written in golang(Semi-finished).zip
- 基于Java-swing的俄罗斯方块游戏:源码+答辩文档+PPT.zip
- florr map详细版
- shiahdifhiahfiqefiwhfi weifwijfiwqufiqweefijeq0jfe
- registry-2.8.3<arm/amd>二进制文件
- Kotlin接口与抽象类详解及其应用
- 51单片机加减乘除计算器系统设计(proteus8.17,keil5),复制粘贴就可以运行
- lv_0_20241114231223.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功