функции cuML, работающие на DASK? а dask_cudf манипулирование? - PullRequest
0 голосов
/ 06 февраля 2020

Как запустить dask_cuML (например, регрессия logisti c) для большого набора данных, dask_cudf?

Я не могу запустить cuML на моем фрейме данных cudf, потому что набор данных большой, поэтому "OUT of MEMORY" в ближайшее время как я пытаюсь что-нибудь. Хорошая сторона в том, что у меня есть 4 графических процессора для использования с dask_cudf.

Кто-нибудь знает шаги, которые нужно использовать для запуска регрессии logisti c, например, на фрейме данных dask_cudf?

О моей cudf и cuml logisti c функция:

type(gdf)
cudf.core.dataframe.DataFrame

logreg = cuml.LogisticRegression(penalty='none', tol=1e-6, max_iter=10000)
logreg.fit(gdf[['A', 'B', 'C', 'D', 'E']], gdf['Z'])

Мои мысли - пошагово: (Не работает!)

1 - Конвертировать gdf cudf в dask_cudf.

  ddf = dask_cudf.from_cudf(gdf, npartitions=2) -- what's the number of partitions?

2- meta_dtypes = dict(zip(ddf.columns, ddf.dtypes))

3-

def logistic_regression(gdf):
              return logreg.fit(gdf[['A', 'B', 'C', 'D', 'E']], gdf['Z'])

4- ddf = ddf .map_partitions(logistic_regression, meta=meta_dtypes)

ddf.compute().persist()

Любые предложения или идеи оценили!

1 Ответ

3 голосов
/ 06 февраля 2020

спасибо за попытку cuml! В официальном выпуске cuml пока нет регрессии logisti c для нескольких графических процессоров (скоро!). Я реализую обходной путь, используя dask-glm и cupy. Я опубликую sh мою записную книжку в этой теме, как только она будет готова. Вот общие шаги:

  1. если ваш набор данных слишком большой, я рекомендую читать файлы csv, используя dask_cudf вместо преобразования кадра данных cudf в dask_cudf. скажем, есть несколько CSV-файлов, вы можете прочитать их с помощью
ddf = dask_cudf.read_csv("*.csv")
конвертирует кадр данных dask cudf в массивы dask, вызывая
X = ddf[['A', 'B', 'C', 'D', 'E']].values
y = ddf['Z'].values

, где каждый кусок массива dask представляет собой массив cupy.

соответствует массиву dask моей версии dask-glm logisti c регрессия.
from dask_glm.estimators import LogisticRegression
clf = LogisticRegression()
clf.fit(X,y)
...