自然语言模型算法太杂乱?国产统一 AI 开源框架来了!

2024-02-02 12:08

本文主要是介绍自然语言模型算法太杂乱?国产统一 AI 开源框架来了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019年8月,基于深度学习的语音和自然语言理解模型训练平台DELTA正式开源。一经开源,DELTA登上GitHub 热榜,获得 1k+的Star数,受到深度学习框架Keras的作者François Chollet的关注。DELTA可助力AI开发者创建、部署自然语言处理和语音模型,构建高效的解决方案,让NLP应用更好落地。

在滴滴里,NLP和语音技术有重要的应用:通过智能客服系统来辅助人工客服,通过语音识别和自然语言理解技术来研发驾驶员语音助手,让日本、澳洲等地的滴滴司机通过语音“免接触”接单。这些业务的背后,均使用到DELTA作为后台模型。

DELTA的原理是什么?为何要做这样一款AI开源项目?对此,本期「AI技术生态论」栏目专访滴滴AI Labs研究员、DELTA项目负责人,韩堃,来一探究竟。

韩堃

模型算法很多?为何不统一起来?

韩堃在机器学习领域已有10余年研究经验:自2008年起,他来到美国俄亥俄州立大学攻读博士,研究方向是基于机器学习的语音处理。2014年毕业后加入Facebook,从事语音识别、自然语言理解、推荐系统方面的工作。

自2018年起韩堃加入了滴滴AI Labs,目前带领一支十多人的团队做自然语言理解和语音处理方面的研究和产品开发工作。

谈及DELTA的研究初衷,是在韩堃加入滴滴之际,发现团队里用到各种深度学习和自然语言理解的模型算法很多。

特别在代码层面,有从开源项目拿来的,也有内部开发的,其中很多东西在功能上是可以复用的。

在这种情况下,韩堃和团队开始思考:如果能把各种模型算法纳入统一的框架下,将会加速算法开发迭代,也能促进团队更好的合作。

于是技术团队对自然语言理解的代码进行整体重构,把各种模型算法用一套系统统一起来,使代码易用易读易开发。在开发过程中,他们发现这套系统对于滴滴外部也是很有价值的,于是开始考虑把代码开源,并朝这一方面努力。

底层框架升级,掉入兼容大坑

在DELTA快速迭代的过程中,团队为了想使用到底层框架新版本的新功能,也曾掉入兼容的坑里:

一开始DELTA是基于TensorFlow 1.12系统来构建的,在技术迭代的过程中发现TensorFlow升级到1.14,引入很多新功能。团队为了使用新功能,迅速将DELTA的核心模块升级到1.14。

结果导致参与研发DELTA的其他开发者的代码不兼容,出现了一些Bug。大伙立即停下手上的工作来抓紧时间修复DELTA,影响了整体的研发节奏。

经此一役,韩堃表示:在项目合作的过程中,涉及到升级版本是很常见的事。但是我们开发者需谨慎推进,毕竟涉及到很多其他人的工作和稳定性。

吸取经验总结,在TensorFlow升级到2.0时,DELTA以兼容的方式同时支持2.0和1.14的代码后,再逐步优化代码来升级到2.0。

 

实现技术架构详解

由于自然语言处理模型和语音模型是众多AI系统与用户交互的接口,DELTA旨在进一步降低开发者创建、部署自然语言处理系统和语音模型的难度。

DELTA的实现细节:

DELTA主要基于TensorFlow构建,能同时支持NLP和语音任务及数值型特征的训练。整合了包括文本分类、命名实体识别、自然语言推理、问答、序列到序列文本生成、语音识别、说话人验证、语音情感识别等重要算法模型,形成一致的代码组织架构,整体包装统一接口。

当用户准备好模型训练数据,并指定好配置Configuration,模型训练pipeline可以根据配置进行数据处理,并选择相应的任务和模型,进行模型训练。

在训练结束之后,自动生成模型文件保存。该模型文件形成统一接口,可以直接上线使用,快速产品化,能让从研究到生产变得更容易。

值得注意的是,除可支持多种模型的训练,DELTA还支持灵活配置,开发者可基于DELTA搭建成多达几十种的复杂的模型。

