圖神經網絡由于其強大的表示能力和靈活性最近取得了廣泛的關注. 隨著圖數據規模的增長和顯存容量的限制, 基于傳統的通用深度學習系統進行圖神經網絡訓練已經難以滿足要求, 無法充分發揮GPU設備的性能. 如何高效利用GPU硬件進行圖神經網絡的訓練已經成為了該領域重要的研究問題之一. 傳統做法是基于稀疏矩陣乘法, 完成圖神經網絡中的計算過程, 當面對GPU顯存容量限制時, 通過分布式矩陣乘法, 把計算任務分發到每個設備上, 這類方法的主要不足有: (1)稀疏矩陣乘法忽視了圖數據本身的稀疏分布特性, 計算效率不高; (2)忽視了GPU本身的計算和訪存特性, 無法充分利用GPU硬件. 為了提高訓練效率, 現有一些研究通過圖采樣方法, 減少每輪迭代的計算帶價和存儲需求, 同時也可以支持靈活的分布式拓展, 但是由于采樣隨機性和方差, 它們往往會影響訓練的模型精度. 為此, 提出了一套面向多GPU的高性能圖神經網絡訓練框架, 為了保證模型精度, 基于全量圖進行訓練, 探索了不同的多GPU圖神經網絡切分方案, 研究了GPU上不同的圖數據排布對圖神經網絡計算過程中GPU性能的影響, 并提出了稀疏塊感知的GPU訪存優化技術. 基于C++和CuDNN實現了該原型系統, 在4個不同的大規模GNN數據集上的實驗表明: (1)通過圖重排優化, 提高了GPU約40%的緩存命中率, 計算加速比可達2倍; (2)相比于現有系統DGL, 取得了5.8倍的整體加速比.
最先進的神經網絡架構設計的最新進展正在向Transformer模型發展。這些模型在計算機視覺、自然語言處理和語音識別的廣泛應用中取得了卓越的準確性。自從Transformer模型最初被引入以來,這種趨勢在過去幾年中一直是一致的。然而,最近Transformer模型推理所需的計算量和帶寬正在以顯著的速度增長,這使得它們在延遲敏感的應用程序中的部署具有挑戰性。因此,人們越來越關注提高Transformer模型的效率,方法從更改架構設計,一直到開發專用的特定領域加速器。**本文調研了高效Transformer推理的不同方法,包括:(i)分析和剖析現有Transformer架構中的瓶頸及其與之前卷積模型的異同;(ii) Transformer架構對硬件的影響,包括層歸一化、Softmax和GELU等非線性操作以及線性操作對硬件設計的影響;(iii)優化固定Transformer架構的方法;(iv)為Transformer模型找到正確的映射和操作調度的挑戰;(v)通過使用神經架構搜索調整架構來優化Transformer模型的方法。**最后,在開源的全棧深度神經網絡加速器生成器Gemmini上進行了案例研究,并與之前的基準測試結果相比,展示了這些方法是如何產生改進的。發現與上述方法相結合的全棧協同設計方法可以導致高達88.7倍的加速比。
1. 引言
深度學習模型在訓練和推理過程中已經擴展到數十億個參數和數十億個乘累加(MAC)操作。因此,人們對高效計算這些模型以及在資源受限的邊緣設備上部署這些計算和內存密集型工作負載的興趣越來越濃厚。這些邊緣設備有嚴格的能量和內存限制,相應的利用深度學習模型的應用程序通常也有實時延遲限制。CPU和GPU在通用性能計算平臺中都是常用的,它們的優勢是無處不在且能夠支持各種工作負載和操作。然而,這種靈活性是以降低效率為代價的。深度學習模型由少量不同的操作組成,這些操作會重復數百萬或數十億次,因此通常不需要很高的靈活性。此外,雖然現代CPU和GPU可以并行執行多個操作,但它們缺乏利用深度學習模型中的海量數據重用機會的能力。 對快速、高效計算的需求,使用少量不同的操作,以及數據重用的機會,這些結合在一起,導致了深度學習使用硬件加速器。這與學術界開發的許多研究加速器相似[34,37,39,40,59,69,70,81,169]。隨著硬件加速器的發展,用于部署各種深度學習算法的軟件框架[3,32,98,167]和編譯器[33,161,185]也得到了增強和成熟。這些工具使深度學習算法能夠在加速器上執行,并執行映射優化,以提高整個深度學習流水線的性能和效率。然而,快速發展的深度學習算法仍在不斷引入對軟硬件支持及其協同優化的新需求,以滿足各種部署約束。 **最近,transformer和大型語言模型[22,44,52,58,86,173-175,177,190,198]在解決各種自然語言處理(NLP)任務方面的流行,在加速器和框架的設計方面提出了一套全新的挑戰。**人們也越來越關注提高Transformer推理的效率,特別是由于它們的規模和運行時復雜性不斷增長。然而,與更知名的卷積神經網絡(CNN)架構相比,人們仍然缺乏對Transformer架構的工作負載特征的了解,從而缺乏有效運行這些模型所需的設計原則。例如,與傳統的以CNN為重點的設計相比,transformer主要由矩陣乘法(matmuls)和內存密集型的非線性操作組成。此外,Transformer模型的計算圖和數據流比CNN更復雜,具有更多類型的操作節點,以及更多的數據流拆分和連接。所有這些挑戰都要求我們對當前的硬件和軟件解決方案進行全面的分析,以及Transformer推理的各種設計權衡。進行這樣的分析將使我們能夠對高效運行transformer的需求建立全面和全面的理解。
本文工作有兩個方面的貢獻:(1)分析Transformer的運行時特性,并調查高效Transformer推理的不同方法;(2)在全棧深度神經網絡(DNN)加速器生成器Gemmini[70]上應用所調查的方法進行案例研究。本文工作的長期目標是描述硬件和軟件堆棧中的不同因素,以優化Transformer推理。關于我們的第一個貢獻,本文涵蓋了端到端深度學習推理的不同層次,特別關注transformer。這包括:Transformer架構的運行時特征和瓶頸的分析和profiling(第2節)。包括Transformer架構的非線性操作對其設計的影響(第3節)?優化策略,如修剪和量化,以進一步提高固定Transformer架構的性能(第4節)?Transformer架構中操作的映射和調度及其相關挑戰(第5節)?通過自動化神經架構搜索過程設計和適應Transformer架構,以提高硬件效率(秒。6)。
Transformer模型架構和性能瓶頸
在本節中,我們將從高層次地介紹Transformer架構的各個組成部分。首先討論了多頭注意力和前饋模塊、transformer中使用的非線性操作,以及編碼器/解碼器模型之間的差異,在2.1節中。在2.2節中,我們使用算法分析這些不同塊對硬件性能的影響,并對每個組件進行分析建模和直接profiling。
**硬件設計
**到目前為止,在第2節中,我們已經對Transformer架構的運行時特性和瓶頸進行了分析。現在將重點轉移到高效Transformer推理的全棧解決方案,從設計高效的硬件開始。第3.1節概述了為DNN使用特定領域加速器的基本原理,以及在大多數DNN加速器中使用的基本架構和數據流。第3.2節重點介紹了加速transformer的現有工作。第3.3節隨后提供了使用分析模型的分析,以評估transformer在典型加速器上的運行情況。最后,第3.4節提供了一個案例研究,說明了為transformer構建典型加速器的過程。總的來說,本節會給出相關的性能分析,并從全棧的角度為選定的硬件決策提供依據。請注意,我們這里只關心如何有效地推斷DNN。特別是,為高效的模型訓練設計硬件超出了本文的范圍。
** 模型優化**
給定一個已經設計和訓練好的DNN模型,一個重要的問題是,是否仍然有可能通過算法來提高模型在目標硬件平臺上的效率,通過將模型改編為更友好的硬件格式。在本節中,我們將分別在第4.1節和4.2節中討論流行的現成模型優化方法,量化和稀疏性(即剪枝)。然后,在第4.3節中,我們概述了特定于transformer的優化方法,以提高特定于transformer的特征(如注意和非線性操作)的性能。
將transformer映射到硬件
為了在目標硬件架構上執行Transformer塊,必須將其映射到執行所需的計算和通信的硬件指令中。在映射過程中所做的選擇對性能有很大影響。然而,可能映射空間的大小使找到最優映射變得困難,這需要使用仔細考慮的探索、啟發式或基于學習的方法。在本節中,我們將介紹5.1節中的映射問題。我們將在第5.2節討論高效執行transformer所需的關鍵映射決策。我們在第5.3節中概述了現有映射技術的分類,在第5.4節中概述了對不同映射的性能進行建模的技術。最后,在5.5節中,我們將介紹mapper在使用transformer時需要注意的問題。
摘要: 隨著人工智能的快速發展,從可行的算法中選擇滿足應用需求的算法已經成為各領域亟待解決的關鍵問題,即算法選擇問題。基于元學習的方法是解決算法選擇問題的重要途徑,被廣泛應用于算法選擇研究并取得了良好成果。方法通過構建問題特征到候選算法性能的映射模型來選擇合適的算法,主要包括提取元特征、計算候選算法性能、構建元數據集以及訓練元模型等步驟。首先,闡述基于元學習的算法選擇概念和框架,回顧簡述相關綜述工作;其次,從元特征、元算法和元模型性能指標三方面總結研究進展,對其中典型的方法進行介紹并比較不同類型方法的優缺點和適用范圍;然后,概述基于元學習的算法選擇在不同學習任務中的應用情況;繼而,使用140個分類數據集、9種候選分類算法和5種性能指標開展算法選擇實驗,對比不同算法選擇方法的性能;最后,分析目前存在的挑戰和問題,探討未來的發展方向。 //fcst.ceaj.org/CN/abstract/abstract3212.shtml
人工智能是數據處理與分析的重要技術,為人 們利用數據進行決策和研究提供了有力支撐。在人 工智能的不同領域中,研究人員提出了大量算法,然 而,不同算法在有限數量的問題上具備優越性能,不 存在一個適用于所有問題的可行算法,該現象被稱 為算法的性能互補性(performance complementarity) 現象[1] ,與“沒有免費午餐”(no free lunch)定理相印 證[2] 。算法的性能互補性現象普遍存在于不同領域, 如何為給定問題從大量可行算法中選擇滿足應用需 求的算法成為了各領域面臨的重要挑戰,即算法選 擇問題(algorithm selection problem)[3] 。算法選擇問 題通常采用人工選擇或自動選擇的方法解決。人工 選擇方法通過實驗試錯或依賴專家選擇合適的算 法,然而實驗試錯方法成本較高,專家選擇與專家的 經驗知識相關且靈活性較低[4] 。自動選擇方法通過 設計算法和模型,根據問題的特點自動選擇滿足應 用需求的算法,包括活躍測試(active test)方法、推薦 系統方法以及基于元學習(meta-learning)的方法[5-7] 。 其中基于元學習的方法研究基礎較為深厚,具備開 銷低和靈活度高等優點,成為了解決算法選擇問題 的主要方法[8-9] 。 本文對基于元學習的算法選擇進行綜述總結, 為研究人員了解相關領域的發展現狀提供參考。
今天給大家介紹 Meta(Facebook) AI Research 團隊 2022 年發表在 ICLR 上的論文 “TOWARDS TRAINING BILLION PARAMETER GRAPH NEURAL NETWORKS FOR ATOMIC SIMULATIONS”。本文針對原子模擬領域,提出了一種圖并行框架,可以分布式的在多 GPU 上訓練十億級參數量的超大圖神經網絡模型。在標準數據集 OC20 上最高實現了 21% 的性能提升。
用于原子模擬建模的圖神經網絡(GNNs)的最新進展有可能徹底改變催化劑的發現,這是朝著應對氣候變化所需的能源突破取得進展的關鍵一步。然而,被證明對這項任務最有效的GNN是內存密集型的,因為它們在圖中模擬高階相互作用,例如三重或四重原子之間的相互作用,因此很難拓展這些模型。在本文中,我們提出了一種圖并行方案,這是一種將輸入圖分布在多個 GPU 上的方法,使我們能夠訓練具有數億或數十億參數的超大 GNN。我們通過將最近提出的 DimeNet++ 和 GemNet 模型的參數數量增加一個數量級以上,對我們的方法進行了實證評估。在大規模開放式 Catalyst 2020(OC20)數據集上,我們提出的圖并行在 S2EF 任務的 MAE指標相對提高了15%,在 IS2RS 任務的 AFbT 指標相對提高了21%,實現了新的 SOTA。
圖神經網絡(GNNs)已成為原子系統建模的標準體系結構,從蛋白質結構預測到催化劑發現和藥物設計,有著廣泛的應用。這些模型對圖結構輸入進行操作,其中圖的節點表示原子,邊表示鍵或原子鄰居。盡管它們取得了廣泛的成功,并且擁有大量的分子數據集,但訓練大規模的GNN(具有數十億個參數)是一個重要但尚未得到充分探索的領域。計算機視覺、自然語言處理和語音識別領域類似大型模型的成功表明,擴大 GNN 的規模可以顯著提高性能。 以前大多數擴展 GNN 的方法都專注于將小模型(具有數百萬個參數)擴展到大圖,產生了鄰域采樣等方法。但這些方法不適用于包含數百萬個較小圖的原子模擬數據集。我們的重點是針對由許多中等大小的圖組成的數據集,擴展到非常大的模型的問題。
Battaglia et al.(2018)介紹了一種稱為圖網絡(GN)的框架,該框架為許多流行的圖神經網絡(GNN)提供了一般抽象,這些網絡在圖的邊和節點表示上運行。本文以他們的工作為基礎,定義了擴展圖網絡(EGN)框架,以包括也在高階項上運行的 GNN,如三元組或四元組節點。 在 GN 框架中,圖被定義為一個三元組 , 其中 表示關于整個圖的全局屬性。GNN 包含一系列 GNblocks,這些 GNblocks 對輸入圖進行迭代操作,更新各種表示。在 Extended Graph Network (EGN) 框架中,圖被定義為一個四元組 , 表示高階相互作用項的集合。 作為一個具體的例子,考慮在這個框架中用圖表示的原子系統,節點表示原子,邊表示原子鄰居。節點屬性 和邊屬性 可以分別表示原子的原子數和原子之間的距離。更高階的相互作用可以表示原子的三元組,即成對的相鄰邊,其中 表示鍵角,鍵角是共享一個公共節點的邊之間的角度。最后,全局屬性 可以表示系統的能量。
在 EGN 框架中,GNN 包含一系列的 EGN 塊,迭代的更新圖中的表示,如上圖所示,從最高階的關系項開始更新,逐步到最低階,直到完成整個圖的更新,一次迭代完成。(上圖中,最高階為三元關系,邊為二元關系,節點為一元關系)。 即使在中等大小的圖上訓練大型 EGN 也具有挑戰性,因為存儲和更新每個三元組、邊和節點的表示需要大量內存占用。在許多應用中,邊的數量比節點的數量大一到兩個數量級,而三元組的數量比邊的數量大一到兩個數量級。因此,存儲和更新三元組表示通常是 GPU 內存和計算方面的瓶頸。許多最新的研究使用低維表示來克服這一問題。但會損失性能。
本文使用分布式 EGN 塊的實現。假設我們有 P 個處理單元。每個單元負責計算對三元組、邊和節點子集的更新。在計算開始時,我們將圖拆分為子集。在前向傳遞時,P 個處理單元并行的更新三元組的子集,并進行局部聚集。然后進行 reduce 操作實現全局聚集。剩下的低階關系聚集是相似的,整個過程如上圖所示。 基于這一分布式的框架,本文給出了兩個使用 GNN 預測原子系統能量和力的具體示例,將分子建模為一個圖,其節點表示原子,其邊表示原子的鄰居。GNN 將這樣的圖作為輸入,并預測整個系統的能量以及每個原子上的三維力矢量。
本文使用 OC20 數據集,其包含超過 1.3 億個原子結構,用于訓練模型,預測結構松弛期間的力和能量。我們報告了三項任務的結果:
未來,作者希望將圖并行 (graph parallelism)和模型并行 (例如 GPipe)的方法相結合,來訓練更大的模型,以產生更好的性能。 參考文獻
圖神經網絡(GNN)是一類基于深度學習的處理圖域信息的方法,它通過將圖廣播操作和深度學習算法結合,可以讓圖的結構信息和頂點屬性信息都參與到學習中,在頂點分類、圖分類、鏈接預測等應用中表現出良好的效果和可解釋性,已成為一種廣泛應用的圖分析方法.然而現有主流的深度學習框架(如Tensorflow、PyTorch等)沒有為圖神經網絡計算提供高效的存儲支持和圖上的消息傳遞支持,這限制了圖神經網絡算法在大規模圖數據上的應用.目前已有諸多工作針對圖結構的數據特點和圖神經網絡的計算特點,探索了大規模圖神經網絡系統的設計和實現方案.本文首先對圖神經網絡的發展進行簡要概述,總結了設計圖神經網絡系統需要面對的挑戰;隨后對目前圖神經網絡系統的工作進行介紹,從系統架構、編程模型、消息傳遞優化、圖分區策略、通信優化等多個方面對系統進行分析;最后使用部分已開源的圖神經網絡系統進行實驗評估,從精確度、性能、擴展性等多個方面驗證這些系統的有效性.
//www.jos.org.cn/jos/ch/reader/view_abstract.aspx?file_no=6311