图神经网络代码_第一篇:图神经网络(GNN)计算框架绪论
寫在開頭:
這個專欄是為了總結我本科畢業設計中所設計的題目《基于GPU的圖神經網絡算法庫的設計鈺實現》。這半年來一直在這個方向上啃代碼,讀論文,真的學到了很多東西。尤其是閱讀了大佬團隊寫的開源框架代碼,受益良多。本專欄計劃從三個大的方面進行整理:
第一部分是對典型的圖神經網絡(GNN)模型 進行介紹,抽象出其核心的計算過程;
第二部分是對GPU編程進行介紹,即CUDA代碼的編寫;
第三部分是對目前學界和業界主流的圖神經網絡計算平臺進行介紹,計劃選取DGL和PyG。
緒論:
隨著深度學習技術在2012年起開始的爆發式的發展。很多以歐式空間為輸入空間并依賴手工特征工程提取特征的機器學習任務,如圖像目標檢測,語言識別與機器翻譯等,被各種端到端的深度學習范式徹底改變了。盡管針對歐式空間設計的DNN(Deep Neural Network,深度神經網絡)取得了巨大的成功,但在以圖結構為代表的非歐式空間上這些性能強大的算法卻難以一展拳腳。主要原因有兩點:首先,圖數據是不規則的,比如圖中各節點的度是不確定的,這就導致一些在規則的歐式空間上定義的算子如卷積操作無法直接應用在圖數據上,如圖1.1 所示。此外,在很多圖數據中每個節點與其鄰居節點之間的拓撲結構鏈接蘊含了依賴或因果關系,而基于歐式空間的神經網絡無法有效地對這些關系進行學習。因此,一系列針對圖結構設計的GNN網絡(Graph Neural Network,圖神經網絡)被學者們提出,其中代表性的有GCN網絡[1](Graph Convolutional Network,圖卷積網絡),GraphSAGE模型[2],GAT網絡[3](Graph Attention Network,圖注意力網絡)。
圖1.1 歐式空間卷積操作(左圖)和非歐式空間卷積操作的區別(右圖)于此同時,GPU(Graphics Processing Units, 圖形處理單元)已經成為推動深度學習技術快速發展不可或缺的重要力量。GPU從曾經的圖形加速器到現在已經演化為一種強大、多用途的、可編程的,用于大規模并行計算的協處理器。GPU的單指令多線程的眾核架構有著并行加速神經網絡計算天然的優勢,如圖1.2所示。目前英偉達性能最強悍的GPU是NVIDIA TITAN RTX,其包含了多達4608個單精度CUDA處理核心,這些核心又被劃分為72個流式多核處理單元,另外還有一個高達24GB被所有核心共享的全局內存[6]。
圖1.2 CPU與GPU架構對比[17]為了更大程度的發揮出GPU的能力,英偉達公司推出了CUDA(Compute Unified Device Architecture,統一計算設備架構)編程模型[7]。CUDA編程模型提供了一個計算機架構抽象作為應用程序和其可用硬件之間的橋梁,程序員可以使用C語言自由設計所需的并行計算程序。CUDA已經從最早的CUDA 1.0版本發展到現在的CUDA 10.2版本,期間CUDA推出了專門針對神經網絡優化的GPU加速庫cuDNN(CUDA Deep Neural Network library,CUDA深度神經網絡庫)。現在GPU已經發展到了十分成熟的階段,憑借硬件的進步和CUDA的不斷發展其運行速度已遠遠超過了多核 CPU 的運算速度[8]。
GNN的訓練難點:
盡管如此,為圖數據編寫高性能圖神經網絡算法仍然是一個非常有挑戰性的任務。
總結
以上是生活随笔為你收集整理的图神经网络代码_第一篇:图神经网络(GNN)计算框架绪论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: string 字符串中字符无效_7.3
- 下一篇: python写一个文件下载器_pytho