簡體   English   中英

XGBoost 機器學習技術中的並行性

[英]Parallelism in XGBoost machine learning technique

它與

XGBoost 的並行實現

我正在嘗試通過給它參數nthread = 16 來優化 XGBoost 的執行,我的系統有 24 個內核。 但是當我訓練我的模型時,它似乎在模型訓練的任何時間點都沒有超過大約 20% 的 CPU 使用率。 代碼片段如下:-

param_30 <- list("objective" = "reg:linear",    # linear 
               "subsample"= subsample_30,
               "colsample_bytree" = colsample_bytree_30,
               "max_depth" = max_depth_30,    # maximum depth of tree 
               "min_child_weight" = min_child_weight_30,
               "max_delta_step" = max_delta_step_30,
               "eta" = eta_30,    # step size shrinkage 
               "gamma" = gamma_30,  # minimum loss reduction 
               "nthread" = nthreads_30,   # number of threads to be used
               "scale_pos_weight" = 1.0
)
model <- xgboost(data = training.matrix[,-5], 
              label = training.matrix[,5], 
              verbose = 1, nrounds=nrounds_30, params = param_30, 
              maximize = FALSE, early_stopping_rounds = searchGrid$early_stopping_rounds_30[x])

請向我解釋(如果可能)如何提高 CPU 利用率並加快模型訓練以實現高效執行。 R中的代碼有助於進一步理解。

假設:- 它是關於 XGBoost 的 R 包中的執行

這是一個猜測......但我遇到過這種情況......

您在並行期間花費大量時間進行通信,並且永遠不會受到 CPU 限制。 https://en.wikipedia.org/wiki/CPU-bound

底線是您的數據不夠大(行和列),和/或您的樹的深度不夠max_depth以保證那么多內核。 太多的開銷。 xgboost並行化拆分評估,因此大數據上的深層樹可以使 CPU 保持最大運轉。

我訓練過許多單線程優於 8/16 核的模型。 切換時間太多,工作量不夠。

**更多數據,更深的樹或更少的核心:) **

我試圖回答這個問題,但我的帖子被版主刪除了。 請參閱https://stackoverflow.com/a/67188355/5452057我相信它也可以幫助您,它與 CRAN 提供的適用於 Windows 的xgboost R 包中缺少 MPI 支持有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM