背景: 1 億行と約 50 列のトレーニング セットで、dtype を最小型にキャストしました。それでも、ロードされたときのデータフレームは8〜10Gbのようです。
AWS ec2 インスタンス (1 つは 36CPU + 72RAM、もう 1 つは 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)