此外,DELTA在多种常用任务上提供了稳定高效的基准,用户可以简单快速地复现论文中的模型的结果,同时可在此基础上扩展新的模型。在模型构建完成后,用户可以使用DELTA的部署流程工具,迅速完成模型上线。从论文到产品部署无缝衔接。

 

三大优势

与其他自然语言处理和语音处理的开源项目相比,像Google的Tensor2tensor和Facebook的PyText等项目较侧重研究,主要用于快速的模型搭建和实验。而团队花很多时间针对模型的产品化做开发,力求DELTA在工业级应用的支持上,能帮助快速上线和产品化。

总体来说,DELTA具有三大特点:

1、便捷使用

支持常用的语音和文本处理的任务模型,用户开箱即用,直接训练常用模型;

针对工业界常用的多模态场景,支持语音、文本、外部特征的多模态联合学习;优化并行数据处理前段和高速的模型实现,快速训练海量数据;

可定制的配置文件,用户可以深度配置模型结构和参数。

2、简洁上线

训练和上线无缝衔接。各种特征提取和预处理模块均以TensorFlow Op形式实现,整体统一封装成TF Graph,打通数据-模型-上线流程;

所有模型对接统一输入输出,模型对外部透明,对任何新模型部署,无需改动上线代码。

3、快捷开发

内部模型和任务组件高度模块化,比如CNN、RNN、attention等,开发者可以方便调用;

基本模块均经过完整测试,性能高效稳定,适合重用。

滴滴夸、车载语音交互系统都在用DELTA!

在滴滴内部,DELTA应用在很多语音和自然语言处理的项目上,例如前阵子网友热议对司机发送“彩虹屁”的滴滴夸,其背后便是DELTA支持的自然语言理解模块:

另外,在滴滴与外部合作伙伴研发的车载语音交互系统中,整套对话交互系统是基于DELTA研发的。

谈及未来,韩堃表示在技术上,准备将DELTA的使用门槛进一步降低,让使用者更容易上手。开发Auto ML的功能,把参数调优进一步简化。在生态上,一是继续推广DELTA,二是考虑加入顶级开源项目的孵化计划,以更高的标准去推动项目。

关于开源的建议

滴滴开源是滴滴出行高级副总裁章文嵩推动起来,目前滴滴已对外开源了39个项目,涵盖AI、小程序、智慧交通、中间件、前端框架、研发工具等,Star数已超过5.6W。

技术团队一开始是奔着内部项目来开发DELTA,在内部开源后,得到一些积极反馈后,于是往外部开源,并在2019年的ACL会议上,配合滴滴的活动正式开源。

谈及开源,在CSDN 《2019-2020 中国开发者调查报告》中,77%的开发者每周在开源上投入时间不超过5小时,其中1小时以内的占31%。对此,据韩堃观察,国内互联网行业工作压力较大,在工作之余去做一个开源项目确实不容易。

另外,在国内的IT环境里,一些开发者对于技术本身长期深入追求不是特别大,更多的是看中短期的收益。但韩堃认为,好的开源项目往往是经过前期相当长的开发和积累之后再发力的,这可能会使得国内开源开发者的动力不足。

韩堃表示,开源本身是有乐趣的,热爱开源的开发者会继续下去的。以其相识的国外开源开发者为例,他们非常积极地参加各种Meetup和讲座,并与非开源圈子内的人做交流,让更多的人认识开源、并参与进来,这些都是非常有帮助的。

那么如何改善国内的开源生态?

韩堃表示,一方面需要业界领头人主动认识到开源的重要性,从顶层设计上去推动开源活动,另一方面也需要开发者们多和外界交流,让更多的人认识到开源不仅仅是开发者的自娱自乐,而是有巨大价值的。

传送门:https://github.com/didi/delta
 

这篇关于自然语言模型算法太杂乱?国产统一 AI 开源框架来了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670660

相关文章

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

三频BE12000国补到手2549元! ROG 魔盒Pro WIFI7电竞AI路由器上架

《三频BE12000国补到手2549元!ROG魔盒ProWIFI7电竞AI路由器上架》近日,华硕带来了ROG魔盒ProWIFI7电竞AI路由器(ROGSTRIXGR7Pro),目前新... 华硕推出了ROG 魔盒Pro WIFI7电竞AI路由器(ROG STRIX GR7 Phttp://www.cppcn

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结