百度搜尋智慧化算力調控分配方法

人工智慧洞察站發表於2023-11-16

來源:百度Geek說
作者 | 泰來

導讀 
introduction
隨著近年深度學習技術的發展,搜尋演算法複雜度不斷上升,算力供給需求出現了爆發式的增長。伴隨著AI技術逐步走到深水區,演算法紅利在逐步消失,邊際效應日益顯著,算力效能的提升尤為重要,同時隨著宏觀經濟影響,大規模的算力需求供給也遭遇到了瓶頸。同時隨著流量、時間或系統故障時帶來的容量變化,總算力約束也在時刻改變,週期性的出現波峰、波谷,以及會因為流量突增、網路抖動等原因導致系統出現穩定性問題。
在此背景下,需要一種更加智慧化、個性化的算力調控分配方法,不斷提高系統的自適應性,使得在給定資源上限的情況下,最大化資源投入的性價,同時在故障時刻發生時自適應的調整算力分配,降低系統負載。


全文4328字,預計閱讀時間11分鐘。


GEEK TALK

01

問題與挑戰

網際網路行業十餘年的蓬勃發展及硬體效能的持續攀升,使得 Ranking相關演算法進入到了深度學習時代,模型、技術創新層出不窮。但隨著技術逐步進入到深水區,在同樣的算力需求下對效果的增長邊際已經非常明顯。

同時伴隨當前宏觀經濟影響,大規模算力的需求供給也持續遭遇瓶頸,如何在有限的算力資源內不斷創造出更大的效果價值是一項非常有挑戰性的工作。

百度搜尋智慧化算力調控分配方法

為此我們不斷探索根據流量價值及系統狀態自適應的進行算力分配,使得總體投入產出比不斷提升。

百度搜尋智慧化算力調控分配方法


GEEK TALK

02

整體思路

目前搜尋系統流轉過程中調控手段彼此相互之間是獨立的,調控的運算元的輸入輸出沒有全域性視角,調控運算元彼此割裂、聯動和管理是比較困難的,且調控手段大多基於靜態閾值配置。但我們認為系統中請求經過每層的調控運算元是有狀態的,理想的級聯絡統中每種調控運算元應該是全域性可見的,需要從全域性的視角更好的審視業務系統,站在更高的維度去看算力調控分配這項工作。

我們在微觀和宏觀兩方案開展了相關調控工作:

1.微觀:忽略系統容量狀態,在當前時刻下根據流量產生的價值來動態的分配算力,使得在給定算力總約束下獲得全域性最優。

百度搜尋智慧化算力調控分配方法

2.宏觀:隨著流量、時間或系統故障時帶來的容量變化,總算力約束在不斷改變,需要在給定的資源及響應時間限制下,計算出在當前限制條件下的最優分配方式。動態的調整系統核心階段的計算強度,合理調控峰值算力。並基於搜尋系統的實時狀態反饋,自動的調節系統的安全狀態。使搜尋系統能夠在速度、資源、效果、穩定性等多個維度上進行自適應的調控。

百度搜尋智慧化算力調控分配方法

2.1 問題建模

變數說明:

第i條流量  。

流量i在階段j的具體資訊,例如佇列長度,模型選型等,可以用表示,其中的alpha beta gamma都可以根據經驗進行設定並用實驗來驗證。

流量在第j階段的折扣因子  。

第i條流量的價值

  。

百度搜尋智慧化算力調控分配方法

目標:透過調控流量在各個階段的資訊例如佇列長度、模型選型等,從而調節折扣因子,最終實現流量價值最大化,假設M條流量經過N個階段表達如下:

百度搜尋智慧化算力調控分配方法

C1 成本約束,對於任意一個階段,都必須小於等於其成本;

C2 時間約束,對於任意一個請求流量,在N個階段的耗時綜合都必須小於等於規定的耗時;

C3 輔助約束,對於任意一個請求任意一個階段都必須有大於等於0的值。

