Я новичок в использовании Dask, но испытал мучительно низкую производительность при попытке переписать собственные функции sklearn в Dask. Я максимально упростил сценарий использования в надежде получить некоторую помощь.
Используя стандартные sklearn / numpy / pandas и т.д., у меня есть следующее:
df = pd.read_csv(location, index_col=False) # A ~75MB CSV
# Build feature list and dependent variables, code irrelevant
from sklearn import linear_model
model = linear_model.Lasso(alpha=0.1, normalize=False, max_iter=100, tol=Tol)
model.fit(features.values, dependent)
print(model.coef_)
print(model.intercept_)
Это займет несколько секунд, чтобы вычислить. Затем у меня есть в Dask следующее:
# Read in CSV and prepare params like before but using dask arrays/dataframes instead
with joblib.parallel_backend('dask'):
from dask_glm.estimators import LinearRegression
# Coerce data
X = self.features.to_dask_array(lengths=True)
y = self.dependents
# Build regression
lr = LinearRegression(fit_intercept=True, solver='admm', tol=self.tolerance, regularizer='l1', max_iter=100, lamduh=0.1)
lr.fit(X, y)
print(lr.coef_)
print(lr.intercept_)
Что требует времени для расчета (около 30 минут). У меня есть только 1 рабочий Dask в моем кластере разработки, но у него есть 16 ГБ оперативной памяти и неограниченный процессор.
Кто-нибудь знает, почему это так медленно?
Надеюсь, мои пропуски в коде несущественны!
NB. Это самый простой вариант использования, прежде чем люди спрашивают, почему даже используют Dask - это было использовано в качестве доказательства концепции для проверки того, что все будет работать так, как ожидалось.