• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 數據科學

    如何在 Polars GPU 引擎中處理超過 VRAM 的數據

    在量化金融、算法交易和欺詐檢測等高風險領域,數據從業者經常需要處理數百 GB 的數據,才能快速做出明智的決策。Polars 是發展最快的數據處理庫之一,其 GPU 引擎由 NVIDIA cuDF 提供動力支持,可加速這些領域常見的計算受限查詢,從而滿足這一需求。

    但是,在使用 GPU 時,一個常見的挑戰是 VRAM ( GPU 的專用內存) 通常小于系統 RAM。在使用 GPU 引擎處理非常大的數據集時,這可能會導致問題。

    本文將探討 Polars GPU 引擎中克服此限制的兩個選項。借助這些策略,您可以處理大于可用 VRAM 的數據,同時仍可從 GPU 加速中獲益:

    1. 統一虛擬內存 (UVM) :一種允許 GPU 溢出到系統 RAM 的技術。
    2. 多 GPU 流式傳輸執行:一項用于跨多個 GPU 分配工作負載的實驗性功能,非常適合大規模處理數百 GB 到幾 TB 的工作負載。

    選項 1:提供單 GPU 靈活性的 UVM

    當數據集大小開始超過 GPU 顯存時,您可以利用 NVIDIA UVM 技術

    UVM 在系統 RAM (主機內存) 和 GPU VRAM (設備內存) 之間創建統一的內存空間。這允許 Polars GPU 引擎在 VRAM 已滿時將數據溢出到系統 RAM,從而防止出現內存不足錯誤,并使您能夠處理大于 VRAM 的數據集。當 GPU 需要訪問當前系統 RAM 中的數據時,這些數據會自動引入 VRAM 進行處理。

    如果您使用的是單個 GPU,并且需要靈活處理比可用顯存略大的數據集,則此方法是理想選擇。雖然它提供了幾乎無需更改代碼的無縫體驗,但系統 RAM 和 VRAM 之間的數據遷移可能會產生性能開銷。但是,通過使用 RAPIDS Memory Manager (RMM) (一個對 GPU 顯存分配方式提供精細控制的庫) 進行智能配置,這種性能成本可以顯著降低。

    如需深入了解 UVM 的工作原理、其性能以及如何根據您的特定需求微調其配置,請查看在 Polars GPU 引擎上為大于 VRAM 數據引入 UVM

    選項 2:TB 級性能的多 GPU 流式傳輸執行

    對于處理超過幾百 GB 到太字節 (TB) 的數據集的用戶,Polars GPU 引擎現在提供實驗性的多 GPU 流式傳輸執行配置。與在單個分區中處理數據的標準內存執行不同,流式傳輸執行器引入了數據分區和并行處理功能,旨在跨多個 GPU 分配工作負載。

    此流執行程序的核心工作原理是采用 Polars 生成的優化內部表示 (IR) 圖,并將其重寫為批量執行。然后,根據數據大小和可用工作者的數量對生成的圖形進行劃分。流式傳輸執行程序使用基于任務的執行模型,其中每個分區都獨立處理,從而能夠并行執行任務。

    Diagram comparing the in-memory executor and new streaming executor in the Polars GPU engine. The streaming executor shows two additional steps: rewriting IR for GPU partitioning and generating a task graph before the partitions across all available GPUs.
    圖 1。上一個內存執行程序與適用于 Polars GPU 引擎的新串流執行程序的比較

    流式傳輸執行程序通過 Dask 同步調度程序支持單 GPU 執行,并通過 Dask 分布式調度程序支持多 GPU 執行。許多參數可用于控制連接策略和分區大小。

    在測試中,該團隊在 3 TB 規模的 PDS-H 基準測試中看到了強勁的性能,在幾秒鐘內處理了所有 22 個查詢。查看示例 Notebook,并在數據集上嘗試多 GPU 流式傳輸。

    如需深入了解 Polars GPU 引擎中的流式傳輸執行在幕后的工作原理,請參閱 NVIDIA GTC 巴黎會議“使用 Polars 擴展數據幀”。

    選擇正確的方法

    UVM 和多 GPU 流式傳輸執行均提供了強大的方法,可在 Polars GPU 引擎中處理比 GPU VRAM 更大的數據集。最佳選擇取決于您的特定需求。

    • UVM 最適用于比 VRAM 稍大的數據集。默認情況下,Polars GPU 引擎配置為利用 UVM 在大多數數據大小下實現性能和可擴展性的最佳組合。
    • 多 GPU 流式傳輸執行實驗功能非常適合超大型數據集 (數百 GB 到 TB) ,您可以利用多個 GPU 進行分布式處理。

    如需詳細了解這些配置,請查看 Polars 用戶指南

    0

    標簽

    人人超碰97caoporen国产