什么叫圖神經(jīng)網(wǎng)絡,從名字可以看出這里有兩個概念。
第一個概念是圖。圖是我們?nèi)粘I钪蟹浅F毡榈拇嬖冢话阄覀儠熏F(xiàn)實中的實體抽象成圖中的點,點和邊都有豐富的屬性信息。因為圖可以表示復雜的關(guān)系,所以圖蘊含了巨大的價值。
第二個概念是神經(jīng)網(wǎng)絡,更準確的說是深度神經(jīng)網(wǎng)絡。深度神經(jīng)網(wǎng)絡是深度學習背后的核心技術(shù),并且在我們的生產(chǎn)生活中得到了廣泛的應用。
圖神經(jīng)網(wǎng)絡就是將圖和深度神經(jīng)網(wǎng)絡這兩個概念結(jié)合起來,通過把圖中的元素映射到低維度空間中以便于處理我們用深度神經(jīng)網(wǎng)絡挖掘出的潛在價值。
最近幾年,圖神經(jīng)網(wǎng)絡得到了學術(shù)界和工業(yè)界的廣泛關(guān)注,但相比傳統(tǒng)的深度學習,圖神經(jīng)網(wǎng)絡的開發(fā)和學習有更大的挑戰(zhàn),挑戰(zhàn)主要來自于三個方面。
挑戰(zhàn)一是數(shù)據(jù)的復雜性,圖數(shù)據(jù)有非結(jié)構(gòu)化、異構(gòu)、稀疏性的特點,其特點給圖神經(jīng)網(wǎng)絡提出了更高的挑戰(zhàn)。
挑戰(zhàn)二是圖數(shù)據(jù)規(guī)模巨大,用傳統(tǒng)機器學習的樣本處理方式非常容易造成樣本指數(shù)級的膨脹,這對于想要大規(guī)模應用圖神經(jīng)網(wǎng)絡的企業(yè)來說是巨大的成本開銷。
挑戰(zhàn)三是圖算子種類非常多,不能很好的與深度學習相結(jié)合,導致深度學習系統(tǒng)很難通過簡單擴展來無縫支持圖神經(jīng)網(wǎng)絡的操作。
因此,需要得到圖神經(jīng)網(wǎng)絡一體化的解決方案,這個解決方案從三個層次上提出了需求。首先是數(shù)據(jù)層要能夠支持大規(guī)模異構(gòu)且?guī)в胸S富屬性的圖,并且可以方便對接多種數(shù)據(jù)源進行適配,抽象出簡單的數(shù)據(jù)接口供用戶使用。其次是計算層要可以引擎一體化,這樣用戶才可以方便的編寫圖和深度神經(jīng)網(wǎng)絡相結(jié)合的代碼,并保證計算的高效性。最后是在應用層,要針對不同業(yè)務場景構(gòu)建從圖數(shù)據(jù)到業(yè)務邏輯,中間不割裂的端到端的神經(jīng)網(wǎng)絡。
Graph-Learn就是針對這三個層次的要求應運而生的,該平臺有三個顯著的特點。第一個特點是企業(yè)級,區(qū)別于學術(shù)框架,Graph-Learn系統(tǒng)從實際生產(chǎn)出發(fā),一開始就把解決數(shù)據(jù)復雜性作為目標,支持高達TB級別的圖數(shù)據(jù)。第二個特點就是端到端,Graph-Learn為用戶提供一體化簡潔的IBE,方便從原始數(shù)據(jù)構(gòu)建業(yè)務模型,省去中間鏈路,從而省去巨額的存儲和計算開銷。第三個特點是生產(chǎn)與研發(fā)相結(jié)合,Graph-Learn系統(tǒng)有非常良好的拓展性和優(yōu)異的性能,既可以適應GNN快速發(fā)展研究的節(jié)奏,又可以實現(xiàn)實際生產(chǎn)和應用相結(jié)合,推動GNN的探索落地。
下面介紹一下Graph-Learn背后的系統(tǒng)架構(gòu)和核心技術(shù)。
首先Graph-Learn提出我們自己的統(tǒng)一編程范式,包含了四個步驟。第一個步驟是采樣,指從大的圖中采樣,做到數(shù)據(jù)對齊,從而便于后面神經(jīng)網(wǎng)絡對它的處理。第二個步驟是把采樣的頂點和邊的屬性信息向量化,以便于后面的處理。第三個步驟,我們把向量化信息技術(shù)聚合,聚合所產(chǎn)生的向量信息在第四個步驟中跟中心節(jié)點信息相互整合,從而輸出中心節(jié)點向量化的表示。
其次,為了支持編程范式,Graph-Learn提出一體化的系統(tǒng),該系統(tǒng)包括兩部分。第一部分的圖引擎是分布式服務,提供了對大規(guī)模異構(gòu)以及帶有豐富屬性圖的層次,同時,圖引擎自帶容錯,可以保持穩(wěn)定,具備高效性能。第二部分是Tensor引擎作為用戶訪問圖數(shù)據(jù)接口,在神經(jīng)網(wǎng)絡部分,用戶可以充分與現(xiàn)有主流的系統(tǒng)相互對接,與圖引擎接口一起,開發(fā)面向業(yè)務的模型。
再者,在對圖引擎進行優(yōu)化的層面,我們?yōu)榱思铀賵D構(gòu)建過程的效率,整個圖引擎框架從主體、解析到構(gòu)成都實現(xiàn)了數(shù)據(jù)流水線方式,充分利用了CPU和計算力。比如說為了加速多效采樣過程,減少多效采樣中的通信,我們采取了多效反映機制,基于觀察我們定義了頂點重要性的定義,實現(xiàn)采樣效率成倍的提升。
最后,我們在圖引擎下層打造了統(tǒng)一的高性能和自適應數(shù)據(jù)通信層,利用異步并發(fā)集合通信的數(shù)據(jù),同步模型在數(shù)據(jù)層上,打造了智能化的控制層,可以實現(xiàn)梯度自動監(jiān)控和自動伸縮等功能。
目前,這些優(yōu)化是Graph-Learn表現(xiàn)突出的性能,Graph-Learn已經(jīng)在阿里內(nèi)部進行了廣泛部署,有很多成功的案例。Graph-Learn平均每天可以節(jié)省300TB存儲,萬CPU的算力,可以實現(xiàn)在兩分鐘之內(nèi)構(gòu)建百億級別規(guī)模,并把延遲縮短到十毫秒級別。這些性能極大地縮短了經(jīng)營算法的開發(fā)周期,將之前以周為單位的開發(fā)周期縮短了80%。我們已經(jīng)在Graph-Learn系統(tǒng)上支持了各種各樣的算法,Graph-Learn已經(jīng)應用在很多場景中,比如淘寶推薦、搜索、反作弊、網(wǎng)絡安全等。
今后,我們希望Graph-Learn的發(fā)展會基于算法驅(qū)動來對性能進行精益求精的優(yōu)化,我們會在系統(tǒng)延展性、生態(tài)多樣性上發(fā)力,希望大家能加入我們,跟我們一起打造開源生態(tài)。