成本降低40%、資源利用率提高20%的AI應(yīng)用產(chǎn)品云原生容器化之路

來源: 騰訊云原生
作者:郭云龍
時(shí)間:2021-09-23
17100
為了滿足AI能力在公有云SaaS場(chǎng)景下,服務(wù)和模型需要快速迭代交付的需求,保障服務(wù)在不穩(wěn)定高并發(fā)時(shí)的高成功率,以及進(jìn)一步提升資源利用率,AI應(yīng)用產(chǎn)品中心進(jìn)行了一系列的調(diào)研與實(shí)踐,本篇將重點(diǎn)介紹團(tuán)隊(duì)在容器化方面的實(shí)踐經(jīng)驗(yàn)。

導(dǎo)語

為了滿足AI能力在公有云SaaS場(chǎng)景下,服務(wù)和模型需要快速迭代交付的需求,保障服務(wù)在不穩(wěn)定高并發(fā)時(shí)的高成功率,以及進(jìn)一步提升資源利用率,AI應(yīng)用產(chǎn)品中心進(jìn)行了一系列的調(diào)研與實(shí)踐,本篇將重點(diǎn)介紹團(tuán)隊(duì)在容器化方面的實(shí)踐經(jīng)驗(yàn)。

背景和問題

公有云AI SaaS產(chǎn)品(如人臉融合[1])的一般服務(wù)流程為:C端或B端客戶通過采集設(shè)備采集圖像、音視頻等,經(jīng)由云API等接入方式傳入,服務(wù)端利用強(qiáng)大的計(jì)算能力、充足的資源和相對(duì)成熟的算法對(duì)客戶輸入的多媒體內(nèi)容進(jìn)行處理。

640.webp.jpg

如上圖所示,對(duì)于一般流程來說,我們面臨著三個(gè)挑戰(zhàn)。

1.采集質(zhì)量不穩(wěn)定:由于采集設(shè)備之間存在差異,采集到的質(zhì)量也會(huì)存在差異,拿圖像處理來說,大圖和小圖會(huì)給我們的服務(wù)帶來不同的壓力,有時(shí)服務(wù)會(huì)因?yàn)榧械拇髨D并發(fā)產(chǎn)生失敗。

2.短期、高并發(fā)需求多:我們的客戶會(huì)用我們的能力實(shí)現(xiàn)不同的玩法,使用人臉融合來進(jìn)行游戲活動(dòng)宣傳就是一個(gè)很常見的運(yùn)營手段,但是這種活動(dòng)會(huì)給我們的服務(wù)帶來短期內(nèi)的高并發(fā)壓力。

3.模型、服務(wù)迭代快:AI SaaS服務(wù)的競(jìng)爭(zhēng)非常激烈,經(jīng)常會(huì)有客戶提出新的需求,加上算法難免會(huì)有badcase,所以我們的服務(wù)也要進(jìn)行很頻繁的升級(jí)迭代。

640.webp (1).jpg

我們?cè)賮砜聪挛覀內(nèi)萜骰暗木?jiǎn)架構(gòu)(如上圖所示),物理機(jī)的開發(fā)部署大背景下,我們的邏輯服務(wù)不論是結(jié)構(gòu)上還是基礎(chǔ)上都屬于大泥球模式,另外算法服務(wù)也常有混布的現(xiàn)象存在。

這種架構(gòu)也導(dǎo)致了忙時(shí)服務(wù)間搶占資源的情況頻繁發(fā)生,影響服務(wù)成功率及耗時(shí),導(dǎo)致我們沒有辦法很好的滿足客戶的需求;而閑時(shí)資源利用率非常低,容易造成資源浪費(fèi)。

以兩個(gè)實(shí)際的例子來說明:

升級(jí)發(fā)布時(shí),我們需要先從LB中剔除一個(gè)節(jié)點(diǎn),并在節(jié)點(diǎn)上觀察沒有流量進(jìn)入后進(jìn)行服務(wù)升級(jí)。升級(jí)完成后,人工對(duì)服務(wù)進(jìn)行成功性檢測(cè),檢測(cè)結(jié)果OK后再加回LB中。

