查看原文
其他

华为诺亚Bolt助力HMS机器翻译:从TinyBert到纯A55小核实时ASR

十七树 NeuralTalk 2022-11-28

华为HMS是什么?

HMS,全称是Huawei Mobile Services,即华为终端云服务。HMS汇聚华为终端芯-端-云能力,包含一整套开放的HMS Apps和 HMS Core、HMS Connect,以及相应的开发、测试的IDE工具。HMS Core包含华为帐号、应用内支付、华为推送服务、华为云盘服务、华为广告服务、消息服务、快应用等服务。像我们平时用的华为云空间、华为智能助手、华为应用市场、华为钱包、华为视频、华为音乐、生活服务等APP,都是HMS Apps的核心应用。

关注Bolt的朋友们都知道,我们在NLP深度学习方面是走在前面的,比如之前发布过的TinyBERT超实时推理。在深度学习领域,NLP的热度在近些年逐渐追赶CV,然而基础设施并没有跟上,特别是在端侧。比如有一些tf训出来的模型,甚至转换不到tflite格式。Bolt致力于填补这一块空白,成为NLP部署的不二之选。

这一篇,我们来介绍一下在机器翻译上的一个工作。

机器翻译的历史可以追溯到1946年计算机诞生后的第三年,比CV要早多了。语言障碍确实是巴别塔倒下之后,人与人协作的一大问题。今天的开发者如果致力于打造全球化的应用,同样面临着星罗棋布的各种语言。为了更好地支撑应用开发,特别是出海的应用,HMS在ML Kit中推出了翻译服务

图1 HUAWEI HMS MLKIT的ASR模型处理流程(HMSCore-Guides)

规划之初,HMS就打算提供完全免费的端侧翻译服务,并且要达到ARM终端全机型覆盖:支持安卓系统各个品牌乃至iOS,支持ARMv7到v8.2的各种芯片。这就对端侧推理方案提出了非常严格的要求,需要在能力有强有弱的各款机器上均达到可以接受的时延,还要能够支持transformer等比较新的结构——这年头做翻译不用transformer估计就离出局不远了。

深度学习加速库Bolt当时还开发不到一年,就非常荣幸地承接了这个任务,机器翻译也牵引着我们逐步完善了各个模块的设计。在此特别感谢HMS以及诺亚语音语义的兄弟们,一起弄出了语言包小于友商但BLEU值仍更高的模型方案。Bolt最近的优化更是在不改变模型容量、效果的前提下,让时延也实现突破,借此文记录一下这个时刻

我们先来看一下Bolt面对的是一个怎样的算法方案。

图2 HUAWEI HMS MLKIT的文本翻译能力

机器翻译的算法

萌芽之初,机器翻译是基于规则的,但是当语种数目上去之后,效果就难以维持了。经过漫长的等待,终于在2013年,业界首次把RNN神经网络应用在翻译上,而2017年Transformer的横空出世,更是刷新了所有的榜单。不过正如谷歌在一篇博客中写的,transformer虽好,可不要贪杯哦。Transformer作为encoder是极好的,但是作为decoder有一个缺点每翻译出一个词,上文长度就会加1,会出现越翻译越慢的情况诺亚在HMS中落地的是这样一个方案

  • Transformer-LSTM混合结构:encoder使用transformer,而decoder使用每一步计算量恒定的LSTM,结合知识蒸馏和权重共享

  • 动态小词表:根据输入选取目标词表,避免在完整词表上计算matmul

  • 数据增强:Domain Adaption、前向和反向数据增强的半监督训练方式

  • 受限解码技术:当现网遇到翻译错误时,可快速纠正

这块我就不继续献丑了,大家可以到评论区呼唤一下诺亚语音语义出个专篇,顺带把语种检测上的突破揭秘一下。

Bolt的能力演进

得益于以上这个模型方案的牵引,Bolt一步一步实现了这些功能:

  • 循环计算机制:不同的输入翻译出来的句子长度都有不同,decoder部分是循环调用的——算是NLP模型的常规操作

  • 输入大小可变:模型输入有长有短,当然要动态调整,减少冗余计算(临时变大也可以)

  • 权重共享:像ALBert这种12层共用一个权重的模型,当然不能存12份

  • 量化计算:int8极致加速,比如transformer的FFN结构改为FC-ReLU-FC,第一个FC直接输出int8,节省反量化-再量化时间

  • 量化存储:单个模型负责双向翻译,FP32存储是140MB左右,int8存储直接压到37MB

  • 内存复用:关掉的话在低端机器上会被安卓杀掉进程 不断开发,不断经受业务考验,才有了今天的Bolt。可以看出,Bolt在NLP深度学习上已经有了比较好的基础——不只是ARM CPU,在x86和MALI上也有了基本的支持。我们还在尽可能把整个语音翻译的流程做到极致:ASR-机器翻译-TTS

今天,Bolt已再进一步,支持以下的模型方案:

  • ASR:RNNT、Conv-Transformer-T

  • 机器翻译:Transformer + (Transformer/LSTM)

  • TTS:(Tacotron2/FastSpeech2) + (Melgan/mbmelgan/featherwave)

在这里插播一下我们在ASR上的最新进展,可能也算是为下一篇专栏做个铺垫。我们最近实现了纯A55小核上的实时ASR,方案是发表在InterSpeech上的Conv-Transformer-T,BEAM设为2,一轮编码三轮解码。值得一提的是int8计算起到了非常关键的作用:我们一帧语音对应80ms,单是一个encoder net用FP16推理就要83ms,这是没办法实时的;不过int8可以把这个时间缩短到55ms,完美。

新的一年,Bolt会更加开放,欢迎所有小伙伴一起来使用,帮助我们一起打磨。目前我们机器翻译的里程碑:

图3 Bolt在翻译质量/语言包/翻译实践上与友商的对比

  • 在翻译质量上,目前19个语种有17个持平或优于友商

  • 所有的语言包都小于友商

  • 翻译时间自然有Bolt的保障

完全免费的端侧翻译服务,欢迎大家来集成并体验Bolt的速度。大家可以访问http://developer.huawei.com,也可以参考HMS发布的《华为机器学习服务翻译功能:随时随地皆可翻译》


  • Bolt Github:https://github.com/huawei-noah/bolt;

  • Bolt QQ群833345709;

  • 欢迎各位有兴趣的童鞋加入Bolt(后台回复:华为诺亚,诺亚)。

点击【阅读原文】,看往期文章

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存