美图AIGC运维之旅的探求和应战
本文整顿自美图资深SRE工程师李彬在【WOT2023·深圳站】大会上的主题分享,更多精彩内容及现场PPT,请关注技术栈群众号,发信息【WOT2023PPT深圳】即可间接支付。
嘉宾 | 李彬
编辑 | 如烟
出品 | 技术栈(微信号:blog51cto)
日前,在主办的WOT世界技术翻新大会上,美图资深SRE工程师李彬带来了主题演讲《美图:AIGC运维之旅的探求和应战》,详细引见了美图如何在多云环境中实施规范化治理和流程,从而愈加高效分歧地治理多云环境;深化讨论了美图在大模型训练环节中遇到安保与合规疑问后,如何经过实施有效战略,确保训练集群的安保稳如泰山。
本文将摘选其中精彩内容,一致整顿,宿愿为诸君带来启示。
一、美图的AIGC之旅
美图是一家以美为内核、以人工智能为驱动的科技公司,关键包括两局部业务:一是影像与设计产品,如美图秀秀、美颜相机、wink等;二是美业处置方案,包括美图宜肤、美图魔镜等。
2017年,美图曾因“手绘自拍”性能风行欧美,还推出了世界首款智能绘画机器人Andy。2022年底,美图上线AI绘画服务,并迅速在网络走红,此时美图也开启了算力跟随之路。
2023年6月,美图一口吻颁布以美图视觉大模型为外围的七款产品,包括AI口播视频工具开拍、桌面端AI视频编辑工具WinkStudio、AI数字人生成工具DreamAvatar等。
在AI智能畛域启动一番探求后,美图总结出了AIGC的业务特点:第一,流传速度很快,留给公司的反响时期很短;第二,数据增长迅猛,容易发生爆款,对资源的需求量很大、很急切;第三,企业假构想要极速抢占市场取得竞争长处,就须要在资源交付方面投入更多。
二、多元算力的选用和运行
美图AIGC的算力组成关键以GPU为主,包括T4、V100、A10组成推理集群的基础,A800、A100、H100组成大模型训练集群的基础框架。AIGC业务最火爆的时刻,美图的GPU资源十分紧缺,因此也选用了局部NPU作为GPU算力的补充。
有了算力之后,咱们首先会做一个片面的基准测试,它能够减速咱们对GPU资源差同性的认知,同时也提供了牢靠的数据协助算法研发团队在算力选用以及算法优化上找到方向。
美图在面对多元算力的选用时,遇到了很多应战:第一,多元算力的治理和保养上班很复杂;第二,在资源调度及优化方面须要投入更多树立;第三是兼容性的疑问,美图在适配华为云昇腾这种异构算力时,在平台和算法适配方面投入很大的人力老本;第四,供应链方面,GPU厂商提供的高性能算力有限,而且会扩散在不同的区域,这样就须要在资源治理方面放大投入;第五,驳回多云架构,须要在缺点治理、灾备、稳如泰山性运转、性能、老本掂量等方面重点发力。
三、多云资源交付
美图在多云资源交付方面也面临颇多应战。
第一是资源方面的需求量渺小,包括计算、存储、网络等方面的资源;第二,随着名目运营、社区流传优惠的推动,业务数据或许面临迸发式增长,这时就须要具有高效的弹性伸缩才干;第三,关于性能的要求十分高,包括基础资源GPU以及高性能存储、网络等;第四,交付周期弛缓,须要在短时期内交付一套或许多套完整可用的消费服务。
面对这一系列应战,美图外部制订了一个交付规范,其中包括厂商交付、外部交付和继续单干才干,确保交付流程的顺畅。
厂商交付方面,咱们制订了一份名为AIGC名目GPU资源供应商必备资质的清单。清单内容包括咱们在GPU资源、CPU资源、容器、周边、网络、存储等方面的需求。经过这份清单,可以和厂商同步咱们希冀的交付内容、交付时期以及责任人等详细事项。
外部交付方面,咱们针对每个GPU厂商制订了一份排期清单,详细内容触及上班细化及人员分工,环境预备、基础设备树立及资源验收,还包括业务部署、业务测试以及流量引入。
继续单干方面,咱们和供应约活期举办会议,同步名目进展以及交付环节中遇到的疑问,此外还会依据非预期性的事情调整相应方案。
AIGC时代,算力需求迸发式增长,弛缓的GPU算力资源促成了多云环境的降生,而多云架构又促使咱们在资源交付及经常使用方面制订一套自己的规范。同时,业务为了极速抢占市场,雷同也须要依照这套规范极速交付资源。
依照上述流程, 美图在过后AIGC算力GPU资源最弛缓的环境下,用两天半的时期对接了三个云厂、十多个region、若干AZ,并向业务方交付了近万张GPU卡的资源,最终获取了多云算力。
四、多云治理和稳如泰山性运营
领有多云的算力后,美图是如何在多云治理和稳如泰山性运营方面发力的呢?
第一,架构选型。咱们充沛应用了云原生,以K8S为底座来构建咱们的多云生态。在资源规格及配比如面,咱们会严厉依照规范去执行。总而言之,咱们对厂商的云原生成熟度要求是十分高的。
第二,多云纳管。美图外部研发了多云容器治理平台,成功对多星散群的一致纳管。咱们的服务只需开启了多集群部署,就可以把它一键部署到的多云环境中。当然,也准许咱们的服务启动多集群差异化的性能。
第三,基础设备完善。咱们树立了一致的模型库,对元数据、模型存储、权限、入口、散发等启动一致。此外,咱们还树立了一致的镜像散发平台,业务镜像在该平台上成功性能,这样就可以定时、增量地散发到不同云厂商的镜像仓库中。
第四,稳如泰山性运营造设。咱们在每个节假日会制订按需重保的上班列表,经过预操作确保节假日云的稳如泰山性;咱们还树立了SRE的稳如泰山性运营平台,可以活期生成SRE稳如泰山性运营周报、巡检报告等等,报告蕴含外围业务的监控、数据等。
在稳如泰山性运营造设方面,我还想分享两点确保老本最优的战略:
第一是GPU资源运营。经过树立GPU大盘,从云厂商、区域、GPU卡类型、计费类型以及卡单价等多个维度给GPU资源确定优先级。咱们会活期复盘,把一些业务从低优先级的区域灵活地调度到高优先级区域,并且会活期清算一些未经常使用的资源、降低一些低应用率的资源规格,从而保障老本最优。
第二是业务运营。美图产品的大局部运行场景都是用户上行图片或视频后生成对应的成果。咱们会联合这些性能单次生成的老本以及每日主机的老本,最终确定每日的毛利,而后经过继续地关注ROI,保障业务稳如泰山并且老本更优。
五、多云流量调度 & 弹性伸缩
了解美图在多云治理以及稳如泰山性运营方面的应战和应答战略后,接上去聊聊多云的流量智能调度以及弹性伸缩。
美图有两个十分典型的算法模型。第一个是同步算法:流量经过算法网关后,会被散发到不同的云中,在这个场景下,咱们一致了算法网关并做了一些流量散发的举措;第二个是异步算法:流量经过算法网关后,会把它的义务写到信息队列中,在其余云的资源启动后,咱们会读取信息队列中的义务,而后经过推理,把结果经过外地网关一致上行,这个场景的特点就是一致队列以及外地上行。
接上去联合两个实在的业务场景,分享一下美图在流量调度以及弹性伸缩方面遇到的痛点以及采取的处置方案。
痛点场景一:当产品过了火爆期后,如何正外地调度之前囤积的GPU卡呢?针对这个场景,咱们首先要做到以下几点:一是尽量选用廉价且更适合的卡;二是缩小不用要的网络开支,比如网络老本、存储老本等等;三是在保障业务稳如泰山性的前提下做好老本优化上班。
关于这个痛点场景,咱们采取的第一个最佳通常方案是针对同步算法做基于5XX的回源战略调度。
当一个用户流量经过网关后,它会依照优先级依次恳求到包月集群、按需集群。当包月集群的资源负载十分高的时刻,或许会发生一些5XX的形态码或许一些自定义的形态码。依据这些形态码,网关会把这个恳求再次散发到按需集群,也是低优先级的集群。这个场景会形成用户期待时期参与,对业务是有损的。但这个场景可以大幅优化老本,所以咱们征得业务方的赞同后,针对不同的算法把它调度到相似的流量架构上。
第二个最佳通常方案是在异步算法方面做一些上班。咱们做了多集群联动弹性伸缩,评价了每朵云的性价比。每朵云都有一个弹性伸缩的中控,比如某朵云想扩容,首先会上报中控,接着这个扩容举措会交给优先级最高的云,让它成功扩容。在缩容场景下也一样,让低优先级的云成功缩容的举措。这个架构画起来比拟便捷,但是成功环节十分复杂,由于须要思索很多边界场景。
除了以上提到的两个最佳通常,咱们外部还构成一个自动的调度准绳,即基于服务亲和性的调度,关键体如今网络和存储方面。比如某服务依赖A云,咱们就尽或许防止将这个服务调度到B云上,以此缩小跨云网络传输老本。
痛点场景二:咱们某个APP突然做了一个运营推行,但业务没有及时扩容,造成最终成果不佳。在这个场景下,咱们总结出以下几个疑问:一是服务弹性不够及时且速度较慢,关键体如今机器初始化流程十分长、镜像体积大、模型文件大以及服务冷启动十分久;二是惯例的弹性伸缩战略不可满足AIGC的业务场景;三是咱们也在思索这种运营推行类的需求应该如何定制战略,保障推行能够顺利启动。
针对痛点场景二咱们采取以下处置方案:
1、提供多种弹性目的的选用。咱们不只提供基础目的,比如CPU、网络、内存,也提供业务QPS、队列MQ的长度目的。同时准许用户经过自定义的Prometheus目的来满足不凡的弹性场景。
2、在优化弹性速度方面,把容器的基础镜像放入虚机来降低pod的启动时期。
3、对虚机系统镜像做预热。的K8S集群或许会纳管多个可用区的节点,咱们会把这个系统镜像在这些可用区提早预热,缩小机器初始化时期。
4、咱们会做一些亲和性的性能,比如咱们的服务都会性能一个优先包月的战略,这个场景下一个包月机器有两个关键特点:一是包月机器没有购置初始化的流程,第二是包月机器在一些容器镜像下面会有必定的预热。
在冷启动和多模型方面,咱们制订了运转时灵活模型加载的方案。比如一个AIGC恳求进入Server后,会携带不同AIGC的恳求参数,算法处置服务在启动时会自动加载五个模型到内存中,而后它会依据恳求参数的不同进执行态切换,把某一个模型切为咱们的主模型启动推理。在这个场景下,有这样几个特点:
1、模型是自然预热的,而且能够成功灵活切换。
2、咱们会依据大盘中模型的经常使用频率,灵活地将一些算法服务中的模型切为主模型启动推理。
3、针对小流量业务,驳回小业务的混合部署来优化全体的应用率,比如将五个业务所依赖的模型都加载到一个pod外面,经过灵活参数来切换处置才干。
4、 在应答运营推行带来突发流量的场景下,咱们做了基于运营事情的弹性伸缩。美图外部也有一套一致推送平台,有运营推行的时刻它会发送蕴含以下内容的信息:推行app、推行服务对象以及预估计。咱们会依据这些信息预估针这个服务所须要扩容的数量,从而提早成功扩容举措,确保运营推行能够顺利启动。
六、大模型安保和老本树立
最后分享一下美图在大模型方面的安保和老本树立。
从SRE的角度看,咱们在大模型方面遇到两个比拟大的痛点。第一,安保方面,咱们担忧模型、用户数据、训练数据被暴露;第二,老本方面,大模型训练集群的老本十分低廉,咱们也一直努力于将算力榨干;此外大模型训练的上手老本十分高,所以咱们也努力树立一局部运行工具来简化这个流程。
在安保方面,咱们给出以下处置方案。
首先在隔离战略方面,咱们成功了环境隔离,集群是依照大团队的维度授权的;在数据隔离层面,训练数据、模型和产物存储在不同的介质过去做辨别;在网络隔离层面,咱们间接掐掉集群的公网,一些依赖性能都是由平台提早性能好的;在权限层面,咱们考究所见即所得,细化到资源读写层面;在流程把控方面,比如基础权限下发、资源放开、资源删除都须要走OA审批。
其次在数据加密层面,咱们做了镜像加密、模型加密,另内在运转时加密方面,咱们也在努力寻觅更适合的方案;咱们还要求平台都参与必要的日志审计性能,一切资源放开、删除以及权限变卦都要有记载;最后咱们也会依据一些特定的场景参与一些必要的录屏性能。
接上去分享一下老本疑问的处置方案:
1、监控诉警、巡检树立:假设发现GPU空载率比拟高,咱们会判别能否发生训练义务终止等状况。
咱们也会启动一些意外监控,比如GPU卡意外、掉卡监控以及一些经常出现的ECC失误监控;经过巡检报告,确保不遗漏集群任何时期点的运转状况;另外,除了资源层面,咱们也做了触及大模型训练资源所依赖的网络、存储等方面的告警,保障不失落任何一个意外点。
2、在易用工具树立方面,咱们外部开发了Piczoo平台,这个平台关键在算力资源治理、权限治理以及一些环境初始化做更多的树立和努力。
咱们也二次开发了一个大模型义务提交工具,算法研发同窗经过这个工具可以很轻松地把训练义务提交到大模型训练集群中,应用这个工具也可以极速检查义务形态以及义务运转日志等。
3、严厉的名目流程控制。大模型训练资源十分紧缺,但是美图有很多名目都须要经常使用这样的资源,那么就会发生一些名目排队的状况。咱们会经过一些严厉的名目流程控制,来保障这些名目之间无缝地经常使用GPU资源,以此缩小大模型集群的空跑期。
总之咱们所做的一切降本增效的上班,都是为了让企业取得更大的竞争长处。