1

背景: 具有 100m 行和大约 50 列的训练集,我已将 dtype 转换为最小类型。仍然,加载时数据帧就像 8-10Gb。

在 AWS ec2 实例上运行训练(一个是 36CPU + 72RAM。另一个是 16CPU + 128RAM)

问题: 1;在 Pandas 数据框中加载数据并尝试使用 xgboost 的默认配置,内存很快就会爆炸 2;此外,我尝试使用启用并使用分布式客户端的 Dask 数据帧dask.xgboost,它运行的时间更长,但我收到了工人失败的警告并且进度停滞不前。

那么,有没有办法让我估计我应该使用多大的 RAM 来确保它足够?

这是一些代码:

import dask_ml.xgboost as dxgb
import dask.dataframe as ddf

train = pd.read_parquet('train_latest',engine='pyarrow')
train = ddf.from_pandas(train, npartitions=72)
X ,y = train[feats],train[label]
X_train,y_train,X_test,y_test = make_train_test(X,y) # customized function to divide train/test

model = dxgb.XGBClassifier(n_estimators=1000, 
                          verbosity=1, 
                          n_jobs=-1, 
                          max_depth=10, 
                          learning_rate=0.1)
model.fit(X_train,y_train)
4

0 回答 0