新聞中心

NVIDIA RAPIDS 加速大型資料集的因果關係推理 NEWS DETAIL

當前位置:首頁 > 新聞中心
資訊分類 · 新聞中心 發佈時間 · 2025-01-22

隨著消費者應用生成的資料比以前更多,企業開始採用觀察資料的因果關係推理方法,以幫助闡明應用的各個組件的更改如何影響關鍵業務指標。

在過去十年中,計量經濟學家開發了一種稱為 雙機器學習 的技術,該技術將機器學習模型的強大功能用於解決因果關係推理問題。它涉及在獨立的資料集樣本中訓練兩個預測模型,並將它們結合起來以構建目標變量的無偏估計。

借助 DoubleML 等開源 Python 庫,資料科學家可以輕鬆利用這項新技術,但卻難以處理企業需要在 CPU 上處理的資料量。

RAPIDS 是開源 GPU 加速資料科學和 AI 庫的集合。 cuML 是一個適用於 Python 的 GPU 加速機器學習庫,具有 scikit-learn 相容的 API。

在這篇博文中,我們展示了如何將 RAPIDS cuML 與 DoubleML 庫結合使用,以加快因果關係推理速度,從而更有效地處理大型資料集。

為甚麼要進行因果關係推理?

許多資料科學和機器學習的用例更關注預測的品質,而不是單個特徵對結果變量的確切影響大小。因此,像隨機森林(可在 scikit-learn 中獲取)和 XGBoost 這樣的非參數模型已成為許多資料科學家的首選。

對於某些問題,我們需要測量一個變量(特徵)對目標結果變量的因果關係。有效地做到這一點的黃金標準是運行隨機對照試驗或 A/B 測試,並測量各組的平均治療效果。

遺憾的是,由於更改可能會對企業業務產生影響,因此這對企業來說並不總是可行的。理想情況下,我們能夠找出應用內體驗的一個組成部分對用戶流失的重要性,而不會增加流失的風險。因果推斷技術能夠根據用戶行為的真實資料集估算這種關係,並就我們應在何處投入資源以改進產品提供關鍵指導。

過去,使用隨機森林和 XGBoost 等靈活的非參數模型進行因果關係推理極具挑戰性。雙重機器學習使我們能夠輕鬆利用這些進步。

將加速計算應用於機器學習

使用最先進的機器學習算法進行因果關係推理會增加工作流程的計算需求。對於小型資料集,這不是問題。但是,隨著資料集的不斷增長,在 CPU 上實際使用 DoubleML 可能是一項挑戰。

在下面的基準測試中,我們根據 DoubleML 文檔略微調整了這個示例,並使用 scikit-learn 和 cuML 在各種資料集大小上運行,以瞭解性能變化。

import doubleml as dml
from doubleml.datasets import make_plr_CCDDHNR2018
from sklearn.ensemble import RandomForestRegressor
from sklearn.base import clone
import cuml
 
NROWS = [10000, 100000, 1000000, 10000000]
USE_GPU = True
 
for N in NROWS:
    data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=N, dim_x=100, return_type="DataFrame").astype("float32")
    obj_dml_data = dml.DoubleMLData(data, "y", "d")
 
    if USE_GPU == "cuml":
  learner = cuml.ensemble.RandomForestRegressor(n_estimators=200, max_features=100, max_depth=10, min_samples_leaf=2)
    else: # standard scikit-learn
  learner = RandomForestRegressor(n_estimators=200, max_features=100, max_depth=10, min_samples_leaf=2, n_jobs=-1)
 
    ml_l = clone(learner)
    ml_m = clone(learner)
    dml_plr_obj = dml.DoubleMLPLR(obj_dml_data, ml_l, ml_m).fit()

由於底層機器學習模型成為瓶頸,基於 CPU 的 DoubleML 工作流會產生數十萬甚至數百萬條記錄,因此速度會迅速放緩。在 1000 萬行 x100 列資料集上,擬合 DoubleMLPLR 工作流需要超過 6.5 小時。為基礎模型切換到 GPU 加速的 RAPIDS cuML 後,只需 51 分鐘即可完成,速度提高了 7.7 倍。

A bar chart showing the time required to train the DoubleML PLR using Random Forest Regression from Scikit-learn (CPU) vs. RAPIDS cuML (GPU) as the underlying learner. As datasets grow, GPU-accelerated machine learning can provide significant performance improvements (up to 12x).
圖 1、使用 Scikit-learn(CPU)中的隨機森林回歸與 RAPIDS cuML(GPU)作為基礎學習者來擬合 DoubleML PLR 的時間。

根據結果,與使用 scikit-learn 基於 CPU 的 RandomForestRegressor 作為後端模型相比,cuML 等加速機器學習庫的速度提升高達 12 倍,且所需的代碼更改最少。

結束語 

因果推理可以幫助企業更好地瞭解其產品的關鍵組件,但傳統上,利用專注於預測的機器學習創新成果具有挑戰性。

雙機器學習等新技術正在彌合這一差距,使企業能夠使用計算密集型機器學習算法來解決因果關係推理問題。隨著資料集的增長,基於 CPU 的基礎設施難以滿足生產力需求。

使用加速計算庫 RAPIDS cuML 與 DoubleML,可以將幾小時的等待時間縮短為幾分鐘,並盡可能減少代碼更改。