作者:周伟鹏、魏文哲、元毅
“使用阿里云容器服务 Knative 和 ECI 虚拟节点配合部署,在保证线上模型应对突发流量的稳定性大幅提升的同时,又使资源利用效率获得了显著的提高,极大的节约了资源成本。”
-- 数禾科技 AI 实验室
AI 平台负责人 周伟鹏
“数禾 DevOps 平台 BetterCDS 集成了阿里云容器服务 Knative,支持模型服务的多版本运行和弹性伸缩,在降低运行成本的同时,也提升了服务的可用性,极大地方便了运维人员和开发人员。”
-- 数禾科技基础架构研发部
工程效率组负责人 邓志
背景
数禾科技以大数据和技术为驱动,为金融机构提供高效的智能零售金融解决方案,服务银行、信托、消费金融公司、保险、小贷公司等持牌金融机构,业务涵盖消费信贷、小微企业信贷、场景分期等多个领域,提供营销获客、风险防控、运营管理等服务。数禾科技通过自主开发的消费信贷产品,连接金融机构与普罗大众,赋能金融机构数字化转型,迎接中国消费升级的大潮。
遇到问题
在风险管理业务中,根据公司的风险容忍度、风险偏好波动以及阶段性业务目标需要针对公司客户进行风险属性的调整,这其中包括用户额度、定价、可借期限等相关要素。那么这不可避免的需要应用批量数据处理能力通过计算规则来对大量用户做调额、调价等,当然,模型作为风险管理的重要组成部分也必不可少的会被运用至批量处理的动作中来。因此对于模型的计算能力就提出了很高的要求,包括计算速度、计算结果准确性、计算数据实时性等。
而当前的困扰所在是支撑模型计算的底层应用资源无法灵活且快速的根据请求量来智能化调整机器资源支持运算能力,这也是当前业务快速发展过程中亟待解决的痛点。同时,随着模型在线推理服务数量的增加,数禾的模型服务也变得越来越庞大、臃肿,难以管理。这种状况不仅导致了资源浪费,还增加了维护和升级的成本。
基于以上的各种情况,我们开始寻求新的技术架构方案,希望新方案可以具备随流量高效使用资源,降低模型服务成本,同时最好具备版本管理功能,可以实现多版本同时提供服务,较小响应的运维成本。
解决方案
经过内部的沟通与调研,我们最终选择了基于 Knative 的 Serverless 服务方案,它具备根据请求的扩缩容能力、允许 pod 缩容到 0 的冷启动能力以及多版本的管理能力。与此同时,由于数禾本身的技术架构都是部署在阿里云的底层资源上,而阿里云 ACK 又对 Knative 做了组件集成,可以支持一键部署,极大的减小了我们部署调试的时间成本。
客户价值
通过对内部模型部署的 pipeline 进行改造后,目前数禾的所有新增模型均已通过 ACK + Knative 方式部署在线上提供服务,得益于 Knative 的多版本管理能力,我们快速解决了模型的灰度发布和多版本并存的问题。同时加之基于请求的自动扩缩容能力,在多个版本并存的情况下,并没有对资源产生额外的消耗,而且对晚上的谷时资源继续了很好的节约。
下图是我们一个模型服务的资源消耗与请求量的对比图,上图为 Pod 资源数量,下图为服务请求量。由下图对比可以看出,整个服务资源的使用情况于服务请求量保持高度一致,使用效率非常高。
查看大图:
https://img.alicdn.com/imgextra/i4/O1CN01uHrVr51sc2SJ76y4x_!!6000000005786-0-tps-2559-1341.jpg
对于上文提到的批量作业任务,虽然我们已经具备了 Knative 的扩缩容能力,但依然需要在底层准备好足够的资源池来供模型进行扩容。但是在一天的大部分场景中这部分资源又是浪费的,对于这个问题,我们通过在 Knative 中使用 ECI 虚拟节点来得到了很好的解决。
我们对上线之后的模型服务进行了持续监控,对比使用之前的方案,模型服务在应对突发批量流量的稳定性获得大幅提升,同时资源的使用效率也获得了显著提高,节约成本约 60%。
关于 Serverless
众所周知,Serverless 是一种云原生的开发模型,客户只需构建和运行应用、而无需管理托管应用所在的服务器。在实际实现上,IT 架构里还是有服务器的,只是对从客户应用研发不可见了,服务器由云厂商托管和维护,用户只需要将代码打包成容器即可。随着云原生技术的演进,以应用为中心,资源按需使用的 Serverless 技术逐渐成为主流。Gartner 预测,2025 年将有 50% 以上的全球企业部署 Serverless。
Knative 是基于 Kubernetes 之上提供的一款开源 Serverless 应用框架,其目标就是制定云原生、跨平台的 Serverless 容器编排标准,帮助您部署和管理现代化的 Serverless工作负载,打造企业级 Serverless 容器平台。Knative 于 2021 年 11 月 2 日正式发布 1.0 版本,达到了一个重要的里程碑,随着 2022 年 3 月 2 日加入到 CNCF,越来越多的开发者拥抱 Knative 。
阿里云容器服务从 Knative 早期版本开始产品化集成,持续跟进 Knative 社区功能迭代,并与容器服务 ACK、消息、存储、网络等云产品进行了全方位的融合,提供了生产级别的 Knative 能力。
点击此处了解更多阿里云 Knative 产品相关信息