总奖金40万元,图神经网络赛道baseline发布!教你用DGL做图任务
本文為2021 MAXP 系列公開課第二講完整版直播回顧,由亞馬遜云科技上海人工智能研究院張建博士主講。介紹了圖機器學習任務的概況,并著重講解了本次大賽的圖機器學習賽題,文中附基線模型開源地址。
在過去的幾年中,神經網絡的興起與應用成功推動了模式識別和數據挖掘的研究。許多曾經嚴重依賴于手工提取特征的機器學習任務,如今都已被各種端到端的深度學習范式徹底改變了。盡管傳統的深度學習方法被應用在提取歐氏空間數據的特征方面取得了巨大的成功,但許多實際應用場景中的數據是從非歐式空間生成的,傳統的深度學習方法在處理非歐式空間數據上的表現卻仍難以使人滿意。
近年來,人們對深度學習方法在圖上的擴展越來越感興趣。在多方因素的成功推動下,研究人員借鑒了卷積網絡、循環網絡和深度自動編碼器的思想,定義和設計了用于處理圖數據的神經網絡結構,由此一個新的研究熱點——“圖神經網絡”。
10月11日,biendata邀請亞馬遜云科技上海人工智能研究院張建博士,針對2021 MAXP 命題賽:基于DGL的圖機器學習任務,開展了一場線上直播。張建博士為直播觀眾詳細講解了圖神經網絡框架DGL,以及本次賽題的官方基線模型。
模型地址:https://github.com/dglai/maxp_baseline_model
直播視頻回顧:https://www.bilibili.com/video/BV1cL4y1B75C?spm_id_from=333.999.0.0
關于2021 MAXP
2021 MAXP 高性能云計算創新大賽(2021 MAXP)由中國計算機學會高性能計算專業委員會和中國信息通信研究院指導,ACM中國高性能計算專家委員會(ACMSIGHPC)和云計算開源產業聯盟聯合主辦,亞馬遜云科技和騰訊云支持,阿里云、華為云、UCloud、天翼云等廠商參與。大賽以高性能云計算為主題,旨在進一步推動國內高性能計算的發展,并為參賽者提供了高達40萬元的獎金池,還會提供實習機會和權威榮譽證書。
掃描競賽助手二維碼添加「MAXP大賽」小助手,備注“機構+姓名+比賽賽道”(“MAXP 創新賽”,“MAXP DGL”,“MAXP Lambda”,“MAXP 性能賽”),即可進入賽題溝通群。
大賽官網:https://biendata.xyz/maxp/
直播回顧
本篇文章將分為五個模塊介紹圖數據任務。
模塊一是講解為什么要做圖相關數據的任務。
模塊二會介紹近幾年圖機器學習方面的進展,特別是和圖神經網絡相關的進展,以及主要由亞馬遜云科技上海人工智能研究院主導開源的Deep Graph Library(DGL)圖形網絡框架,這也是大賽需要使用到的框架。
模塊三是針對賽道題目進行講解。
模塊四是本篇文章最核心的內容,將對基線DGL模型進行講解,特別是針對初賽的數據的處理和DGL模型的構建。
模型地址:https://github.com/dglai/maxp_baseline_model
模塊五會分享一些學習和掌握DGL的相關資源。
本次大賽用到的圖數據是人工智能的新數據金礦,就是圖結構化的數據。在實際生活和工作中,圖數據無處不在。例如社交網絡、知識圖譜及用戶相互之間的關系等,這些都是圖。化學分子也可以看成一個圖,這是一種構圖的新方法。
現在計算機視覺或自然語言處理所用到的圖像數據和自然語言數據本質上也是一種圖,通常稱為網格狀的圖。例如圖像數據,每一個圈代表一個像素點,表達了這個像素點和它臨近的這8個像素點之間的關系。
計算機視覺中用的卷積神經網絡,本質就是對于一個或一片區域的像素以及它們之間的關系進行建模。那么自然語言就可以認為是鏈型的圖,從講話時的第一個字到后面的字通過線性的關系串聯起來。
很多自然語言中使用的模型。例如GPT,它的本質是在線性串聯的圖結構上構建點和點之間的潛在關系。
對于圖數據這類比較新的數據,近幾年學術界針對于圖的論文數量一直在持續增長。
論文標題里包含graph的論文數量呈現指數增長的形式。尤其是2016年,在圖像深度學習的算法得到應用之后,這幾年都保持著百分之四十多的年增長率。到2020年,已經至少有2,000多篇論文都在討論圖和圖數據及與圖數據相關的機器學習的內容。
隨著圖數據的廣泛應用及出現新的人工智能思路后,與圖數據相關的一些算法和模型都出現井噴式增長。
其中比較典型的代表是2016年出現的《GCN圖卷積神經網絡》論文,這篇論文代表了圖神經網絡的開端。
對于圖上機器學習來說,通常會利用它完成三類任務。
第一類是點和邊的分類。用于識別可疑賬戶和鎖定有價值的用戶。
第二類是鏈接預測。對于圖來說有一些特殊的應用,在電商的商品推薦里就用到此類任務。這類任務的本質是預測用戶和商品之間是否存在關聯關系,如果關聯關系的可能性很高,那么就會推薦相關聯的商品。
第三類是圖分類和回歸的問題。用于預測化學分子的特性。
這些都是圖上機器學習常見的任務,在深度學習運用到圖數據之前,這個學科發展出了很多方法和模型完成圖上機器學習的任務。
2012年出現以連接主義為核心的神經網絡成為人工智能領域新的主流模型后,很多學者開始研究如何將深度學習的方法運用到圖結構化的數據上。
2016年隨著相關論文的出現,產生了一種新的圖像機器學習的方法,叫圖神經網絡。
圖神經網絡的本質是神經網絡家族的一員,更多的是研究基于點邊和圖的特征。
圖神經網絡的本質是對于圖結構化數據上的主要實體,點和邊及它們擁有的特征進行卷積運算,同時利用神經網絡常見的非線性的激活函數及正則化方法,將圖里面的點和邊及它們的特征進行多層卷積化處理,最后得到點、邊或整個圖結構的向量化的表示。
利用向量化表示,可以進一步幫助完成下游的任務。例如要對點、邊、圖做分類或回歸等一系列應用。
目前已經有各種各樣的機器學習或深度學習的框架工具,比如TensorFlow、PyTorch等工具都非常好用,但是在實踐的過程中如果只使用TensorFlow、PyTorch這類常見的框架開發GNN,就會碰到圖結構化數據特有的問題。
因為圖結構的特殊性,在使用傳統的或常見的深度學習框架的過程中就容易出現out of memory等問題。
因為在圖結構化數據時,數據里經常會出現一個點有很多鄰居,而鄰居的數量是變化的。但是卷積神經網絡里所看到的每一個像素,像素周邊的鄰居數量是固定的,這樣針對固定數量張量設計的結構就容易出現內存溢出的問題。
因此在開發圖神經網絡的過程中,經常會碰到類似這種需要處理不平衡或是不一致數據分布的情況,此時用傳統的神經網絡框架開發就會碰到各種各樣的問題。所以需要有專門針對于圖神經網絡的通用框架的出現,DGL就是其中之一。
DGL是專門用來編寫圖神經網絡的開源工具,目的是為了讓編寫圖神經網絡更加簡單,并且易于快速應用到業務場景里面。
簡單而言,DGL是一款面向圖神經網絡深度學習框架。
與其他的圖神經網絡深度學習框架不同的是,DGL是兼容多個后端的框架,稱為后端無知的框架。在整個框架里DGL支持用PyTorch去編寫后端,也支持MXNet、TensorFlow編寫后端。DGL關注的是應對與圖結構化數據相關和圖神經網絡模型相關的工作。
在DGL中同樣支持多種訓練模式的情況,包括單機單卡、單機多卡或多機多CPU的分布式訓練等在平常做深度學習訓練過程中都會用到的情景。
同時針對于常用的GNN模塊,都已經做了內置的實現。另外,DGL已有70多個經典和前沿的GNN模型的樣例,可以更好的上手 GNN的學習和利用最新的模型完成業務需求,或是開發新的模型需要。
在剛剛過去的9月份, DGL整個開源項目獲得了中國信息通信研究院主持“OSCAR 尖峰開源項目及開源社區”的大獎,這樣評選中的獲勝,也是對DGL作為開源社區的認可。
賽題講解
圖機器學習的常見任務是包括三類:點分類/回歸,邊分類/回歸、鏈接預測,整圖分類/回歸。
這次比賽所做的事情就是最常見的點分類,完成圖中點的標簽分類。
比賽的數據由的數據供應方獲取的,基于微軟的學術論文引用文獻的引用圖。
數據是論文引用關系圖,節點是論文,邊是單向的論文引用關系。每節點都具有300維的特征值,節點屬于23個類別之一,這也是論文所處的領域標簽。
任務是通過利用已知的標簽學習和預測未知節點的標簽。
針對這個任務我們開發了基于DGL的GNN基線模型,主要的目的是為了幫助參賽者快速的上手掌握和使用 DGL來開發GNN的模型,并運用到這次大賽過程中。
代碼結構包括兩部分。
第一部分是4個數據預處理的文件,每個文件都有不同的目的。
第二部分是GNN的目錄,其中包括用DGL寫的 GNN模型文件及針對模型文件和比賽數據所做的模型訓練文件和相應的幫助文件。
首先介紹代碼邏輯里數據預處理的部分。
文件一的主要目的是完成針對于初賽數據構建點列表。
初賽數據包含點及論文到論文之間的邊列表,但是邊列表里包含一些論文的ID,這些ID在論文的點列表里并沒有出現,所以數據探索和處理需要將所有點的paper ID合并起來,構成完整的點列表,同時給每一個 paper ID新的點索引。
文件二主要完成將原始文件的300維特征全部讀出來,構建成壓縮數據。
因為原始數據文件是用文本的格式存儲的,處理起來非常花費時間,而且速度很慢,對內存的要求也比較高。所以文件二進行數據預處理后保存下來,直接用到后面的建模過程中,會極大的提升速度。
文件三的主要目的是使用新建的點索引,同每一個paper ID對應的點索引完成對于原有的邊列表替換。
利用DGL的Graph類構建了DGL Graph,同時借助DGL的保存圖功能存成graph.bin文件。
文件四的主要目的是完成對標簽的分割。針對train_nodes.csv有標簽的數據進行 train或validation的分割,test的數據集是用validation_nodes.csv里沒有標簽的點進行索引構建的。
其次介紹代碼邏輯的 GNN部分,GNN部分主要包含兩個文件。
第一個文件是models.py文件。
在models.py文件中,DGL內置的三個常用的GNN模塊被稱為基礎的模型模塊,構建基于鄰居采樣模式的模型代碼。
鄰居采樣模式的模型代碼分為三類:GraphSage,GCN,GAT。
因為賽題的數據相對來說規模較大,達到了百萬級的點及千萬級的邊的規模。因此,如果想把圖和300維的特征都使用全圖訓練模式,全部放到GPU里訓練,很容易就會造成GPU顯存溢出無法完成訓練;全部放到CPU里訓練,速度會非常慢。
所以采用mini批次的方法訓練。做點分類時可以用鄰居采樣模式降低每一個批次的計算數據的數據量,從而保證可以使用GPU快速完成數據訓練。
每一個模型構建之后都有入參,部分入參可以三個模型共享,另一部分入參是某些模型獨有的。
第二個文件是model_train.py文件,這也是基線模型代碼的核心文件。它利用構建的GNN模型以及經過預處理后的數據文件構建的訓練模型代碼。
代碼主要邏輯的第一步是完成預處理數據的讀取。使用輔助函數可以快速讀取預處理數據,供訓練模型使用。
訓練模型的代碼包含三種方式:
一種是使用CPU去訓練;一種使用單塊GPU進行mini批次訓練;一種是使用單機多GPU進行數據并行的mini批次訓練。
在主函數里有相應的入口,CPU的訓練更多的是進行代碼調試。對模型進行修改或使用自己開發的模型,可以先在CPU上進行調試訓練,保證代碼沒有錯誤,再遷移到 GPU上進行訓練。
三個訓練方式的訓練邏輯是一致的。如果使用多CPU進行訓練數據并行的方式,需要對數據集進行多次劃分,不同的劃分送到不同的顯卡上進行訓練,將剩下的工作使用DGL點采樣器和數據加載器完成mini批次的構建,最后選擇構建GNN模型。
因為代碼是基于PyTorch 后端寫的,可以構建常見的PyTorch損失函數和優化器,最后在整個的 Epoch循環里面完成訓練的 mini batch的循環和驗證,及最佳模型保存的工作。
針對DGL比賽,我們還提供了與DGL相關的核心資源方便大家學習和掌握。
DGL圖神經網絡主要的核心資源有兩個:
第一個核心資源是dgl.ai的官網。官網中最核心的內容分為兩塊:
一塊是Getting Started,這個頁面可以輔助安裝DGL。因為安裝的過程中針對不同的系統,是否使用GPU,有沒有顯卡及顯卡對應的版本都有不同的安裝命令。因此利用 Getting Started頁面,快速找到環境對應的安裝命令,一條命令就可以將DGL安裝好。
另一塊是docs,這個頁面包含了與DGL相關的和主要的所有核心幫助文檔。
Docs中包括DGL對外開放的API說明,還有基于中文的用戶手冊。方便中國區的用戶快速的上手使用DGL構建hello word代碼。
第二個核心資源就是DGL GitHub 站。
這里可以看到DGL 的源碼及官方的DGL模型實現樣例。除了GCN、GAT和GraphConv,還有很多經典樣例可以在examples目錄中找到,這些樣例都可以進行參考使用,也可以修改模型完成本次大賽。
關于DGL的相關問題可以在DGL的官方討論渠道中探討。
第一個渠道是DGL官網里的 discuss論壇;
第二個渠道是DGL GitHub站中的 issue區;
第三個渠道是搜索DGL用戶群或DGL用戶1群、DGL用戶2;
第四個渠道是通過 Slack Channel提問題,找到相關同事回復,給到參賽者解惑。
—
掃描二維碼添加「MAXP大賽」小助手,備注“機構+姓名+比賽賽道”(“MAXP 創新賽”,“MAXP DGL”,“MAXP Lambda”,“MAXP 性能賽”),即可進入賽題溝通群。
點擊閱讀原文前往大賽官網
總結
以上是生活随笔為你收集整理的总奖金40万元,图神经网络赛道baseline发布!教你用DGL做图任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几款知名RTMP推流模块比较:OBS V
- 下一篇: 2021年三大顶会时间序列论文代码整理