玩酷网

完全上云如何再进化?第一资本下一步拥抱无服务器优先战略

五年前,美国第一资本(Capital One)金控关闭最后一个地端数据中心,成为全美第一家全面上云的金融企业。2023年

五年前,美国第一资本(Capital One)金控关闭最后一个地端数据中心,成为全美第一家全面上云的金融企业。2023年,他们进一步展开无服务器优先策略,原本在AWS公有云上执行的2,000多套应用程序,到了2024年,已经有三分之一采用无服务器架构,就连用来侦测异常的机器学习(ML)服务,也以无服务器执行。

为何还要采用无服务器

押宝了云计算,为何还要拥抱无服务器架构?

原来,在改用无服务器架构前,技术团队得管理许多云计算虚拟服务器的资源配置。第一资本资深杰出工程师George Mao在去年一场会议中举例,比如他们得先部署Amazon EC2执行实例,来配置所需的云计算资源。光这一步,就有许多事要做,像是在EC2主控台中,管理包含执行操作系统(OS)和软件配置的虚拟机映无服务器像文件AMI,来启动合适的EC2执行实例。

接着才是配置操作系统,比如在Linux或Unix操作系统部署资源,还得注意该使用哪个版本、是否要升级或修补。再来是在操作系统上部署容器、创建可移植的环境,再于容器上部署应用程序服务器,最后才是应用程序开发。

在这样的云计算条件中,原本擅长开发的开发者,得负责开发以外的资源配置管理。而且,这些服务器资源虽可大可小扩展,但通常得“等待工作来”才发挥作用,资源利用率也仅3到5成。

为降低管理负担和成本,第一资本决定采用公有云无服务器服务,来更好地运用云计算服务器资源。比如通过API事件驱动,工作来了才激活资源,减少闲置等待的资源浪费。于是,第一资本开始将不同的应用程序,改用Lambda无服务器服务执行。

用无服务器架构执行ML的契机

这项无服务器优先的策略,吸引了机器学习团队的注意。他们平时负责用模型来早期侦测数字平台的关键交易流量。这里的关键交易有很多种,比如用户在应用程序或浏览器网页登录账户,也是一种关键交易。在这个场景中,机器学习团队的任务就是打造模型来侦测登录流量是否异常,以便快速修复问题、降低对用户的影响。

不过,他们的异常侦测模型需要大量数据和处理时间,才能有效执行,容易耗费大量云计算计算资源。而且,随着模型监控的关键交易越来越多,团队维护机器学习程序代码的工作量和成本也越来越高。因此他们认为,将异常侦测模型改用无服务器架构执行,可能可以更好地降低工作量和成本。

无服务器+ML的3大挑战

于是,机器学习团队在2024年展开了搬迁工作,也很快地面临不少挑战,有些让他们措手不及,也有些在预期中,他们提早准备好应对措施。其中有3道特别的难题:

首先是数据量太大。他们发现,模型训练数据集过于庞大,导致训练时间过长,超出了Lambda服务的执行时间限制。为解决问题,他们开始瘦身,对数据集采样,来减少整体数据量,同时保留足够的资讯来训练模型。

他们用这种方法,成功将数据集缩小了一个量级,大幅降低处理时间,还不影响模型表现。

他们遭遇的另一道难题是内存不足。由于机器学习模型需要大量函数库来执行,就算模型本身已经相对轻量,还是超出Lambda服务所允许的内存范围。

于是,团队想出2种解决方法,一是使用Lambda Layer功能,将每个函数库视为一个独立的层来实例。这个Layer最多允许5个层,每个层最大可达250MB,于是,机器学习团队将模型使用的函数库和依赖性,一一打包到不同层,再从Lambda内部调用相关层,来导入函数库。

当他们达到5层的限制时,就激活另外一种方法,也就是“动态函数库安装法”。他们先将函数库压缩上传至Lambda,然后在执行时下载、解压缩并导入函数库。这种方式可能会影响执行时间,但他们只针对特定函数库使用这种方法,其他函数库则维持原方法。

团队遭遇的第3道难题是执行时间限制。当时,第一资本所用的Lambda服务,执行时间上限是15分钟,这对一般非机器学习应用来说,相当够用,但不够某些机器学习函数的执行。

于是,团队开始检查所有执行时间超过15分钟的程序代码,根据各自状况来选择合适的替代方案或函数库。过程中,他们发现AWS一款异步推论(Asynchronous Inference) 方法,能应对长时间的处理需求,于是也采用这个方案,来缩短模型执行时间。对他们而言,正因为这道挑战,促使团队重新查看模型并大幅优化。

无服务器架构的3大好处

经过这些挑战洗礼,第一资本最后成功用无服务器架构来执行机器学习模型。他们盘点架构转换后,带来的不少好处,比如资源配置更有效率,因为无服务器是按使用量付费的服务,因此只有在收到请求或特定事件驱动时才会激活资源,而函数不再使用时,虚拟服务器资源会自动缩减为零。

无服务器架构可免除传统云计算资源配置管理的困扰。第一资本以AWS无服务器服务Lambda为例,它可通过API事件驱动,工作来了才启动资源,减少闲置时的资源浪费。图片来源/第一资本

另一大好处是扩展性,比如在他们的无服务器架构中,团队将数据发送至主机时,数据库可以自动扩展来应对需求。虽然团队还是要支付读写流量的费用,存储费用则包含在AWS订阅方案中,但除了这些,没有其他额外支出。

还有一个好处是,维护更简单了。在采用无服务器架构前,团队的机器学习模型占用DevOps团队大量时间,尤其是需要人力管理传统容器架构的扩展。但改用无服务器服务,可自动处理这项工作,第一资本甚至透露,他们限制几乎不需要维护。

拥抱无服务器架构学到的经验

第一资本从这次的搬迁成功经验,归纳出几项建议,给有意采用无服务器架构的企业参考。

首先,要成功搬迁,得在搬迁前做好充分准备,比如将所有机器学习应用和数据都先云化,DevOps团队也比较容易管理各个组件。再来,当机器学习生态系统完全云化后,得要选择最适合的无服务器方案,仔细评估每种方案是否符合需求。接着,在搬迁前,也要评估模型是否适合无服务器架构,根据不适之处先行调整,才不会在迁移过程中发生太多不可预测的障碍。

第一资本针对模型搬迁,也有几点建议,首先是先将模型拆解为更小的组件,不只在无服务器架构中容易管理,也能减少搬迁过程中的风险;再来是解耦数据工程,将数据工程和模型分开处理,来减少数据工程因大量计算资源需求,而对系统造成的影响。第三个建议是独立部署模型的每一个组件,用微服务架构来提高扩展性和维护性。