<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 11517字,需瀏覽 24分鐘

           ·

          2022-05-30 17:06

          美團搜索與NLP團隊在圖神經(jīng)網(wǎng)絡的長期落地實踐中,基于業(yè)務實際場景,自主設計研發(fā)了圖神經(jīng)網(wǎng)絡框架Tulong,以及配套的圖學習平臺,提升了模型的規(guī)模和迭代效率。本文介紹了模型歸納抽象、基本框架、性能優(yōu)化,以及上層工具等方面的思考和關(guān)鍵設計,希望為從事相關(guān)工作的同學帶來啟發(fā)或者幫助。
          • 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. 前言

          萬物之間皆有聯(lián)系。圖作為一種通用的數(shù)據(jù)結(jié)構(gòu),可以很好地描述實體與實體之間的關(guān)系。例如,在社交網(wǎng)絡中,用圖來表示用戶與用戶之間的好友關(guān)系;在電商網(wǎng)站中,用圖表示用戶與商品之間的點擊購買行為;在知識圖譜構(gòu)建中,還可以用圖表示實體與實體間多樣的關(guān)系。另一方面,深度學習技術(shù)在計算機視覺、自然語言處理、語音處理等領(lǐng)域均已取得了巨大的成功。深度學習技術(shù)將圖像、文本、語音等多種多樣的數(shù)據(jù)轉(zhuǎn)化為稠密的向量表示,提供了表示數(shù)據(jù)的另一種方式。借助于硬件日益強大的計算能力,深度學習可以從海量數(shù)據(jù)中學習到數(shù)據(jù)之間復雜多樣的相關(guān)性。
          這會讓人不禁思考,深度學習能否應用到更廣闊的領(lǐng)域,比如——圖?事實上,早在深度學習興起之前,業(yè)界就已經(jīng)開始了圖嵌入(Graph Embedding)技術(shù)的探索[1]。早期的圖嵌入算法多以啟發(fā)式的矩陣分解、概率圖模型為主;隨后出現(xiàn)了以DeepWalk[2]和Node2vec[3]為代表的、較為“淺層”的神經(jīng)網(wǎng)絡模型;最后,以GCN[4]為代表的一系列研究工作,打通了圖信號處理與神經(jīng)網(wǎng)絡之間的壁壘,奠定了當前基于消息傳遞機制的圖神經(jīng)網(wǎng)絡(GNN: Graph Neural Network)模型的基本范式。
          近年來,圖神經(jīng)網(wǎng)絡逐漸成為學術(shù)界的研究熱點之一[5]。在工業(yè)界,圖神經(jīng)網(wǎng)絡在電商搜索、推薦、在線廣告、金融風控、交通預估等領(lǐng)域也有諸多的落地應用,并帶來了顯著收益。
          由于圖數(shù)據(jù)特有的稀疏性(圖的所有節(jié)點對之間只有少量邊相連),直接使用通用的深度學習框架(例如TensorFlow和PyTorch)訓練往往性能不佳。工欲善其事,必先利其器。針對圖神經(jīng)網(wǎng)絡的深度學習框架應運而出:PyG (PyTorch Geometric)[6]和DGL (Deep Graph Library)[7]等開源框架大幅提升了圖神經(jīng)網(wǎng)絡的訓練速度,并且降低了資源消耗[17][18],擁有活躍的社區(qū)支持。很多公司根據(jù)自身業(yè)務特點,也紛紛建設自有的圖神經(jīng)網(wǎng)絡框架。美團搜索與NLP團隊在長期的落地實踐中,總結(jié)實踐經(jīng)驗,在訓練的規(guī)模和性能、功能的豐富性、易用性等方面進行了大量優(yōu)化。本文首先介紹我們在過往落地應用中遇到的實際問題和挑戰(zhàn),然后再介紹具體的解決方案。

          1.1 問題和挑戰(zhàn)

          從工業(yè)界落地應用的角度來看,一個“好用”的圖神經(jīng)網(wǎng)絡框架至少具備以下特點。
          (1)完善支持當前流行的圖神經(jīng)網(wǎng)絡模型。
          從圖本身的類型來看,圖神經(jīng)網(wǎng)絡模型可以分為同質(zhì)圖(Homogeneous Graph)、異質(zhì)圖(Heterogeneous Graph)、動態(tài)圖(Dynamic Graph)等類型。從訓練方式來看,又可以分為全圖消息傳遞[4]和基于子圖采樣的消息傳遞[8]等類型。從推理方式來看,還可以分為直推式和歸納式[9]
          除此之外,下游任務除了經(jīng)典的節(jié)點分類、鏈接預測和圖分類,還有許多領(lǐng)域相關(guān)端到端的預測任務。在實際應用中,不同業(yè)務場景對圖神經(jīng)網(wǎng)絡的模型和下游任務的需求是不同的,需要個性化定制。例如在美食推薦場景中,存在用戶、商家、菜品等節(jié)點,刻畫其相互關(guān)系可以用同質(zhì)圖或異質(zhì)圖;為了刻畫用戶在不同時間的偏好,可能還需要使用動態(tài)圖模型;針對推薦系統(tǒng)的召回和排序兩個階段,還需要設計不同的訓練任務。盡管現(xiàn)有框架都提供常見模型的實現(xiàn),但簡單調(diào)用這些模型不能滿足上述需求。此時便需要用戶自行開發(fā)模型和訓練流程代碼,這就帶來了額外的工作量。如何幫助用戶更便捷地實現(xiàn)定制模型是一個不小的挑戰(zhàn)。
          (2)以合理的代價支持大規(guī)模圖上的模型訓練。
          在業(yè)務落地應用中,圖的規(guī)模往往很大,可以達到數(shù)十億甚至數(shù)百億條邊。我們在初期的嘗試中發(fā)現(xiàn),使用現(xiàn)有框架,只能在分布式環(huán)境下訓練百億邊規(guī)模的模型,消耗較多的硬件資源(數(shù)千CPU和數(shù)TB內(nèi)存)。我們希望單機即可在合理的時間內(nèi)訓練百億邊規(guī)模的模型,從而降低對硬件資源的需求。
          (3)與業(yè)務系統(tǒng)無縫對接。
          圖神經(jīng)網(wǎng)絡的完整落地流程至少包括:基于業(yè)務數(shù)據(jù)構(gòu)圖、離線訓練和評測模型、線上推理、業(yè)務指標觀測等步驟。要讓圖神經(jīng)網(wǎng)絡技術(shù)成功落地應用,需要充分理解業(yè)務邏輯和業(yè)務需求,統(tǒng)一并高效地管理業(yè)務場景。同樣以美食推薦場景為例,線上日志記錄了曝光、點擊、下單等行為事件,知識圖譜提供了商家和菜品豐富的屬性數(shù)據(jù),如何從這些異質(zhì)的數(shù)據(jù)構(gòu)造圖,要結(jié)合業(yè)務實際多次實驗確定。合適的工具能提升對接業(yè)務數(shù)據(jù)的效率,然而現(xiàn)有的圖神經(jīng)網(wǎng)絡框架大多聚焦在模型的離線訓練和評測,缺乏此類工具。
          (4)研發(fā)人員易于上手,同時提供充足的可擴展性。
          從研發(fā)效率的角度來說,自建圖神經(jīng)網(wǎng)絡框架的目的是減少建模中的重復工作,讓研發(fā)人員的精力集中在業(yè)務本身的特性上。因此,一個“好用”的圖神經(jīng)網(wǎng)絡框架應當易于上手,通過簡單地配置即能完成多數(shù)任務。在此基礎上,對于一些特殊的建模需求,也能提供適當?shù)闹С帧?/span>

          1.2 美團的解決方案

          美團搜索與NLP團隊在搜索、推薦、廣告、配送等業(yè)務的長期落地實踐中,總結(jié)實踐經(jīng)驗,自主設計研發(fā)了圖神經(jīng)網(wǎng)絡框架Tulong以及配套的圖學習平臺,較好地解決了上述問題。
          1. 首先,我們對當前流行的圖神經(jīng)網(wǎng)絡模型進行了細粒度的剖析,歸納總結(jié)出了一系列子操作,實現(xiàn)了一套通用的模型框架。簡單修改配置即可實現(xiàn)許多現(xiàn)有的圖神經(jīng)網(wǎng)絡模型。
          2. 針對基于子圖采樣的訓練方式,我們開發(fā)了圖計算庫“MTGraph”,大幅優(yōu)化了圖數(shù)據(jù)的內(nèi)存占用和子圖采樣速度。單機環(huán)境下,相較于DGL訓練速度提升約4倍,內(nèi)存占用降低約60%。單機即可實現(xiàn)十億節(jié)點百億邊規(guī)模的訓練。
          3. 圍繞圖神經(jīng)網(wǎng)絡框架Tulong,我們構(gòu)建了一站式的圖學習平臺,為研發(fā)人員提供包括業(yè)務數(shù)據(jù)接入、圖數(shù)據(jù)構(gòu)建和管理、模型的訓練和評測、模型導出上線等全流程的圖形化工具。
          4. 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)概覽

          如下圖1所示,Tulong配套圖計算庫和圖學習平臺構(gòu)成了一套完整系統(tǒng)。系統(tǒng)自底向上可以分為以下3個組件。
          圖1 圖神經(jīng)網(wǎng)絡計算引擎、框架和平臺的系統(tǒng)架構(gòu)
          (1)圖以及深度學習引擎
          我們把圖神經(jīng)網(wǎng)絡的底層算子分為三類:圖結(jié)構(gòu)查詢、稀疏張量計算和稠密張量計算。我們開發(fā)了圖計算庫MTGraph提供圖數(shù)據(jù)的存儲和查詢功能,深度優(yōu)化了內(nèi)存占用和子圖采樣速度。MTGraph兼容PyTorch和DGL,用戶可以在MTGraph的基礎上直接編寫基于DGL的模型代碼。
          (2)Tulong框架
          Tulong框架首先封裝實現(xiàn)了訓練圖神經(jīng)網(wǎng)絡所需的基本組件,包括圖和特征數(shù)據(jù)的預處理流程、子圖采樣器、通用的GNN模型框架,以及包括訓練和評測在內(nèi)的基礎任務。基于上述組件,Tulong框架提供豐富的預定義模型和訓練/推理流程,用戶通過修改配置文件即可在業(yè)務數(shù)據(jù)上訓練和評測GNN模型。
          (3)圖學習平臺
          圖學習平臺旨在簡化離線的模型開發(fā)和迭代過程,同時簡化業(yè)務系統(tǒng)的對接流程。圖學習平臺提供一系列的可視化工具,簡化從業(yè)務數(shù)據(jù)接入到模型上線的全流程。
          下文將從模型框架、訓練流程框架、性能優(yōu)化和圖學習平臺等四個方面詳細介紹各個模塊的分析和設計方案。

          3. 模型框架

          我們從工程實現(xiàn)的角度,歸納總結(jié)了當前主流圖神經(jīng)網(wǎng)絡模型的基本范式,實現(xiàn)一套通用框架,以期涵蓋多種GNN模型。以下按照圖的類型(同質(zhì)圖、異質(zhì)圖和動態(tài)圖)分別討論。

          3.1 同質(zhì)圖

          同質(zhì)圖(Homogeneous Graph)可以定義為節(jié)點集合和邊集合:,一條邊表示節(jié)點與節(jié)點相連。節(jié)點和邊上往往還附加有特征,我們記為節(jié)點的特征,為邊的特征。
          包括PyG和DGL在內(nèi)的許多圖神經(jīng)網(wǎng)絡框架,都對同質(zhì)圖上的GNN進行過歸納,提出了相應的計算范式。例如,DGL把GNN的前向計算過程歸納為消息函數(shù)(message function)、聚合函數(shù)(reduce function)和更新函數(shù)(update function)[7]

          我們擴展了聚合函數(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é)點自身在上一層和當前層的表示。
          不難看出,上述計算范式可以覆蓋當前大多數(shù)GNN模型。在工程實踐中,我們將上述函數(shù)進一步分拆細化,預先提供了多種高效的實現(xiàn)。通過配置選項即可實現(xiàn)不同的組合搭配,從而實現(xiàn)多數(shù)主流的GNN模型。

          3.2 異質(zhì)圖

          相比于同質(zhì)圖,異質(zhì)圖(Heterogeneous Graph)擴充了節(jié)點類型和邊類型。比如,學術(shù)引用網(wǎng)絡[13]中包含論文、作者、機構(gòu)等類型的節(jié)點,節(jié)點直接通過“論文引用其他論文”、“作者撰寫論文”、“作者屬于機構(gòu)”等類型的邊相連,如下圖2所示:
          圖2 同質(zhì)圖與異質(zhì)圖的比較
          我們把異質(zhì)圖視為多個二分圖的疊加,每一個二分圖對應于一種邊類型。上述的學術(shù)引用網(wǎng)絡可以表示成“論文-引用-論文”、“作者-撰寫-論文”、“作者-屬于-機構(gòu)”,共計三個二分圖,同質(zhì)圖的GNN模型框架稍加修改即可在二分圖上應用。
          在此基礎上,一個節(jié)點在不同的二分圖中會產(chǎn)生不同的表示。我們進一步提出邊類型維度的聚合函數(shù),用于聚合節(jié)點在不同二分圖中的表示(如下圖3所示)。框架中同樣提供邊類型緯度聚合函數(shù)的多種實現(xiàn),可以通過配置選項調(diào)用。例如,要實現(xiàn)RGCN,可以在二分圖上應用GCN,然后在邊類型維度上取平均。
          圖3 異質(zhì)圖模型框架

          3.3 動態(tài)圖

          動態(tài)圖(Dynamic Graph)是指隨時間變化的圖。與之相對的,上述的同質(zhì)圖和異質(zhì)圖可以稱為靜態(tài)圖。比如,學術(shù)引用網(wǎng)絡會隨時間不斷擴張,用戶與商品的交互圖會隨用戶興趣而變化。動態(tài)圖上的GNN模型旨在生成給定時間下的節(jié)點表示。根據(jù)時間粒度的粗細,動態(tài)圖可分為離散時間動態(tài)圖和連續(xù)時間動態(tài)圖。
          在離散時間動態(tài)圖中,時間被劃分為多個時間片(例如以天/小時劃分),每個時間片對應一個靜態(tài)的圖。離散時間動態(tài)圖的GNN模型通常在每個時間片上單獨應用GNN模型,然后聚合節(jié)點在不同時間的表征[14]。我們把聚合過程抽象為離散時間維度的聚合函數(shù),同樣提供預定義的實現(xiàn)。此外,Tulong框架還提供離散時間動態(tài)圖數(shù)據(jù)的加載和管理機制,僅在內(nèi)存中保留必須的時間片,降低硬件資源的消耗。
          圖4 離散時間動態(tài)圖GNN模型框架
          在連續(xù)時間動態(tài)圖中,每條邊附有時間戳,表示交互事件發(fā)生的時刻。相比于靜態(tài)圖,連續(xù)時間動態(tài)圖中的消息函數(shù)還依賴于給定樣本的時間戳以及邊的時間戳。此外,鄰居節(jié)點必須與時間有關(guān),例如鄰居節(jié)點中不能出現(xiàn)時刻之后才出現(xiàn)的節(jié)點。針對此問題,我們開發(fā)了多種連續(xù)時間動態(tài)圖上的鄰居節(jié)點采樣器,可以在指定的時間范圍內(nèi),高效地采樣鄰居節(jié)點。
          圖5 連續(xù)時間動態(tài)圖GNN模型框架
          以上分析了同質(zhì)圖、異質(zhì)圖和動態(tài)圖的計算范式,我們從中抽取出通用的函數(shù)(算子),包括消息函數(shù)、聚合函數(shù)、更新函數(shù)、鄰居節(jié)點函數(shù),并給出多種預定義的實現(xiàn)。框架用戶通過配置選項即可拼裝組合算子,從而實現(xiàn)需要的GNN模型。

          4. 訓練流程框架

          訓練GNN模型通常包括加載數(shù)據(jù)、定義GNN模型、訓練和評測、導出模型等流程。由于GNN模型和訓練任務的多樣性,在實際開發(fā)過程中,用戶往往要針對自己的場景自行編寫模型和流程代碼,處理繁瑣的底層細節(jié)讓用戶難以集中到算法模型本身的調(diào)優(yōu)上。GraphGym[12]和DGL-Go[16]試圖解決這一問題,通過集成多種模型和訓練任務,同時簡化接口,可以讓用戶較為直接地上手和訓練GNN模型。
          我們通過更加“工業(yè)化”的方式解決這一問題(如下圖6所示),框架被分為兩層:基礎組件和流程組件。基礎組件聚焦于單一的功能,例如圖數(shù)據(jù)組件只維護內(nèi)存中的圖數(shù)據(jù)結(jié)構(gòu),不提供圖上的采樣或張量計算功能;圖上的采樣功能通過圖采樣器來提供。流程組件通過組裝基礎組件提供較為完整的數(shù)據(jù)預處理、訓練和評測流程,例如訓練流程組合了圖數(shù)據(jù)、圖采樣器、GNN模型等組件,提供完整的訓練功能。
          圖6 訓練流程框架
          更上一層,我們提供多種流程配置模板和GNN模型模板。模板對外暴露若干超參,例如訓練數(shù)據(jù)路徑、模型類型、學習率等參數(shù),結(jié)合用戶指定的超參后就可以完整定義一次訓練任務。換言之,基于模板和參數(shù)即可完整復現(xiàn)一次GNN模型實驗。框架將會解析這些配置,并生成可執(zhí)行的應用。
          舉例來說,用戶可以選擇GraphSage模型的配置模板,以及鏈接預測任務的訓練模板,指定模型層數(shù)和維度,以及訓練評測數(shù)據(jù)路徑,即可開始訓練基于GraphSage的鏈接預測模型。

          5. 性能優(yōu)化

          隨著業(yè)務的發(fā)展,業(yè)務場景下圖的規(guī)模也愈發(fā)龐大。如何以合理的代價,高效訓練數(shù)十億乃至百億邊規(guī)模的GNN模型成為亟需解決的問題。我們通過優(yōu)化單機的內(nèi)存占用,以及優(yōu)化子圖采樣算法,來解決這一問題。

          5.1 圖數(shù)據(jù)結(jié)構(gòu)優(yōu)化

          圖數(shù)據(jù)結(jié)構(gòu)的內(nèi)存占用是制約可訓練圖規(guī)模的重要因素。以MAG240M-LSC數(shù)據(jù)集[13]為例,添加反向邊后圖中共有2.4億節(jié)點和35億邊。在基于子圖采樣的訓練方式下,PyG和DGL單機的圖數(shù)據(jù)結(jié)構(gòu)均需要占用100GB以上的內(nèi)存,其它開源框架的內(nèi)存占用往往更多。在更大規(guī)模的業(yè)務場景圖上,內(nèi)存占用往往會超出硬件配置。我們設計實現(xiàn)了更為緊湊的圖數(shù)據(jù)結(jié)構(gòu),提升了單機可承載的圖規(guī)模。
          我們借助圖壓縮技術(shù)降低內(nèi)存占用。不同于常規(guī)的圖壓縮問題,GNN的場景下需要支持隨機查詢操作。例如,查詢給定節(jié)點的鄰居節(jié)點;判斷給定的兩個節(jié)點在圖中是否相連。我們對此提出的解決方案包括兩部分:
          • 圖數(shù)據(jù)預處理和壓縮:首先分析圖的統(tǒng)計特征,以輕量級的方式對節(jié)點進行聚類和重新編號,以期讓編號接近的節(jié)點在領(lǐng)域結(jié)構(gòu)上也更為相似。隨后調(diào)整邊的順序,對邊數(shù)據(jù)進行分塊和編碼,產(chǎn)生“節(jié)點-分塊索引-鄰接邊”層次的圖數(shù)據(jù)文件(如下圖7所示)。最后,如果數(shù)據(jù)包含節(jié)點特征或邊特征,還需要將特征與壓縮后的圖對齊。
          圖7 壓縮后的圖數(shù)據(jù)結(jié)構(gòu)
          • 圖的隨機查詢:查詢操作分為兩步:首先定位所需的邊數(shù)據(jù)塊,然后在內(nèi)存中解壓數(shù)據(jù)塊,讀取所查詢的數(shù)據(jù)。例如在查詢節(jié)點是否相連時,首先根據(jù)兩個節(jié)點的編號計算邊數(shù)據(jù)塊的地址,解壓數(shù)據(jù)塊后獲得少量候選鄰接邊(通常不多于16條),然后查找是否包含邊
          經(jīng)過壓縮,加載MAG240M-LSC數(shù)據(jù)集僅需15GB內(nèi)存。百億乃至千億邊規(guī)模圖的內(nèi)存占用顯著降低,達到單機可承載的程度,如下圖8所示:
          圖8 圖數(shù)據(jù)結(jié)構(gòu)內(nèi)存占用對比

          5.2 子圖采樣優(yōu)化

          子圖采樣是GNN模型訓練的性能瓶頸之一。我們發(fā)現(xiàn)在某些業(yè)務圖中,子圖采樣的耗時甚至占訓練整體的80%以上。我們分別針對靜態(tài)圖和動態(tài)圖,設計實現(xiàn)了多種高效的鄰居節(jié)點采樣算法。主要的優(yōu)化手段包括:
          • 隨機數(shù)發(fā)生器:相比于通信加密等應用,圖上的采樣對于隨機數(shù)發(fā)生器的“隨機性”并沒有苛刻的要求。我們適當放松了對隨機性的要求,設計實現(xiàn)了更快速的隨機數(shù)發(fā)生器,可以直接應用在有放回和無放回的采樣操作中。
          • 概率量化:有權(quán)重的采樣中,在可接受的精度損失下,將浮點數(shù)表示的概率值量化為更為緊湊的整型。不僅降低了采樣器的內(nèi)存消耗,也可以將部分浮點數(shù)操作轉(zhuǎn)化為整型操作。
          • 時間戳索引:動態(tài)圖的子圖采樣操作要求限定邊的時間范圍。采樣器首先對邊上的時間戳構(gòu)建索引,采樣時先根據(jù)索引確定可采樣邊的范圍,然后再執(zhí)行實際的采樣操作。
          經(jīng)過以上優(yōu)化,子圖采樣速度相較于DGL取得了2到4倍的提升(如下圖9所示)。某業(yè)務場景圖A(2億節(jié)點40億邊)使用DGL訓練耗時2.5小時/epoch,經(jīng)過優(yōu)化可達0.5小時/epoch。某業(yè)務場景圖B(2.5億節(jié)點124億邊)原本只能分布式訓練,耗時6小時/epoch;經(jīng)過優(yōu)化,單機即可訓練,速度可達2小時/epoch。
          圖9 子圖采樣速度對比(2層,每層20條鄰接邊)

          6. 圖學習平臺

          圖學習平臺旨在簡化離線的模型開發(fā)迭代過程,同時簡化業(yè)務系統(tǒng)的對接流程。一個完整的模型開發(fā)迭代過程至少包括三個階段:準備數(shù)據(jù)集、定義模型和訓練任務、訓練和評測模型。我們分析用戶在這三個階段的需求,提供相應工具提升開發(fā)效率:
          • 數(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)圖方案的效果。
          圖10 圖形化的構(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é)

          本文介紹了美團搜索與NLP團隊在圖神經(jīng)網(wǎng)絡框架建設方面的實踐經(jīng)驗,包括GNN模型歸納抽象、基本框架、性能優(yōu)化,以及上層工具等方面的思考和關(guān)鍵設計。框架的設計思路來源于業(yè)務落地所遇到的實際問題,例如針對大規(guī)模圖的優(yōu)化、多人協(xié)作中的流程管理等;同時也吸收借鑒了學術(shù)界的最新研究進展,例如動態(tài)圖的計算范式等。除了技術(shù)層面的優(yōu)化,框架的建設也得益于工程團隊和算法團隊的緊密配合,基于共同的、有深度的認知才得以讓項目順利推進。
          借助于Tulong框架,圖神經(jīng)網(wǎng)絡技術(shù)已在美團搜索、推薦、廣告、配送多個業(yè)務場景落地應用,并取得了較為可觀的業(yè)務收益。我們相信圖神經(jīng)網(wǎng)絡還有更加廣闊的應用前景,作為基礎設施的圖神經(jīng)網(wǎng)絡框架也值得繼續(xù)優(yōu)化完善。

          8. 作者簡介

          付浩、憲鵬、祥洲、玉基、徐灝、夢迪、武威等,均來自美團平臺/搜索與NLP部。

          9. 參考文獻

          [1] Cai, Hongyun, Vincent W. Zheng, and Kevin Chen-Chuan Chang. "A comprehensive survey of graph embedding: Problems, techniques, and applications." IEEE Transactions on Knowledge and Data Engineering 30, no. 9 (2018): 1616-1637.
          [2] Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. "Deepwalk: Online learning of social representations." In Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining, pp. 701-710. 2014.
          [3] Grover, Aditya, and Jure Leskovec. "Node2vec: Scalable feature learning for networks." In Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining, pp. 855-864. 2016.
          [4] Kipf, Thomas N., and Max Welling. "Semi-supervised classification with graph convolutional networks." International Conference on Learning Representations (2017).
          [5] Wu, Zonghan, Shirui Pan, Fengwen Chen, Guodong Long, Chengqi Zhang, and S. Yu Philip. "A comprehensive survey on graph neural networks." IEEE transactions on neural networks and learning systems 32, no. 1 (2020): 4-24.
          [6] https://github.com/pyg-team/pytorch_geometric
          [7] https://www.dgl.ai/
          [8] Chen, Jie, Tengfei Ma, and Cao Xiao. "FastGCN: Fast Learning with Graph Convolutional Networks via Importance Sampling." In International Conference on Learning Representations (2018).
          [9] Hamilton, Will, Zhitao Ying, and Jure Leskovec. "Inductive representation learning on large graphs." Advances in neural information processing systems 30 (2017).
          [10] Xu, Keyulu, Chengtao Li, Yonglong Tian, Tomohiro Sonobe, Ken-ichi Kawarabayashi, and Stefanie Jegelka. "Representation learning on graphs with jumping knowledge networks." In International Conference on Machine Learning, pp. 5453-5462. PMLR, 2018.
          [11] Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory." Neural computation 9, no. 8 (1997): 1735-1780.
          [12] https://github.com/snap-stanford/GraphGym
          [13] https://ogb.stanford.edu/
          [14] Sankar, Aravind, Yanhong Wu, Liang Gou, Wei Zhang, and Hao Yang. "Dysat: Deep neural representation learning on dynamic graphs via self-attention networks." In Proceedings of the 13th International Conference on Web Search and Data Mining, pp. 519-527. 2020.
          [15] Xu, Da, Chuanwei Ruan, Evren Korpeoglu, Sushant Kumar, and Kannan Achan. "Inductive representation learning on temporal graphs." International Conference on Learning Representations (2020).
          [16] https://github.com/dmlc/dgl/tree/master/dglgo
          [17] Wang, Minjie, Da Zheng, Zihao Ye, Quan Gan, Mufei Li, Xiang Song, Jinjing Zhou et al. "Deep graph library: A graph-centric, highly-performant package for graph neural networks." arXiv preprint arXiv:1909.01315 (2019).
          [18] Fey, M. and Lenssen, J. E. "Fast graph representation learning with PyTorch Geometric." In ICLR Workshop on Representation Learning on Graphs and Manifolds, 2019.
          [19] Schlichtkrull, Michael, Thomas N. Kipf, Peter Bloem, Rianne van den Berg, Ivan Titov, and Max Welling. "Modeling relational data with graph convolutional networks." In European semantic web conference, pp. 593-607. Springer, Cham, 2018.


          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設PPT)

          億級(無限級)并發(fā),沒那么難

          論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

          華為的數(shù)字化轉(zhuǎn)型方法論

          華為如何實施數(shù)字化轉(zhuǎn)型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  竹菊精品一区二区三区 | 亚洲国产中文字幕 | 淫淫大香蕉 | 久久久成人免费电影 | 亚洲三级在线播放 |