AB
Вопрос по текстовым фичам и безумному расходу памяти.
Есть датасет 1.5M строк: 12 категориальных фич, одна текстовая.
Эксперимента ради, чтобы понять масштаб проблемы, текстовая фича составлена следующим образом:
- в словаре два (!) слова: '0' и '555' – смысла не несут;
- из этих слов составлены предложения в текстовой фиче каждой строки;
- каждое предложение содержит не более 10 (обычно меньше) вхождений этих слов: '0 0 555 0 555 0' и тп.
Без использования текстовой фичи обучение забирает 5Г оперативки, с текстовой 15Г (!) без учета памяти GPU (8Г).
Параметры катбуста такие (взяты по умолчанию, но без биграмм):
dictionaries=['W:min_token_occurrence=5,max_dict_size=50000,token_level_type=Word'],
text_processing=['BoW+W'],
Вопросы:
- На обработку словаря из двух слов требуется 10Г памяти при том, что исходный датасет меньше 5Г – как так? =)
- Можно ли как-то это уменьшить (max_dict_size, разумеется, уменьшал, ни на что не влияет)
- Если это какое-то стандартное резервирование, то сколько памяти понадобится, например, для 5М строк (мой полный датасет – не уместилось в 32Г)?
Версия
catboost==0.20