2019年8月,基于深度学习的语音和自然语言理解模型训练平台DELTA正式开源。一经开源,DELTA登上GitHub 热榜,获得 1k+的Star数,受到深度学习框架Keras的作者François Chollet的关注。DELTA可助力AI开发者创建、部署自然语言处理和语音模型,构建高效的解决方案,让NLP应用更好落地。
在滴滴里,NLP和语音技术有重要的应用:通过智能客服系统来辅助人工客服,通过语音识别和自然语言理解技术来研发驾驶员语音助手,让日本、澳洲等地的滴滴司机通过语音“免接触”接单。这些业务的背后,均使用到DELTA作为后台模型。
DELTA的原理是什么?为何要做这样一款AI开源项目?
模型算法很多?为何不统一起来?
韩堃在机器学习领域已有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的部署流程工具,迅速完成模型上线。从论文到产品部署无缝衔接。
总体来说,DELTA具有三大特点:
1、便捷使用
支持常用的语音和文本处理的任务模型,用户开箱即用,直接训练常用模型;
针对工业界常用的多模态场景,支持语音、文本、外部特征的多模态联合学习;优化并行数据处理前段和高速的模型实现,快速训练海量数据;
可定制的配置文件,用户可以深度配置模型结构和参数。
2、简洁上线
训练和上线无缝衔接。各种特征提取和预处理模块均以TensorFlow Op形式实现,整体统一封装成TF Graph,打通数据-模型-上线流程;
所有模型对接统一输入输出,模型对外部透明,对任何新模型部署,无需改动上线代码。
3、快捷开发
内部模型和任务组件高度模块化,比如CNN、RNN、attention等,开发者可以方便调用;
基本模块均经过完整测试,性能高效稳定,适合重用。