美團圖神經(jīng)網(wǎng)絡訓練框架的實踐和探索

1. 前言
1.1 問題和挑戰(zhàn)
1.2 美團的解決方案
2. 系統(tǒng)概覽
3. 模型框架
3.1 同質(zhì)圖
3.2 異質(zhì)圖
3.3 動態(tài)圖
4. 訓練流程框架
5. 性能優(yōu)化
5.1 圖數(shù)據(jù)結(jié)構(gòu)優(yōu)化
5.2 子圖采樣優(yōu)化
6. 圖學習平臺
7. 總結(jié)
8. 作者簡介
9. 參考文獻
1. 前言
1.1 問題和挑戰(zhàn)
1.2 美團的解決方案
首先,我們對當前流行的圖神經(jīng)網(wǎng)絡模型進行了細粒度的剖析,歸納總結(jié)出了一系列子操作,實現(xiàn)了一套通用的模型框架。簡單修改配置即可實現(xiàn)許多現(xiàn)有的圖神經(jīng)網(wǎng)絡模型。 針對基于子圖采樣的訓練方式,我們開發(fā)了圖計算庫“MTGraph”,大幅優(yōu)化了圖數(shù)據(jù)的內(nèi)存占用和子圖采樣速度。單機環(huán)境下,相較于DGL訓練速度提升約4倍,內(nèi)存占用降低約60%。單機即可實現(xiàn)十億節(jié)點百億邊規(guī)模的訓練。 圍繞圖神經(jīng)網(wǎng)絡框架Tulong,我們構(gòu)建了一站式的圖學習平臺,為研發(fā)人員提供包括業(yè)務數(shù)據(jù)接入、圖數(shù)據(jù)構(gòu)建和管理、模型的訓練和評測、模型導出上線等全流程的圖形化工具。 Tulong實現(xiàn)了高度可配置化的訓練和評測,從參數(shù)初始化到學習率,從模型結(jié)構(gòu)到損失函數(shù)類型,都可以通過一套配置文件來控制。針對業(yè)務應用的常見場景,我們總結(jié)了若干訓練模版,研發(fā)人員通過修改配置即可適配多數(shù)業(yè)務場景。例如,許多業(yè)務存在午晚高峰的周期性波動,我們?yōu)榇嗽O計了周期性動態(tài)圖的訓練模板,可以為一天中不同時段產(chǎn)生不同的GNN表示。在美團配送業(yè)務的應用中,需要為每個區(qū)域產(chǎn)生不同時段下的GNN表示,作為下游預測任務的輸入特征。開發(fā)過程中,從開始修改配置到產(chǎn)出初版模型僅花費三天;而在此之前,自行實現(xiàn)類似模型方案花費約兩周時間。
2. 系統(tǒng)概覽

3. 模型框架
3.1 同質(zhì)圖
我們擴展了聚合函數(shù)的種類,提出一種更加通用的計算范式:
上述計算范式仍然分為生成消息、聚合消息、更新當前節(jié)點三個步驟,具體包括:
層次維度的聚合函數(shù):用于聚合同一節(jié)點在模型不同層次的表示。例如,多數(shù)GNN模型中,層次維度的聚合函數(shù)為上一層的節(jié)點表示;而在JKNet[10]中,層次維度的聚合函數(shù)可以設定為LSTM[11]。 消息函數(shù):結(jié)合起始節(jié)點和目標節(jié)點,以及邊的特征,生成用于消息傳遞的消息向量。 節(jié)點維度的聚合函數(shù):匯集了來自鄰居節(jié)點的所有消息向量。值得注意的是,也可以有不同的實現(xiàn)。例如,在GCN中為所有鄰居節(jié)點,而在GraphSage[9]中為鄰居節(jié)點的子集。 更新函數(shù):用于聚合節(jié)點自身在上一層和當前層的表示。
3.2 異質(zhì)圖


3.3 動態(tài)圖


4. 訓練流程框架

5. 性能優(yōu)化
5.1 圖數(shù)據(jù)結(jié)構(gòu)優(yōu)化
圖數(shù)據(jù)預處理和壓縮:首先分析圖的統(tǒng)計特征,以輕量級的方式對節(jié)點進行聚類和重新編號,以期讓編號接近的節(jié)點在領(lǐng)域結(jié)構(gòu)上也更為相似。隨后調(diào)整邊的順序,對邊數(shù)據(jù)進行分塊和編碼,產(chǎn)生“節(jié)點-分塊索引-鄰接邊”層次的圖數(shù)據(jù)文件(如下圖7所示)。最后,如果數(shù)據(jù)包含節(jié)點特征或邊特征,還需要將特征與壓縮后的圖對齊。

