一鍵即執行!清華團隊推出圖深度學習工具包CogDL v0.1

AMiner學術頭條發表於2020-10-29

一行程式碼命令可以做什麼?

“一行命令可以實現‘一條龍’執行實驗。”

訪問 github.com/THUDM/cogdl 一鍵體驗!

近年來,結構化資料的表示學習備受業界關注與熱捧,圖神經網路成為處理相關工作的有力工具,基於隨機遊走、矩陣分解的方法在搜尋推薦、分子和藥物生成等領域有著十分重要的應用。

但是,由於許多專案的程式碼並未開源或者開原始碼的風格多種多樣,研究者和使用者在使用這些方法的過程中會遇到各種各樣的問題,比如實驗復現以及如何在自己的資料集上執行模型等。

具體而言(以學術研究為例),研究者和使用者在從事研究過程中需要將自己提出的模型與其他模型進行對比,來驗證所提出模型的有效性。但在對比過程中,他們需要選定若干個下游任務,在每個任務下,透過公平的評估方式來對比不同模型的效能,由於不同模型在提出時可能會使用不完全一致的下游任務或者評估方式,他們需要花費大量精力修改基線模型來進行適配。

那麼,如何快速、便捷地復現出基線模型(baseline)的結果,並將這些模型應用到自定義的資料集上?

為此,清華大學知識工程實驗室(KEG)聯合北京智源人工智慧研究院(BAAI)開發了一種基於圖深度學習的開源工具包——CogDL(底層架構為 PyTorch,程式語言為 Python)。

據 CogDL 開發者介紹,該工具包透過整合多種不同的下游任務,同時搭配合適的評估方式,使得研究者和使用者可以方便、快速地執行出各種基線模型的結果,進而將更多精力投入研發新模型的工作之中。

對圖領域中每種任務,我們提供了一套完整的“資料處理-模型搭建-模型訓練-模型評估”的方案,易於研發人員做相關的實驗。比如對於圖上半監督節點分類任務,我們整合了常用的資料集 Cora、Citeseer、Pubmed,提供了經典的/前沿的各種模型(包括GCN、GAT、GCNII 等),提供了相應的訓練指令碼,並且整理出了一個相應的排行榜作為參考。” CogDL 開發者說。

CogDL 最特別的一點在於它以任務(task)為導向來整合所有演算法,將每一個演算法分配在一個或多個任務下,從而構建了 “資料處理-模型搭建-模型訓練和驗證” 一條龍的實現。
# GCN 和 GAT 在 Cora 和 Citeseer 上的實驗
python scripts/train.py --task node_classification --dataset cora citeseer --model gcn gat

一鍵即執行!清華團隊推出圖深度學習工具包CogDL v0.1

此外,CogDL 也支援研究者和使用者自定義模型和資料集,並嵌入在 CogDL 的整體框架下,從而幫助他們提高開發效率,同時也包含了當前許多資料集上 SOTA 演算法的實現,並且仍然在不斷更新。

CogDL:面向任務,擴充套件演算法

圖表示學習演算法可以分為兩類:一類是基於圖神經網路的演算法,另一類是基於 Skip-gram 或矩陣分解的演算法。前者包括 GCN、GAT、GraphSAGE 和 DiffPool 等,以及適用於異構圖的 RGCN、GATNE 等;後者則包括 Deepwalk、Node2Vec、HOPE 和 NetMF 等,以及用於圖分類的 DGK、graph2vec 等演算法。
一鍵即執行!清華團隊推出圖深度學習工具包CogDL v0.1
大體上,CogDL 將已有圖表示學習演算法劃分為以下 6 項任務:

  • 有監督節點分類任務(node classification):包括 GCN、GAT、GraphSAGE、MixHop 和 GRAND 等;
  • 無監督節點分類任務(unsupervised node classification):包括 DGI、GraphSAGE(無監督實現),以及 Deepwalk、Node2vec、ProNE 等;
  • 有監督圖分類任務(graph classification):包括 GIN、DiffPool、SortPool 等;
  • 無監督圖分類任務(unsupervised graph classification):包括 InfoGraph、DGK、Graph2Vec 等;
  • 連結預測任務(link prediction):包括 RGCN、CompGCN、GATNE 等;
  • 異構節點分類(multiplex node classification):包括 GTN、HAN、Metapath2vec 等。

CogDL 還包括圖上的預訓練模型 GCC,GCC 主要利用圖的結構資訊來預訓練圖神經網路,從而使得該網路可以遷移到其他資料集上,來取得較好的節點分類和圖分類的效果。

能用來做什麼?

那麼,研究者和使用者可以利用 CogDL 做些什麼?主要有三點:跟進 SOTA、復現實驗,以及自定義模型和資料。

