AutoML: недостаточно памяти в небольшом обучающем файле

Я пытаюсь запустить 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

or

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

в выводе python в зависимости от конкретного случая сбоя, на который я смотрю.

Моя инициализация:

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 и файлов?


h2o
person stubble jumper    schedule 17.02.2020    source источник
comment
В наши дни 4 ГБ памяти на самом деле недостаточно, чтобы что-то делать. Вы можете решить свою проблему менее чем за 0,20 доллара в час с помощью экземпляра m5.xlarge EC2 с 16 ГБ ОЗУ.   -  person TomKraljevic    schedule 18.02.2020


Ответы (1)


Подключитесь к интерфейсу 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 для каждого прогона.)

person Darren Cook    schedule 19.02.2020