作者:TurboNLP,腾讯 TEG 后台工程师
创新互联建站是专业的仁化网站建设公司,仁化接单;提供做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行仁化网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
导语
NLP 任务(序列标注、分类、句子关系判断、生成式)训练时,通常使用机器学习框架 Pytorch 或 Tensorflow,在其之上定义模型以及自定义模型的数据预处理,这种方式很难做到模型沉淀、复用和共享,而对于模型上线同样也面临:上线难、延迟高、成本高等问题,TEG-AI 平台部-搜索业务中心从 2019 年底开始,前期经过大量调研,在 AllenNLP 基础上自研了推理及训练一体化工具 TurboNLP, 涵盖了训练框架 TurboNLP-exp 和推理框架 TuboNLP-inference,TurboNLP-exp 训练框架具备可配置、简单、多框架、多任务、可复用等特点,在其之上能够快速、高效的进行 NLP 实验.
TurboNLP-inference 推理框架底层支持高效的模型推理库 BertInference,集成了常用的 NLP 模型, 具备无缝兼容 TurboNLP-exp、推理性能高(在 BERT-base 文档分类业务模型上实测,FP6 精度在 batch_size=64、seq_len=64 的情况下达到了 0.275ms/query,INT8 精度在 batch_size=64、seq_len=64 的情况下达到了 0.126ms/query 性能)等特点,NLP 训练和推理一体化工具极大的简化了训练到推理的流程,降低了任务训练、模型上线等人力成本,本文将主要介绍 NLP 训练和推理一体化工具。
背景
为了解决以上存在的痛点,在此背景下,我们打通了 NLP 训练端到推理端、自研了训练框架TurboNLP-exp及推理框架TuboNLP-inference,以下是框架的整体架构图:
简介
TurboNLP-exp 训练框架
TurboNLP-exp 训练框架是基于 AllenNLP 研发,为了满足算法研究者和推理的业务需求,TurboNLP-exp 不断优化,具备了业界框架不具备的特性,下表是 TurboNLP-exp 于业界其他框架的对比:
框架 | 难度 | 模块化 | 可配置 | Pytorch | Tensorflow | 多任务训练 | 多模型格式导出 | 数据预处理 | 推理 |
---|---|---|---|---|---|---|---|---|---|
PyText | 难 | T | T | T | F | F | F | Python | Caffe2 执行引擎 |
AllenNLP | 简单 | T | T | T | F | F | F | Python | 简单的 Python 服务 |
TurboNLP-exp | 简单 | T | T | T | T | T | T | Python、C++ | 高效的 TurboNLP-inference |
以下会详细介绍我们对 TurboNLP-exp 上所做的优化。
模块化及可配置
TurboNLP-exp 的可配置程度高,源于其合理的模块设计,通过模块化封装,TurboNLP-exp 支持随意组合模型、扩展子模块等,对于刚接触的研究者 TurboNLP-exp 提供了界面化配置,通过可视化界面生成数据预处理和模型配置,大大降低了上手难度。
数据预处理模块化及可配置
数据预处理粗略可分为dataset_reader、token_indexer、tokenizer、vocabulary四个模块。
模型模块化及可配置
模型的模块化设计可以分为三大块:model、trainer、exporter。
多平台支持
TurboNLP-exp 对底层机器学习平台进行了抽象,实现统一的 framework 接口对底层的 pytorch 和 tensorflow 调用(如下图所示),framework 根据配置来选择 pytorch 或 tensorflow 来实现接口。目前以 pytorch 的格式为标准。
多任务训练
多任务学习通过模拟人类认知过程的多任务特性,将不同类型的任务如实体识别、紧密度等集成在一个模型中,在共用的预训练语言模型上,训练各自的 tagger 层,在训练中,通过各个任务领域知识和目标的相互补充,共同提升任务模型效果,在上线时,使用同一个底层模型,从而达到节省存储及计算资源;目前,多任务的需求日渐增大,TurboNLP-exp 支持多任务多种组合方式及训练调度方式(如下图所示)
TurboNLP-exp 的多任务模型具备以下几个特点:
多模型格式导出
TurboNLP-exp 能够导出格式:caffe、onnx、pt,支持直接导出 TurboNLP-inference 推理框架支持的格式,直接推理端加载,无需再经过复杂的模型转换。
数据预处理
TurboNLP-exp 的数据预处理能够同时支持 Python、C++,Python 数据预处理主要服务于训练端,C++数据预处理主要服务于推理端,也能服务于训练端(如下图所示)
在训练端,当数据预处理还处在修改、调试时,使用 Python 数据预处理能够快速实验,当 Python 数据预处理固定后,通过配置切换为 C++数据预处理来验证数据预处理结果,从而保证训练端和推理端数据一致性。
在推理端,使用与训练端相同的配置,C++数据预处理输出将作为模型输入,C++数据预处理——TurboNLP-data采用多线程、预处理队列来保证数据预处理的低延迟,在 BERT-base 五分类模型上实测,在 batch_size=64、seq_len=64 的情况下达到了0.05ms/query的性能。
TurboNLP-inference 推理框架
TurboNLP-inference 推理框架能够无缝兼容TurboNLP-exp、具备低延迟、可配置等特点,TurboNLP-inference 底层支持五种推理库:BertInference(BERT 推理加速库)、libtorch、tensorflow、TurboTransformers(WXG 开源的 BERT 推理加速库)、BertInference-cpu(BERT 在 CPU 上推理加速库),其中,BertInference是我们基于TensorRT研发的一款高效能 BERT 推理库,BertInference-cpu是和 intel 合作开发的一款在 CPU 上进行 BERT 推理加速库。
以下是推理框架 TurboNLP-inference 和训练框架 TurboNLP-exp 一体化架构图:
TurboNLP-inference 具备以下特性:
业务应用
NLP 一体化工具(TurboNLP-exp 训练框架和 TurboNLP-inference 推理框架)极大的简化了模型从训练到上线的流程(如下图所示),依据业务模型的实际上线流程,手工训练和部署需要 14.5/人天,而使用 NLP 一体化工具仅需 4/人天,整体节省了**72.4%**人力成本。
TurboNLP-inference 目前已成功支持了 TEG-AI 平台部-搜索业务中心的 5 个业务:
TurboNLP-inference 在业务上的表现,离不开对训练框架的无缝支持以及底层高效推理库的支持。
最新进展
TurboNLP-inference 的底层高效推理库之一——BertInference 目前已具备支持 INT8 推理,优化了 Attention 计算,我们使用 BERT-base 文本分类业务模型和真实的线上数据进行了性能测试,效果如下:
在 batch_size=64,、seq_len=64 的情况下,性能达到了0.126ms/query,INT8 相比于 FP16 提升了**54.2%**左右。
TurboNLP-inference 支持 INT8 校准,能够使用已有的模型直接校准,通过配置调整校准过程,校准过程简单,校准后可以直接使用 INT8 精度进行模型推理。
总结和展望
NLP 一体化工具(TurboNLP-exp 训练框架和 TurboNLP-inference 推理框架)目前已经在 TEG AI 工作组内部演进,在预训练模型方面也有一些合作应用,同时我们也正在积极与 AI 工作组的算力和太极机器学习平台团队积极合作,把训练端能力在平台上更好的开放出来。接下来训练及推理框架也会在 TencentNLP 的公司统一协同 oteam 里面去演进,也期待在公司内更多团队的合作。
TurboNLP-inference 的 BERT 推理加速在 INT8 精度模型效果上仍有进一步的提升空间,目前着力于 QAT 以及知识蒸馏、QAT 目前在五分类 BERT-base 模型上实测,Accuracy 仅降低了0.8%,加入知识蒸馏有望达到 Accuracy 不掉。
本文题目:NLP训练及推理一体化工具(TurboNLPExp)
URL地址:http://www.shufengxianlan.com/qtweb/news49/137649.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联