CatBoostClassifier
model = CatBoostClassifier(
task_type='GPU',
iterations=3000,
tokenizers=[...],
dictionaries = [...],
feature_calcers = [
...
],
metric_period=10,
eval_metric='Accuracy',
)
model.fit(train_pool, eval_set=[test_pool])
Размер обучающей выборки примерно 5 миллионов, единственная колонка - текстовая размером около 500 символов
Воспроизводимо падает - памяти (вроде) достаточно.
Падает после того как вывел learning_rate и видимо сразу после преобразования текста в фичи (этот шаг занимает пару десятков минут потому что работает в один поток).
Если обрезаю примерно в два раза, падать перестает.
Куда копать?
EDIT:
Я еще раз посмотрел - видимо все-таки память, просто в процесс обработки пиково примерно в 3 раза больше занимает чем во время обучения. Отсюда было ложное понимание, что памяти достаточно.
EDIT2:
Все-таки не память - удвоил память, но все равно ломается. Где-то 5,5 миллионов все падает, 4 миллиона строк - работает даже на вдвое меньшей памяти
Может кто-то с таким разбирался уже?
Ориентировочно на 64Гб пиковых падает. Там не зашиты случайно лимиты какие-то?
Гугл говорит, что нужно попробовать ulimits -v unlimited, напишу про результаты
EDIT3:
На другой машине проблемы не появилось, видимо дело именно в настройках системы
Продолжаю свое исследование: 1. Проверил проблема в ограничении памяти процесса или нет. Сделал массив из "1" длиной 200ГБ - все хорошо. 2. В том же окружении воспроизвелась проблема с тем, что модель падает примерно так как упала бы от памяти - просто умирает ядро. При этом умирает вроде в районе 64Гб в пике. Подскажите, как я могу локализовать/решить проблему? Может был подобный опыт. Сейчас еще прогоню в дебаг выводе и добавлю лог. Как-то я не подумал об этом раньше
Может быть плохо становится на этапе подготовки фичей из текста?
Пока только знаю, что падает после довольно долгой работы и вывода learning_rate
В моем представлении это означает, что текстовые фичи уже подготовлены и идет следующий этап предобработки, но еще не обучение
Обсуждают сегодня