阿里妹介绍:本文介绍了支付宝App中的深度学习引擎-xNN。 xNN通过模型和计算框架的优化,解决了深度学习在移动端实现的一系列问题。 xNN的模型压缩工具()在业务模型上实现了近50倍的压缩比,使得在套餐预算极其有限的移动应用中大规模部署深度学习算法成为可能。 xNN的计算性能在算法和指令层面都进行了深度优化,大大降低了移动深度学习的模型门槛。
深度学习——云还是移动?
近年来,深度学习(DL)在图像识别、语音识别、自然语言处理等多个领域取得了突破性进展。 DL通常给人的印象是计算复杂、模型庞大——从Siri语音助手到各种聊天机器人,再到支付宝的“扫五福”,移动数据采集+云端处理似乎已经成为常识。然而,对于很多应用来说,这种模式实际上只是一种无奈的选择。
去年春节“扫五福”活动中,为了识别手写“福”字,支付宝多媒体团队动用了近千台服务器部署图像识别模型。然而,如此规模的一簇,也抵挡不住全国人民聚集五福的热情。为了防止云算力过载,活动中后期不得不启动降级计划——用计算量较少但精度也较低的传统视觉算法替代DL模型。虽然降级并不妨碍大家继续热情地领取福卡,但无疑会对用户体验造成一定的影响。例如,一些难读的汉字被误判为“福”字。
另一方面,深度学习在云端意味着数据必须上传。即使不考虑计算压力,从网络延迟、流量、隐私保护等角度对用户体验也存在着各种限制。因此,对于很多应用来说,将深度学习模型移至移动终端进行部署可以看作是刚需。
两大挑战
近年来,随着手机处理器性能的提升和模型轻量化技术的发展,移动DL变得越来越可行并受到广泛关注。苹果和谷歌分别在各自的操作系统上发布了DL框架Core ML和Lite,这无疑将极大地推动移动DL的发展。然而,特别是像支付宝这样的国民应用程序,仍然存在一些严峻的挑战,无法通过直接应用制造商解决方案来解决。
1、模式广泛:支付宝App拥有数亿受众,在其中实现的业务必须为尽可能多的用户、尽可能多的模式提供高质量的体验。对于支付宝来说,参考Core ML并只向少数高端机型开放其功能是不合适的。因此,无论是运行速度、内存占用、还是兼容性等性能指标,支付宝的移动DL都必须做到极致,才能最大限度地降低使用门槛。
2、严格的包大小要求:支付宝App集成了很多业务功能,安装包资源非常紧张。将新模型集成到安装包中往往意味着其他功能需要离线。即使通过动态交付部署,深度学习模型的大小也会强烈影响用户体验。随着移动终端智能化程度的不断提高,越来越多的深度学习应用将直接运行在终端上。这在目前单个模型的大小很容易达到几十、几百兆的情况下几乎是不可想象的。同时,移动DL引擎本身的SDK也需要尽可能的轻薄。
五个进球
支付宝xNN是针对全民App环境定制开发的移动DL解决方案。该项目制定了以下技术目标。
1、轻模型:通过高效的模型压缩算法,在保证算法精度的同时,可以大大减小模型尺寸。
2.小引擎:深度缩减移动端SDK。
3、快速:结合指令层和算法层的优化,全面提升DL计算效率。
4.通用性:为了保证最大的模型覆盖率,采用最通用的CPU而不是更强大的GPU作为关键优化平台。它不仅支持经典的CNN和DNN网络,还支持RNN、LSTM等网络形式。

