AutoML: недостаточно памяти на небольшом тренировочном файле - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь запустить H2OAutoML на обучающем CSV объемом 2,7 МБ в системе с 4 ГБ ОЗУ с использованием API python, и ему не хватает памяти.

Сообщения об ошибках, с которыми я сталкиваюсь:

h2o_ubuntu_started_from_python.out:
02-17 17:57:25.063 127.0.0.1:54321       27097  FJ-3-15   INFO: Stopping XGBoost training because of timeout
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 247463936 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ubuntu/h20.ai/h2o-3.28.0.2/hs_err_pid27097.log

или

03:37:07.509: XRT_1_AutoML_20200217_030816 [DRF XRT (Extremely Randomized Trees)] failed: java.lang.OutOfMemoryError: Java heap space

в выводе python в зависимости от точного экземпляра cra sh, на который я смотрю.

Мой init:

h2o.init(max_mem_size='3G',min_mem_size='2G',jvm_custom_args=["-Xmx3g"])

Хотя я пытался с: h2o.init()

Мой вызов H2OAutoML:

H2OAutoML(nfolds=5,max_models=20, max_runtime_secs_per_model=600, seed=1,project_name =project_name)
aml.train(x=x, y=y, training_frame=train,validation_frame=test)

Это статистика сервера:

H2O cluster uptime:         02 secs
H2O cluster timezone:       Etc/UTC
H2O data parsing timezone:  UTC
H2O cluster version:        3.28.0.2
H2O cluster version age:    27 days
H2O cluster name:           H2O_from_python_ubuntu_htq5aj
H2O cluster total nodes:    1
H2O cluster free memory:    3 Gb
H2O cluster total cores:    2
H2O cluster allowed cores:  2
H2O cluster status:         accepting new members, healthy
H2O connection url:         http://127.0.0.1:54321
H2O connection proxy:       {'http': None, 'https': None}
H2O internal security:      False
H2O API Extensions:         Amazon S3, XGBoost, Algos, AutoML, Core V3, TargetEncoder, Core V4
Python version:             3.6.9 final

Это звучит правильно? Я не могу запустить 20 моделей?

Я могу запустить это просто отлично, установив max_models = 10. Это занимает около 60 минут.

Существуют ли рекомендации относительно объема оперативной памяти, необходимой для данного max_models и размера файла?

1 Ответ

0 голосов
/ 19 февраля 2020

Подключение к интерфейсу Flow, работающее по адресу 127.0.0.1:54321.

Там есть раздел, где вы можете просмотреть оставшуюся память. Вы также можете увидеть, какие модели и фреймы данных создаются. Вы установили max_runtime_secs_per_model на 600, и, скажем, 10 моделей занимают час, поэтому, если вы проверяете каждые 5-10 минут, вы можете получить представление о том, сколько памяти занимает каждая модель.

Ваш Ответ h2o.init () выглядит нормально. Рекомендация должна была в 3-4 раза превышать размер набора данных. Если ваши данные только 2,7 МБ, то это не должно быть проблемой. Хотя, если у вас много категориальных столбцов, особенно с большим количеством вариантов, они могут занимать больше памяти, чем вы ожидаете.

Память, используемая моделью, может сильно различаться в зависимости от параметров. выбран. Опять же, лучше всего взглянуть на Flow, чтобы увидеть, какие параметры AutoML выбирает для вас.

Если это просто случай, когда 10 моделей поместятся в памяти, а 20 моделей - нет, и вы не Если вы не хотите выполнять ручное управление параметрами, то вы можете делать партии по 10 моделей и сохранять их после каждого часа. (Выберите разные seed для каждого прогона.)

...