跟進 SOTA。CogDL 跟進最新發布的演算法,包含不同任務下 SOTA 的實現,同時建立了不同任務下所有模型的 leaderboard(排行榜),研究人員和開發人員可以透過 leaderboard 比較不同演算法的效果。
一鍵即執行!清華團隊推出圖深度學習工具包CogDL v0.1
復現實驗。論文模型的可復現性是非常重要的。CogDL 透過實現不同論文的模型也是對模型可復現性的一個檢驗。

自定義模型和資料。“資料-模型-訓練”三部分在 CogDL 中是獨立的,研究者和使用者可以自定義其中任何一部分,並複用其他部分,從而提高開發效率。

怎麼用?

有兩種方法:命令列直接執行,透過 API 呼叫

命令列直接執行。透過命令列可以直接指定 "task"、"model"、"dataset" 以及對應的超引數,並且支援同時指定多個模型和多個資料集,更方便。程式碼如下:
# 監督GraphSAGE
python scripts/train.py --task node_classification --dataset pubmed --model graphsage -seed 0 1 2 3 4 5
# 無監督GraphSAGE
python scripts/train.py --task unsupervised_node_classification --dataset pubmed --model unsup_graphsage
# DeepWalk + Node2Vec演算法 + BlogCatalog + Wikipedia資料集
python script/train.py --task unsupervised_node_classificatoin --dataset blogcatalog wikipedia --model deepwalk node2vec
透過 API 呼叫。在程式碼中呼叫 CogDL 的資料、模型、任務構建 API,方便使用自定義資料集和模型,更靈活。程式碼如下:
# 獲取模型/資料/訓練的引數
args = get_default_args()
args.task = 'node_classification'
args.dataset = 'cora'
args.model = 'gcn'
# 建立資料集
dataset = build_dataset(args)
args.num_features = dataset.num_features
args.num_classes = dataset.num_classes
args.num_layers = 2
# 建立模型
model = build_model(args)
# 訓練+驗證
task = build_task(args, dataset=dataset, model=model)
ret = task.train()
CogDL 支援自定義資料集和模型,並且提供了自動調參的例子。
一鍵即執行!清華團隊推出圖深度學習工具包CogDL v0.1
據 CogDL 研究者介紹,從 2019 年啟動以來,該專案經過了多次密集的研發,到目前已經整合了圖領域的重要任務及其相關的經典和前沿的模型。

CogDL 開發者表示,“起初,我們只是整合了實驗室內部從事相關領域研究的同學所使用的相關程式碼,為了方便實驗室其餘的同學執行相關的實驗。後來,我們決定將程式碼開源出來,讓更多的研究和開發人員能夠藉助我們的程式碼從事相關工作。”

如今,CogDL 已經上線了 CogDL v0.1.1。

“我們增加了一些最前沿的圖神經網路模型,包括圖自監督模型、圖預訓練模型。使用者可以利用圖上預訓練好的模型做不同的下游任務。在下游任務方面,我們增加了知識圖譜的連結預測任務,方便從事知識圖譜領域的使用者進行相關實驗。” CogDL 開發者說。

具體而言,在監督節點分類任務上,增加了 GRAND 和 DisenGCN,GRAND 在 Cora、PubMed、Citeseer 上取得了 SOTA 或者接近 SOTA 的效果;無監督節點分類任務上,增加了 DGI、MVGRL、GraphSAGE(無監督實現);在連結預測任務上,增加了知識圖譜上的連結預測 GNN 模型 RGCN 和 CompGCN;以及增加了圖上的預訓練模型 GCC。

另外,CogDL 也提供了使用 optuna 進行超引數搜尋的 example,透過指定 "模型,資料集,引數" 即可自動實現超引數的搜尋。

接下來,CogDL 研究者希望在現有基礎上,繼續補充其餘的圖領域的下游任務,新增更多的資料集,更新每個任務的排行榜;同時增加最前沿的關於預訓練的圖神經網路模型,支援使用者直接使用預訓練好的模型來進行相關應用;以及完善 CogDL 的教程和文件,讓剛接觸圖領域的初學者能夠快速上手。

談及最終的願景,CogDL 研究者表示,一方面希望從事圖資料領域的研究人員可以方便地利用 CogDL 來做實驗,另一方面希望面向實際應用的開發人員可以利用 CogDL 來快速地搭建相關下游應用,最終打造一個完善的圖領域的研發生態

CogDL 專案傳送門
https://github.com/THUDM/cogdl
CogDL 0.1.1 release 詳細資訊
https://github.com/THUDM/cogdl/releases/tag/0.1.1

相關文章