黑科技:AoE-如何管理好模型?

作者: 普惠出行产品技术 2019-12-05 12:00:18

前言

越来越多的业务会用到AI相关的技术,大多数的AI模型是部署在云端使用的,毕竟服务端计算更快,管理也更容易。随着终端设备性能提升,在终端使用 AI 模型有了更大的价值,可以更好满足业务对响应实时性、数据隐私性的需求。滴滴出行的银行卡识别功能也打算部署在客户端,但是遇到的问题也不少:

1.模型升级困难,模型在终端的存在一般都是已应用软件为载体,用户可以选择是否对应用软件进行更新,导致模型版本会产生分化。

2.硬件适配问题,不同的终端设备因为厂商深度定制因素,会出现一些兼容问题

3.不同模型运行框架不同,对于客户端工程师不够友好。

针对这些问题滴滴的终端智能团队推出了AoE作为解决方案,设计之初就将多模型管理支持可能升级、多框架支持、模型加密等功能定为基础设施。

AoE是怎么做好模型管理的

我们针对遇到的问题,主要做了3部分工作:

  1. 尝试了多机型覆盖测试做好模型的验证
  2. 利用运行环境配制化来实现加载模型
  3. 通过动态更新来升级模型

下面针对这三项分别进行介绍。

运行环境配置化

AoE SDK将推理框架总结了5个过程,它们分别是初始化、前处理、执行推理、后处理、释放资源。对 AoE 集成运行环境来说,最基本的便是抽象推理操作,通过 依赖倒置 的设计,使得业务只依赖AoE的上层抽象,而不用关心具体推理框架的接入实现。这种设计带来的最大的好处是开发者随时可以添加新的推理框架,而不用修改框架实现,做到了业务开发和 AoE SDK 开发完全解耦。

用户只需要简单的描述json文件即可完成对运行环境的配置,简化了用户的使用过程,更为简洁高效。

简单的配置如下:

  1.  
  2. "version""1.0.0", // 版本号  
  3. "tag""tag_mnist", // 区分业务场景  
  4. "runtime""tensorflow", // runtime类型  
  5. "source""installed", // 安装源  
  6. "modelDir""mnist", // 所在文件夹  
  7. "modelName""mnist_cnn_keras", // 模型文件名  
  8. "updateURL""https://www.didiglobal.com" // 升级配置链接  

机型覆盖测试

针对硬件差异的问题,我们在做模型验证期间尝试了多机型的覆盖测试,将模型在不同机型上的表现都记录下来反馈给模型生产团队,帮助模型不断的升级修复。

截取了部分测试时产生的耗时对比数据大致如下:

虽然模型不相同,使用指令可能不同,但是大致也可以了解到机器的性能,具体数值仅供参考。在这个过程中,沉淀下来了benchmark工具来帮助验证多机型的覆盖测试,将来这个工具也会是开源的一部分来帮助大家验证模型的可用性,以及建立有效的机型比较。

动态更新

AoE的模型管理模块将模型按分发方式分为两种:

  1. 本地模型,意为应用软件自带的模型
  2. 远程模型,则是通过策略配置,从服务器下载匹配模型到本地的模型

本地模型与远程模型最大的区别就是本地模型无法更改,只能跟随应用软件一起更新,而远程模型则是通过和本地模型作比较后更新的较新模型,模型与模型之间通过版本做比较。本地模型与远程模型二者可以共存,也可以单独存在,在最新版的滴滴出行中,为了减少包的大小甚至没有本地模型,所有的模型都是来自远端下载。

之所以将模型分成两部分,是为了保证模型是可用的且可靠的,为什么这么说?一般本地模型都是经过长时间测试后才作为稳定版本跟随APP带到了线上,既可以作为最新版本,又可以作为后来的稳定版本:即使发现后来下载升级的远程模型效果不理想也可以通过灰度测试停止远程使用远程模型的使用,保证模型的高可用性。

远程模型的存在使业务模型拥有了动态更新的能力,方便了产品的迭代,不再依赖客户端的发布周期。在动态开关的写协助下,甚至可以做到精确指定模型版本的加载。

