脸书开源视频设备Portal、Messenger个人助理M使用的自然语言处理开发框架

为了加速构建与部局自然语言处理系统,脸书开源了PyText,这是构建于开源深度学习框架PyTorch之上的函数库,不只能模糊实验和大规模部局阶段,简化工作流程更快速进行实验,同时还能访问预先构建的模型基础架构,以及文本处理和词汇管理工具,帮助大规模部局。

脸书使用自然语言处理技术,向用户提供相关的语言辅助功能、标记违反政策贴文以及进行翻译。由于对话式人工智能技术发展快速,脸书以PyText来快速推进这些应用提高服务品质,PyText现在还被用于脸书新的图片通话设备Portal和Messenger中的M建议功能。

通过使用PyText,Portal中支持Hey Portal的组合与嵌套调用查找的语音命令,该功能允许用户以语音命令,进行诸如打电话等动作,脸书举例,用户可以使用“打电话给我爸爸”这样的语句,而这需要系统了解调用者与被调用者的关系,PyText的工作之一便是能进行语义分析,并快速的将该技术应用到产品。

脸书利用PyText快速迭代的方式,渐进改进Portal的自然语言处理模型,包括加入组合算法、条件随机域以及整合模型等技术。这样的方法让其核心领域的模型精确度提高5%到10%,并且也因为PyText支持分布式训练,让Portal模型的训练时间缩短了3到5倍。

PyText快速迭代不只能以渐进的方式改进模型,还可以提高自然语言处理模型的效率和可扩展性,无论是在Portal或是Messenger等其他应用,脸书都需要能即时的执行模型并且做出回应,并且能够大规模高性能执行的自然语言处理系统,PyText现还为脸书数十亿人存在多语言的社交平台,提供高端即时的自然语言处理功能。

PyText能利用脸书的其他自然语言系统为基础,补充其功能上的不足,像是工程师可以使用fastText函数库训练单词嵌入,并在PyText中使用。另外,PyText改进了脸书现有文本理解引擎DeepText的缺点,并得利于GPU还有分​​散式训练技术,PyText加速了整体训练过程。由于模型中的条件执行和自定义数据结构,导致PyText无法与DeepText在部分语义解析和多任务学习模型等工作合作,脸书正计划让PyText作为主要的自然语言平台,以增加系统未来的发展性。

PyText构建于PyTorch之上,并且和ONNX与Caffe2互通,工程师可以将PyTorch模型转换成ONNX,并以Caffe2输出,作为大规模生产部局之用。 PyText提供灵活模块化的工作流程,模型组件具有可配置的系统层与可扩展的接口,可作为端到端平台,供开发人员开箱即用,创建完整自然语言处理工作管线。

其模块化的结构,允许工程师将各个组件集成到现有的系统中,每个组件的角色和与其他模块的交互作用,皆取决于特定的任务。这种模块化的设计方法增强了PyText的多功能性,几乎可以在研究到生产的过程任一阶段使用,无论是要从头构建整个自然语言处理系统,抑或是对现有系统进行修改都可以。

PyText框架支持分布式训练,以及可以同时训练多个模型的多任务学习功能。由于PyText模型构建在PyTorch之上,具高可移植性,可以在不同平台间转换,而且通过预构建的模型,例如文本分类,单词标记、语义分析和语言建模,PyText可以简单地在新的数据上使用预建模型。

为了优化产品阶段的推理,PyText使用PyTorch 1.0的功能,输出经过优化的Caffe2模型。原生PyTorch模型需要Python Runtime,但由于Python全局解释器锁(Global Interpreter Lock,GIL)多线程的限制,导致模型无法有效的扩展,但PyText用户可以选择输出为Caffe2模型,就能利用高性能多线程C++后端,处理高吞吐流量。

经过内部部局后,脸书提到,PyText确实能够快速迭代工程师的对自然语言建模想法,并将其框展至生产其中,PyText现为脸书提供每日超过10亿次的推理。未来还会提供多语言建模和其他建模工具,让模型更容易调试,并为分布式训练进行优化,脸书也提到,目前要在移动设备上部局复杂的自然语言处理模型仍然很具挑战性,但他们仍朝向在设备上构建端到端工作流程的方向努力。