RandomForestClassifier .fit завершается с ошибкой памяти на ec2, но работает без ошибок локально - PullRequest
0 голосов
/ 02 октября 2018

Я подгоняю случайный лесной классификатор к фрейму данных pandas, содержащему tfidf и другие функции, где измерения (42238, 155085).Размер 26 ГБ.При локальном обучении модели код выполняется без ошибок (хотя и медленно), однако на экземпляре ec2 с 4-кратной памятью процесс обучения завершается с ошибкой памяти, когда использование памяти достигает 37%.Это было последовательным в 6 исполнениях во время выполненияПри прочих равных с anaconda 2.7, кодом и данными, почему этот процесс завершился неудачей на ec2?

Я запускаю модель локально на MacBook Pro объемом 16 ГБ.Экземпляр ec2 имеет 64 ГБ памяти.

Что я пробовал

  1. n_jobs = 1
  2. n_estimators = 10
  3. max_depth = 10
  4. увеличение пространства подкачки наec2
  5. установить максимальное заблокированное запоминающее устройство равным

ulimit -a на экземпляре ec2.

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 251728
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 251728
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

код

model = RandomForestClassifier(max_depth=None, 
                       max_features=0.2, 
                       min_samples_leaf=1, 
                       min_samples_split=2,
                       n_estimators=10, 
                       n_jobs=-1,
                       verbose=1)
model.fit(X_train,y_train)

стекслед

model.fit(X_train,y_train)
  File "/opt/anaconda2/lib/python2.7/site-packages/sklearn/ensemble/forest.py", line 247, in fit
    X = check_array(X, accept_sparse="csc", dtype=DTYPE)
  File "/opt/anaconda2/lib/python2.7/site-packages/sklearn/utils/validation.py", line 433, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
  File "/opt/anaconda2/lib/python2.7/site-packages/pandas/core/generic.py", line 1603, in __array__
    return com._values_from_object(self)
  File "pandas/_libs/lib.pyx", line 47, in pandas._libs.lib.values_from_object
  File "/opt/anaconda2/lib/python2.7/site-packages/pandas/core/generic.py", line 4684, in get_values
    return self.values
  File "/opt/anaconda2/lib/python2.7/site-packages/pandas/core/generic.py", line 4629, in values
    return self._data.as_array(transpose=self._AXIS_REVERSED)
  File "/opt/anaconda2/lib/python2.7/site-packages/pandas/core/internals.py", line 3949, in as_array
    arr = mgr._interleave()
  File "/opt/anaconda2/lib/python2.7/site-packages/pandas/core/internals.py", line 3960, in _interleave
    result = np.empty(self.shape, dtype=dtype)
MemoryError

1 Ответ

0 голосов
/ 03 октября 2018

Используя это в качестве руководства: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-7

Следующие параметры были скорректированы, и модель смогла завершить обучение.

vm.swappiness=70 для поощрения использования пространства подкачки

vm.vfs_cache_pressure=50 для стимулирования большего использования кэша ОС

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...