内容介绍:
一、Serverless技术价值
二、Serverless函数计算与AI的结合
三、Serverless函数计算AIGC应用方案
四、业务初期如何降低使用门槛(权益介绍)
本次课程的主题是“尽享红利,Serverless构建企业AI应用方案与实践”,由阿里云云原生架构师计缘分享。
本次课程主要介绍Serverless和AI相关应用方案的基本原理和概念,主要分为四个部分。
第一部分,介绍Serverless的技术的发展趋势,包含函数计算以及阿里云对Serverless技术演进的计划;第二部分,介绍函数计算和AI的结合;第三部分,介绍AIGC相关应用的方案,包括一些客户案例介绍;第四部分,介绍如何快速体验函数运算以及AI应用。
1.Serverless技术价值
1.1云计算的演进
Serverless技术架构的演进与人类发展史非常类似,从最开始的物理机到虚拟机,再到容器,到如今的Serverless,对于物理机器的依赖逐渐减少。在人类发展史上,在原始社会时,需要用打火石钻木取火发展到现在,我们只需使用打火机即可使用火。在这个过程中我们其实无需了解产生火的原理。对于Serverless技术的发展也是如此。现今,很多企业或项目的关注点在于业务的处理及稳定运行,不再关注物理机的机型是神龙、ECI或是ECS,而更加关注开箱即用的、稳定的计算资源。
1.2一个比喻了解什么是Serverless
对于Serverless,每个人对它的理解都不同,它在技术层面并无确定的架构。如果做容器化,可能标准是K8S。当然,我们也可以直接用Docker或Content D在ECS上启动容器运行,但绝大多数仍会使用K8S做调度管理。Serverless技术架构并没有确定的方案,并不是使用了某框架或某技术点才叫Serverless。我们从Berkeley的三次论文以及cncf上发表的一些论文都可以清晰得到,Serverless目前只有概念的定义,即随用随取、按量付费和高弹性,只要满足这两点,都属于Serverless技术架构。
以日常生活中打车的场景为例。使用物理机如同买私家车,这意味着我们还需要买车库,还有每年的维护、燃油等都是开销,沉没成本较高。使用虚拟机就像在机构租车,在使用时可以选择租车,使用结束即可归还,相比于买私家车,不需要维护,可以节省一定的成本,但其灵活性仍有待提升,如使用时间低于租期,资费不会降低,高于租期,可能还需重新申请租车的订单和费用。而使用Serverless则像使用网约车,除了不需要有额外的沉没成本之外,灵活性也更高,可以随时使用,还可以选择车型,如果觉得车型不适,还可以取消订单。
从这些角度来说,Serverless没有沉没成本,不需要购置和管理资源(服务器),灵活性非常高,具有弹缩能力。在租车时代,如神州租车,每个城市的车辆储备是有限的;在网约车时代,无需关心车辆储备,按需使用即可,即自动扩缩的能力。整体而言,Serverless的业务价值在于让研发和运维人员更多地聚焦到业务方面,着眼于商业模式,提高人效。
1.3All on Serverless让应用开发更简单
阿里云Serverless相关技术的演进主要着眼于Serverless计算产品。Serverless计算领域有两个产品,一是函数运算,另一个是Serverless应用引擎SAE。
不同的产品会有不同的形态,在两种不同形态种都有很多的解决方案。本节课涉及的AI推理只是基于函数计算GPU的场景。还有很多场景,如API服务、事件驱动、多媒体的处理、车联网、物联网、游戏等,都有丰富的解决方案。
SAE也是如此。在基于两个Serverless计算产品所构建出的解决方案之上,若要快速构建应用、服务,各方案对应的程序最好能与现有Devs的流程集成。为此,我们提供了Serverless工具链,它可以把Serverless CloudFlow、Serverless Devs和客户原有的流成结合。
再上层,也就是整个的应用中心,它可以把市面上常用的应用抽成样板间,在应用中心一键启动,应用中可能会包含若干函数、下游的各种的服务(如NAS、OSS、数据库等)。基于以上该体系,可以满足各行各业、各个领域客户的需求。
1.4基于Serverless计算的分布式架构
下图是基于Serverless最简单的一个分布式架构:
其最底层的计算资源是函数计算、SAE、ACK Serverless容器服务,这是整个计算中最核心的,是应用层。从最上面的流量进入来看,中间会通过网关,2023年云原生才被真正使用,在网关中,可以管理API,通过各种插件增强API各种功能。进入应用层,流量进入Serverless计算资源,其上下游还会涉及各种各样的其他组件,如果是微服务应用,可能会用到服务治理、注册中心、限流降级、全量灰度,应用和应用之间链路的可观测、安全防护等等。还包括数据的存储(数据库OSS),包括消息队列等。以上就是Serverless BAAS(Blockchain as a Service)的一套比较基础的架构体系。
2.Serverless函数计算与AI的结合
2.1AIGC
(1)AIGC的应用场景
对于AIGC的场景大家都不陌生,本质上就是通过大语言模型对文本做各种识别,进而产出非文本的效果,使用较多的可能是最文生图、图生图、对视频内容的识别以及文本对文本的推理。很多产品中都使用到了各种场景,如游戏行业对游戏素材的处理,影视行业对宣传海报的处理,剪辑和内容方面的行业对内容文本的处理。
(2)企业构建AIGC应用的“绊脚石”
很多用户仅知道大语言模型AIGC的概念,但并不十分清楚如何将业务与大语言模型AIGC相结合,进而落地作为生产化或商业化的应用能力,这可能是由于几下原因导致的。
其一,很多客户因其业务涉及深度不够,对AI相关的技术积累不足,没有能力训练大语言模型,尤其是较大参数的模型,他们多可以基于开源小模型做微调,但是目前几个微调投入产出较低,即使花费几个月完成微调,一旦底模更新,其能力远超于微调后的模型,因此,这种程度的应用相对价值较低。所以,这种微调多用于做提示词工程以及reg的能力。
其二,用户可能不会根据应用场景选择合适的大语言模型,目前市面上仍未存在某个大语言模型可以在各个领域表现最佳,如GPT、通义千问、百度大模型等等,它们可能在某领域具有一定的优势。
其三,如果使用的是商业化模型,由于其是通过调用API实现功能的,因此不涉及客户的算力问题。但由于某些领域开源模型优于商业版模型,因此有些企业会选择开源模型,而开源模型需要用到用户的算力,即GPU算力,而由于GPU紧缺,成本较高,在计算资源上存在痛点。
总而言之,企业不知如何落地AIGC,阿里云针对上述要点尽最大努力帮助客户解决其中的某些问题。
第一,关于算力(GPU)的问题。通过函数计算的GPU来解决GPU成本高昂的问题,因为Serverless GPU虚拟化后,可以选择使用1 GB、2GB、3GB等,无需一次性购买,进而提高GPU的资源利用率,降低成本;按需索取,当有请求是才会调用资源,反之,则不使用资源,整体上优化了GPU的成本。
第二,平台下会打包主流的开源模型,用户可以在平台快速构建、试错,通过对大模型的托管,帮助用户快速一定应用场景使用的模型。
2.2函数计算FC
(1)函数计算FC核心能力
第一,轻运维甚至零运维,客户无需关注底层资源,这在很大程度上解决了运维开发人员的痛点问题。此外,整个发布过程的链路较短,只需要通过CD工具即可部署函数,因为本身函数计算的代码量都较小,维护管理成本也较低。同时,对版本的控制、版本的切换以及灰度的发布都集成在函数计算产品中,无需额外构建其他的组件实现。
第二,极致的弹性速度。对于非编译型的解释性语言,如NODE、JSON或者Python等语言,弹性速度较快,约在100毫秒即可完成;对于JAVA和go语言可能相对较慢,但整体而言,它比ECS弹性速度快很多。
第三,资源利用率的大幅提升。这依赖于弹性能力,它基于流量请求的波形与基于函数实例数量和业务流量的波形较为贴合,提升了资源利用率,降低了成本。
第四,丰富的触发器,这也是Faas产品本身具备的特点。从函数计算在阿里云的定位来讲,它是阿里云云产品的粘合剂,它集成了90多个产品的触发器,可以把两个毫不相干的产品通过函数计算将数据打通,实现产品间的集成。因此,有了各种各样的触发器,就可以构建出很多不同的场景。将图片、视频传到OSS,即可自动拉起函数计算进行处理;当消息队列中进入一条新消息时,也可以拉起函数计算进行处理;当新增了一条日志,也可以自动运行该流程。从这个角度来说,这一点是函数计算有别于其他传统部署架构的特点。除此以外,它还配套了可观测、跨可用区的容灾、各类开发插件、IDE插件等来帮助用户和开发者能够更好的使用函数列算。
下图中暗示的是函数计算进行灰度发布的能力:
我们可以通过切换别名动态分配不同主版本和灰度版本的流量配比,快速进行流量的更迭和分配。很多情况下函数中算法有增长的需求,我们需要快速调试算法进行验证,它可以非常方便地创建不同的版本,通过切换别名就可以了看到每个版本运行状态,帮助用户快速判断调优效果更好的算法版本,进而切换成更大权重的流量。
函数计算还支持了利用工作流编排函数的能力,如下图所示:
它可以帮助用户快速构建相对简单的业务流程。现在很多客户通过工作流做了节点非常多的复杂逻辑,这里的“相对简单”指的是每个函数中的逻辑都相对简单(传统的JAVA spring cloud服务中的方法可能有几十乃至上百个),而不是流程的简单。
关于CloudFlow,它会在左侧预制常用的节点,如调用函数的节点、发消息的节点、HTTP请求的节点以及向OSS上传文件的节点,每个节点升级后右侧会弹出其相应的配置参数。同时,还提供了并行、Map、Choice等控制流程的节点。然后,对每个节点都可以进行调试,确定节点的入参、出参情况是否在预期内。
(2)函数计算Forrester评估
Forrester测评类似于garden的测评,每两年进行一次,而在2021、2023年先后进行的两次Forrester测评中,函数计算均处于领导者象限,蝉联全球第一,这也不难看出该产品的成熟度和功能的丰富度。
2.3函数计算GPU的实例规格&成本
说到AI,我们很容易可以联想到GPU。函数运算的GPU采用阶梯定价的模式,目前支持T4和A10两种卡型,后续也会支持更多的卡型。但就推理场景而言,T4和A10已经足够了。对于文生图、图生图的场景,24GB显存的A10足够;对于开源模型的推理,如Inbedding、Reg、Rerank等,16 GB的T4也足够实现。
对于T4,假设一天的有效使用时长为8小时,月费用小于2000,相较于ECS的一张T4的整卡,它的费用远低于ECS。A10同样如此,假设生成一张图需要一秒,12元可以生成3600张图,同样使用8小时,月费用小于2500。因此,函数计算可以帮助用户大幅降低使用GPU资源成本。
3.Serverless函数计算AIGC应用方案
目前,阿里云已经研发了Serverless应用中心平台,并在积极构建AI应用开发平台,以帮助用户快速在平台上构建AI应用。市面上也存在Defy、Fast GPT等产品通过流程、函数节点的方式快速构建AI应用,如同前面讲到的Work Flow、Cloud Flow。
3.1 化繁为简:加速AI应用开发部署
(1)函数计算
最下层是函数计算。
(2)Baas服务联动
函数计算在构建AI应用时,除了计算产品之外,还有其他Baas服务产品的联动,如数据库、存储、向量化等。对于数据库服务,需要用到PG或其他的Vector DB,要存储关系型数据需要使用RDS;对于存储服务,还要用到NAS,因为现在开源的大语言模型通常会在NAS中托管,在支持OSS的加速存储后,也可以把模型托管在OSS中;对于中间件,主要是消息队列通过异步的方式在上下游间做消息通知。因此,这些Baas服务是必备的。
(3)模型
模型分为两类。一类是商业版模型,如通义千问、ChatGPT,它们无需使用函数计算的GPU资源,只用CPU即可,因为其本身请求的是大语言模型的API。但有些场景需要用到开源的大语言模型,如用SD模型做文生图,我么需要下载SD xl或1.5模型进行托管和部署,也可以在ModelScope或Hugging Face上下载匹配的模型进行托管。
(4)AI应用
首先,模型的快速托托管主要依赖于NAS,把模型放在NAS中,NAS会将其挂载到函数计算的函数上,然后通过管理界面即可帮助用户快速在NAS中维护模型。其次,基于Serverless Devs对AI应用的生命周期进行管理,包括对不同环境的创建、应用的发布部署、应用的管理。最后,对于常用的模型,实现一键体验,如文生图模型、ChatGPT、Fast GPT等均可在Serverless应用中心拉起,有些代码是可见的,可以微调代码(模型),也可以在NAS中更换模型进行变更。
(5)可实现的能力
AI应用上方是基于函数运算和应用中心提供的能力,如GPU弹性伸缩、按量付费、生命周期管理、模型的快速托管、一键部署及多应用管理。
(6)业务场景
最上方是AI应用适用的各种业务场景。
3.2Serverless应用中心——AI应用集合
下图展示的是Serverless应用中心中的其中一个模块“人工智能”。
可以看到,其中还有很多其他页签,包括Web框架、音视频处理、游戏等。其中包括Stable Diffusion、ollama、ComfyUI等,ModelScope与Hugging Face还进行了集成,还有通过Bert的M3开源模型做Inbedding、Rerank等应用。从不同的用户角色区分。
对于要构建AI应用的开发者而言,首先,可以通过应用中心快速构建某个应用案例,可以对其进行调整,其中代码在函数中,模型在NAS中,其他一键购买的下游服务都可以通过控制台看到。其次,上传模型,如果NAS中现有的模型不符合预期,可以更换模型,如SD默认的可能是SD 1.5,也可以下载更好的模型上传使用。然后,上传代码,即推理服务的代码,可以使用各种语言编写,如Python、go、node、 json,甚至是JAVA都可以,因为函数运算的runtime支持市面上主流的各种语言,也可以把镜像作为runtime上传到函数中。最后是代码仓库,也就是CI/CD流程,提供的Serverless Devs工具可以对接各种各样的Git仓库,包括自建的Git、Github、Gitlab等。
基于上述内容,可以推测AI应用具备的功能。第一,应用管理,包括发布、维护、版本更新、灰度发布等;第二,环境管理,包括开发环境、测试环境、生产环境;第三,流水线的管理;第四,模型管理,包括域名管理,函数计算也提供绑定、自定义域名;第五,可观测,Serverless函数计算有完善的监控体系;还包括日志管理。
对于用户,开发者开发完成后,所有的AI应用本质上都是提供API供用户调用,或web界面供用户使用。如SD的web UI或者ollama的open web UI逻辑都相同。当请求进入函数,完成相应逻辑计算后,可能会请求数据库、存储服务,或是把大语言模型加载到显存中进行推理等。
3.3函数计算AIGC解决方案
(1)从不同的用户角色区分
对于要构建AI应用的开发者而言,首先,可以通过应用中心快速构建某个应用案例,可以对其进行调整,其中代码在函数中,模型在NAS中,其他一键购买的下游服务都可以通过控制台看到。其次,上传模型,如果NAS中现有的模型不符合预期,可以更换模型,如SD默认的可能是SD 1.5,也可以下载更好的模型上传使用。然后,上传代码,即推理服务的代码,可以使用各种语言编写,如Python、go、node、 json,甚至是JAVA都可以,因为函数运算的runtime支持市面上主流的各种语言,也可以把镜像作为runtime上传到函数中。最后是代码仓库,也就是CI/CD流程,提供的Serverless Devs工具可以对接各种各样的Git仓库,包括自建的Git、Github、Gitlab等。
基于上述内容,可以推测AI应用具备的功能。
第一,应用管理,包括发布、维护、版本更新、灰度发布等;
第二,环境管理,包括开发环境、测试环境、生产环境;
第三,流水线的管理;
第四,模型管理,包括域名管理,函数计算也提供绑定、自定义域名;
第五,可观测,Serverless函数计算有完善的监控体系;还包括日志管理。
对于用户,开发者开发完成后,所有的AI应用本质上都是提供API供用户调用,或web界面供用户使用。如SD的web UI或者ollama的open web UI逻辑都相同。当请求进入函数,完成相应逻辑计算后,可能会请求数据库、存储服务,或是把大语言模型加载到显存中进行推理等。
(2)函数计算
无论是用户的同步调用或是异步调用,都先进入函数计算,其中函数计算的代码即开发者这边上传的代码,这些代码可以使用GPU,也可以使用CPU。
如果使用GPU,一般情况会把大语言模型加载到显存中,NAS中也可以放多个模型,可以通过环境变量中请求的不同标识的方式来控制模型的路径,进而对多个模型进行区分,这样使用的模型就可以对应到不同的路径。
在运行过程中,函数中的日志会记录在日志服务中,我们可以通过日志服务中类似SQL的查询方式快速查看每一步的日志情况。对于持久化存储的内容,可以通过OSS,或是挂载到函数计算上,图片和视频均可。
(3)函数计算平台
基于以上体系,构建的应用多是实时推理,包括文生图、图生图、智能客服、人脸识别、内容审核以及内容安全方面的功能,还包括使用传统的大模型进行推理等场景。对于离线推理或非实时的推理,如图片处理、视频内容的识别、三维重建等。
3.4场景案例
(1)函数计算AIGC:一键部署SD场景
前面提到,Serverless应用中心中有可以一键拉起SD环境的应用。因此,在SD拉起之后,其中包含了默认的SD模型,放在了NAS中,且与函数运算完成了挂载。
其中,WEB UI是放在函数计算中的推理服务,且SD场景也是推理场景,其函数计算中已经完成了对web UI和出图部分代码的部署,直接访问WEB UI域名即可打开生图的界面,进而实现文生图、图生图。同时,还做了模型的管理界面,也就是文件管理。在NAS中,我们可以快速看到stable diffusion固定的路径,如存放基模、Laura、Checkpoint的路径等,进而针对自己需求在C站下载不同的组件安装即可。
除了web UI以外,很多企业用户更多地会使用API集成的方式进行推理。因为这种方式可以把整个出图的逻辑集成到自己的平台中。因此,Serverless AIGC也提供了API的能力,包括还支持了切底模的特性,因为不同的用户在不同的场景可能会需要不同的底模。之前做出文生图的痛点在于其切模速度较慢,因此,这次进行了相应的优化,使切模成为了一个高效的过程。
在广告设计领域中,通过函数计算加SD的模型,极大提高了其抽出的效率;在电商领域尤其跨境电商,函数计算提高了产品图生成的效率;在大学中OCR文字识别、修复工作领域,以及游戏行业辅助原画师做素材生成等等场景,AIGC都有相应的应用。
(2)函数计算帮助领健信息为“看牙”注入AI活力
在牙齿矫正机构领健,它主要使用函数计算GPU做正畸算法的的推理。请求从前端的应用进入后发给函数计算,其runtime是自定义镜像,然后调用T4和A10两种GPU做推理。
该函数计算AIGC方案给客户带来的价值显而易见。在口腔医美领域存在明显的流量潮汐,一般情况集中在上午或下午,晚上几乎没有,以及各种节假日的突发流量高峰。
因此,他们之前使用的ECS GPU利用率较低,成本浪费严重,使用FC的GPU可以应对其日间和节假日的流量高峰。换言之,FC解决了突发流量对门店储备资源的挑战。第二,节省了成本,使用FC降低成本约70%。第三,它可以帮助研发运维人员提高构建应用的效率,增强了逻辑的稳定性、高可靠性。同时,原来可观测较弱,现在通过函数计算提高可观测,在请求进入之后,处理逻辑、处理过程、请求调用次数、状态码是否被限流以及请求链路都可观测。
(3)森马AIGC应用实践:让AIGC能力触手可及
森马主营T恤生产销售。最初,T恤上的各种图案依赖于设计师的绘画,效率较低。如今通过SD出图极大提升了出图的效率,进而提升了生产T恤的效率。森马使用的是API能力,在森马的后台管理平台,它将出图的API集成到自己的AI工作台。
最初,设计师要做一款主题T恤,需要收集不同的灵感,或者和不同的IP合作,这个过程包括收集灵感、设计师绘制线稿图、评审等流程,其中设计线稿图最为耗时,使用AIGC出图之后,绘制线稿图的事件可以从3天降低到30秒,大大缩短了整个过程的时间。另外,还可以提升人效,对于同一任务,在AI应用平台上面生成可以减少人力配置。在森马与阿里云合作之后,又产出了很多爆款的衣服,在2023年的云栖大会上也就行了站台,吸引了很多用户直接出图、打印、购买。
4.业务初期如何降低使用门槛(权益介绍)
为了让用户能够更快速地上手和体验,阿里云对新用户的开通提供了免费额度,当新用户开通函数计算时可以领到免费的资源包,其额度足以用户验证自己的想法或业务,同时,还有一些降价活动和促销月,降低使用成本。
以上就是本节课的全部内容。