《跨端智能在蚂蚁的应用-青壁》演讲视频&文字版

简介: 《跨端智能在蚂蚁的应用-青壁》演讲视频&文字版
编者按:本文是蚂蚁集团前端工程师青壁在 SEE Conf 2022 的演讲内容,包括演讲视频及文字内容,欢迎享用。

大家好,我是青壁,来自蚂蚁集团体验技术部-数据智能部门,2018年毕业加入蚂蚁,一直专注在前端和能结合的方向上,今天为大家带来的分享是《跨端智能在蚂蚁的应用》。

在分享开始前,先给大家看一个有趣的小应用:

这是香奈儿官网上的一个虚拟试妆的应用,应用可以实时检测摄像头内人的嘴巴和眼睛的位置,并且根据你选择的口红和眼影等的款式,进行动态上妆。整个应用都是跑在浏览器内,包括检测服务的代码等。这个应用就是一个典型的端上的端上智能应用。

什么是智能应⽤?

到智能应用,一个智能应用是怎么构成的呢?可以看到,一个智能应用是由应用+智能服务构成的,比如上面那个香奈儿的例子,眼睛和嘴巴的检测服务就是一个智能服务。如果一个智能服务部署在云端上面,那么就是“云智能”;如果部署在端上,就是“端智能”。那么端智能相对于云智能有哪些优点呢?我理解有以下几点:

  • 实时性高。相对于云智能来说,端上实时产生的数据立马就能被消费掉,例如摄像头产生的图像,可以直接在端上做检测,而不用将图像数据发送到云端。
  • 保护隐私。因为数据全部在端上消费,实时消费实时销毁,用户的隐私数据可以做到不出端,从而能够有效保护用户隐私。
  • 节省云端计算资源(省成本)。算力都是分布在各个端上,从而能节省一笔非常可观的计算成本。


跨端智能指什么?

好了,上面为大家介绍了什么是端智能以及端智能的优点。我们今天的主题是“跨端智能”,顾名思义,跨端智能就是指:

跨端智能可以不依赖具体的native客户端能力,一套代码可以直接部署到任何js环境内。例如一个具有智能能力的小程序,可以同时部署到支付宝、手淘、微信等。


实际业务案例分享

下面为大家介绍两个我们落地的实际业务案例:第一个是“宠物相机”项目:

宠物的鼻纹和人的指纹一样,具有唯一性,所以我们可以利用宠物鼻纹对每一只宠物进行建档。档案可以用于宠物保险的购买、宠物防丢、宠物证发放等等。所以宠物鼻纹的采集就是一项关键的工作。我们之前是让用户手动上传宠物的照片进行建档,但是建档的成功率非常低。

从上图可以看到,用户上传的照片存在各种各样的问题,一旦照片不合格,就会导致建档失败,用户体验不好的同时也降低了业务的建档成功率,导致业务发展受阻。我们是怎么解决这个问题的呢?

我们在宠物相机的小程序内部署了一套跨端智能服务,在用户打开摄像头后,我们实时地分析相机帧,当服务检测到复合要求的相机帧后会对这一帧进行抓拍,这样就得到了一张符合要求的宠物照片。最终我们达到了一个80%+的成功率的提升。目前,宠物相机的小程序已经在支付宝、手淘、闲鱼以及微信上进行了投放。

再给大家分享一个案例:碎屏险相机。

在蚂蚁推出碎屏险业务的时候,是业内唯一一家能够做旧手机碎屏险的公司,因为旧手机投保和新手机投保不太一样。很多人会在手机已经碎屏后再去投保,而公司又很难去判断用户投保时候是否已经碎屏了,导致碎屏险的赔付率很高。蚂蚁通过AI的技术去解决了这一问题。和宠物相机一样,如果让用户手动上传屏幕照片,会有很多问题:上面这些不合要求的照片都会影响云端对手机屏幕是否碎屏的判断。

我们开发了碎屏智能相机,实时引导用户对镜拍摄屏幕,抓拍出清晰、大小合适的屏幕照片,然后交由云端做投保判断,保证了碎屏险业务的成功落地。


业务落地遇到的技术挑战

当然,业务落地的过程也不是一帆风顺的,技术上的难点成了业务落地的一个关键的阻力。

前端上的高性能计算是一个非常头疼的问题,主要在两个方面:受限于前端环境、中低端安卓手机的低性能硬件。上面分享的两个案例对实时计算要求非常高,因为需要实时抓怕,如果计算速度过慢,一是用户体验非常差,二是可能计算出一帧后,用户的手又抖动了,导致抓拍失败。所以业务方对技术提出了很高的要求。


我们是如何解决这些技术挑战的?

