美團外賣廣告智能算力的探索與實踐

在深度學習時代,算力的需求和消耗日益增加,如何下降算力成本,提升算力效率,逐漸成爲一個重要的新課題。智能算力旨在對算力進行精細化和個性化分配,實現最優化資源利用。本文主要分享美團外賣廣告在智能算力探索和實踐過程當中積累的經驗,但願能給你們帶來一些幫助或者啓發。前端

1. 業務背景

目前,美團外賣日訂單量已突破4000萬,成爲美團最爲重要的業務之一。外賣廣告服務也從最初的支撐單一業務線發展到如今的十餘條業務線,服務總體承受的流量日益增加,所消耗的機器資源也達到了必定的規模。算法

在外賣場景下,流量呈現明顯的雙峯結構,即午飯和晚餐兩個時段爲流量波峯,其他時段流量較小。在這種流量特色下,外賣廣告服務在高峯時段面臨較大的性能壓力,在非高峯時段存在大量算力冗餘,從全局來看,機器算力分配效率低,流量價值仍然具備較大的挖掘空間。一方面,流量消耗的算力沒有根據流量價值進行動態的分配,形成系統在高價值流量上算力分配不足,價值沒有獲得充分的挖掘,而在低價值流量上,卻存在浪費大量算力的現象;另外一方面,在非高峯時段,系統流量較低,致使系統的總體資源利用率偏低,限制了系統獲取更高的業務收益。後端

所以,算力須要進行更合理的分配來獲得更加高效的利用。當前業界對於動態算力分配的研究較少,以阿里巴巴定向廣告平臺的DCAF[1]爲表明,該方案根據流量價值進行差別化的算力分配,對不一樣價值的流量分配不一樣的候選隊列長度,實現有限資源約束下的收益最大化。DCAF提供了一種優秀的解決方案,但該方案在外賣廣告場景下存在必定的侷限性。安全

針對外賣廣告場景,外賣廣告技術團隊在DCAF方案的基礎上進行了一系列探索和改進,首次進行了隊列彈性分配和模型彈性分配相結合的嘗試,並取得了不錯的收益。一方面,在機器資源持平的狀況下,CPM能夠提高2.3%;另外一方面,在業務收益持平的狀況下,機器資源能夠減小40%,最後咱們在外賣列表廣告精排階段推全了機器資源持平的方案。架構

2. 總體思路

在外賣廣告投放引擎中,爲應對極大的在線流量壓力和龐大的候選集,咱們將整個檢索過程設計成候選集依次遞減的漏斗型級聯架構,主要包含召回、粗排、精排、機制等模塊。框架

實現智能算力的總體思路,是在系統算力容量約束下,對不一樣價值流量進行差別化算力分配,從而提升在廣告檢索過程當中的算力分配效率,實現收益的最大化。智能算力主要包括如下四個要素:運維

1. 流量價值量化:流量價值指流量爲平臺、廣告商家、用戶三方帶來的收益,系統須要具有量化流量價值的能力。異步

2. 流量算力量化:流量算力指流量在系統內消耗的機器資源,在外賣廣告場景下,流量消耗的算力和候選集大小、召回通道數量、模型大小、鏈路複雜度等系統變量緊密相關,一樣系統須要具有量化流量算力的能力。函數

3. 系統算力容量量化:系統算力容量指系統的機器資源總和,和流量算力量化的量綱一致,一般能夠經過壓測等手段獲取系統的算力容量;在系統算力分配過程當中,須要保證整體流量算力消耗不超過系統的算力容量。性能

4. 智能算力分配:基於以上三個要素,在廣告投放引擎全鏈路進行智能算力分配,咱們把算力分配的手段定義爲「彈性動做」,在外賣廣告場景下,咱們主要概括瞭如下四種動做:

  • 彈性隊列:線上檢索是一個漏斗的過程,不一樣價值流量能夠在級聯漏斗的各模塊中分配不一樣候選隊列長度。
  • 彈性模型:在模型預估服務中,不一樣價值流量能夠分配不一樣模型,大模型相對小模型預估效果更好的同時消耗的算力也更多。
  • 彈性通道:在多通道召回中,不一樣價值流量能夠分配不一樣的召回通道。
  • 彈性鏈路:在檢索鏈路上,不一樣價值流量能夠分配不一樣複雜度的檢索鏈路。

    這些彈性動做的可選範圍,定義爲「彈性檔位」,如隊列長度100和200對應彈性隊列的兩個不一樣檔位。在智能算力下,算力的分配過程即彈性動做和彈性檔位的智能決策過程

挑戰分析

