2017-02-09 2 views
0

Son ont à voir avecParallélisme en technique d'apprentissage machine XGBoost

mise en œuvre de XGBoost

parallélisme Je suis en train d'optimiser l'exécution XGBoost en lui donnant paramètre nthread = 16 où mon système a 24 cœurs. Mais quand j'entraîne mon modèle, il ne semble même pas croiser environ 20% de l'utilisation du processeur à un moment donné pendant la formation au modèle. extrait de code est le suivant: -

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]) 

S'il vous plaît me expliquer (si possible ) sur la façon dont je peux augmenter l'utilisation du processeur et d'accélérer la formation de modèle pour l'exécution efficace. Le code en R doit être utile pour une meilleure compréhension.

Assomption: - Il est sur le point de l'exécution dans le package R de XGBoost

+0

- Pourriez-vous s'il vous plaît fournir un [exemple reproductible] (http://stackoverflow.com/questions/5963269/how-to -make-a-great-r-reproductible-exemple) – C8H10N4O2

Répondre

0

Ceci est une supposition ... mais je l'ai eu ce arrivé à moi ...

Vous dépensez beaucoup à temps communiquant pendant le parallélisme et ne sont jamais liés au CPU.

La ligne de fond est vos données ne sont pas assez grandes (lignes et colonnes), et/ou vos arbres ne sont pas assez profond max_depth pour justifier que de nombreux noyaux. Trop de frais généraux. xgboost parallélise les évaluations fractionnées de sorte que les arbres profonds sur les gros volumes de données peuvent garder le processeur bourdonnant à max.

J'ai formé de nombreux modèles où les fils à un filetage surpassent 8/16 noyaux. Trop de temps à changer et pas assez de travail.

** PLUS DE DONNÉES, Bienvenue à SO PROFONDES ARBRES OU MOINS CAROTTES :) **