2017-02-09 2 views
0

그것은 XGBoost병렬 XGBoost 기계 학습 기술에

병렬 구현

나는 그것을 매개 변수를 제공하여 XGBoost 실행을 최적화하기 위해 노력하고 함께해야 할 nthread = 16 내 시스템이있다 24 코어. 그러나 모델을 교육 할 때 모델 교육을받는 동안 어느 시점에서든 CPU 사용률의 약 20 %를 넘지 않는 것처럼 보입니다. 다음과 같이 코드는 다음과 같습니다 -

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

+0

에 오신 것을 환영 SO합니다 - 당신은 [재현 예 (http://stackoverflow.com/questions/5963269/how-to을 제공시겠습니까 -make-a-great-r-reproducible-example) – C8H10N4O2

답변

0

이것은 추측의 R 패키지의 실행에 관한 것입니다 ...하지만이 나에게 일이 있었다 시간은 이며 병렬 처리 중에는 CPU에 연결되지 않습니다. https://en.wikipedia.org/wiki/CPU-bound

결론 귀하의 데이터가 충분히 크지 않아 (행과 열), 그리고/또는 귀하의 나무가 충분히 깊지 않아서 많은 코어를 보증 할 수 없으므로 max_depth. 오버 헤드가 너무 많습니다. xgboost은 스플릿 (split) 평가를 병렬 처리하여 큰 데이터의 깊은 트리가 CPU를 최대로 유지할 수 있도록합니다.

나는 단일 스레드가 8/16 코어를 능가하는 많은 모델을 교육했습니다. 시간이 너무 많이 걸리고 작업이 충분하지 않습니다.

** 더 많은 데이터가 깊은 TREES 이하 코어의 : **는