I am trying to tune xgboost hyperparameters using TuneGridSearchCV.
Start ray cluster by:
ray start --temp-dir='/home/ray_dir' --head --port=6379
My Python Code:
import ray
ray.init(address="auto", _temp_dir='/home/ray_dir')
rnd = random.seed(8)
grid_cv = StratifiedKFold(n_splits=3,random_state=rnd, shuffle=True)
from xgboost.callback import EarlyStopping
early_stopping = EarlyStopping(rounds = 50, maximize=True, save_best=True)
clf = xgb.XGBClassifier(
tree_method='gpu_hist',
max_bin=512,
learning_rate = 0.0001,
n_estimators=1000,
objective='binary:logistic', reg_alpha=0.01,
scale_pos_weight = pos_weight, eval_metric= 'aucpr',
callbacks=[early_stopping],
verbosity = 0,
nthread = 96
)
param = {
'eta': [0.01, 0.1, 0.3],
'min_child_weight': [1,3,8,16],
'max_depth':[25,50,100,500],
'colsample_bytree': [0.4,0.6,0.8],
'subsample': [0.4,0.6,0.8],
'gamma':[0,0.5,2,10],
}
gs = TuneGridSearchCV (estimator=clf, param_grid=param, cv=grid_cv, n_jobs = -1, refit=True, return_train_score = True, verbose=3, scoring = 'average_precision', use_gpu = True )
gs.fit(X_train, y_train, eval_set= eval_set_xgboost, verbose=True)
Only one trial is running, and all others are pending (not running parallel)
My machine has 96 CPUs and 8 GPUs. How could I make use of them to faster my code?
Please help to figure out what I am doing wrong.
Ray version: 2.4.0
Python: 3.8.12 or 3.10