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 实现的,因此它们也是核外的。
我想澄清一下: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 实现的,因此它们也是核外的。