爲了讓智能算力在外賣廣告場景下落地,咱們主要面臨着以下的挑戰:

  • 問題求解

    • 挑戰點:智能算力的目標是最優化算力資源分配,這就要求咱們對「在系統算力約束下,最大化流量收益」這個問題進行求解。
    • 應對思路:參考已有方案,將問題拆解爲流量價值預估、流量算力預估以及算力分配三個子問題進行求解,並針對外賣廣告場景進行探索和改進。
  • 系統穩定性保障

    • 挑戰點:將系統算力分配託管給智能算力框架,從等額算力分配到智能算力分配,不只須要保證智能算力框架自己的穩定性,更須要保證系統全鏈路的平穩運行。
    • 應對思路:除了監控報警、熔斷降級等常規保障手段,咱們實現了基於系統狀態的實時調控功能,保障系統穩定性。
  • 通用性&擴展性

    • 挑戰點:兼顧基礎能力的複用和個性化能力的擴展,支撐外賣廣告推薦和搜索兩大方向,多個業務場景的接入。
    • 應對思路:核心組件以SDK形式提供可複用、可擴展能力,同時基於通用的價值評估指標、算力評估指標和智能算力框架,支撐多彈性動做的組合決策和多業務場景的高效接入。

3. 方案設計

通過工程團隊和算法團隊深度Co-Design後,咱們設計了一套多動做組合決策的智能算力框架。整個框架由決策組件、採集組件和調控組件組成,其中決策組件做爲智能算力框架的核心,以SDK形式嵌入應用服務,提供可複用可擴展的多動做組合最優檔位決策能力系統穩定性保障能力,爲廣告投放引擎的各階段賦能;採集組件和調控組件爲系統穩定性保障提供支撐。下面主要對最優檔位決策和系統穩定性保障兩個模塊進行詳細介紹。

3.1 最優檔位決策

在業內已有彈性隊列求解方案的基礎上,咱們進行一系列探索和改進:

  • 經過選用更加通用的流量算力評估指標,同時增長流量算力預估模塊,保證量化指標通用的同時提升精確度,解決算力量化不通用和不精確的問題。
  • 經過構建特殊檔位,首次嘗試了彈性隊列和彈性模型的結合,解決了部分流量沒法建模的問題。

基於以上策略,咱們實現了多彈性動做組合最優化檔位決策。

3.1.1 問題建模

現有方案

DCAF[1]將該問題轉化爲對應的對偶問題進行求解,獲得決策公式,實現彈性隊列分配。

方案改進

上述建模方案在外賣廣告場景中存在如下問題:

如圖所示,因爲檔位$j=j_0$的算力和價值已知,無需對不一樣模型的價值和算力進行預估,後續的流量價值預估和流量算力預估工做都面向彈性隊列便可。

3.1.2 決策框架

如圖所示,最優檔位決策模塊分爲離線和在線兩個階段,包含以下四個子模塊:

  • 流量價值預估模塊(離線+在線):預估流量在不一樣檔位下的價值。
  • 流量算力預估模塊(離線+在線):預估流量在不一樣檔位下的算力。
  • 離線 λ 求解模塊(離線):經過回放歷史流量,利用二分查找算法求解最優 λ。
  • 在線決策模塊(在線):對線上流量,基於檔位決策公式計算最優檔位,並根據計算結果分配不一樣模型和隊列長度。

3.1.3 流量價值預估

流量價值預估是智能算力決策的核心,要求具有必定準確性。而線上進行模型預估會增長檢索鏈路耗時,咱們採用離線XGB模型預估+在線查找詞表的方案,既保證了預估的準確性,又足夠輕量。

價值評估指標選取:通常來講,流量價值指當前流量爲廣告平臺帶來的收入;在外賣廣告場景中,咱們關注平臺收入的同時,也關注商家的收入,所以咱們的流量預估的指標選定爲$k_1 * 平臺收入 + k_2 * 商家收入$。

如圖所示,流量價值預估模塊包含離線和在線兩個階段。

離線階段

  • 特徵篩選&分桶:基於離線特徵重要性分析和分佈狀況,進行特徵篩選和分桶。
  • 模型訓練

    • 主要問題:初期咱們採用統計方案,在特徵分桶較多的狀況下,數據稀疏問題嚴重,且隊列長度越大,數據越稀疏。
    • 解決方案:採用XGB模型代替統計方案,加強泛化能力。
  • 分桶價值存儲:不一樣特徵分桶的價值預估結果以KV結構寫入詞表。

在線階段

  • 特徵抽取&解析:進行特徵抽取、解析,按照離線分桶規則生成Key值。
  • 原始價值預估:根據Key值查找對應分桶的價值,而後經過線性插值計算原始隊列長度下請求的價值。
  • 檔位價值預估:以下圖所示,藉助粗排打分,經過計算不一樣檔位下價值的衰減狀況,實現不一樣檔位的價值預估。

