優酷提出基於圖執行引擎的算法服務框架,系統架構概覽

背景

在阿里的業務中,有廣泛的算法應用場景,也沉澱了相關的算法應用平臺和工具:基礎的算法引擎部分,有成熟的召回和打分預估引擎、在線實時特徵服務;推薦算法應用領域,有算法實驗平臺TPP(源於淘寶個性化平臺),提供Serverless形式的算法實驗平臺,包括資源彈性伸縮、實驗能力(代碼在線發佈、AB分流、動態配置)、監控管理(完善的監控報警、流控、降級)等能力,是算法在線應用的基石。

但在實際的算法應用業務中(如優酷推薦業務),算法應用場景衆多(100+活躍場景),需求靈活多變,如果沒有一套通用業務框架抽象出通用和定製化的部分來提高算法組件的複用度,會嚴重拖慢算法實驗的節奏。基於圖引擎的算法服務框架就是爲了封裝這樣一套框架,抽象算法在線服務的通用算子,支持運行時算法流程的裝配,提升算法服務場景搭建的效率。

設計概覽

算法推薦典型的在線處理執行流程是:多路粗排召回、合併、預估、打散策略。推薦服務根據用戶的設備ID等其他必要信息進行多路並行召回,在召回引擎中粗排後,經過必要的過濾處理,截取一定數量的內容調用Rank引擎進行精排預估,預估結果經過一系列算法策略處理後輸出最終結果。

整個過程中召回、合併、預估、打散等業務處理既有並行處理也有串行處理,可以根據業務需要靈活配置。基於圖的推薦業務執行引擎是運行在算法實驗平臺上的執行引擎,它的典型處理流程是:在AB實驗分桶上,通過圖形化交互頁面配置數據源、業務算子的執行依賴關係,並配置每個算子的運行時動態參數。

系統總體結構如下圖所示,共分成五個主要模塊(DAG圖執行引擎、圖執行算子元件、圖形化配置DAG、圖配置動態解析、Debug調試)。

圖:系統總體架構

當推薦請求到達時,引擎讀取AB參數,根據參數上配置的算子信息,通過反射機制創建算子實例,動態組裝成可運行的DAG。根據條件分支配置,動態裁剪運行時的DAG實例,根據圖運行佔用最大線程數配置,動態調整線程複用。算子通過算法實驗平臺的底層協程池並行運行。

關鍵模塊

1 圖執行算子元件

1) 數據集

在DAG圖中流轉的數據統一封裝爲DataSet數據集,數據集是結構化多行二維數據的封裝,在數據集上封裝便利的基礎算子操作。

數據集上一系列處理操作基於Java的Stream API來處理,以此達到集合處理的最好性能,將非Action操作延遲到最後數據處理時運行。

2) 數據源

將能夠返回數據或者數據交互的二方服務封裝爲通用數據源,所有業務算子圍繞數據源的數據進行業務開發,通用數據源包括召回數據集、在線算法需要的輔助數據集(如存放在KV內存存儲的旁路召回數據、特徵等數據)、打分預估結果集、內存數據源等。

數據源的封裝通過動態參數配置方式實現通用性和可擴展性。數據查詢只需要修改配置即可實現數據獲取,不需要開發代碼。

3) 基礎算子

在DataSet數據集上封裝的基本操作作爲基礎算子,比如Join、Union、Filter、Sort、Map、Collect等流式操作。在DataSet上重新封裝Stream相關API,便於對DataSet進行流式處理。

4) 業務算子

召回、預估、合併、打散、過濾等業務操作封裝爲業務算子,在業務算子中可以查詢數據源,返回數據集後通過基礎算子計算得到結果。

2 圖形化配置DAG

3 配置動態解析和優化

1)根據AB配置實時變更圖執行結構

爲了減少解析圖結構的耗時,圖引擎在運行時對圖結構做了緩存,但在AB配置更新時需要實時反映到圖引擎中,所以要根據圖配置的哈希值校驗的方式檢測圖配置是否更新,圖結構變更後會重新創建引擎實例。

2)子圖並行線程優化

在DAG執行時,所有算子都交給線程池異步運行,但是在大多數情況下子圖可能是一個順序執行圖,不需要並行,不應該佔用其他線程,所以在圖執行時,動態根據依賴關係識別節點是否需要佔用新線程運行。

3)條件分支動態裁剪

如果圖結構中存在條件節點,會根據條件節點的動態結果裁剪後續圖節點的運行。如果一個圖節點的執行條件爲否,後續單獨依賴它的節點都不會運行,條件節點具備傳遞性。如果後續節點不單獨依賴不運行的節點,則當前節點可運行。

4 DAG圖執行引擎

1)併發控制

通過圖中依賴關係動態解析節點需要通過並行還是串行執行,在圖中配置最大併發線程數來控制圖的最大併發度。最大程度複用線程,減少線程切換帶來的開銷。

2)超時控制

通過整個圖上配置超時時間來控制圖的超時,根據業務粒度將子業務配置爲子圖,從而通過控制子圖的超時時間來控制子業務的超時時間。

3)通過協程優化異步執行

DAG運行依賴線程池運行,算法實驗平臺提供了基礎線程池,並同時將線程池在JVM層面優化爲協程,通過壓測比對,普通線程池的性能要低於協程池的性能。

總結&展望

基於圖引擎的算法服務框架建設,通過抽象算法業務的通用組件,提供圖形化流程編排工具和圖執行引擎,實現了0代碼、配置化支持算法業務需求。爲快速的算法應用,不斷提升用戶的個性化服務打下了堅實基礎。對推薦、搜索、廣告等算法應用業務有參考價值。

接下來,爲了進一步提升引擎性能,我們將在構圖優化和引擎執行性能上做優化,在保持業務表達靈活簡潔的同時,追求更優的執行性能。

作者介紹:阿里文娛高級專家 隨方,阿里文娛開發專家 軒成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章