提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件
11月5日,在『WAVE Summit+』2019 深度学习开发者秋季峰会上,百度对外发布基于 ERNIE 的语义理解开发套件,旨在为企业级开发者提供更领先、高效、易用的 ERNIE 应用服务,全面释放 ERNIE 的工业化价值,其中包含 ERNIE 轻量级解决方案,提速 1000倍!

今年 7 月,百度发布持续学习语义理解框架 ERNIE 2.0,在共计 16 个中英文任务上超越BERT、XLNET,取得了 SOTA 的效果。

ERNIE2.0 发布以来,ERNIE 产业化应用进程不断加速,易用性不断提升,配套产品也不断丰富和完善。目前,ERNIE2.0 在百度内部及行业内已取得了广泛应用,在多种场景下都取得了明显效果提升。这些场景的成功运用为 ERNIE 产业化应用积累了丰富的经验。

预置了包含 ERNIE 通用模型、ERNIE 任务模型、ERNIE 领域模型以及本次发布的 ERNIE Tiny 轻量级模型等系列预训练模型。在此基础上,构建了包含工具和平台的飞桨语义理解开发套件。全面覆盖了训练、调优、部署等开发流程,具备轻量方案、能力全面、极速预测、部署灵活、平台赋能等五大特色。接下来,我们逐一揭秘。

特色1:轻量级解决方案,预测速度提升 1000 倍

ERNIE 2.0 拥有强大的语义理解能力,而这些能力需要强大的算力才能充分发挥,这为实际应用带来了非常大的挑战。为此,百度发布轻量级预训练模型 ERNIE Tiny 以及一键式数据蒸馏工具 ERNIE Slim,预测速度提升达到 1000 倍。

ERNIE Tiny 主要通过模型结构压缩和模型蒸馏的方法,将 ERNIE 2.0 Base 模型进行压缩,其特点和优势主要包括以下四个方面:

• 浅:模型采用 3 层 Transformer 结构,线性提速 4 倍;
• 宽:模型加宽隐层参数,从 ERNIE 2.0 的 768 扩展到 1024,宽度的增加带来效果的提升 。依托飞桨的通用矩阵运算优化,『变宽』并不会带来速度线性的下降;
• 短:为缩短输入文本的序列长度,降低计算复杂度,模型首次采用中文 Subword 粒度输入,长度平均缩短 40%;
• 萃:ERNIE Tiny 在训练中扮演学生角色,利用模型蒸馏的方式在 Transformer 层和Prediction 层学习教师模型 ERNIE 2.0 模型对应层的分布和输出。

通过以上四个方面的压缩,ERNIE Tiny 模型的效果相对于 ERNIE 2.0 Base 平均只下降了2.37%,但相对于『SOTA Before BERT』提升了 8.35%,而速度提升了 4.3 倍。

ERNIE Tiny 的预测速度在一些性能要求苛刻的场景中是不够的,这些场景中延迟响应往往要求小于 1ms,为此,套件提供了一键式数据蒸馏 ERNIE Slim 工具。该工具以数据为桥梁,将 ERNIE 的知识迁移至小模型,在效果损失很小的情况下实现预测速度上千倍的提升。

ERNIE Slim 原理同传统深度学习数据蒸馏的方法略有不同。首先需要使用 ERNIE 2.0 模型对输入标注数据对进行 Fine-tune 得到 Teacher Model,然后使用 Teacher Model 对无标注数据进行预测,该步骤中我们可采用添加噪声词、同词性词语替换、N-sampling 三种策略进行数据增强,最后通过 BoW、CNN 等计算复杂度小的模型进行训练。

下表展示了 ERNIE Slim 的效果。从表格中可以看出,相对于 ERNIE 2.0 Base 模型,数据蒸馏后的小模型效果损失不大,预测速度提升千倍以上;而相对于简单模型,速度接近的情况下,效果会得到显著提升。

特色2:一键式高性能全类微调工具