客戶搞活動(dòng)時(shí)提出高并發(fā)需求,如果當(dāng)前物理機(jī)/vm資源池不滿足,需要向資源同學(xué)緊急提物理機(jī)需求,資源同學(xué)協(xié)調(diào)到機(jī)器后,我們需要人工對(duì)機(jī)器環(huán)境/網(wǎng)絡(luò)重新初始化,然后執(zhí)行上述1操作。待活動(dòng)結(jié)束后機(jī)器閑置,易造成成本浪費(fèi)。

為了更好的滿足客戶不斷迭代的需求,減輕研發(fā)的運(yùn)維負(fù)擔(dān),補(bǔ)齊彈性能力和接入高效的服務(wù)管控平臺(tái)對(duì)我們來說是迫切需要的。趁著公司推動(dòng)上云的時(shí)機(jī),我們對(duì)架構(gòu)組件進(jìn)行了幾輪調(diào)研和優(yōu)化。本文主要對(duì)容器化過程進(jìn)行闡述。

容器化過程記錄

我們的容器化上云到現(xiàn)在為止可以分為三步:容器化,穩(wěn)定性提升和利用率提升。

容器化

這里的容器化映射到業(yè)務(wù)上來說,除了將服務(wù)載體由物理機(jī)遷移到容器上,更主要是將原來的復(fù)雜邏輯解耦,微服務(wù)化。

如下圖所示,我們先對(duì)服務(wù)本身做了瘦身微服務(wù)化,另外借助于容器的能力,將原來混布的服務(wù)徹底分開。如何進(jìn)行微服務(wù)化會(huì)因業(yè)務(wù)的不同存在差異,本篇對(duì)此不做贅述。

640.webp (2).jpg

穩(wěn)定性提升

在第一步容器化之后,我們很快享受到了飛一般的服務(wù)升級(jí)和擴(kuò)容速度。同時(shí)對(duì)容器化比較淺顯的理解也給我們帶來了一些新的問題。

1.調(diào)用量波動(dòng)較大的服務(wù)由于頻繁擴(kuò)縮容導(dǎo)致業(yè)務(wù)失敗

2.一些客戶傳的大圖在低核容器上處理效率較低

3.集群資源緊缺導(dǎo)致的容器無法按需擴(kuò)容等。

對(duì)于上述三個(gè)問題,我們也分別找出了應(yīng)對(duì)方案。

靈活使用探針

起初我們的服務(wù)都是沒有設(shè)置存活和就緒檢測(cè)(探針[2])的,Prestop給縮容時(shí)加上了一層保護(hù),但是并不徹底,而且在擴(kuò)容時(shí)難免會(huì)有服務(wù)失敗。

探針給我們提供了另一種強(qiáng)大的解決方式。一開始時(shí),我們參照鏈接中的示例,進(jìn)行簡(jiǎn)單的端口檢查來判斷服務(wù)是否正常運(yùn)行。后來我們發(fā)現(xiàn)了更多靈活的運(yùn)用技巧和使用場(chǎng)景。以下列出幾個(gè)例子供大家參考以及發(fā)散出更多有趣實(shí)踐。

例子1:在一開始時(shí)大家經(jīng)常遇到LB Agent啟動(dòng)時(shí)獲取路由必然失敗的情況,我們可以使用就緒探針來進(jìn)行LB的預(yù)加載(如下圖),即可達(dá)到LB獲取成功后標(biāo)記服務(wù)啟動(dòng)成功的效果。

640.webp (3).jpg

例子2:由于一些低版本OS的實(shí)例存在弱口令的問題,大家需要把所有依賴舊版OS的鏡像全部升級(jí),這個(gè)工作對(duì)我們來說是及其繁重的,于是我們同樣利用了探針,在容器標(biāo)記服務(wù)啟動(dòng)前把弱口令全部干掉。

640.webp (4).jpg

例子3:某個(gè)服務(wù)比較特殊,內(nèi)存占用經(jīng)常波動(dòng),當(dāng)內(nèi)存小于某個(gè)值時(shí),服務(wù)會(huì)偶現(xiàn)失敗,但是端口正常存活。這時(shí)我們可以使用ConfigMap+python腳本來進(jìn)行一些復(fù)雜的檢測(cè):

