当前位置:网站首页>基于OpenVINOTM开发套件“无缝”部署PaddleNLP模型
基于OpenVINOTM开发套件“无缝”部署PaddleNLP模型
2022-06-25 22:18:00 【英特尔边缘计算社区】
任务背景
- 情感分析 ( Sentiment Analysis )
情感分析旨在对带有情感色彩的主观性文本进行分析、处理、归纳和推理,其广泛应用于消费决策、舆情分析、个性化推荐等领域,具有很高的商业价值。例如:食行生鲜自动生成菜品评论标签辅助用户购买,并指导运营采购部门调整选品和促销策略;房天下向购房者和开发商直观展示楼盘的用户口碑情况,并对好评楼盘置顶推荐;国美搭建服务智能化评分系统,客服运营成本减少40%,负面反馈处理率100%。
- 自然语言处理(NLP)技术
自然语言处理(英语:Natural Language Process,简称NLP)是计算机科学、信息工程以及人工智能的子领域,专注于人机语言交互,探讨如何处理和运用自然语言。最近几年,随着深度学习以及相关技术的发展,NLP领域的研究取得一个又一个突破,研究者设计各种模型和方法,来解决NLP的各类问题,其中比较常见包括LSTM, BERT, GRU, Transformer, GPT等算法模型。
方案简介
本方案采用PaddleNLP工具套件进行模型训练,并基于OpenVINOTM开发套件实现在Intel平台上的高效能部署。本文将主要分享如何在OpenVINOTM开发套件中“无缝”部署PaddlePaddle BERT模型,并对输出结果做验证。
- PaddleNLP
PaddleNLP是一款简单易用且功能强大的自然语言处理开发库。聚合业界优质预训练模型并提供开箱即用的开发体验,覆盖NLP多场景的模型库搭配产业实践范例可满足开发者灵活定制的需求。
- OpenVINO TM开发套件
OpenVINOTM开发套件是Intel平台原生的深度学习推理框架,自2018年推出以来,Intel已经帮助数十万开发者大幅提升了AI推理性能,并将其应用从边缘计算扩展到企业和客户端。英特尔于2022年巴塞罗那世界移动通信大会前夕,推出了英特尔发行版OpenVINOTM开发套件的全新版本。其中的新功能主要根据开发者过去三年半的反馈而开发,包括更多的深度学习模型选择、更多的设备可移植性选择以及更高的推理性能和更少的代码更改。为了更好地对Paddle模型进行支持,新版OpenVINOTM开发套件分别做了一下升级:
- 直接支持Paddle格式模型
目前OpenVINO TM开发套件 2022.1发行版中已完成对PaddlePaddle模型的直接支持,OpenVINOTM开发套件的Model Optimizer工具已经可以直接完成对Paddle模型的离线转化,同时runtime api接口也可以直接读取加载Paddle模型到指定的硬件设备,省去了离线转换的过程,大大提升了Paddle开发者在Intel平台上部署的效率。经过性能和准确性验证,在OpenVINOTM开发套件 2022.1发行版中,会有 13个模型涵盖5大应用场景的Paddle模型将被直接支持,其中不乏像PPYolo和PPOCR这样非常受开发者欢迎的网络。

图:OpenVINOTM开发套件的MO和IE可以直接支持Paddle模型输入
- 全面引入动态输入支持
为了适配更广泛的模型种类,OpenVINOTM 2022.1版本的CPU Plugin已经支持了动态input shape,让开发者以更便捷的方式部署类似NLP或者OCR这样的网络,OpenVINOTM开发套件用户可以在不需要对模型做reshape的前提下,任意送入不同shape的图片或者向量作为输入数据,OpenVINOTM开发套件会自动在runtime过程中对模型结构与内存空间进行动态调整,进一步优化dynamic shape的推理性能.

