Утечка памяти при использовании gridsearchcv - PullRequest
6 голосов
/ 25 апреля 2019

Проблема: Моя ситуация, кажется, утечка памяти при запуске gridsearchcv.Это происходит, когда я работаю с 1 или 32 одновременно работающими рабочими (n_jobs = -1).Ранее я запускал эту загрузку раз без проблем на Ubuntu 16.04, но недавно обновил до 18.04 и выполнил обновление оперативной памяти.

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

ИЛИ

TerminationWorkerError: Рабочий процесс, управляемый исполнителем, был неожиданно прерван.Это может быть вызвано ошибкой сегментации при вызове функции или чрезмерным использованием памяти, в результате которого операционная система убивает работника.Коды выхода рабочих: {SIGKILL (-9)}

1 Ответ

6 голосов
/ 28 апреля 2019

Причиной моей проблемы было то, что я положил n_jobs = -1 в gridsearchcv, когда он должен быть помещен в классификатор. Это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...