背景: 具有 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)