большие модели glm и управление памятью - PullRequest
0 голосов
/ 01 мая 2020

Я тренирую набор glm моделей, использующих воду, где очень матрица разреженной тренировки (4million x 50k) одинакова, но переменная отклика (y) отличается для каждой модели. Я использую следующие шаги:

  1. обучающая матрица читается в виде таблицы 3col pandas (row_id, col_id, value) [время: <5 с] * создано 1010 * <li>scipy.sparse.csc_matrix используя таблицу [время: <5 с] </li>
  2. train_h2o_orig = h2o.H2OFrame(csc_matrix)
  3. поезд в этом л oop
for y in cols:
    train_h2o = train_h2o_orig.cbind(h2o.H2OFrame(y))
    train_h2o[-1] = train_h2o[-1].asfactor()
    glm_h2o = H2PGeneralizedLinearEstimator(family="binomial", nfolds=4, nlambdas=20,
                              lambda_search=True, max_active_predictors=100, seed=12345)
    glm_h2o.train(y=train_h2o.names[-1], training_frame=train_h2o)

Вопросы:

  1. существует ли версия обучающей функции модели GLM, в которой обучающая матрица и вектор ответа могут предоставляться отдельно (как H2OFrame с), чтобы мне не приходилось связывать и копировать кадры вокруг.

  2. самый медленный шаг - h2o.H2OFrame (.) (> 30 минут). Существует ли более разреженный формат матрицы, который более эффективен (cs c? Coo? Csr?)

  3. , в прошлом я предпочитал писать файл SVMLight и читать его обратно. Но с этим я должен создать 20 из них на диске и прочитать его обратно. Создать способ создания этого файла без переменной ответа?

Настройка: 32 ядра, 512 ГБ памяти, RHEL7 (для одного пользователя) / Python 3.6.9 / h2o 3.30 .0.2 / jre 1.8.0_251

1 Ответ

0 голосов
/ 07 мая 2020

Ответы на ваши вопросы:

1 - вектор ответов должен быть частью H2OFrame.

2 и 3 - h2o.import_file - эффективный способ создания Рамки H2O. Лучше всего использовать файл SVMLight, поскольку он поддерживается для разреженных наборов данных .

...