對於一個實時的搜尋系統來說,線上進行上述的最佳化並不太實際也會帶來比較多的困難。為了簡化分析和提高系統的魯棒性,我們將上述N個階段拆封成N個子問題,這樣方便對各個階段進行監控和可靠的干預,提高系統的魯棒性,例如當系統出現巨大的變化時,可以隨時動態調整各個階段的引數。簡化問題求解,將C1、C2約束進行一定的拆分。

百度搜尋智慧化算力調控分配方法

具體來說,對於階段j,流量的價值最大化,我們可以看作是上述的一個子問題。

百度搜尋智慧化算力調控分配方法

假設  是單調遞增的,但其對  的導數是單調遞減的,也就是其價值會隨著配置資源的增加而越來越緩慢的增加。

2.2 示例說明

示例:用相關性精排階段的彈性候選集進行舉例

假設將流量i細化成第i條Query,j階段則為具體篩選階段,增加一個維度k表示URL級別的引數和特徵資訊。在正排候選集篩選階段k資訊表示為多個特徵的分數資訊,authority_feature【權威性特徵】、click_feature【點選特徵】...correlation_feature【相關性特徵】。

則在正排候選集篩選階段請求i的第k條url的資訊可以表示為:

百度搜尋智慧化算力調控分配方法

流量i在彈性候選集下的折扣因子,可以看作是 1 - 刪掉URL數量在原本可出現在最終排序的Top40的機率,假如候選集合中完全沒有刪除的URL則無折扣損失,若是候選集合中刪除了URL,但對最終Top40的召回無影響,也可以看作是對總價值無折扣影響。

百度搜尋智慧化算力調控分配方法

具體來說,針對第i條query的k條url的具體資訊,我們採用多個維度的特徵進行考量。

百度搜尋智慧化算力調控分配方法

其中

百度搜尋智慧化算力調控分配方法

如果是0表示丟棄,1表示留下第k條url,希臘字母表示的是採取的閾值標準,例如評分位於後x%。如果一個url的所有特徵貢獻度排名都處於分佈的末尾,則會將該url從候選集中剔除。

百度搜尋智慧化算力調控分配方法

GEEK TALK

03

關鍵技術

過去傳統的調控方式下,既不知道上游階段做過哪些調控動作,也不知道在自己的階段上做的調控動作,下游是如何反饋的,只能追求自己的區域性最優。而我們認為在搜尋這種分層的級聯絡統下,越往下流轉看到的特徵和訊號越多,調控動作應該隨著流轉過程發生狀態轉變,不應該是靜態的。我們創新的採用彈性級聯調控框架將調控手段進行組合,追求全域性的最優解,從全鏈路上提升算力投入產出的價效比。

百度搜尋智慧化算力調控分配方法

具體做法,我們構建的彈性級聯框架包含四個部分:

1、調控運算元集合,將調控動作按照Query級別、URL級別、Feature級別進行劃分,調控運算元擁有相同基類,介面規範統一;

2、計算中心,負責實時計算各種調控動作所需的各類訊號、以及流量價值的判斷、容量訊號的獲取等;

3、引數集合,經過計算中心產出的特徵和訊號,固化超引數,使得模組內超引數全域性可見,跨模組之間按照規定協議統一進行互動;

4、調控決策器,主要負責根據引數集合,確定各個階段的調控檔位設定並呼叫運算元集合裡的運算元進行執行,每個調控階段包含控制流(Control Level)和反饋流(FeedbackLevel),控制流能結合當前階段看到的特徵和訊號給出它下游其他階段的調控檔位,反饋流是當前階段參考其他階段給出的調控檔位建議和當前階段看到的特徵和訊號確定實際執行的調控檔位。透過這種方式,每個調控階段既能看到到其他階段實際執行的調控狀態,同時也能根據它們對當前階段的指導建議進行綜合判斷,最終在全鏈路上獲取全域性最優解。

百度搜尋智慧化算力調控分配方法

如上圖左側可以看到整個彈性級聯框架的組成部分,右側是舉例正排階段的彈性候選集的實際計算過程,將各種維度的特徵透過計算中心生成價值引數,用於調控決策器進行決策,然後給出實際的正排計算集合。我們不僅建立控制反饋流級聯自適應調控系統,而且還提供了一個全域性視角的彈性算力分配控制中心。彈性算力系統主要透過對叢集各種維度指標的獲取、策略分析及週期性執行最適合當前機器負載狀態的策略組合引數來實現其核心彈性算力分配決策。

