Я занимаюсь диссертацией по методам оценки моделей для задач классификации машинного обучения. Я использую некоторые модели sklearn, потому что я могу написать общий код по большей части, так как у меня много разные наборы данных. Одна часть выхода модели Sklearns равна predict_proba
, в которой она оценивает вероятность. Для больших наборов данных с большим количеством данных, для вычисления predict_proba
для каждого datapoint требуется много времени. Я загрузил htop
и увидел питона только с использованием одного ядра для вычислений, поэтому я написал следующую функцию:Быстрое вычисление времени с помощью Python и Sklearn
from joblib import Parallel, delayed
import multiprocessing
num_cores = multiprocessing.cpu_count()
def makeprob(r,first,p2,firstm):
reshaped_r = first[r].reshape(1,p2)
probo = clf.predict_proba(reshaped_r)
probo = probo.max()
print('Currently at %(perc)s percent' % {'perc': (r/firstm)*100})
return probo
# using multiple cores to run the function 'makeprob'
results = Parallel(n_jobs=num_cores)(delayed(makeprob)(r,first,p2,firstm) for r in range(firstm))
Теперь я вижу htop
все ядра используются, а скорость до значителен, но не почти так же быстро, как хотелось бы, если кто-нибудь знает способ ускорить это или указать мне в правильном направлении, чтобы получить более быстрый рост вычислений в этом сценарии, что было бы здорово.