ERNIE Fine-tune 微调工具旨在为给开发者提供一套简单好用的 Fine-tune 框架,目前覆盖 NLP 四大常用任务:单句分类、句对匹配、命名实体识别、阅读理解。工具集支持多机多卡 Fine-tune,同时使用 FP16 Tensor Core 技术在 Tesla V 系列 GPU上获得 60% 的训练速度提升。

Fine-tune 微调工具包含了一个基于飞桨的训练组织框架 Propeller,可以帮助开发者进行模型管理、参数热启动、自动多卡并行等工作,从而让开发者更专注于网络结构以及输入数据流水线的构建。

特色3:极速预测 API

ERNIE Fast-inference API 旨在解决产品应用的延迟敏感场景,为企业开发者提供极速预测的 C++ API,便于开发者集成。该工具也充分借助了最新版飞桨的高速预测优势,飞桨1.6 通过 OP 聚合算法,有效加速了 ERNIE 的预测。

在延迟敏感场景下,对比竞品在 GPU(P4) 设备 21% 的延迟降低,ERNIE Fast-inference API 在 CPU(Intel Xeon Gold 6148 CPU)设备上的延迟降低 60%。

特色4:向量服务器,支持跨平台灵活部署

为进一步降低开发者使用成本,套件提供预测服务方案——ERNIE Service,来方便获取ERNIE 模型的向量分布以及预测打分。

ERNIE Service 是基于 Python 构建的多 GPU 预测服务,Client 端发送的请求会自动分发至 GPU 上执行 ERNIE Fast-inference API 来获取 ERNIE 向量及打分。目前 ERNIE Service 支持不同平台、不同设备、不同语言的灵活调用,具备预测性能高等特点,相比竞品 BERT-as-service 在 QPS 上提升 13%。

特色5:平台赋能

此外,套件还包含了 ERNIE 的平台化使用方案,开发者可通过 EasyDL 专业版一站式完成 NLP 任务的数据标注、处理、ERNIE 微调、优化、部署等全流程的功能,为开发者提供丰富的算法、算力服务,进一步降低 ERNIE 的产业化应用门槛。平台预置了常用的NLP 文本分类、文本匹配等经典网络,能够快速满足多层次开发者的需求。

综合来看,ERNIE的语义理解开发套件依托百度在预训练模型等自然语言处理技术和飞桨平台领先优势,为人工智能产业化大生产贡献力量,赋能各行各业。

相关链接:
• ERNIE工业级开源工具:
https://github.com/PaddlePaddle/ERNIE
• ERNIE平台化服务:
https://ai.baidu.com/easydl/pro

划重点!
11月23日,艾尼(ERNIE)的巡回沙龙将在上海加场,干货满满的现场,行业A级的导师,还有一群志同道合的小伙伴,还在等什么?感兴趣的开发者们赶快点击下方链接报名参加吧!
报名地址:https://iwenjuan.baidu.com/?code=vc78lp
扫码关注百度NLP官方公众号,获取百度NLP技术的第一手资讯!
加入ERNIE官方技术交流群(760439550),百度工程师实时为您答疑解惑!
立即前往GitHub( github.com/PaddlePaddle/ERNIE )为ERNIE点亮Star,马上学习和使用起来吧!