3.1.4 流量算力預估

業內智能算力的落地以彈性隊列爲主,通常採用隊列長度做爲流量算力評估指標,而隊列長度做爲流量算力評估指標面臨如下兩個問題:

  • 通用性問題:在彈性模型、彈性通道和彈性鏈路中流量算力消耗不禁隊列長度惟一肯定,好比不一樣來源的流量可能走不一樣模型(不一樣模型算力消耗可能不一樣)。
  • 精確度問題:外賣廣告場景下,即便對於彈性隊列動做,流量算力消耗和隊列長度也不是簡單的線性關係。

算力評估指標選取:爲了解決以上問題,咱們採用流量消耗的CPU時間做爲流量算力評估指標。

如圖所示,流量算力預估包括離線和在線兩個階段。

離線階段

  • 特徵篩選&分桶:基於離線特徵重要性分析和分佈狀況,進行特徵篩選和分桶。
  • 模型訓練

    • 訓練過程:首先將樣本劃分到不一樣特徵分桶中(同一分桶中隊列長度不一樣,其餘特徵相同),而後分別對不一樣分桶擬合算力和隊列長度的關係。

      • 主要問題:因爲數據分佈不平均,隊列長度大於必定閾值後,因爲數據稀疏,分桶內算力統計值開始出現波動,不利於線上決策。
    • 爲了解決數據稀疏的問題,並擬合真實業務中的拆包現象,咱們使用了分段線性擬合方案,將算力和隊列長度之間的關係擬合爲分段線性函數(下圖是某個特徵分桶內算力和隊列長度關係擬合結果)。
  • 算力詞表存儲:不一樣特徵分桶的算力預估結果以KV結構寫入詞表。

在線階段

  • 特徵抽取&解析:進行特徵抽取、解析,按照離線分桶規則生成Key值。
  • 算力預估:根據Key值查找對應分桶的算力。

3.1.5 檔位決策

1. 離線 λ 求解

基於價值預估和算力預估模塊,經過回放歷史流量,利用二分查找算法求解最優 λ。

離線 λ 求解的核心步驟是流量回放:經過重放歷史同時段流量,複用線上邏輯,爲每一個請求模擬決策當前 λ 下的最優檔位。

主要問題及解決方案

  • 問題描述:離線流量大,將流量劃分爲多個時間片後,λ 的求解過程須要進行屢次流量回放,仿真複雜度高。
  • 解決方案:經過流量採樣、多個時間片並行化求解等方案,快速求解最優 λ。

2. 在線檔位決策

3.2 系統穩定性保障

在智能算力下,系統從等額算力分配轉換成動態算力分配,爲保障系統服務穩定性,咱們提供了熔斷降級等常規措施,還實現了基於系統狀態的PID實時調控功能。

  • 流量准入:提供分廣告位、城市、時段等不一樣流量准入規則,控制智能算力流量。
  • 監控報警:提供PV和系統總體兩個維度的檔位、性能、算力等變化監控和閾值報警。
  • 熔斷降級:實時監控智能算力的異常,達到配置的異常閾值後,智能算力會自動熔斷降級,進行等額算力分配。
  • 異步決策:爲保障主流程總體鏈路耗時不增加,智能算力決策是一個異步的過程,超時後進行等額算力分配。

3.2.2 基於系統狀態的PID實時調控

PID(Proportion Integration Differentiation)是一個經過比例、積分、微分進行控制的主流控制算法,咱們經過對系統狀態的實時監控和變化感知,基於PID算法對系統狀態進行實時調控,保證系統狀態的穩定。

系統狀態一般能夠用系統的CPU/GPU利用率、QPS、RT(Avg、TP9九、TP999等)、調用失敗率(FailRate)等指標衡量。

調控目標

調控目標應該選取最可以快速反映出系統狀態變化的指標,基於這個原則,咱們選取了TP99九、FailRate、CpuUtils做爲調控目標。

調控策略

基於PID調控器,支持多種調控策略:

  • 調控動做檔位:對於彈性隊列,能夠調控隊列長度的係數或者上限,從而調節候選隊列長度。
  • 調控決策公式:能夠經過調控決策公式的 λ 係數,從而調節系統總體的算力消耗。

調控過程

  • 系統狀態上報:投放引擎服務經過監控系統,實時反饋系統當前狀態,同步到MQ,其中核心指標具備10s的時效性。
  • 採集組件:基於Flink流處理框架,實時解析聚合系統狀態數據,並進行去噪和平滑處理,處理後的數據寫到KV存儲。
  • 調控組件:基於PID算法,經過輪詢感知系統狀態變化,根據選擇的調控目標,實時調控系統算力,將調控結果反饋到投放引擎的決策組件,造成調控閉環。

