使用 CPU 和 GPU 运行相同的代码会给我不同的 RMSE 分数。为什么?
我一遍又一遍地运行以下代码,同时在特征工程和特征选择阶段进行调整。
from catboost import CatBoostRegressor
model = CatBoostRegressor(iterations=1000, learning_rate=0.05, depth=5, random_seed=69);
df_ser_full.Model.fit(
X_train,
y_train,
use_best_model=True,
eval_set=(X_test, y_test),
plot=True,
silent=True
);
一段时间后,我厌倦了等待训练,所以我将第二行代码替换为以下代码,转而在 GPU 而不是 CPU 上进行训练
model = CatBoostRegressor(iterations=1000, learning_rate=0.05, depth=5, task_type='GPU', random_seed=69);
现在训练速度提高了大约 5 倍,但我注意到指标显着下降(测试集的 RMSE 从 0.13955@CPU 变为 0.14377@GPU)。GPU 和 CPU 是否通过相同的接口使用不同的随机数生成器,还是我还缺少其他东西?
我正在使用以下硬件
- Intel Core i9-8950HK (CPU @ 2.90GHz)
- 英伟达 Quadro P2000