5、易用性:工具链保持了高度的商业友好性——让算法工程师能够更好地专注于算法本身,快速完成从云模型到移动端的过渡,而无需成为模型压缩和移动开发方面的专家。端到端模型的转换和部署。
主要特点一览
xNN为DL模型提供了完整的生命周期解决方案,从压缩到部署再到运行时统计监控。 xNN环境由两部分组成:开发后端和部署前端。
开发后端以工具链为核心,支持多种训练框架。企业可以通过对自己的深度学习模型进行压缩和优化,获得体积大幅减小、运行速度大幅加快的模型版本。压缩后的模型可以根据使用场景通过内置App安装包或按需分发的方式部署到移动端。
在部署前端,xNN的计算框架提供了高效的前向预测能力。在计算的基础上,xNN的应用层还提供了模型分发、数据统计、错误报告等一站式能力。 xNN还提供了直接与H5应用对接的能力——通过DL模型和H5的动态分发,可以实现完全动态化,从而完成算法和逻辑的同步更新,而无需在客户端发布版本。
上图给出了xNN的主要特征。在模型压缩的基础上,xNN还支持通过快速处理稀疏网络来提高性能。 xNN支持多种网络结构类型,包括经典的CNN/DNN、SSD目标检测和LSTM。 xNN的部署框架原生兼容,企业无需转换即可直接在移动端运行现有模型,快速评估效果。压缩的私有格式模型更小、速度更快。在 和 平台上训练的模型也可以在原始环境中进行压缩,然后转换为xNN支持的格式并部署到移动终端。与核心ML不同,xNN理论上支持和iOS上的所有模型。
模型压缩
xNN-的模型压缩过程如下图(a)所示,包括神经元剪枝( )、突触剪枝( )、量化( )、网络结构变换( )和自适应编码( ),共5步。前三个步骤理论上是有损的,但是使用网络权重和压缩超参数可以将精度的下降保持在可控甚至可以忽略不计的水平。后两步完全不影响网络的输出精度。整个过程不仅会减小模型的尺寸,而且通过网络稀疏化和结构优化,显着提高前向预测的速度。
在该领域经典解决方案的基础上, 和 的能力得到进一步扩展。其中,“不重要”的神经元及其对应的权重参数可以被陆续裁剪掉。通过 和 的结合,实现了模型精度和压缩比之间更好的平衡。它还具有在网络宏观层面进行优化的能力。该脚本扫描整个网络并诊断可以优化的点,包括在条件允许的情况下自动组合和等效替换层()。此外,通过自适应地使用编码,有效提高了不同稀疏度模型的压缩率。
如下图所示,对于业务分类模型,使用工具链可以实现45.5倍的压缩。在相同程度的精度损失下,压缩率超过经典方案60%。
xNN计算性能优化
xNN的性能优化并不局限于底层,而是通过与工具链的配合,在算法和指令层面同时进行,为更深入的优化创造了空间。
如下图所示,在算法层,剪枝不仅压缩了模型大小,还促进了网络的稀疏性——即生成大量的零值权重。相应地,xNN在指令层实现了稀疏计算模块。在卷积和全连接计算中,这些零值权重会被自动忽略,从而减少计算开销并提高速度。如前所述,该阶段将对网络进行宏观层面的优化,包括将相邻层组合并替换为等效结果,以减少计算冗余并提高访问内存的效率。 。要充分发挥其性能,也离不开命令层实现的支持。

在指令层,xNN通过智能分配每个核心的负载来提高多线程环境下的性能。 xNN在设计上不仅注重计算资源,还充分考虑了访问内存的成本,通过精细调度数据读写来提高命中率。最重要的是,所有核心计算模块都是由具有芯片行业背景的指令集架构专家用汇编代码一一手写的。
基于Be fast的业务分类模型。
业务实施
支付宝App已集成xNN。在支付宝的“AR扫码”入口中,90%以上的手机和iOS机型都在使用xNN完成商品前置分类,并向用户推荐“AR扫码识别鲜花”等便捷功能。 xNN本身的鲁棒性也经受住了“七夕送你一朵花”等强度高、模型覆盖面广的大规模运营活动的考验。该模型的最新版本在保证精度的同时已缩小至以下尺寸。在平台上,全功能xNN的SDK包体积仅稍大一些。如果根据具体应用进行定制,可以轻松减少到100 KB以上。
xNN上线后,在蚂蚁和阿里巴巴内部引起了强烈反响。大量基于xNN的移动DL应用正在紧锣密鼓地开发中,并将在未来几个月内逐步提供给用户。
渴求人才
最后,让我们进入本文的重点吧!
如果你对最前沿的移动深度学习技术充满热情,想要一起开发牛逼的深度学习引擎和牛逼的深度学习模型,我们已经为你准备好了可能是业界最好的应用场景——数亿用户。 App,最广阔的发展空间——蚂蚁金服集团,最值得信赖的队友——软硬件各领域的资深工程专家、博士、博士后、教授组成的技术团队!
投递简历:我们热切期待您的到来!
您可能还喜欢
点击下图阅读