整体模型管理的结构如下图:

模型加载怎么使用?

模型管理器是AoE的一个基础组件,以iOS为例,组件实现在Loader目录下。默认支持的模型配置文件为json格式,运行环境配置化部分的代码就描述了mnist demo的配置。

模型和模型配置文件名的格式配置以及远程版本存放地址,都可以通过继承AoEModelConfig类来做修改,具体的使用方式可以参照squeezenet的实例

在已经开源的版本中,AoE还为大家提供了单功能多模型的支持,拿银行卡识别来举例,整个过程分两步,一是找到卡片以及卡片上的数字区域,二是根据数字区域的图片识别出卡号,所以整个过程需要两个模型。开源项目使用的模型配置的tag字段主要用来定义模型所属功能,结合dir字段,就可以定位到具体的模型。

写在最后

通过远程加载以及多维度的灰度测试配置是帮助模型稳定安全运行的保证,虽然模型远程加载功能还没有在开源版本上线,但是已经安排在了日程中,预计在9月底就会上线。如果您对这个项目感兴趣,如果您在终端AI运行环境方面有想法,如果您在使用时有疑问,诚挚邀请您加入我们。

项目链接:https://github.com/didi/AoE 

人工智能 AI
上一篇:未来推动企业创新的10大优秀技术 下一篇:盘点 | 2019年炙手可热的10家人工智能和机器学习初创公司
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

面部识别的利与弊:是福还是祸?

虽然现代技术使面部识别更加精确和安全,但与面部识别隐私问题和监控有关的担忧也在增加。因此,让我们在这篇文章中探讨一下这该技术的利与弊。

Naveen Joshi ·  2021-06-01 16:36:22
人工智能和5G如何结合以实现物联网收入最大化

网络系统通过信令和使用软件以及分析来检测和分类设备非常棘手,并且对有限且日益紧张的网络资源提出了巨大的需求。然而,解决这些问题有一个主要解决方案:采用人工智能、自动化和5G技术。

Jordi Castellvi ·  2021-06-01 13:49:15
MIT团队最新研究,仅靠LiDAR和2D地图实现端到端自动驾驶

最近, MIT 计算机科学与人工智能实验室(CSAIL)团队成功展示了一种基于机器学习的自动驾驶系统,该端到端框架仅使用 LiDAR获取的原始 3D 点云数据和类似于手机上的低分辨率 GPS 地图就能进行自主导航,并且大大提升了鲁棒性。

文龙 ·  2021-06-01 12:47:51
自然语言处理(NLP)的历史及其发展方向

自然语言处理的历史是一个充满曲折的故事。它从徒劳的研究开始,经过多年卓有成效的工作,最后结束于一个我们仍在试图找出该领域极限的时代。今天,让我们来一起探索这一AI科学分支的发展。

佚名 ·  2021-06-01 12:46:26
是福还是祸?人脸识别技术的利与弊

面部识别并不是一项全新的技术,但人工智能和机器学习不断使面部识别变得更好。苹果通过引入具有 3D 扫描功能的面部生物识别系统和 iPhone 的 Face ID,提高了面部识别的标准。

Naveen Joshi ·  2021-06-01 11:11:01
人工智能能否使机器具有流体智力?

麻省理工学院和奥地利研究人员为灵活的人工智能创造了“液体”机器学习。

千家网 ·  2021-06-01 10:38:55
大脑模拟NLP,高德纳奖得主:神经元集合演算用于句子解析

一个简单的大脑模型为人工智能研究提供了新的方向。世界顶尖计算机科学理论学家、哥德尔奖和高德纳奖获得者、哥伦比亚大学计算机科学教授 Christos Papadimitriou 关于「大脑中单词表征」的演讲。

Ben Dickson ·  2021-06-01 09:39:24
美城市Baltimore可能颁布最严格的面部识别禁令

据介绍,拟议的法令将禁止私人或商业组织,甚至执法机构在城市使用面部识别技术。

千家网 ·  2021-06-01 09:34:07
Copyright©2005-2021 51CTO.COM 版权所有 未经许可 请勿转载