滴滴开源了一个终端侧AI集成运行环境(IRE)——AoE(AIonEdge)。基于“稳定、易用、安全”的设计原则,AoE可以帮助开发者轻松地将不同框架的深度学习算法部署到终端,实现高效执行。滴滴打造这样一个运行时框架的原因有两个:一是随着人工智能技术的快速发展,近两年涌现出很多跑在终端上的推理框架,给开发者带来了更多的选择。同时,也增加了将AI部署到终端的成本;其次,通过推理框架直接接入AI的过程比较繁琐,涉及动态库接入、资源加载、预处理、后处理、资源释放、模型升级,以及如何保证稳定性等问题。据介绍,目前运行在终端上的主流推理框架有8种:从本质上讲,不管是什么推理框架,都必须包括五个处理过程:初始化、预处理、执行推理、后处理和资源释放。将这些推理过程抽象出来,是AoE支持各种推理框架的基础。目前,AoE支持两种推理框架,NCNN和TensorFlowLite。具体来说,AoE集成运行环境最基础的部分就是抽象推理运算。通过依赖倒置的设计,业务只依赖于AoE的上层抽象,无需关心具体推理框架的接入实现。这种设计最大的好处是开发者可以随时添加新的推理框架,无需修改框架实现,实现业务开发和AoESDK开发完全解耦。AoESDK中的这个抽象是:InterpreterComponent:用于处理模型初始化、执行推理和释放资源。Convertor:用于处理模型输入的预处理和模型输出的后处理。AoE的另一个特点是它有稳定性保证。众所周知,Android平台开发中的一个重要问题就是模型适配,尤其是涉及到大量Native操作的场景。模型适配问题尤为重要。应用一旦在某个机型上崩溃,造成的体验损失是巨大的。的。统计数据显示,由于性能问题,移动应用每天流失5%的活跃用户。在这些流失的用户中,60%的人选择保持沉默,不再使用该App,30%的用户转而使用竞品,其余用户将直接卸载该App。因此,对于一个拥有庞大用户群的移动应用来说,保证App主进程随时可用是最基本也是最重要的事情。结合AI推理过程,在Native过程中难免会出现大量的操作,不仅是推理操作,一些预处理和资源回收操作也比较容易出现兼容性问题。为此,AoE运行环境SDK为Android平台开发了独立进程机制,让Native操作运行在独立进程中,同时保证推理(偶尔崩溃不会影响后续推理操作)和主进程的稳定性稳定性(主进程不会随时崩溃)。具体实现过程主要有注册独立进程、异常重绑定进程、跨进程通信优化三个部分。目前AoESDK已经应用于滴滴银行卡OCR。如果想更清楚的了解AoE与推理框架和宿主App的关系,可以通过下面的业务集成图来理解:平台正在紧锣密鼓的开发中,预计9月底发布。