智能算力接入PID實時調控後,在系統負載偏高時,能夠快速穩定有效的反饋調節,將系統性能保持在目標水位。

4. 實驗

4.1 實驗設置

  • 系統算力容量的選取:爲了保證線上系統能根據實時流量快速調整,結合外賣的流量特色,咱們選擇15min做爲最小的調控單元;實際場景中,咱們選取過去多天內流量最大且性能穩定的高峯期時間片,並統計該時間片內消耗的總CPU時間做爲系統算力容量C。
  • Baseline選取:選取線上無智能算力的流量做爲對照組。
  • 流量價值預估:選取最近多天流量做爲訓練數據,使用XGB模型進行預估並將結果寫入詞表。
  • 流量算力預估:選取最近多天流量做爲訓練數據,將算力隨隊列長度的變化擬合爲分段線性函數,並將最終預估結果寫入詞表。
  • 離線 λ 求解:外賣場景中,同環比流量變化趨勢基本一致,咱們經過重放昨日流量,離線計算當日每一個時間片內(15分鐘爲一個時間片)最優 λ 並存儲爲詞表。
  • 實驗思路:離線仿真時使用的系統算力容量C可控制線上算力的消耗,故而可經過調節離線求解使用的系統算力容量C實現機器資源持平或業務收益持平的實驗。

4.2 實驗一:機器資源持平,提升業務收益

CPM ROI CTR CVR 機器資源
Baseline(系統算力容量=C) +0.00% +0.00% +0.00% +0.00% +0.00%
智能算力(系統算力容量=C) +2.36% -1.40% +0.94% +0.09% +0.46%

收益來源分析

  • 流量高峯時段,保證系統穩定的同時,經過差別化算力分配提高業務收益。
  • 非流量高峯時段,提升系統資源利用率,將空閒機器資源轉化爲業務收益。

4.3 實驗二:業務收益持平,減小機器資源

CPM ROI CTR CVR 機器資源
Baseline(系統算力容量=C) +0.00% +0.00% +0.00% +0.00% +0.00%
智能算力(系統算力容量=60% * C) +0.70% -1.22% +0.15% +0.85% -40.8%

收益來源分析

  • 經過壓制午高峯和晚高峯算力消耗,達到減小機器資源的目標。從下圖能夠看出,在高峯時段,實驗組的機器資源消耗約佔對照組的60%。
  • 同時,在高峯時段進行差別化算力分配,在非高峯時段提升資源利用率,填平總體業務收益。

5. 總結與展望

這篇文章主要從最優檔位決策和系統穩定性保障兩個方面,介紹了智能算力在外賣廣告從0到1建設過程當中的思考和優化思路。

將來在算法策略上,咱們將嘗試基於進化算法和強化學習算法,對系統全鏈路組合下的算力最優分配問題進行建模和求解;在引擎架構上,對系統仿真能力、在線決策能力和穩定性保障能力進行持續優化,同時嘗試和公司彈性伸縮系統相結合,發揮智能算力的更大價值。

6. 參考文獻

[1] Jiang, B., Zhang, P., Chen, R., Luo, X., Yang, Y., Wang, G., ... & Gai, K. (2020). DCAF: A Dynamic Computation Allocation Framework for Online Serving System. arXiv preprint arXiv:2006.09684.

7. 做者簡介

順輝、家宏、宋偉、國樑、乾龍、樂彬等,均來自美團外賣廣告技術團隊。

8. 招聘信息

美團外賣廣告技術團隊大量崗位持續招聘中,誠招廣告後臺/算法開發工程師及專家,座標北京。歡迎感興趣的同窗加入咱們。可投簡歷至:maoshunhui@meituan.com(郵件主題請註明:美團外賣廣告技術團隊)

閱讀美團技術團隊更多技術文章合集

前端 | 算法 | 後端 | 數據 | 安全 | 運維 | iOS | Android | 測試

| 在公衆號菜單欄對話框回覆【2020年貨】、【2019年貨】、【2018年貨】、【2017年貨】等關鍵詞,可查看美團技術團隊歷年技術文章合集。

| 本文系美團技術團隊出品,著做權歸屬美團。歡迎出於分享和交流等非商業目的轉載或使用本文內容,敬請註明「內容轉載自美團技術團隊」。本文未經許可,不得進行商業性轉載或者使用。任何商用行爲,請發送郵件至tech@meituan.com申請受權。

相關文章
相關標籤/搜索