提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件的更多相关文章

  1. 树莓派4B安装 百度飞桨paddlelite 做视频检测 (一、环境安装)

    前言: 当前准备重新在树莓派4B8G 上面搭载训练模型进行识别检测,训练采用了百度飞桨的PaddleX再也不用为训练部署环境各种报错发愁了,推荐大家使用. 关于在树莓派4B上面paddlelite的文 ...

  2. 百度飞桨数据处理 API 数据格式 HWC CHW 和 PIL 图像处理之间的关系

    使用百度飞桨 API 例如:Resize Normalize,处理数据的时候. Resize:如果输入的图像是 PIL 读取的图像这个数据格式是 HWC ,Resize 就需要 HWC 格式的数据. ...

  3. Ubuntu 百度飞桨和 CUDA 的安装

    Ubuntu 百度飞桨 和 CUDA 的安装 1.简介 本文主要是 Ubuntu 百度飞桨 和 CUDA 的安装 系统:Ubuntu 20.04 百度飞桨:2.2 为例 2.百度飞桨安装 访问百度飞桨 ...

  4. 【百度飞桨】手写数字识别模型部署Paddle Inference

    从完成一个简单的『手写数字识别任务』开始,快速了解飞桨框架 API 的使用方法. 模型开发 『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入 ...

  5. 斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    以作备份,来源http://jiasuhui.com/archives/178954 本文由“新智元”(微信ID:AI_era)编译,来源:dawn.cs.stanford.edu,编译:刘小芹 斯坦 ...

  6. python之提速千倍爆破一句话

    看了一下冰河大佬写的文章特别有感:https://bbs.ichunqiu.com/thread-16952-1-1.html 简单描述一下: 利用传统的单数据提交模式. 比如下面这个一句话木马: & ...

  7. 我是如何使计算提速>150倍的

    我是如何使计算提速>150倍的 我的原始文档:https://www.yuque.com/lart/blog/lwgt38 书接上文<我是如何使计算时间提速25.6倍>. 上篇文章提 ...

  8. 使用生成器把Kafka写入速度提高1000倍

    title: 使用生成器把Kafka写入速度提高1000倍 toc: true comment: true date: 2018-04-13 21:35:09 tags: ['Python', '经验 ...

  9. 如何让 Xcode 在读写上提速100倍?

    如何让 Xcode 在读写上提速100倍? 上个月参加了一场西雅图当地的线下 iOS 开发者聚会.Jeff Szuhay 作为一个有20+年开发经验的资深程序员,跟我讲了一套提高 iOS 开发效率的方 ...

随机推荐

  1. 17、vue-cli3 js项目中引入ts混用(typeScript)

    说明: vue3.0搭建的项目,不过没有引入ts,后来需要用到一个插件是用ts写的,所以vue要用到ts... 一.安装typescript及loader npm install typescript ...

  2. vue路由跳转取消上个页面的请求和去掉重复请求

    vue路由跳转取消上个页面的请求和去掉重复请求 axios 的二次封装(拦截重复请求.异常统一处理) axios里面拦截重复请求

  3. 【JS】逻辑处理

    1.计算会员进度 const a = res.data.directCount(当前充值点券) / nextLevelData.map(item => item.direct_number(下一 ...

  4. mysql You can't specify target table for update in FROM clause解决方法

    mysql You can't specify target table for update in FROM clause解决方法出现这个错误的原因是不能在同一个sql语句中,先select同一个表 ...

  5. activeMq学习应用

    一.下载 ActiveMQ 5.15.0下载地址 二.安装 解压apache-activemq-5.15.0-bin.zip D:\apache-activemq-5.15.7-bin\apache- ...

  6. SpringMVC获取参数的几种方式

    前言: 年末了,忙了一年了却发现系统的整理的东西很少,一些基础的东西都未做整理,这里就将它随便整理一下,增加一些印象,当然在网上看到一些好的资料也会整理下来以备后用.今天整理一下springMVC获取 ...

  7. 使用RestTemplate进行服务调用的几种方式

    首先我们在名为MSG的服务中定义一个简单的方法 @RestController public class ServerController { @GetMapping("/msg" ...

  8. css拓展

    自定义居中 .second-listleft{/*固定位置*/ position: relative; float: left; width: 25%; height: 100%; backgroun ...

  9. python3 内置方法 字符串转换为字典

    内置方法:eval()将字符串转换为字典代码: str = '''{'backend':'www.oldboy.org', 'record':{ 'server':'122.111.2.23', 'w ...

  10. Challenge & Growth —— 从这里开始

    做有挑战的事情,就从这里开始. 忘记这本书现在在哪儿了,以前还以为能祖祖辈辈留传,现在只能借助 Nowcoder 了.Now coder,Forever thinker. 想以自以为最优美的 code ...