640.webp (5).jpg

640.webp (6).jpg

640.webp (7).jpg

640.webp (8).jpg

針對(duì)大圖進(jìn)行篩選適配

容器化后,我們發(fā)現(xiàn)某個(gè)算法在接收到高分辨率圖片時(shí),服務(wù)成功率會(huì)出現(xiàn)波動(dòng),原因是算法在對(duì)提特征時(shí)會(huì)出現(xiàn)更多的消耗,這一現(xiàn)象在物理機(jī)上部署時(shí)被物理機(jī)核數(shù)多的優(yōu)勢(shì)掩蓋住了,一旦到了核數(shù)較低的容器上就顯露了出來。為了解決這個(gè)問題,我們?cè)谏蠈舆壿嬛行略隽舜髨D篩選功能(如下圖所示),如果檢測(cè)到是大圖,則走回物理機(jī)集群(由于初始時(shí)TKEx提供最高規(guī)格容器核數(shù)為8核,后來才擴(kuò)充支持了24核及以上),如果是一般圖片,則走容器集群。

640.webp (9).jpg

多集群部署

在使用TKEx時(shí),我們經(jīng)常會(huì)碰到部署的workload會(huì)因?yàn)檎w集群資源不足的原因,無法擴(kuò)容到指定的max值,一度非??鄲馈?/p>

TKEx的同學(xué)也是推薦我們?cè)谄渌募簭?fù)制一份資源,當(dāng)一個(gè)集群擴(kuò)不出來時(shí),另一個(gè)集群充當(dāng)備份角色。在這么調(diào)整過后,我們的擴(kuò)容成功率逐步上升。

后來又出現(xiàn)了整個(gè)地域的資源都比較緊缺的情況,于是我們把一些對(duì)時(shí)延不那么敏感的服務(wù)進(jìn)行了多地域部署(如下圖),最終將集群資源不足的風(fēng)險(xiǎn)進(jìn)一步降低。

640.webp (10).jpg

當(dāng)一地資源不足的情況下使用多地域部署以及LB時(shí),一般LB都會(huì)根據(jù)后端響應(yīng)時(shí)間動(dòng)態(tài)調(diào)整各節(jié)點(diǎn)權(quán)重,所以我們應(yīng)注意以下兩點(diǎn):

關(guān)閉就近訪問

根據(jù)上下游調(diào)整LB權(quán)重(比如上游服務(wù)部署在廣州,下游同時(shí)部署了南京和廣州,這是南京和廣州的LB權(quán)重分別為130,100)

利用率提升

在進(jìn)行過一輪穩(wěn)定性提升之后,我們可以更加自信的利用彈性能力,利用率也有了顯著提升。不過依舊有兩個(gè)問題阻礙著我們的利用率更進(jìn)一步。一個(gè)是有些服務(wù)模型大,啟動(dòng)慢,流量突增時(shí)服務(wù)無法很及時(shí)的擴(kuò)容出來,這時(shí)我們必須要提前占用一些資源導(dǎo)致利用率提不上去。

針對(duì)第一個(gè)問題,我們挑選了部分流量有規(guī)律的服務(wù)。利用TKE提供的定時(shí)HPA能力,在已知流量高峰前定時(shí)進(jìn)行一輪擴(kuò)容。

640.webp (11).jpg

成果

1632385772(1).png

當(dāng)前我們的AI服務(wù)已經(jīng)基本完成容器化的升級(jí)。成功率高,擴(kuò)容快,歡迎大家掃碼進(jìn)行體驗(yàn)。

參考資料

[1]人臉融合:【https://cloud.tencent.com/product/facefusion】

[2]探針:【https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/】

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購買頁直接購買。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問題,加機(jī)器就能解決?
高可用這個(gè)問題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問題與隱性的人員成本問題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢性能弱,只讀分析引擎來幫忙
復(fù)雜查詢性能弱,只讀分析引擎來幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫在進(jìn)行復(fù)雜查詢時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家