Xgboost 与 vaex

Xgboost with vaex

我想澄清一下:vaex.ml.sklearn 是否允许执行核外 ML? 我尝试使用文档中的示例,发现如果我在 xgboosting 过程中使用来自 hdf5 文件的数据集(评估数据集消耗约 3 Gb 的 RAM),RAM 使用量约为 7-8 Gb。天真地,我假设核外不会消耗那么多 RAM。我做错了什么?

我的密码是

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 项的列表。

您正在使用的非 vaex(或 vaex-ml)提供的外部模型“原样”提供。当在 vaex-ml 中使用它们时,您可以通过一种方便的方式将它们添加到 vaex 计算图中、序列化、延迟评估等。模型本身没有修改(我相信这在文档字符串中有说明)。所以他们并没有脱离核心。

我认为 vaex-ml 例如有一个在 vaex 中实现的 K-means 模型,这样一个模型就会脱离核心(即不会使用太多内存)。

在 vaex-ml 中可用的预处理转换,如 StandardScaler、FrequencyEncoder 等,是使用 vaex 实现的,因此它们也是核外的。