GPU上的CatBoost提供的性能比CPU上的差得多



我们正在CPU和GPU上测试CatBoost。虽然它在GPU上的运行速度比在CPU上快得多,但我们得到的结果要糟糕得多,而且我们使用的是相同的数据。

我说的大约差50%。

这怎么可能?

我们使用以下代码在CPU上运行它,并且在GPU上运行时仅将task_type更改为GPU:

catBoostModel = CatBoostClassifier(
    task_type="CPU",
    early_stopping_rounds=50,
    eval_metric="Precision",
    cat_features=["Symbol"], 
    auto_class_weights="Balanced",
    thread_count=-1
)

我们缺少什么?

CatBoost在CPU和GPU上使用不同默认值的一些超参数。还有一些超参数仅在GPU上可用或仅在CPU上可用。CatBoost文档提供了所有详细信息。

这意味着,即使你在CPU和GPU上运行相同的代码,你也可能在训练两个不同的模型。您可以使用model.get_all_params()(其中model是您训练的模型对象(来获得所有超参数的列表,并在CPU和GPU之间进行比较。

边框计数数值特征的分割数。

默认值取决于处理单元类型和其他参数:

CPU:254PairLogitPairwise和YetiRank Pairwise模式下的GPU:32GPU在所有其他模式:128

最新更新