Faas在哈啰AI平台的落地实践

智码鎏金引
• 阅读 756

为什么哈啰AI平台需要Faas

Al平台当前的痛点

Faas在哈啰AI平台的落地实践

一是运维复杂问题,AI平台有多种不同语言的模型推理服务, 如python、C++(tf-serving)、Java等,各自管理上百个不同类型的模型;架构也很复杂,存在大型单体应用、多container应用、小型GPU应用等多种服务组织方式;同时,手动运维有余,自动化工具不足。

二是稳定性问题,成百上千模型集中式部署,存在明显热点问题,在应对一些突发流量的时候,自动伸缩速度也存在问题。同时,模型cpu、gpu资源竞争问题也困扰了我们。

三是IDC成本问题,存在资源利用率低的问题,有很大的提升空间。

Al平台对新架构的诉求

Al平台分为在线服务域(决策、特征)和模型训练域(模型、训练),模型平台是模型训练域的一个子域。

我们希望Al平台在应对突发流量时,可以快速响应,保持稳定的服务;对于低频的模型,可以实现缩容到0;对于快速迭代的模型,可以方便进行AB灰度。同时我们希望成本可控、易于运维、易于部署。

云原生演进与Faas选型

从K8s到Faas

Faas在哈啰AI平台的落地实践

Faas能给我们带来极致弹性,可缩容至0;运维成本更低,带来更低的开发复杂度和更好的运维效率。这与AI平台的特点也是分不开的。模型是无状态的,生命周期短,冷启动时间短,业务需求变动快,开发周期短,流量零散而难预测,突发流量多。

Faas技术选型

Faas在哈啰AI平台的落地实践

经过调研,最终花落Knative。Knative支持多元触发,如Eventing/http/grpc触发;同时带来弹性扩缩容的能力,可以缩容到0;在AI平台能带来版本管理和流量分配的能力。

Faas在模型平台的落地实践

模型平台Faas化

模型平台Faas化具有很大的价值。一是是平台能力升级,支持大模型、GPU模型及更多模型类型;二是稳定性收益,通过热点模型隔离,避免多模型混布,来更好的应对突发流量;三是人效收益,GPU模型、大模型全程算法自助发布;四是IDC降本收益,降低模型在线服务成本。

模型Faas部署

Faas在哈啰AI平台的落地实践

我们的模型平台是一个非常完备的平台,无论是算法同学还是工程同学,都可以模型平台上方便的去上传模型,管理模型的入参出参、模型的版本。我们要兼容模型管理的能力,底层有很多异构,如python集群、gpu集群、pmml集群和TF集群等。针对这些异构,我们要用分集群的方式把它变成faas同构的框架。上面有了模型的管理平台,下面有了faas集群,中间的核心是平台路由的改造。当算法和工程同学评估了模型的QPS,可以在平台上勾选faas的一键部署,就能方便的部署到faas集群里,这样就能降低运维成本。

模型自动压测&规格标准化

Faas在哈啰AI平台的落地实践

Faas部署很大程度上依赖服务本身的资源设置&弹性伸缩设置,适当的设置将极大的减少启动时间、平滑弹性伸缩、最大程度节省资源。我们与压测平台合作,打造自动压测能力,评估模型Pod资源和规格标准化,再调用云原生Faas接口进行Faas部署。

Faas冷启动优化

Faas在哈啰AI平台的落地实践

Faas通用的痛点是冷启动速度,我们在思考模型的启动,能否有继续提速的空间。于是就有了模型分发服务,它可以把一些模型资源预下载下来,从原来的150毫秒降低到10毫秒左右的单模型的启动。

Faas模型优雅预热

Faas在哈啰AI平台的落地实践

深度大模型存在预热不充分导致RT突增问题,我们基于Knative的版本管理、流量分配、蓝绿部署等能力,结合自研GraySDK提供了优雅解决方案。

案例:哈啰智能调度Faas改造

Faas在哈啰AI平台的落地实践

智能调度是是两轮领域的核心场景之一。我们每次去做调度的时候,会进行调度收益的核算,用调入收益减去调出损失,再减去调度成本。业务的峰谷波动明显,计算量大,并且每个城市用的模型不一样,模型非常多,适合Faas的落地。这里我们做了定时预测的Faas化,特征能力的Faas化和模型能力的Faas化。通过效果回收,我们发现IDC成本下降了35%,整体性能上升了20%。

我们的调度业务通过无感切换到 Serverless,有效利用 Serverless 免运维、强隔离、按量计费的特性,既实现了得集群不用再为定时任务预留机器资源,同时在高峰期可以迅速大量扩容,提高了系统计算能力,让业务的稳定性也有了很大的提升。

Faas与AI平台的未来展望

Faas在更多应用场景落地

一是特征平台Faas化,特征的冷热分布十分不均匀,当热点特征高峰期时需要整个服务扩容,存在资源浪费、扩容速度慢、资源抢占等风险。二是内部管理后台,很多后台每天只有个别时段会有运营用户使用,但机器却7*24小时提供服务,可以用Faas的按需分配、缩容到0来提高资源利用率。三是定时能力,定时预测能力在某些时间点存在突增流量,且QPS能打到非常高,如果服务维度部署下,存在空闲期资源的极大浪费。

Faas在更多业务领域落地

一是智能客服——聊天机器,智能客服业务存在很多突发流量,比如用户进入客服问答的随机性很大,当舆情来临时的客服流量激增,也非常适合Faas解决方案。二是智能营销——大促等突发流量,互联网业务的发展离不开智能化营销手段,以电商为例,往往半月一小促,一月一大促,需要更灵活的资源调度方式支持营销业务发展。三是IoT传感器信息处理——各种语音精灵,IOT交互设备绝大部分时间都处于待唤醒状态,结合Faas缩容到0且能快速扩容的能力可以大幅提高资源利用率。

Faas在哈啰AI平台的落地实践

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
UIWebView长按保存图片和识别图片二维码的实现方案(使用缓存)
0x00需求:长按识别UIWebView中的二维码,如下图长按识别二维码0x01方案1:给UIWebView增加一个长按手势,激活长按手势时获取当前UIWebView的截图,分析是否包含二维码。核心代码:略优点:流程简单,可以快速实现。不足:无法实现保存UIWebView中图片,如果当前We
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
智码鎏金引
智码鎏金引
Lv1
每个城市都会下雨,就像我走到那里都会想你。
文章
4
粉丝
0
获赞
0