根據當前搜尋系統,當前智慧彈性調參把系統定義和描述為下面4種狀態:系統異常狀態,負載峰值狀態,彈性過渡狀態,負載低谷狀態,根據不同的系統狀態,執行當前狀態的策略集合,從而使資源使用率及業務收益效果最優。具體方案見下圖:

百度搜尋智慧化算力調控分配方法

主要包含流程如下:

資訊採集:自動化的週期性採集業務日誌(流量pv,流量分類,流量質量)和機器狀態(CPU/MEM使用率)等資訊。對於這些資訊進行深入挖掘分析,主要從以下幾個時間維度進行採集:

1、峰值時間段模組狀態訊號;

2、前n個採集週期模組狀態訊號;

3、前一天同時刻前n個採集週期模組狀態訊號;

4、前一週同時刻前n個採集週期模組狀態訊號。

系統狀態預估: 對各種維度資訊採集,之後透過人工規則,線上策略,離線預估等手段評估系統當前狀態,把目前系統劃分為系統異常狀態,系統負載峰值狀態,系統負載低谷狀態,系統負載過渡狀態。下面是系統狀態定義規則,及狀態轉移圖:

系統異常狀態:系統發生故障,例如系統可用性SLA,CPU負載率,結果空值率等不符合預期。

系統負載峰值狀態:系統請求數,CPU負載率等系統容量指標大於指定閾值。

系統負載低谷狀態:系統請求數,CPU負載率等系統容量指標小於指定閾值。

系統負載過渡狀態:負載峰值和低谷之間的過渡狀態。

百度搜尋智慧化算力調控分配方法

檔位判斷:根據系統狀態抽象成便於系統決策的系統檔位,及每個檔位內需要關注的系統問題。

1、異常檔位:如何快速服務降級,保證保證系統質量。

2、峰值檔位:需要關注系統的穩定性和響應時間,以確保系統在高負載下依然能夠穩定執行。

3、低谷檔位:可以考慮最佳化系統資源的分配,提升資源的投入產出比。在探測到系統出現異常故障狀態時。

4、過渡檔位:一種中間狀態,它的主要作用是在系統從低負載狀態過渡到高負載狀態,或從高負載狀態過渡到低負載狀態時,提供一個緩衝階段,以避免系統狀態的突然跳變。過渡檔位不進行策略的調整,而是保持系統在一個相對穩定的狀態。這樣做的目的是為了避免頻繁的策略調整帶來的系統震動,保證系統的穩定性。

方案決策執行:

降級檔位主要應對系統異常或重大風險,其對應的策略包括關閉被動觸發流量,以及降低召回集合,降低複雜模型計算等策,透過這種方式降低系統的負載,保證核心業務的正常執行。低谷檔位對應的是彈性策略集,這些策略主要目的是在低谷期加強複雜策略的計算,提升搜尋效果。而在峰值檔位,我們主要採用削峰策略,包括減少被動觸發流量,以確保系統在高負載下依然能夠穩定執行。

示例:影片搜尋彈性擴觸發:

在系統資源容量低谷階段,根據指標採集資料計算當前系統容量資源冗餘情況,基於冗餘資源進行擴觸發比例計算,透過彈性算力決策模組下發觸發訊號,利用閒時資源擴大流量的觸發面。


GEEK TALK

04

總結與展望

透過基於彈性級聯框架的調控方式,提升了分層系統的效益比,對於每個使用者請求實施精細化、差異化的調控組合,在算力效能提升上取得了不錯的成績。

算力分配是架構研究的核心問題之一,未來會在以下兩個方面持續開展系統性工作:

1、結合AI大模型的推理能力在調控組合上可以做到更加精細化,在算力效能的提升上會帶來更大的挖掘空間;
2、透過自適應的宏觀調控給系統穩定性帶來了柔性降級能力,後續會在這個方向上持續深耕,不斷提升系統自動化的處置能力。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027828/viewspace-2995601/,如需轉載,請註明出處,否則將追究法律責任。

相關文章