所以,我们是怎么解决这个问题的呢?在介绍具体的方案之前,先和大家一起回顾下我们之前说的“智能应用”:

我们把智能服务再展开下:

一个“智能服务”由AI模型和计算模型的引擎构成,这个模型可以理解为一个文件,文件里面存储了一堆数据,我们利用引擎对这些数据做各种计算,引擎可以调用端上的各种硬件能力,例如GPU、CPU等等。那么引擎的性能就决定了智能服务的速度及应用的实时性。

我们初版采用了google的TF.js作为计算引擎,但是当时的手机机型覆盖率只有30%,也就是说大部分手机都没法支持模型的高性能计算。所以,我们的目标就是优化引擎的性能。前端上面最常用的高性能计算手段就是利用WebGL做高性能计算,这样能够利用到GPU的高性能计算能力,我们的引擎就是利用WebGL做模型计算的。目标就简单了:优化引擎的WebGL计算性能。好了,我们正式开始。一个AI模型的计算本质其实是矩阵的各种操作,例如加减乘除。我们一起复习下矩阵的乘法操作:

原理十分简单,就是对左边矩阵的一行乘以右边一列,例如 1*7 + 2*9 + 3*11 = 58。是不是十分简单呢?好了,大家看到这里,相信已经掌握了看似高大上的人工智能技术了。

从上面动画可以看到,我么在做矩阵乘法的时候,GPU每次缓存16个值,实际上我们只有4个值能够命中缓存,有75%的缓存都被浪费了,这样就导致内存读取出现了瓶颈。我们通过一定的编码手段,将矩阵在GPU内的存储方式改为块状的,这样每次读取的时候,能够最大化地利用GPU的缓存,减少cache miss的次数,这样就提升了整体的计算性能。当然,优化内存I/O只是我们其中的一种手段,我们还做了很多其他的优化,例如模型图的优化、GPU的向量化、混合精度计算等等。通过一系列的优化之后,我们将引擎的性能提升了100%+,机型覆盖率也从30%提升到了93%。保证了业务的成功落地。

未来展望

现在我们正在自研我们蚂蚁的跨端引擎,在引擎的体积和性能上都做了很多的工作,未来我们会把跨端智能引擎及相关体系对社区做开源,大家敬请期待吧!

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
网络安全 Docker 容器
进入正在运行的Docker容器的4种方式
进入正在运行的Docker容器的4种方式
13351 1
|
域名解析 网络协议 算法
国内免费SSL证书申请首选阿里云(申请入口及流程)
国内免费SSL证书申请首选阿里云(申请入口及流程)阿里云SSL免费证书在哪申请?一个阿里云账号一年可以申请20张免费SSL证书,很多同学找不到免费SSL的入口,阿小云来详细说下阿里云SSL证书免费申请入口链接以及免费SSL证书申请流程
721 0
|
存储 C语言
数据结构中的线性表链式存储介绍及其基本操作
链式存储是线性表的一种重要存储方式,它通过节点和指针的结构,实现了灵活的动态存储管理。本文介绍了单向链表的基本操作,并提供了相应的C语言代码示例。理解和掌握链表的操作对学习和应用数据结构具有重要意义。希望这篇博客能帮助你更好地理解线性表的链式存储。
493 2
|
开发框架 安全 .NET
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-1):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-1):渗透测试行业术语扫盲)作者——LJS
|
机器学习/深度学习 算法 数据挖掘
NumPy有哪些应用场景
【10月更文挑战第22天】NumPy有哪些应用场景
833 2
|
存储 JavaScript 前端开发
使用 Openkoda 构建具有 ClickUp API 集成的时间跟踪应用程序
使用 Openkoda 构建具有 ClickUp API 集成的时间跟踪应用程序
226 0
|
大数据 数据处理 计算机视觉
使用LabVIEW进行大数据数组操作的优化方法
使用LabVIEW进行大数据数组操作的优化方法
507 3
|
Java API
java流式实现chatGPT会话功能
java流式实现chatGPT会话功能
799 1
|
安全 数据处理 数据安全/隐私保护
基站(BTS)是无线通信的关键
【5月更文挑战第25天】基站(BTS)是无线通信的关键,包括宏基站、微基站、皮基站和飞基站等多种类型,覆盖不同区域。它们接收和处理移动设备信号,与核心网络交互确保通信稳定。基站提供通信覆盖,保障质量,支持数据传输,推动技术发展,并在应急情况下发挥关键作用。基站建设涉及选址、安装和线缆敷设,需定期维护和升级。尽管基站电磁辐射引发关注,但科学研究显示其辐射水平在安全范围内,且通信企业持续采取措施降低影响。了解基站有助于我们更好地理解和利用通信服务。
743 2