图:在NLP中的Dynamic Input Shape
详细介绍可以参考:https://docs.openvino.ai/latest/openvino_docs_OV_UG_DynamicShapes.html
BERT原理简介
- BERT结构介绍
BERT (Bidirectional Encoder Representations from Transformers)以Transformer 编码器为网络基本组件,使用掩码语言模型(Masked Language Model)和邻接句子预测(Next Sentence Prediction)两个任务在大规模无标注文本语料上进行预训练(pre-train),得到融合了双向内容的通用语义表示模型。以预训练产生的通用语义表示模型为基础,结合任务适配的简单输出层,微调(fine-tune)后即可应用到下游的NLP任务,效果通常也较直接在下游的任务上训练的模型更优。此前BERT即在GLUE评测任务上取得了SOTA的结果。

不难发现,其模型结构是Transformer的Encoder层,只需要将特定任务的输入,输出插入到Bert中,利用Transformer强大的注意力机制就可以模拟很多下游任务。(句子对关系判断,单文本主题分类,问答任务(QA),单句贴标签(命名实体识别)),BERT的训练过程可以分成预训练和微调两部分组成。
- 预训练任务(Pre-training)
BERT是一个多任务模型,它的任务是由两个自监督任务组成,即MLM和NSP。
所谓MLM是指在训练的时候随即从输入预料上mask掉一些单词,然后通过的上下文预测该单词,该任务非常像我们在中学时期经常做的完形填空。正如传统的语言模型算法和RNN匹配那样,MLM的这个性质和Transformer的结构是非常匹配的。
Next Sentence Prediction(NSP)的任务是判断句子B是否是句子A的下文。如果是的话输出’IsNext‘,否则输出’NotNext‘。训练数据的生成方式是从平行语料中随机抽取的连续两句话,其中50%保留抽取的两句话,它们符合IsNext关系,另外50%的第二句话是随机从预料中提取的,它们的关系是NotNext的。
在海量单预料上训练完BERT之后,便可以将其应用到NLP的各个任务中了。以下展示了BERT在11个不同任务中的模型,它们只需要在BERT的基础上再添加一个输出层便可以完成对特定任务的微调。这些任务类似于我们做过的文科试卷,其中有选择题,简答题等等。微调的任务包括:
- 基于句子对的分类任务
- 基于单个句子的分类任务
- 问答任务
- 命名实体识别
边栏推荐
- Reading notes on how to connect the network - hubs, routers and routers (III)
- 10.2.3、Kylin_ The dimension is required for kylin
- 性能领跑云原生数据库市场!英特尔携腾讯共建云上技术生态
- ValueError: color kwarg must have one color per data set. 9 data sets and 1 colors were provided
- Ffmpeg version switching
- Implement const in Es5
- ORA-01153 :激活了不兼容的介质恢复
- SQL中只要用到聚合函数就一定要用到group by 吗?
- Deploy Ogg on the same machine and test
- Read CSV file data in tensorflow
猜你喜欢

删库跑路、“投毒”、改协议,开源有哪几大红线千万不能踩?

文献调研(二):基于短期能源预测的建筑节能性能定量评估

Recommended system design

ASA如何配置端口映射及PAT

idea设置mapper映射文件的模板

JS to input the start time and end time, output the number of seasons, and print the corresponding month and year

About Simple Data Visualization

EasyConnect连接后显示未分配虚拟地址

【ROS进阶篇】第一讲 常用API介绍

Mysql5.7.31自定义安装详细说明
随机推荐
快手实时数仓保障体系研发实践
迅为RK3568开发板使用RKNN-Toolkit-lite2运行测试程序
yolov5 提速多GPU训练显存低的问题
解决线程并发安全问题
ASA如何配置端口映射及PAT
Deploy Ogg on the same machine and test
POSTMAN测试出现SSL无响应
Setting up a cluster environment under Linux (2) -- installing MySQL under Linux
Common problems encountered when creating and publishing packages using NPM
Record some CF questions
About Simple Data Visualization
Network protocol: detailed explanation of redis protocol
SMT贴片加工pcba立碑现象的原因和解决方法
anchor free dection简介
Topic36——53. Maximum subarray and
About the solution to prompt modulenotfounderror: no module named'pymongo 'when running the scratch project
SPI锡膏检查机的作用及原理
Ffmpeg version switching
Redux workflow explanation + small examples
ffmpeg 版本切换