Memory leaks 使用gridsearchcv的内存泄漏

Memory leaks 使用gridsearchcv的内存泄漏,memory-leaks,scikit-learn,grid-search,gridsearchcv,Memory Leaks,Scikit Learn,Grid Search,Gridsearchcv,问题:运行gridsearchcv时,我的情况似乎是内存泄漏。当我与1个或32个并发工作者(n_jobs=-1)一起运行时,就会发生这种情况。以前我在ubuntu 16.04上运行了很多次,但最近升级到了18.04,并进行了ram升级 import os import pickle from xgboost import XGBClassifier from sklearn.model_selection import GridSearchCV,StratifiedKFold,train_tes

问题:运行gridsearchcv时,我的情况似乎是内存泄漏。当我与1个或32个并发工作者(n_jobs=-1)一起运行时,就会发生这种情况。以前我在ubuntu 16.04上运行了很多次,但最近升级到了18.04,并进行了ram升级

import os
import pickle
from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV,StratifiedKFold,train_test_split
from sklearn.calibration import CalibratedClassifierCV
from sklearn.metrics import make_scorer,log_loss
from horsebet import performance
scorer = make_scorer(log_loss,greater_is_better=True)
kfold = StratifiedKFold(n_splits=3)

# import and split data
input_vectors = pickle.load(open(os.path.join('horsebet','data','x_normalized'),'rb'))
output_vector = pickle.load(open(os.path.join('horsebet','data','y'),'rb')).ravel()
x_train,x_test,y_train,y_test = train_test_split(input_vectors,output_vector,test_size=0.2)


# XGB
model = XGBClassifier()
param = {
        'booster':['gbtree'],
        'tree_method':['hist'],
       'objective':['binary:logistic'],
        'n_estimators':[100,500],
        'min_child_weight': [.8,1],
        'gamma': [1,3],
        'subsample': [0.1,.4,1.0],
        'colsample_bytree': [1.0],
        'max_depth': [10,20],
        }                           

jobs = 8
model = GridSearchCV(model,param_grid=param,cv=kfold,scoring=scorer,pre_dispatch=jobs*2,n_jobs=jobs,verbose=5).fit(x_train,y_train)
返回: UserWarning:将某些作业交给执行者时,工作进程停止。这可能是由于工作超时太短或内存泄漏造成的。 “超时或内存泄漏。”,UserWarning


TerminatedWorkerError:由执行器管理的工作进程意外终止。这可能是由于调用函数时出现分段错误或内存使用过多导致操作系统杀死工作进程造成的。工人的退出代码是{SIGKILL(-9)}

问题的原因是我将n_jobs=-1放在gridsearchcv中,而它应该放在分类器中。这就解决了这个问题。

不过,这不是完全相同的问题,我在使用skopt gp_minimize()方法时遇到了相同的错误。尽管文档中说gp_minimize()支持n_作业,但它在我的mac上开始出现故障。当我将它n_jobs移动到底层XGBClassifier时,它工作得很好

这不起作用
gp_minimize(_minimize, param_space, n_calls=20, n_random_starts=3, random_state=2405)
这起作用了
我目前的硬件是一个16芯的螺纹裂土器,带有32gb的3Mhz ram。数据文件总量为100mb。在AWS SageMaker中执行xgboost的GridSearch时,Python 3.6I也遇到了同样的问题。删除GridSearchCV中的n_jobs=-1也解决了这个问题。我在哪里可以看到KerasClassifier的参数?
xgb = xgboost.XGBClassifier(
        n_estimators=1000, # use large n_estimators deliberately to make use of the early stopping
        objective='binary:logistic',
        n_jobs=-1
    )