圖的隨機查詢:查詢操作分為兩步:首先定位所需的邊數(shù)據(jù)塊,然后在內(nèi)存中解壓數(shù)據(jù)塊,讀取所查詢的數(shù)據(jù)。例如在查詢節(jié)點和是否相連時,首先根據(jù)兩個節(jié)點的編號計算邊數(shù)據(jù)塊的地址,解壓數(shù)據(jù)塊后獲得少量候選鄰接邊(通常不多于16條),然后查找是否包含邊。

5.2 子圖采樣優(yōu)化
隨機數(shù)發(fā)生器:相比于通信加密等應用,圖上的采樣對于隨機數(shù)發(fā)生器的“隨機性”并沒有苛刻的要求。我們適當放松了對隨機性的要求,設計實現(xiàn)了更快速的隨機數(shù)發(fā)生器,可以直接應用在有放回和無放回的采樣操作中。 概率量化:有權(quán)重的采樣中,在可接受的精度損失下,將浮點數(shù)表示的概率值量化為更為緊湊的整型。不僅降低了采樣器的內(nèi)存消耗,也可以將部分浮點數(shù)操作轉(zhuǎn)化為整型操作。 時間戳索引:動態(tài)圖的子圖采樣操作要求限定邊的時間范圍。采樣器首先對邊上的時間戳構(gòu)建索引,采樣時先根據(jù)索引確定可采樣邊的范圍,然后再執(zhí)行實際的采樣操作。

6. 圖學習平臺
數(shù)據(jù)集管理:從業(yè)務數(shù)據(jù)構(gòu)造圖是模型開發(fā)的第一步,圖學習平臺提供基于Spark的構(gòu)圖功能,可以將Hive中存儲的業(yè)務數(shù)據(jù)轉(zhuǎn)化為Tulong自定義的圖數(shù)據(jù)格式。業(yè)務數(shù)據(jù)經(jīng)常以事件日志的方式存儲,如何從中抽象出圖,有大量的選擇。例如,在推薦場景中,業(yè)務日志包含用戶對商家的點擊和下單記錄,除了把"用戶-點擊-商家"的事件刻畫為圖以外,還可以考慮刻畫短時間內(nèi)共同點擊商家的關(guān)系。除此之外,還可以引入額外的數(shù)據(jù),比如商家的地理位置、商家在售的菜品等。究竟使用何種構(gòu)圖方案,需要經(jīng)過實驗才能確定。對此,圖學習平臺提供了圖形化的構(gòu)圖工具(如下圖10所示),幫助用戶梳理構(gòu)圖方案;同時還提供圖數(shù)據(jù)集的版本管理,方便比較不同構(gòu)圖方案的效果。

實驗管理:確定圖數(shù)據(jù)之后,建模方案和訓練策略是影響最終效果的關(guān)鍵。例如,應該用何種GNN模型?損失函數(shù)如何選取?模型超參和訓練超參如何確定?這些問題也需要經(jīng)過大量實驗才能回答。基于Tulong框架,建模方案和訓練策略可以通過一組配置來控制。圖學習平臺提供配置的可視化編輯器和版本管理功能,方便比較不同的方案的優(yōu)劣。
流程管理:有了圖數(shù)據(jù)集和建模/訓練方案后,還需要讓整個流程自動化。這是模型上線的必要條件,同時也有利于團隊成員復現(xiàn)彼此的方案。圖學習平臺針對常見的“構(gòu)圖、訓練、評測、導出”流程提供了自動化的調(diào)度,在適當?shù)臅r候可以復用前一階段的結(jié)果,以提升效率。例如,如果數(shù)據(jù)集的定義沒有變化,可以跳過Spark構(gòu)圖階段直接使用已有的圖數(shù)據(jù)。此外,針對模型上線的需求,平臺提供構(gòu)圖和建模方案整合和定時調(diào)度等功能。
7. 總結(jié)
8. 作者簡介
9. 參考文獻
推薦閱讀:
不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設PPT)
論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?
企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!
