Xgboost с vaex

Хочу уточнить: позволяет ли vaex.ml.sklearn выполнять ML вне ядра? Я пытаюсь использовать примеры из документации и вижу, что если я использую набор данных из файла hdf5 (оцененный набор данных потребляет ~ 3 ГБ ОЗУ) в процессе xgboosting, использование ОЗУ составляет около 7-8 ГБ. Наивно предположил, что вне ядра не так много оперативной памяти. Что я не так?

Мой код

import vaex.ml.sklearn
xgb_model = xgboost.sklearn.XGBRegressor(max_depth=4,
                                          learning_rate=0.1,
                                          n_estimators=100,
                                          subsample=0.75,
                                          random_state=42,
                                         )
vaex_xgb_model = vaex.ml.sklearn.Predictor(features=features,
                                           target='target',
                                           model=xgb_model,
                                           prediction_name='prediction_xgb')
vaex_xgb_model.fit(df_train)
df_train = vaex_xgb_model.transform(df_train)

где features - список из ~ 40 пунктов.


person Artem Alexandrov    schedule 23.12.2020    source источник


Ответы (1)


Используемые вами внешние модели, не предоставленные vaex (или vaex-ml), поставляются как есть. Используя их в vaex-ml, вы просто получаете удобный способ добавления их в вычислительный граф vaex, сериализацию, ленивую оценку и т. Д. Сами модели не изменены (я полагаю, это указано в строках документации). Значит, они не вне ядра.

Я думаю, что у vaex-ml есть, например, модель K-средних, которая реализована в vaex, поэтому одна будет вне ядра (т.е. не будет использовать много памяти).

Преобразования предварительной обработки, такие как StandardScaler, FrequencyEncoder и т. Д., Доступные в vaex-ml, реализованы с использованием vaex, поэтому они также будут вне ядра.

person Joco    schedule 15.03.2021