Serverless: AI everywhere的下一块拼图
Posted 华为云开发者社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Serverless: AI everywhere的下一块拼图相关的知识,希望对你有一定的参考价值。
摘要:本文介绍华为云函数工作流(FunctionGraph)的灵活、速度,如何让开发人员提升工程效率,缩短TTM等
本文分享自华为云社区《华为云FunctionGraph函数工作流—— Serverless“遇见”AI,释放AI生产力》,作者: 华为云PaaS服务小智 。
华为云Serverless研发工程师朱安东在2023年A2M峰会上带来了主题为“Serverless“遇见”AI,释放AI生产力”的分享,重点介绍了业界领先的基于函数计算的Serverless AI 推理解决方案,并展示了华为云函数工作流(FunctionGraph)的灵活、速度,如何让开发人员提升工程效率,缩短TTM等。
华为云 serverless研发工程师 朱安东
朱安东表示:“AIGC正逐渐在千行百业生根发芽,并且快速成为了行业中重要的生产力工具。伴随着AIGC大模型以及领域专家类型的中小模型的快速演进,引发了海量AI推理、大模型托管以及底层强大算力的诉求。 然而,要想实现AI扎根千行百业、实现“AI everywhere”的最终目标,我们仍然有很长的路要走。”
Serverless—— AI everywhere的下一块拼图
从业内工程师的角度来看,AI应用迭代发展的核心痛点主要包含2个方面:
- 算法工程师作为AI应用的核心开发者通常只会和模型、数据以及代码打交道,主要工作围绕数据清洗、数据工程、特征工程还有模型设计、开发、训练等,偏研究和理论方向。但是一旦涉及到算法模型和AI应用的最终落地,推广给大量用户使用就会涉及到模型发布、上线等动作,为了完成这些流程,开发者通常需要去花时间和经历学习托管类知识,尤其是云原生时代下的docker 还有k8s等;
- 对于参数量很大的模型上线后很难找到足量、优质的算力资源快速获得推理结果,推理性能差。从基础架构工程师的视角来看,GPU硬件设备成本高,研究阶段的需求量尚且能够满足,但是上线后面对海量用户和请求的资源量过于庞大,需要大量的投入;
另外,业务通常都是有浮动趋势的,就像旅游业的淡季和旺季,为了满足业务峰值准备的资源在业务量低的时候资源利用率也随之降低,资源严重浪费。
综上,AI应用如果想深入到人们的生活仍有很多问题需要克服。那么如何加速AI应用快速落地、敏捷迭代呢?Serverless是以应用为中心的新型云原生计算形态,这是业界的共识。而“用户无感、按需使用、以应用为中心,无需关注基础设施”这几个特性正好可以解决AI应用的几个痛点问题:
- 以应用为中心:AI工程师可以专注业务逻辑和模型performance,节约下大量的时间和精力。
- 无需关注基础设施:企业和架构工程师无需提前准备海量计算资源、自建机房,只需按需使用,按量计费。
华为云FunctionGraph解决AI用户上云4大问题
华为云FunctionGraph函数工作流是一项基于事件驱动的函数托管计算服务,通过函数工作流,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数便可以弹性、免运维、高可靠的方式运行。对于现阶段人们对业务、弹性以及降本增效等诉求提升,华为云FunctionGraph无疑是AI推理Serverless化的优质选项。
在Serverless的开发模式下,开发人员和交付流程实际上是有明显界限的。开发人员只需要上传代码包或者一个镜像文件即可让整个业务跑起来,不需要面对繁琐的交付流程。
为了让用户能够在Serverless平台上更加丝滑、流畅的开发和运行AI,华为云FunctionGraph推出了针对AI场景的解决方案,主要解决AI用户上云的四大问题:
①工程效率
- 模型开发、编排:专注业务代码,NoOps,低码编排
- 支持代码包,容器镜像
②性能、弹性:
- 长时负载,支持异步函数调用,最长函数执行时间72小时
- 冷启动问题:池化预热、弹性调度
③运行时、异构计算:
- 支持GPU/NPU,加速推理性能
- 支持GPU共享,提升资源利用率
④模型加载加速:
- 大文件加载:OBS+SFS结合,解决ML模型库&模型自身大文件加载问题;
- 链路加速:高性能解压缩转换,降网络开销、CPU解压耗时;共享内存加速技术,降解压IO开销;依赖包预加载,降低公共依赖的下载、解压耗时
同时华为云FunctionGraph基于函数计算的 Serverless AI 推理解决方案具有5大优势:
1.更低的学习成本,更卓越的工程效率,更短的TTM
华为云FunctionGraph可以极大提升开发效率。精通Python的算法科学家无需学习如何安装、配置和操作复杂的计算和数据存储基础设施, 通过可视化拖拽式函 数流便能编排复杂业务场景。此外,函数还支持容器镜像,简化了AI推理Serverless化。
2.丰富的函数开发生态。
华为云FunctionGraph支持GPU/NPU能力,具备GPU虚拟化技术,从而提高GPU硬件资源的利用率并降低使用成本。
3.更低的资源成本,按需付费,提供工作负载感知智能推荐能力。
函数计算以1ms粒度按量计费,函数编排基于节点执行次数计费
4.极致的冷启动、弹性及更智能的调度能力。
资源池化预热、分层预加载与弹性水位控制:通过单实例多并发、分层预热提升性能、降低成本。函数实例百毫秒冷启动时延,毫秒级弹性。
5.多维度结合的大文件加载加速能力。
高性能解压缩转换,降网络开销、CPU解压耗时。
共享内存加速技术,降解压IO开销。
依赖包预加载,降低公共依赖的下载、解压耗时
Serverless代表现代化架构的演进方向,与微服务将长期并存,在5-10年内将成为云的首要交付模式。根据IDC今天发布的《全球半年度公有云服务跟踪报告》显示,2020年全球云计算市场同比增长24.1%,收入总额达3120亿美元。同时Serverless对客户端还具有成本优化、效率提升的商业价值。面对Serverless的发展大势,华为云将打造全栈全场景的Serverless能力,并在音视频、数据处理、物联网、端测应用等场景优先推广落地,围绕这些场景进行打穿,推动相关高阶服务进行Serverless化改造。今年,华为云在能力打造上将优先推出函数计算2.0、Serverless应用托管 CAE、事件网格服务EventGrid、ADM等;同时,也将在Serverless开发工具及可观测性上构建端到端的能力,并重点在前端Trigger、后端BaaS上进行丰富,全面打造Serverless应用生态。华为云FunctionGraph期待与更多的开发者见面。
华为云持续将最先进的技术提供给全球的客户、伙伴和开发者,助力千行百业的客户商业成功。
Serverless 架构下的 AI 应用开发:入门实战与性能优化
随着时间的推移,Serverless 架构变得越来越火热,凭借着极致弹性、按量付费、低成本运维等特性,在很多领域发挥着越来越重要的作用;机器学习领域在近些年也非常火热,并在越来越多的行业中得到应用。
实际上,机器学习项目中一直存在两大难题:
- 资源占用率高、利用率低,尤其在流量波峰和波谷差值较大的项目中,资源浪费更为显著;
- 部署、更新、维护复杂度高;
而 Serverless 具有极致弹性、按量付费、低成本运维等特性,若将 Serverless 架构应用在机器学习项目中,在保证机器学习项目性能的同时,降低成本,又能提高资源利用率,是非常值得研究和探索的课题。
前言
本书是一本关于 Serverless 架构下机器学习实战的技术书,通过对 Serverless 架构的基础介绍、项目开发经验总结,以及常见的机器学习算法、模型、框架的学习,对将机器学习项目应用到 Serverless 架构、不同机器学习项目与 Serverless 架构结合以及基于 Serverless 架构进行机器学习应用开发等内容进行了探索。
我们希望通过简单明了的语言、真实的案例,以及开放的源代码,为读者介绍 Serverless 架构与机器学习相关的基础知识。希望读者可以通过本书真正理解 Serverless 架构与机器学习结合的重要价值,并能顺利在 Serverless 架构下开发、上线机器学习项目,从而更加直接地获得云计算带来的技术红利。
本书不仅有基础理论知识,还有大量的经验分享,以及对最新技术点的实践应用,包括但不限于 Serverless 架构下 GPU 实例的上手、多维度的冷启动优化方案、Serverless 架构多模调试能力等。
我们希望读者通过对本书的学习,可以对 Serverless 架构有一个更加全面、直观的了解,对 Serverless 架构下的机器学习有更加深入的认识。同时,希望通过本书的抛砖引玉,帮助读者将机器学习项目在 Serverless 架构下落地,获得云计算发展的技术红利。
初识 Serverless 架构
本章通过对 Serverless 架构概念的探索,对 Serverless 架构的优势与价值、挑战与困境进行分析,以及 Serverless 架构应用场景的分享,为读者介绍 Serverless 架构的基础内容。通过本章的学习,读者将对 Serverless 架构的理论基础有一定的了解和认识。
Serverless 架构的概念
随着云服务的发展,计算资源被高度抽象化,从物理机到云服务器,再到容器服务,计算资源逐渐细腻化。
2012 年,http://Iron.io 的副总裁 Ken Form 在 “Why The Future of Software and Apps is Serverless” 一文中首次提出了无服务器的概念,并指出 “即使云计算已经逐渐兴起,但是大家仍然在围绕着服务器转。不过,这不会持续太久,云应用正在朝着无服务器方向发展,这将对应用程序的创建和分发产生重大影响”。
2019 年,UC Berkeley 发表论文 “Cloud Programming Simplified: A Berkeley View on Serverless Computing”。在文章中,作者犀利断言 “新的 BaaS 存储服务会被发明,以扩展在 Serverless 计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久可供选择特性。基于 Serverless 计算的价格将低于 ServerFul 计算,至少不会高于 ServerFul 计算。Serverless 计算一旦取得技术上的突破,将会导致 ServerFul 服务的下滑。Serverless 将会成为云时代默认的计算范式,将会取代 ServerFul 计算,这也意味着服务器—客户端模式的终结”。
Serverless 架构从 2012 年首次走进大众视野到 2019 年成为 UC Berkeley 对云计算领域犀利断言的主角,完成了从一个 “新的观点” 向 “万众瞩目的架构” 转身。在这 7 年时间里,Serverless 架构从鲜为人知到被商业化应用,再到头部云厂商纷纷布局 Serverless 架构作为云计算战略,逐渐成为人尽皆知的新技术范式。
当然,在这 7 年间,Serverless 不仅仅在技术架构方面逐渐升级和完善,概念也越来越明确,发展方向也逐渐清晰、明朗。关于 Serverless 的定义,Martin Fowler 在 “Serverless Architectures” 一文中指出 Serverless 实际上是 BaaS 与 FaaS 的组合。
这个简单明了的定义为 Serverless 架构组成结构奠定了基础。如图 1-1 所示,Martin Fowler 认为,在 Serverless 架构中,应用的一部分服务器端逻辑依然由开发者完成,但是和传统架构不同,它运行在一个无状态的计算容器中,由事件驱动、生命周期很短(甚至只有一次调用)、完全由第三方管理,这种情况被称为 Functions as a Service(FaaS)。
除此之外,Serverless 架构还要有部分依赖第三方(云端)应用或服务来管理服务器端逻辑和状态的应用,这些应用通常是富客户端应用(单页应用或者移动端 App),建立在云服务生态之上,包括数据库(Parse、Firebase)、账号系统(Auth0、AWS Cognito)等,而这些服务最早被称为 Backend as a Service(BaaS)。
1-1 Serverless 架构组成结构
同样认为 Serverless 是 FaaS 与 BaaS 结合而成的 CNCF 在 CNCF WG-Serverless Whitepaper v1.0 中对 Serverless 架构的定义进行了进一步完善:Serverless 是指构建和运行不需要服务器管理的应用程序概念;它描述了一种更细粒度的部署模型,其中将应用程序打包为一个或多个功能模块,上传到平台,然后被执行、扩展和计费,以响应当时确切的需求。
与此同时,2019 年 UC Berkeley 的文章 “Cloud Programming Simplified: A Berkeley View on Serverless Computing” 中同样从 Serverless 架构特性角度,对什么是 Serverless 进行了补充描述和定义:简单地说,Serverless = FaaS + BaaS,必须具备弹性伸缩和按量付费的特点。
在中国信息通信研究院(以下简称“信通院”)云原生产业联盟所发布的《云原生发展白皮书(2020 年)》中对 Serverless 的概念也有相关的描述:无服务器(即 Serverless)是一种架构理念,其核心思想是将提供服务资源的基础设施抽象成各种服务,以 API 接口的方式供给用户按需调用,真正做到按需伸缩、按使用收费。
这种架构体系消除了对传统的海量持续在线服务器组件的需求,降低了开发和运维的复杂度,降低运营成本并缩短了业务系统的交付周期,使得用户能够专注在价值密度更高的业务逻辑开发上。
至此,Serverless 架构从结构、行为以及特性方面的定义可以总结为图 1-2。
1-2 从不同角度对 Serverless 架构进行定义
Serverless 架构的特点
众所周知,事物具有两面性。时至今日,云计算的发展已经取得了巨大的进步,但是作为云计算最新产物的 Serverless 架构,在巨大的优势背后,仍然面临着不可忽略的挑战。
- 优势与价值
亚马逊 AWS 首席云计算技术顾问费良宏曾说:今天大多数公司在开发应用程序并将其部署在服务器时,无论选择公有云还是私有的数据中心,都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等,并需要部署、运行应用程序和依赖的软件到基础设施之上。
假设不想在这些细节上花费精力,是否有一种简单的架构能够满足这种需求?时至今日,伴随 Serverless 架构逐渐 “走进寻常百姓家”,答案已经很明显了。
在项目上线过程中,我们一般需要申请主机资源,这时候需花很多时间和精力去评估峰值最大开销,即使给某些服务按照最大消耗申请资源,也要有专人在不同时间段进行资源的扩容或缩容,以达到保障业务稳定与节约成本的平衡。
对于一些服务来说,有时候申请的资源还需要在最大开销基础上评估,即使可能出现很多流量波谷,并产生大量的资源浪费,也不得不这样做,比如数据库这种很难扩展的应用就是 “尽管浪费资源也比峰值到来时应用程序因为资源不足而无法服务好”。
正如费良宏所说,在 Serverless 架构下,这个问题得到了比较好的解决,不用计划到底需要使用多少资源,而是根据实际需要来请求资源,根据使用时间来付费,根据每次申请的计算资源来付费,且让计费的粒度更小,更有利于降低资源的开销。
Serverless 架构具有 6 个潜在优势:
- 按需提供无限计算资源。
- 消除云用户的前期承诺。
- 根据需要在短期内支付使用计算资源的能力。
- 大规模降低成本。
- 通过资源虚拟化简化操作并提高利用率。
- 通过复用来自不同组织的工作负载来提高硬件利用率。
相对于传统架构,Serverless 架构确实具备业务聚焦、弹性伸缩、按量付费等优势。这些优势往往是开发者在技术选型时的重要参考。
1. 业务聚焦
所谓的业务聚焦,指的是让开发者将更多精力放在自身的业务逻辑之上,而不需要再花费更多精力关注底层资源。
众所周知,单体架构时代应用比较简单,物理服务器的资源足以支撑业务的部署。随着业务的复杂程度飙升,功能模块复杂且庞大,单体架构严重阻塞了开发部署的效率。于是,业务功能解耦,可并行开发和部署单独模块的微服务架构逐渐流行开来。业务的精细化管理不可避免地推动着基础资源利用率的提升。
如图 1-3 所示,虚拟化技术不断被完善和广泛运用之后,打通了物理资源隔阂,减轻了用户管理基础架构的负担。容器和 PaaS 平台则进一步抽象,提供了应用的依赖服务、运行环境和底层所需的计算资源。这使得应用的开发、部署和运维的整体效率再度提升。Serverless 架构则将计算抽象得更加彻底,将应用架构堆栈中的各类资源的管理全部委托给平台,免去基础设施的运维,使用户能够聚焦高价值的业务领域。
1-3 虚拟机、容器、Serverless 架构演进简图
2. 弹性伸缩
所谓的弹性伸缩,指的是可以根据业务流量波动,自动进行资源的分配和销毁,以最大限度地实现平衡稳定、高性能以及提高资源利用率。
众所周知,从 IaaS 到 PaaS 再到 SaaS 的过程中,去服务器化越来越明显。到了Serverless架构,去服务器化已经上升到一个新的高度。相对于 ServerFul 而言,Serverless 对业务用户强调的是 Noserve r的心智。
所谓的 Noserver,不是说脱离了服务器或者说不需要服务器,而是去除有关对服务器运行状态的关心和担心,这也就意味着原先需要对服务器进行扩容和缩容的操作也都不再需要业务人员关注了,都交给云商场进行管理。如图 1-4所 示,折线为一个网站在某天的流量走势。
1-4 传统云主机架构与Serverless架构弹性模式下流量与负载对比示意图
图 1-4a 的分析如下:
- 技术人员需要对网站资源用量进行评估,评估结果是这个网站最大的流量峰值为 800PV/小时,所以购买了对应的云服务器。
- 但是在当天的 10 时,运维人员发现网站流量突然增加,逐渐临近 800PV/小时。此时,运维人员在线上购买了一台新的云主机并进行了环境的配置,最后在 Master 机器上添加了对应的策略,度过了 10~15 时的流量峰值。
- 过了 15 时,运维人员发现流量恢复正常,对后加入策略的云主机进行停止,并将额外的资源释放。
- 到了 18 时,再次发现过载流量的到来……
从图 1-4b 可以清晰地看到,负载能力始终和流量是匹配的(当然,这个图本身存在一定问题,即真实的负载能力在一定程度上可能略高于当前流量),即并不需要像传统云主机架构那样在技术人员的干预下应对流量的波峰和波谷,其弹性能力(包括扩容和缩容)均由云厂商提供。
通过对图 1-4 的分析不难看出,Serverless 架构所具备的弹性能力在一定程度上来源于厂商的运维技术支持。
Serverless 架构所主张的 “把更专业的事情交给更专业的人,让开发者更加专注自身的业务逻辑即可”,在弹性模式上也是一个非常直观的体现。
3. 按量付费
所谓的按量付费,指的是 Serverless 架构支持用户按照实际的资源使用量进行付费,可以最大限度提高用户侧资源使用效率,降低成本。
在传统云主机架构下,服务器一旦被购买和运行,就在持续消耗资源,并且持续产生费用。尽管每台服务器的可用资源是有限的,通常也是固定的,但是服务器每时每刻的负载是不同的,资源使用率也是不同的,这就导致传统云主机架构下,会比较明显地产生一定的资源浪费。
一般情况下,白天资源利用率相对较高,资源浪费少一些;夜间资源利用率较低,资源浪费会相对高一些。按照《福布斯》杂志的统计,商业和企业数据中心的典型服务器仅提供 5%~15% 平均最大处理能力的输出,这无疑证明了刚刚对传统云主机架构的资源使用率和浪费程度分析的正确性。
Serverless 架构则可以让用户委托服务提供商管理服务器、数据库和应用程序,甚至逻辑。这种做法一方面减少了用户自己维护的麻烦,另一方面用户可以根据自己实际使用的粒度进行成本的支付。
对于服务商而言,它们可以将更多的闲置资源进行处理。这从成本、“绿色” 计算角度来说,都是非常不错的。
1-5 传统云主机架构与 Serverless 架构弹性模式下流量与费用支出对比示意图
如图 1-5 所示,折线为一个网站在某天的流量走势图。
图 1-5a 是传统云主机架构下流量与费用支出示意图。通常,业务在上线之前是需要进行资源使用量评估的。工作人员在对该网站的资源使用量评估之后,购买了一台可以承受每小时最大 1300PV 的服务器。
在一整天内,这台服务器所提供的算力总量为阴影面积,所需要支出的费用也是阴影面积对应算力的费用。但是很明显可以看出,真正有效的资源使用与费用支出仅仅是流量曲线下的面积,而流量曲线上方的阴影部分则为资源损耗与额外的支出部分。
图 1-5b 是 Serverless 架构弹性模式下费用支出示意图。可以清晰地看到,费用支出和流量基本是正比关系,即当流量处于一个较低数值时,对应的资源使用量是相对较少的,对应的费用支出也是相对较少的;当流量处于一个较高数值时,资源使用量和费用支出为正相关增长。
在整个过程中,可以清晰地看出 Serverless 架构并未像传统云主机架构样产生明显的资源浪费与额外的成本支出。
通过对图 1-5 的分析,不难看出 Serverless 架构所具备的弹性伸缩能力与按量付费模型进行有机结合,可以最大限度地避免资源浪费、降低业务成本。
4. 其他优势
除前面所说的业务聚焦、弹性伸缩、按量付费等优势,Serverless 架构还具备其他优势:
- 缩短业务创新周期:由于 Serverless 架构在一定程度上是 “云厂商努力做更多,让开发者更关注自身的业务” 的模式,因此我们可以认为开发者将会付出更少的时间、精力在 ServerFul 架构所需要关注的 OS 层面、云主机层面、系统环境层面,更专注自身的业务逻辑,这带来的直接效果就是提高项目的上线效率、降低业务的创新周期、提高研发交付速度。
- 系统安全性更高:虽然 Serverless 架构在一定程度上有一种 “黑盒” 即视感,但正因为如此,Serverless 架构往往不会提供登录实例的功能,也不会对外暴露系统的细节。同时,操作系统等层面的维护也都交给云厂商,这意味着在一定程度上 Serverless 架构是更加安全的:一方面表现在 Serverless 架构只对外暴露预定的,且需要暴露的服务和接口,相对云主机在一定程度上免去了被暴力破解的风险;另一方面表现在云厂商有 更加专业的安全团队和服务器运维团队来帮助开发者保障整体的业务安全与服务稳定。
- 更平稳的业务变更:Serverless 架构是由云服务商提供的一种天然分布式架构,同时又因为 Noserver 的特性免除了开发者对服务器运行状态的关心和担心,所以在 Serverless 架构下,开发者对业务代码、配置的变更操作非常简单,只需要通过云厂商所提供的工具进行更改即可,待新的业务逻辑平稳生效后则不再需要开发者关注。所以,Serverless 架构在业务的平滑升级、变更、敏捷开发、功能迭代、灰度发布等多个层面有着极大的优势。
当然,即使上面已经举例说明了很多 Serverless 架构的优势,我们仍然没办法枚举出其全部的优势和价值。但不可否认的是,Serverless 架构正在被更多人关注,也正在被更多团队和个人所接受和应用,其价值已快速突显出来。
本文为阿里云原创内容,未经允许不得转载。
以上是关于Serverless: AI everywhere的下一块拼图的主要内容,如果未能解决你的问题,请参考以下文章
Serverless 架构下的 AI 应用开发:入门实战与性能优化
AI 作画火了,如何用 Serverless 函数计算部署 Stable Diffusion?