新聞中心

利用 RAPIDS 與 Ray 建構 GPU 加速資料分析流程 NEWS DETAIL

當前位置:首頁 > 新聞中心
資訊分類 · 新聞中心 作者 · 中科新遠內容團隊 審核人 · 中科新遠技術內容組 發佈時間 · 2025-01-06 更新時間 · 2026-07-22 來源 · 原頁面資料;原廠資訊待核驗
利用 RAPIDS 與 Ray 建構 GPU 加速資料分析流程

若資料分析流程同時需要 GPU 加速、Python 工作流彈性,以及跨多張 GPU 的協調能力,RAPIDS 與 Ray 可形成一條可評估的整合路徑:以 Ray Actors 配置具狀態的 GPU worker,使用 cuDF 處理資料讀取與 ETL,再由 NCCL、RAFT 與 cuGraph 執行可利用多 GPU 通訊的演算法。這種方式的重點不只是平行啟動工作,而是要正確管理每個 GPU worker 的資料、排名與通訊生命週期。

適用情境與整合目標

RAPIDS 是開源的 GPU 加速資料科學與 AI 函式庫集合,可透過 Spark、Dask 等分散式引擎進行橫向擴展。Ray 則是用於擴展 AI 與機器學習應用的開源分散式 Python 框架,能面向 CPU 與 GPU 資源,並提供訓練、服務及核心分散式程式設計抽象。

在此架構中,Ray Actors 可作為有狀態 worker:每個 Actor 能保留、管理與變更其持有的資料。這適合將資料分片交由多個 GPU 分別處理,例如由各 Actor 以 cuDF 載入 Parquet 資料,再進行篩選、自訂函式或使用者定義函式等 ETL 工作。來源範例以四個各配置一張 GPU 的 Actor 建立 worker 集區;實際數量應依 GPU 資源、資料分割方式與演算法需求決定。

架構路徑:從資料載入到分散式演算法

  1. 以 Ray 初始化執行環境,為每個需要 GPU 的 Actor 指定 GPU 資源。
  2. 在 Actor 內使用 cuDF 將指定欄位或資料分片載入 GPU 顯存。
  3. 依工作負載配置 RAPIDS 的記憶體與 ETL 處理;來源指出 RMM 記憶體配置可與此模式搭配,但具體設定需依版本與工作負載驗證。
  4. 若要執行多 GPU 演算法,建立 NCCL 通訊,並設定 RAFT 與所需的子通訊器。
  5. 將各 GPU 的資料分片與通訊 handle 傳入多 GPU 演算法實作,例如 cuGraph 的 MGGraph,再執行目標運算。

Ray 的角色是提供 Actor 啟動、資源分配與工作協調;RAPIDS 庫中的底層 CUDA C++ 實作、NCCL 通訊及 RAFT 基元,則承擔多 GPU 演算法的主要計算與通訊工作。來源將這類作法定位為以 Ray Actors 作為啟動器的 Level 1 整合。

以弱連通元件為例的實作要點

cuGraph 的弱連通元件(WCC)可用來說明這條整合路徑。WCC 工作通常需要先將邊資料載入 GPU,之後啟動 NCCL 通訊與 cuGraph 子通訊器,設定內部多 GPU cuGraph 實作,最後執行演算法。Actor 可持有其資料分片及 NCCL/RAFT handle,並以來源、目的端與權重欄位建立多 GPU 圖物件。

其中較關鍵的工程工作是通訊初始化。典型流程包含由 rank-0 Actor 產生或廣播唯一識別資訊、將識別資訊傳遞給其他 Actor、建立 NCCL,再將 NCCL 與 RAFT 一併設定。來源雖提到 Ray 提供 NCCL hook,但在 cuGraph 通訊管理較複雜的情況下,範例依賴 RAFT NCCL 介面。這表示專案不能只確認 Ray 是否能取得 GPU,還必須驗證 rank、session、通訊器與 Actor 存活期間是否一致。

導入檢查點與風險

  • 資料配置:確認每個資料分片可載入對應 GPU 顯存;資料格式、欄位選取及分片策略會影響載入與後續運算。
  • 資源對應:確認每個 Actor 的 GPU 指派、Actor 數量與實際可用 GPU 一致,避免多個工作非預期競用同一資源。
  • 通訊一致性:驗證 NCCL rank、root unique ID、RAFT handle 與 cuGraph 子通訊器的建立順序,以及失敗後的重建處理。
  • 版本與 API:來源未提供 RAPIDS、Ray、CUDA、NCCL 或 RAFT 的版本相容性矩陣。部署前應查閱具日期的官方文件與完整軟體 BOM。
  • 成效驗證:來源沒有提供吞吐量、延遲、擴展效率或成本數據。是否優於既有流程,需以代表性資料量、ETL 邏輯與目標演算法進行專案測試。

常見問題

Ray Actors 是否只能用於 cuGraph?

不是。來源指出 Ray Actors 可用於平行 Python 函式庫,也能整合既有分散式演算法。除 cuGraph 外,RAFT 基元也被 cuML 等 RAPIDS 函式庫使用,來源並提及可套用至 cuML k-means 實作。不同函式庫所需的資料布局、通訊設定與 API 仍應分別驗證。

只用 Ray 的 NCCL hook 是否足夠?

不一定。來源明確指出,在 cuGraph 通訊管理較困難時,範例選擇使用 RAFT NCCL 介面來設定通訊與 RAFT。實際專案應依所用 RAPIDS 函式庫、其多 GPU API 與已固定的軟體版本,確認應由哪一層建立及管理通訊器。

結論

RAPIDS 與 Ray 的整合可將具狀態的 GPU 資料處理、分散式 Python 協調,以及經最佳化的 CUDA C++ 多 GPU 演算法串接起來。對需要以 cuDF 處理資料、再以 cuGraph 或其他 RAPIDS 函式庫執行多 GPU 工作的團隊,先以小型資料分片與明確的 NCCL/RAFT 初始化流程驗證,是比直接擴大部署更可控的評估方式。

圍繞「利用 RAPIDS 與 Ray 建構 GPU 加速資料分析流程」繼續瞭解 NVIDIA 產品與網路方案