本文整理自美圖資深SRE工程師李彬在【W(wǎng)OT2023·深圳站】大會(huì)上的主題分享,更多精彩內(nèi)容及現(xiàn)場(chǎng)PPT,請(qǐng)關(guān)注51CTO技術(shù)棧公眾號(hào),發(fā)消息【W(wǎng)OT2023PPT深圳】即可直接領(lǐng)取。
嘉賓 | 李彬
編輯 | 如煙
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
日前,在51CTO主辦的WOT全球技術(shù)創(chuàng)新大會(huì)上,美圖資深SRE工程師李彬帶來(lái)了主題演講《美圖:AIGC運(yùn)維之旅的探索和挑戰(zhàn)》,詳細(xì)介紹了美圖如何在多云環(huán)境中實(shí)施標(biāo)準(zhǔn)化管理和流程,從而更加高效一致地管理多云環(huán)境;深入探討了美圖在大模型訓(xùn)練過(guò)程中遇到安全與合規(guī)問(wèn)題后,如何通過(guò)實(shí)施有效策略,確保訓(xùn)練集群的安全穩(wěn)固。
本文將摘選其中精彩內(nèi)容,統(tǒng)一整理,希望為諸君帶來(lái)啟發(fā)。
一、美圖的AIGC之旅
美圖是一家以美為內(nèi)核、以人工智能為驅(qū)動(dòng)的科技公司,主要包括兩部分業(yè)務(wù):一是影像與設(shè)計(jì)產(chǎn)品,如美圖秀秀、美顏相機(jī)、wink等;二是美業(yè)解決方案,包括美圖宜膚、美圖魔鏡等。
2017年,美圖曾因“手繪自拍”功能風(fēng)靡歐美,還推出了全球首款智能繪畫(huà)機(jī)器人Andy。2022年底,美圖上線AI繪畫(huà)服務(wù),并迅速在網(wǎng)絡(luò)走紅,此時(shí)美圖也開(kāi)啟了算力追尋之路。
2023年6月,美圖一口氣發(fā)布以美圖視覺(jué)大模型為核心的七款產(chǎn)品,包括AI口播視頻工具開(kāi)拍、桌面端AI視頻編輯工具WinkStudio、AI數(shù)字人生成工具DreamAvatar等。
在AI智能領(lǐng)域進(jìn)行一番探索后,美圖總結(jié)出了AIGC的業(yè)務(wù)特點(diǎn):第一,傳播速度很快,留給公司的反應(yīng)時(shí)間很短;第二,數(shù)據(jù)增長(zhǎng)迅猛,容易產(chǎn)生爆款,對(duì)資源的需求量很大、很急迫;第三,企業(yè)如果想要快速搶占市場(chǎng)獲得競(jìng)爭(zhēng)優(yōu)勢(shì),就需要在資源交付方面投入更多。
二、多元算力的選擇和應(yīng)用
美圖AIGC的算力組成主要以GPU為主,包括T4、V100、A10組成推理集群的基礎(chǔ),A800、A100、H100組成大模型訓(xùn)練集群的基礎(chǔ)框架。AIGC業(yè)務(wù)最火爆的時(shí)候,美圖的GPU資源非常緊缺,因此也選擇了部分NPU作為GPU算力的補(bǔ)充。
有了算力之后,我們首先會(huì)做一個(gè)全面的基準(zhǔn)測(cè)試,它能夠加速我們對(duì)GPU資源差異性的認(rèn)知,同時(shí)也提供了可靠的數(shù)據(jù)幫助算法研發(fā)團(tuán)隊(duì)在算力選擇以及算法優(yōu)化上找到方向。
美圖在面對(duì)多元算力的選擇時(shí),遇到了很多挑戰(zhàn):第一,多元算力的管理和維護(hù)工作很復(fù)雜;第二,在資源調(diào)度及優(yōu)化方面需要投入更多建設(shè);第三是兼容性的問(wèn)題,美圖在適配華為云昇騰這種異構(gòu)算力時(shí),在平臺(tái)和算法適配方面投入很大的人力成本;第四,供應(yīng)鏈方面,GPU廠商提供的高性能算力有限,而且會(huì)分散在不同的區(qū)域,這樣就需要在資源管理方面加大投入;第五,采用多云架構(gòu),需要在故障管理、災(zāi)備、穩(wěn)定性運(yùn)行、性能、成本權(quán)衡等方面重點(diǎn)發(fā)力。
三、多云資源交付
美圖在多云資源交付方面也面臨頗多挑戰(zhàn)。
第一是資源方面的需求量巨大,包括計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)等方面的資源;第二,隨著項(xiàng)目運(yùn)營(yíng)、社區(qū)傳播活動(dòng)的推進(jìn),業(yè)務(wù)數(shù)據(jù)可能面臨爆發(fā)式增長(zhǎng),這時(shí)就需要具備高效的彈性伸縮能力;第三,對(duì)于性能的要求非常高,包括基礎(chǔ)資源GPU以及高性能存儲(chǔ)、網(wǎng)絡(luò)等;第四,交付周期緊張,需要在短時(shí)間內(nèi)交付一套或者多套完整可用的生產(chǎn)服務(wù)。
面對(duì)這一系列挑戰(zhàn),美圖內(nèi)部制定了一個(gè)交付標(biāo)準(zhǔn),其中包括廠商交付、內(nèi)部交付和持續(xù)協(xié)作能力,確保交付流程的順暢。
廠商交付方面,我們制定了一份名為AIGC項(xiàng)目GPU資源供應(yīng)商必備資質(zhì)的清單。清單內(nèi)容包括我們?cè)贕PU資源、CPU資源、容器、周邊、網(wǎng)絡(luò)、存儲(chǔ)等方面的需求。通過(guò)這份清單,可以和廠商同步我們期望的交付內(nèi)容、交付時(shí)間以及責(zé)任人等具體事項(xiàng)。
內(nèi)部交付方面,我們針對(duì)每個(gè)GPU廠商制定了一份排期清單,具體內(nèi)容涉及工作細(xì)化及人員分工,環(huán)境準(zhǔn)備、基礎(chǔ)設(shè)施建設(shè)及資源驗(yàn)收,還包括業(yè)務(wù)部署、業(yè)務(wù)測(cè)試以及流量引入。
持續(xù)協(xié)作方面,我們和供應(yīng)商定期舉行會(huì)議,同步項(xiàng)目進(jìn)度以及交付過(guò)程中遇到的問(wèn)題,此外還會(huì)根據(jù)非預(yù)期性的事件調(diào)整相應(yīng)計(jì)劃。
AIGC時(shí)代,算力需求爆發(fā)式增長(zhǎng),緊張的GPU算力資源促進(jìn)了多云環(huán)境的誕生,而多云架構(gòu)又促使我們?cè)谫Y源交付及使用方面制定一套自己的標(biāo)準(zhǔn)。同時(shí),業(yè)務(wù)為了快速搶占市場(chǎng),同樣也需要按照這套標(biāo)準(zhǔn)快速交付資源。
按照上述流程, 美圖在當(dāng)時(shí)AIGC算力GPU資源最緊張的環(huán)境下,用兩天半的時(shí)間對(duì)接了三個(gè)云廠、十多個(gè)region、若干AZ,并向業(yè)務(wù)方交付了近萬(wàn)張GPU卡的資源,最終得到了多云算力。
四、多云管理和穩(wěn)定性運(yùn)營(yíng)
擁有多云的算力后,美圖是如何在多云管理和穩(wěn)定性運(yùn)營(yíng)方面發(fā)力的呢?
第一,架構(gòu)選型。我們充分利用了云原生,以K8S為底座來(lái)構(gòu)建我們的多云生態(tài)。在資源規(guī)格及配比方面,我們會(huì)嚴(yán)格按照標(biāo)準(zhǔn)去執(zhí)行??偠灾?,我們對(duì)廠商的云原生成熟度要求是非常高的。
第二,多云納管。美圖內(nèi)部研發(fā)了多云容器管理平臺(tái),實(shí)現(xiàn)對(duì)多云集群的統(tǒng)一納管。我們的服務(wù)只要開(kāi)啟了多集群部署,就可以把它一鍵部署到當(dāng)前的多云環(huán)境中。當(dāng)然,也允許我們的服務(wù)進(jìn)行多集群差異化的配置。
第三,基礎(chǔ)設(shè)施完善。我們建立了統(tǒng)一的模型庫(kù),對(duì)元數(shù)據(jù)、模型存儲(chǔ)、權(quán)限、入口、分發(fā)等進(jìn)行統(tǒng)一。此外,我們還建立了統(tǒng)一的鏡像分發(fā)平臺(tái),業(yè)務(wù)鏡像在該平臺(tái)上完成配置,這樣就可以定時(shí)、增量地分發(fā)到不同云廠商的鏡像倉(cāng)庫(kù)中。
第四,穩(wěn)定性運(yùn)營(yíng)建設(shè)。我們?cè)诿總€(gè)節(jié)假日會(huì)制定按需重保的工作列表,通過(guò)預(yù)操作確保節(jié)假日云的穩(wěn)定性;我們還建立了SRE的穩(wěn)定性運(yùn)營(yíng)平臺(tái),可以定期生成SRE穩(wěn)定性運(yùn)營(yíng)周報(bào)、巡檢報(bào)告等等,報(bào)告包含核心業(yè)務(wù)的監(jiān)控、數(shù)據(jù)等。
在穩(wěn)定性運(yùn)營(yíng)建設(shè)方面,我還想分享兩點(diǎn)確保成本最優(yōu)的策略:
第一是GPU資源運(yùn)營(yíng)。通過(guò)建立GPU大盤(pán),從云廠商、區(qū)域、GPU卡類(lèi)型、計(jì)費(fèi)類(lèi)型以及卡單價(jià)等多個(gè)維度給GPU資源確定優(yōu)先級(jí)。我們會(huì)定期復(fù)盤(pán),把一些業(yè)務(wù)從低優(yōu)先級(jí)的區(qū)域動(dòng)態(tài)地調(diào)度到高優(yōu)先級(jí)區(qū)域,并且會(huì)定期清理一些未使用的資源、降低一些低利用率的資源規(guī)格,從而保證成本最優(yōu)。
第二是業(yè)務(wù)運(yùn)營(yíng)。美圖產(chǎn)品的大部分應(yīng)用場(chǎng)景都是用戶(hù)上傳圖片或視頻后生成對(duì)應(yīng)的效果。我們會(huì)結(jié)合這些功能單次生成的成本以及每日服務(wù)器的成本,最終確定每日的毛利,然后通過(guò)持續(xù)地關(guān)注ROI,保證業(yè)務(wù)穩(wěn)定并且成本更優(yōu)。
五、多云流量調(diào)度 & 彈性伸縮
了解美圖在多云管理以及穩(wěn)定性運(yùn)營(yíng)方面的挑戰(zhàn)和應(yīng)對(duì)策略后,接下來(lái)聊聊多云的流量智能調(diào)度以及彈性伸縮。
美圖有兩個(gè)非常典型的算法模型。第一個(gè)是同步算法:流量經(jīng)過(guò)算法網(wǎng)關(guān)后,會(huì)被分發(fā)到不同的云中,在這個(gè)場(chǎng)景下,我們統(tǒng)一了算法網(wǎng)關(guān)并做了一些流量分發(fā)的動(dòng)作;第二個(gè)是異步算法:流量經(jīng)過(guò)算法網(wǎng)關(guān)后,會(huì)把它的任務(wù)寫(xiě)到消息隊(duì)列中,在其他云的資源啟動(dòng)后,我們會(huì)讀取消息隊(duì)列中的任務(wù),然后通過(guò)推理,把結(jié)果通過(guò)當(dāng)?shù)鼐W(wǎng)關(guān)統(tǒng)一上傳,這個(gè)場(chǎng)景的特點(diǎn)就是統(tǒng)一隊(duì)列以及當(dāng)?shù)厣蟼鳌?/p>
接下來(lái)結(jié)合兩個(gè)真實(shí)的業(yè)務(wù)場(chǎng)景,分享一下美圖在流量調(diào)度以及彈性伸縮方面遇到的痛點(diǎn)以及采取的解決方案。
痛點(diǎn)場(chǎng)景一:當(dāng)產(chǎn)品過(guò)了火爆期后,如何合理地調(diào)度之前囤積的GPU卡呢?針對(duì)這個(gè)場(chǎng)景,我們首先要做到以下幾點(diǎn):一是盡量選擇便宜且更合適的卡;二是減少不必要的網(wǎng)絡(luò)開(kāi)銷(xiāo),比如網(wǎng)絡(luò)成本、存儲(chǔ)成本等等;三是在保證業(yè)務(wù)穩(wěn)定性的前提下做好成本優(yōu)化工作。
對(duì)于這個(gè)痛點(diǎn)場(chǎng)景,我們采取的第一個(gè)最佳實(shí)踐方案是針對(duì)同步算法做基于5XX的回源策略調(diào)度。
當(dāng)一個(gè)用戶(hù)流量經(jīng)過(guò)網(wǎng)關(guān)后,它會(huì)按照優(yōu)先級(jí)依次請(qǐng)求到包月集群、按需集群。當(dāng)包月集群的資源負(fù)載非常高的時(shí)候,可能會(huì)出現(xiàn)一些5XX的狀態(tài)碼或者一些自定義的狀態(tài)碼。根據(jù)這些狀態(tài)碼,網(wǎng)關(guān)會(huì)把這個(gè)請(qǐng)求再次分發(fā)到按需集群,也是低優(yōu)先級(jí)的集群。這個(gè)場(chǎng)景會(huì)造成用戶(hù)等待時(shí)間增加,對(duì)業(yè)務(wù)是有損的。但這個(gè)場(chǎng)景可以大幅優(yōu)化成本,所以我們征得業(yè)務(wù)方的同意后,針對(duì)不同的算法把它調(diào)度到類(lèi)似的流量架構(gòu)上。
第二個(gè)最佳實(shí)踐方案是在異步算法方面做一些工作。我們做了多集群聯(lián)動(dòng)彈性伸縮,評(píng)估了每朵云的性?xún)r(jià)比。每朵云都有一個(gè)彈性伸縮的中控,比如某朵云想擴(kuò)容,首先會(huì)上報(bào)中控,接著這個(gè)擴(kuò)容動(dòng)作會(huì)交給優(yōu)先級(jí)最高的云,讓它完成擴(kuò)容。在縮容場(chǎng)景下也一樣,讓低優(yōu)先級(jí)的云完成縮容的動(dòng)作。這個(gè)架構(gòu)畫(huà)起來(lái)比較簡(jiǎn)單,但是實(shí)現(xiàn)過(guò)程非常復(fù)雜,因?yàn)樾枰紤]很多邊界場(chǎng)景。
除了以上提到的兩個(gè)最佳實(shí)踐,我們內(nèi)部還形成一個(gè)默認(rèn)的調(diào)度準(zhǔn)則,即基于服務(wù)親和性的調(diào)度,主要體現(xiàn)在網(wǎng)絡(luò)和存儲(chǔ)方面。比如某服務(wù)依賴(lài)A云,我們就盡可能避免將這個(gè)服務(wù)調(diào)度到B云上,以此減少跨云網(wǎng)絡(luò)傳輸成本。
痛點(diǎn)場(chǎng)景二:我們某個(gè)APP突然做了一個(gè)運(yùn)營(yíng)推廣,但業(yè)務(wù)沒(méi)有及時(shí)擴(kuò)容,導(dǎo)致最終效果不佳。在這個(gè)場(chǎng)景下,我們總結(jié)出以下幾個(gè)問(wèn)題:一是服務(wù)彈性不夠及時(shí)且速度較慢,主要體現(xiàn)在機(jī)器初始化流程非常長(zhǎng)、鏡像體積大、模型文件大以及服務(wù)冷啟動(dòng)非常久;二是常規(guī)的彈性伸縮策略無(wú)法滿足當(dāng)前AIGC的業(yè)務(wù)場(chǎng)景;三是我們也在思考這種運(yùn)營(yíng)推廣類(lèi)的需求應(yīng)該如何定制策略,保證推廣能夠順利進(jìn)行。
針對(duì)痛點(diǎn)場(chǎng)景二我們采取以下解決方案:
1、提供多種彈性指標(biāo)的選擇。我們不僅提供基礎(chǔ)指標(biāo),比如CPU、網(wǎng)絡(luò)、內(nèi)存,也提供業(yè)務(wù)QPS、隊(duì)列MQ的長(zhǎng)度指標(biāo)。同時(shí)允許用戶(hù)通過(guò)自定義的Prometheus指標(biāo)來(lái)滿足特殊的彈性場(chǎng)景。
2、在提升彈性速度方面,把容器的基礎(chǔ)鏡像放入虛機(jī)來(lái)降低pod的啟動(dòng)時(shí)間。
3、對(duì)虛機(jī)系統(tǒng)鏡像做預(yù)熱。當(dāng)前的K8S集群可能會(huì)納管多個(gè)可用區(qū)的節(jié)點(diǎn),我們會(huì)把這個(gè)系統(tǒng)鏡像在這些可用區(qū)提前預(yù)熱,減少機(jī)器初始化時(shí)間。
4、我們會(huì)做一些親和性的配置,比如我們的服務(wù)都會(huì)配置一個(gè)優(yōu)先包月的策略,這個(gè)場(chǎng)景下一個(gè)包月機(jī)器有兩個(gè)重要特點(diǎn):一是包月機(jī)器沒(méi)有購(gòu)買(mǎi)初始化的流程,第二是包月機(jī)器在一些容器鏡像上面會(huì)有一定的預(yù)熱。
在冷啟動(dòng)和多模型方面,我們制定了運(yùn)行時(shí)動(dòng)態(tài)模型加載的方案。比如一個(gè)AIGC請(qǐng)求進(jìn)入Server后,會(huì)攜帶不同AIGC的請(qǐng)求參數(shù),算法處理服務(wù)在啟動(dòng)時(shí)會(huì)默認(rèn)加載五個(gè)模型到內(nèi)存中,然后它會(huì)根據(jù)請(qǐng)求參數(shù)的不同進(jìn)行動(dòng)態(tài)切換,把某一個(gè)模型切為我們的主模型進(jìn)行推理。在這個(gè)場(chǎng)景下,有這樣幾個(gè)特點(diǎn):
1、模型是天然預(yù)熱的,而且能夠?qū)崿F(xiàn)動(dòng)態(tài)切換。
2、我們會(huì)根據(jù)大盤(pán)中模型的使用頻率,動(dòng)態(tài)地將當(dāng)前一些算法服務(wù)中的模型切為主模型進(jìn)行推理。
3、針對(duì)小流量業(yè)務(wù),采用小業(yè)務(wù)的混合部署來(lái)提升整體的利用率,比如將五個(gè)業(yè)務(wù)所依賴(lài)的模型都加載到一個(gè)pod里面,通過(guò)動(dòng)態(tài)參數(shù)來(lái)切換處理能力。
4、 在應(yīng)對(duì)運(yùn)營(yíng)推廣帶來(lái)突發(fā)流量的場(chǎng)景下,我們做了基于運(yùn)營(yíng)事件的彈性伸縮。美圖內(nèi)部也有一套統(tǒng)一推送平臺(tái),有運(yùn)營(yíng)推廣的時(shí)候它會(huì)發(fā)送包含以下內(nèi)容的信息:推廣app、推廣服務(wù)對(duì)象以及預(yù)估量。我們會(huì)根據(jù)這些信息預(yù)估針這個(gè)服務(wù)所需要擴(kuò)容的數(shù)量,從而提前完成擴(kuò)容動(dòng)作,確保運(yùn)營(yíng)推廣能夠順利進(jìn)行。
六、大模型安全和成本建設(shè)
最后分享一下美圖在大模型方面的安全和成本建設(shè)。
從SRE的角度看,我們?cè)诖竽P头矫嬗龅絻蓚€(gè)比較大的痛點(diǎn)。第一,安全方面,我們擔(dān)心模型、用戶(hù)數(shù)據(jù)、訓(xùn)練數(shù)據(jù)被泄露;第二,成本方面,大模型訓(xùn)練集群的成本非常昂貴,我們也始終致力于將算力榨干;此外大模型訓(xùn)練的上手成本非常高,所以我們也努力建設(shè)一部分應(yīng)用工具來(lái)簡(jiǎn)化這個(gè)流程。
在安全方面,我們給出以下解決方案。
首先在隔離策略方面,我們完成了環(huán)境隔離,集群是按照大團(tuán)隊(duì)的維度授權(quán)的;在數(shù)據(jù)隔離層面,訓(xùn)練數(shù)據(jù)、模型和產(chǎn)物存儲(chǔ)在不同的介質(zhì)上來(lái)做區(qū)分;在網(wǎng)絡(luò)隔離層面,我們直接掐掉集群的公網(wǎng),一些依賴(lài)配置都是由平臺(tái)提前配置好的;在權(quán)限層面,我們講究所見(jiàn)即所得,細(xì)化到資源讀寫(xiě)層面;在流程把控方面,比如基礎(chǔ)權(quán)限下發(fā)、資源申請(qǐng)、資源刪除都需要走OA審批。
其次在數(shù)據(jù)加密層面,我們做了鏡像加密、模型加密,另外在運(yùn)行時(shí)加密方面,我們也在努力尋找更合適的方案;我們還要求平臺(tái)都增加必要的日志審計(jì)功能,所有資源開(kāi)通、刪除以及權(quán)限變更都要有記錄;最后我們也會(huì)根據(jù)一些特定的場(chǎng)景增加一些必要的錄屏功能。
接下來(lái)分享一下成本問(wèn)題的解決方案:
1、監(jiān)控告警、巡檢建設(shè):如果發(fā)現(xiàn)當(dāng)前GPU空載率比較高,我們會(huì)判斷是否出現(xiàn)訓(xùn)練任務(wù)中斷等情況。
我們也會(huì)進(jìn)行一些異常監(jiān)控,比如GPU卡異常、掉卡監(jiān)控以及一些常見(jiàn)的ECC錯(cuò)誤監(jiān)控;通過(guò)巡檢報(bào)告,確保不遺漏集群任何時(shí)間點(diǎn)的運(yùn)行狀況;另外,除了資源層面,我們也做了涉及大模型訓(xùn)練資源所依賴(lài)的網(wǎng)絡(luò)、存儲(chǔ)等方面的告警,保證不丟失任何一個(gè)異常點(diǎn)。
2、在易用工具建設(shè)方面,我們內(nèi)部開(kāi)發(fā)了Piczoo平臺(tái),這個(gè)平臺(tái)主要在算力資源管理、權(quán)限管理以及一些環(huán)境初始化做更多的建設(shè)和努力。
我們也二次開(kāi)發(fā)了一個(gè)大模型任務(wù)提交工具,算法研發(fā)同學(xué)通過(guò)這個(gè)工具可以很輕松地把訓(xùn)練任務(wù)提交到大模型訓(xùn)練集群中,利用這個(gè)工具也可以快速查看任務(wù)狀態(tài)以及任務(wù)運(yùn)行日志等。
3、嚴(yán)格的項(xiàng)目流程控制。當(dāng)前大模型訓(xùn)練資源非常緊缺,但是美圖有很多項(xiàng)目都需要使用這樣的資源,那么就會(huì)出現(xiàn)一些項(xiàng)目排隊(duì)的情況。我們會(huì)通過(guò)一些嚴(yán)格的項(xiàng)目流程控制,來(lái)保證這些項(xiàng)目之間無(wú)縫地使用GPU資源,以此減少大模型集群的空跑期。
總之我們所做的所有降本增效的工作,都是為了讓企業(yè)獲得更大的競(jìng)爭(zhēng)優(yōu)勢(shì)。