• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    網絡安全/欺詐檢測

    借助 GPU-CPU 融合大規模增強圖形分析,實現 100 倍性能

    ?

    圖形是許多現代數據和分析功能的基礎,可在不同的數據資產中查找人、地點、事物、事件和位置之間的關系。根據一項研究,到 2025 年,圖形技術將被用于 80% 的數據和分析創新,這將有助于促進跨組織的快速決策。

    在處理包含數百萬個節點的圖形時,CPU 上的 Louvain 等算法的執行時間可能長達幾個小時。這種長時間的處理時間不僅會影響開發者的工作效率,而且會導致總體性能結果欠佳。

    利用 GPU 的并行處理能力可以顯著縮短圖形訓練時間。基準測試結果表明,GPU 加速在將基于 CPU 的計算速度提高 100 倍以上方面具有巨大潛力。

    這種顯著的速度提升展示了將 GPU 集成到 圖形分析 (graph analytics) 可以實現 100 倍的性能提升。

    了解組件

    這種顛覆性架構的核心是以下三個關鍵組件,每個組件都發揮著關鍵作用。

    使用 cuGraph 實現 GPU 加速

    cuGraph 是 NVIDIA GPU 加速的圖形分析庫,它在加速圖形計算方面發揮著重要作用。傳統的基于 CPU 的圖形處理通常會成為瓶頸,尤其是在處理大規模圖形時。cuGraph 利用了 NVIDIA A100 GPUs 的高性能計算 (HPC) 設計,能夠以無與倫比的速度處理復雜的圖形算法。

    PageRank、Louvain 和 Betweenness Centrality 等圖形算法本質上是可并行的,因此非常適合 GPU 加速。NVIDIA A100 GPU 中的數千個核心支持同時處理數據,與基于 CPU 的方法相比,大幅縮短了計算時間。

    TigerGraph 圖形數據庫功能

    cuGraph 利用 GPU 優化圖形分析,而 TigerGraph 圖形數據庫則通過高效存儲和查詢互聯數據來補充 GPU 加速。TigerGraph 的分布式架構、其 Turing 完備的 GSQL 語言以及對圖形數據的原生支持,使其能夠以非凡的靈活性處理復雜的關系,以及實時查詢和更新。

    TigerGraph 的數據結構稱為 Graph 模型,可提供高度可擴展的圖形數據表示。它可優化數據局部性和遍歷,減少圖形處理過程中的 I/O 瓶頸。TigerGraph 與 cuGraph 的無縫集成可確保數據在圖形數據庫和 GPU 加速分析之間輕松流動,從而更大限度地提高性能。

    使用高級功能增強 GSQL

    為了完成這一融合,ZettaBolt 設計了自定義用戶定義函數 (UDF),充當 TigerGraph 和 cuGraph 之間的橋梁。UDF 使您能夠編寫自己的 C++代碼,并將其無縫集成到 TigerGraph 生態系統中。

    它們可在 Thrift RPC 層上實現 GSQL 和 cuGraph Python 服務之間的通信。這可在圖形數據庫和 GPU 加速分析之間實現數據和計算的流暢流動,從而為圖形算法優化帶來新的可能性。

    傳統和加速的 PageRank 計算

    本節將探討如何將這種強大的 GPU-CPU 融合與實際示例結合使用。它介紹了運行 PageRank 計算的兩種不同方法:傳統的基于 CPU 的方法tg_分頁排名和加速的加速 PageRank它利用了 GPU-CPU 融合架構。

    傳統方法:tg_pagerank

    這種傳統方法采用 tg_ 分頁排名查詢以計算 PageRank 分數。它依賴于基于 CPU 的處理,適用于無法使用或不需要 GPU 加速的場景。想要了解更多詳情,請訪問 tigergraph/gsql-graph-algorithms GitHub

    Query tg_pagerank(
        v_type,            # Vertex type representing persons in the graph
        e_type",           # Edge type representing friendships between persons
        max_change=0.001,  # Maximum change in PageRank scores for convergence
        maximum_iteration=25,# Maximum number of iterations for convergence
        damping=0.85,      # Damping factor for the PageRank calculation
        top_k=100,         # Number of top results to display
        print_results=True,# Whether to print the PageRank results
        result_attribute="", # Optional attribute to store the PageRank results
        file_path="",      # Optional file path to save the results
        display_edges=False# Whether to display the edges during computation
    )
    

    加速方法:accel_pagerank

    使用加速 PageRank 查詢,利用 GPU-CPU 融合架構顯著提升性能,使其成為大規模圖形處理的理想選擇,如 GSQL

    QUERY accel_pagerank(
      INT numServers,          #Number of servers to distribute computation
      INT seg_size,            #Segment size for processing
      STRING v_type,           #Vertex type
      STRING e_type,           #Edge type
      FLOAT max_change=0.00001,#Maximum change threshold for convergence
      INT maximum_iteration=50,# Maximum number of iterations
      FLOAT damping=0.85,      #Damping factor for PageRank calculation
      INT top_k=100,           #Top-k results to retrieve
      BOOL print_accum=TRUE,   #Print accumulated results (default:   TRUE)
      STRING result_attr="",   #Result attribute name
      STRING file_path,        #File path for storing results
      BOOL display_edges=FALSE,#Display edges in results (default: FALSE)
      STRING profile_path,     #Path for profiling data
      STRING graph_name,       #Name of the graph
      STRING server_name,      #Server address
      UINT port,               #Port for communication
      UINT total_segments,     #Total segments for computation
      STRING tmp_dir,          #Temporary directory for processing
      INT streaming_limit=300000, #Streaming data limit
      BOOL cache_graph=FALSE   #Cache the graph (default: FALSE)
    )
    

    無縫過渡

    在傳統的 tg_ 分頁排名和加速的 PageRank 查詢之間切換就像更改 API 調用一樣簡單。您無需擔心底層的技術細節。過渡旨在輕松進行,因此您可以根據自己的需求輕松調整圖形處理。無論您是需要 GPU 加速的強大功能,還是更喜歡熟悉基于 CPU 的處理,您的圖形分析都將無縫滿足您的需求。

    創建架構

    本節介紹架構的分步過程,讓 GPU-CPU 融合的魔力如生。

    Diagram showing the three-step process for high-performance graph analytics with TigerGraph, cuGraph, and GSQL. Step 1: Streamlining data flow from TigerGraph nodes to NVIDIA GPUs with Zetta bridge and GSQL. Step 2: Invoking GPU-accelerated algorithms on streamed data with GSQL. Step 3: Parallel data retrieval from GPU and storage on TigerGraph as vertex attributes.
    圖 1.使用 TigerGraph、cuGraph 和 GSQL 進行高性能圖形分析的流程

    將邊緣從 TigerGraph 流式傳輸到 cuGraph

    首先,將邊緣從 TigerGraph 高效流式傳輸到 cuGraph 以進行 GPU 加速處理。當邊緣從 TigerGraph 并行讀取時,系統會批量收集這些邊緣,直到邊緣計數達到預定的值(例如 100 萬)。批量完成后,系統會通過 Thrift RPC 層將其刷新到 cuGraph.

    批量串流邊緣可優化數據傳輸,減少開銷,并確保 GPU 加速的處理能夠接收連續的數據流。串流流程可高效準備圖形數據,以用于后續基于 GPU 的計算。

    使用 PageRank 的 GPU 加速計算

    現在,整個圖形數據都駐留在 NVIDIA A100 GPU 上的 cuGraph 內存中,該架構已準備好釋放其真正的潛力。

    以經典的 PageRank 算法為例。PageRank 根據傳入鏈路的數量和質量計算圖形中節點的重要性。該算法是 GPU 加速的絕佳候選算法,因為它具有迭代和并行性。cuGraph 基于 GPU 的 PageRank 算法并行處理整個圖形,高效地遍歷網絡并迭代地更新 PageRank 分數。

    使用 Thrift RPC 層獲取結果

    GPU 加速的計算完成后,是時候獲取結果了。現在位于 cuGraph 內存中的 PageRank 分數使用 Thrift RPC 層獲得,并帶回 UDF.

    實現 100 倍加速突破

    性能比較不言自明 – 現實世界的基準測試展示了使用這種混合架構所取得的令人驚嘆的結果。100 倍加速是圖形算法性能的重大飛躍。

    借助此架構,開發者可以在社交網絡、推薦系統、基于圖形的機器學習 (ML) 等不同領域獲得競爭優勢。

    圖形算法性能比較

    此基準測試展示了兩種著名圖形算法(Louvain 和 PageRank)的性能,在由 NVIDIA A100 80GB GPU 和 AMD EPYC 7713 64 核處理器提供動力支持的高性能 GPU 基礎設施上使用 TigerGraph 和 TigerGraph 以及 cuGraph,并且使用具有 512GB RAM 的單節點配置。

    基準測試數據集

    由 Linked Data Benchmark Council (LDBC) 開發的 Graphalytics,是一款全面的基準套件,專門設計用于評估圖形數據庫管理系統 (GDBMS) 和圖形處理框架的性能。它提供真實的數據集、各種工作負載和一系列圖形算法,幫助研究人員和組織評估系統的效率和可擴展性。有關更多信息,請參閱 LDBC Graphalytics Benchmark

    Graph Louvain PageRank
    頂點 邊緣 CPU
    (秒)
    CPU+GPU
    (秒)
    加速
    (x)
    CPU
    (秒)
    CPU+GPU
    (秒)
    加速
    (x)
    2396657 64155735 1265 7 172 1030 7 147
    4610222 129333677 2288 12 188 2142 19 113
    8870942 260379520 小行星 4723 27 174 4542 38 120
    17062472 523602831 小行星 9977 77 130 8643 46 188
    表 1.TigerGraph 基于 CPU 的解決方案與其 cuGraph 加速解決方案的對比

    最佳實踐和注意事項

    在您踏上 GPU-CPU 融合之旅時,請考慮以下最佳實踐和注意事項,以優化圖形分析。

    GPU 加速算法選擇

    CPU 和 GPU 之間的協同作用對于為 GPU 加速選擇合適的算法至關重要。雖然一些圖形算法具有高度并行性,并從 NVIDIA A100 GPU 中的數千個核心中受益匪淺,但其他圖形算法可能需要更多的順序處理,從而使 CPU 成為更好的選擇。通過從戰略角度將可并行算法卸載到 GPU,您可以在圖形計算中實現顯著的加速和效率,同時利用 CPU 和 GPU 的優勢實現最佳性能。

    高效的數據預處理

    在高效的數據預處理階段,CPU 和 GPU 的協同作用發揮著至關重要的作用。雖然 TigerGraph 強大的圖形數據庫功能可以在 CPU 上處理初始數據檢索和處理,但 GPU 加速的 cuGraph 庫可以高效地流式傳輸和批處理圖形數據,以進行進一步計算。GPU 的并行處理能力可確保數據的持續流動,從而最大限度地減少數據傳輸階段的開銷和瓶頸,從而實現數據的無縫流動,從而加速分析。

    GPU 顯存管理

    有效的 GPU 顯存管理是避免圖形計算期間性能瓶頸的關鍵考慮因素。CPU 和 GPU 在此過程中都發揮著重要作用。在將相關數據傳輸到 GPU 進行處理之前,CPU 可確保高效的數據處理和分配。在 GPU 方面,并行處理能力可以高效利用可用內存在大規模圖形上執行計算。CPU 和 GPU 在內存管理方面的密切合作有助于實現經優化的流暢的 GPU 加速圖形處理。

    未來的工作和可能性

    在用于圖形分析的 GPU-CPU 融合領域,有許多令人興奮的可能性和增強功能值得探索。下文詳細介紹了未來工作和潛在開發的一些關鍵領域。

    減少 GPU 顯存占用

    優化 GPU 顯存使用對于處理大型圖形和提高算法可擴展性至關重要。未來的重點領域包括內存高效型數據結構、圖形分區技術和智能緩存機制,以減少 GPU 顯存占用。高效管理內存可在提高性能的同時處理更大的圖形。

    擴展圖形算法庫

    當前的架構支持 PageRank、Louvain 和 Betweenness Centrality 等圖形算法。但是,還有大量圖形算法等待探索。擴展圖形算法庫以包含更多樣化和更復雜的算法,將使開發者能夠應對更廣泛的圖形分析挑戰。

    集成對 GNN 和其他 RAPIDS 庫的支持

    圖神經網絡 (GNNs) 已成為各種圖形相關任務的熱門選擇。集成對 GNN 和其他 RAPIDS 庫(例如 cuML 和 cuGraphML)的支持將通過先進的深度學習功能來豐富該架構,以處理基于圖形的 ML 任務。這種集成將實現對傳統圖形算法和新興 ML 模型的無縫探索,從而促進圖形分析的創新和通用性。

    性能優化和調優

    持續的性能優化和調優對于充分發揮 GPU-CPU 融合的潛力至關重要。執行深入的分析和基準測試、利用特定于 GPU 的優化以及針對特定圖形特征的微調算法,將提高速度和效率。

    總結

    本文探討了 GPU 和 CPU 的無縫融合如何增強圖形算法的性能。TigerGraph 強大的數據庫能力與 cuGraph GPU 加速相結合,創造了一種無與倫比的合作關系。流暢的數據流實現了驚人的 100 倍速度提升,推動圖形分析進入新的前沿。

    GPU-CPU 融合將重塑團隊探索數據以及瀏覽復雜網絡和關系的方式。從社交網絡到機器學習,GPU – CPU 融合將開啟無限可能。未來的工作領域包括優化內存效率、擴大算法范圍和微調性能,確保此架構始終處于圖形分析的前沿。擁抱融合并重新定義數據探索的界限。

    準備好開始使用加速圖形處理了嗎?如果您擁有 TigerGraph (3.9.X) 和 NVIDIA GPU (支持 RAPIDS),請聯系 TigerGraphZettabolt 來表達您對探索加速圖形處理的興趣。他們將指導您完成初始步驟,為您提供必要的信息,并協助您建立加速圖形處理的基礎設施。

    基礎設施到位后,您將可以訪問旨在優化圖形處理任務的加速查詢。這些查詢利用 NVIDIA GPU 和 TigerGraph 平臺的強大功能來增強性能。探索加速圖形處理功能并對其進行基準測試,以體驗圖形分析性能的顯著提升。

    TigerGraph 和 Zettabolt 將在您探索加速圖形處理和高效處理大規模圖形數據的新可能性時,繼續提供幫助并回答問題。

    ?

    0

    標簽

    人人超碰97caoporen国产