CPU上更快的XGBoost、LightGBM和CatBoost推断

使用英特尔® oneAPI数据分析库(oneDAL),加速您的XGBoost、LightGBM和CatBoost推理工作负载

尽管生成式人工智能近来很受欢迎,但使用梯度提升决策树仍然是处理表格数据的最佳方法。相比许多其他技术,它提供了更高的准确性,甚至比神经网络还要好。许多人使用XGBoost*、LightGBM和CatBoost梯度提升来解决各种现实世界的问题、进行研究和参加Kaggle竞赛。尽管这些框架在开箱即用时表现良好,但预测速度仍有待提高。考虑到预测可能是机器学习工作流程中最重要的阶段,性能的提升可能非常有益。

下面的示例展示了如何转换模型,以获得更快速的预测,而无需损失质量(表格1)。

import daal4py as d4p d4p_model = d4p.mb.convert_model(xgb_model) d4p_prediction = d4p_model.predict(test_data) 

图片1

oneDAL的更新

距离我们上一篇关于加速推断的文章(改进XGBoost和LightGBM推断的性能)已经过去了几年,所以我们认为是时候给出自那时以来的变化和改进的更新了:

  1. 简化API和与梯度提升框架的对齐
  2. 支持CatBoost模型
  3. 支持缺失值
  4. 性能提升

简化API和与梯度提升框架的对齐

现在只有convert_model()predict()方法。你可以轻松地将其集成到现有代码中,只需进行最小的更改:

你还可以将训练好的模型转换为daal4py:

XGBoost:

d4p_model = d4p.mb.convert_model(xgb_model)

LightGBM:

d4p_model = d4p.mb.convert_model(lgb_model)

CatBoost:

d4p_model = d4p.mb.convert_model(cb_model)

还支持与scikit-learn*风格相似的估计器:

from daal4py.sklearn.ensemble import GBTDAALRegressor reg = xgb.XGBRegressor() reg.fit(X, y) d4p_predt = GBTDAALRegressor.convert_model(reg).predict(X)

更新后的API允许你在一个地方使用XGBoost、LightGBM和CatBoost模型。你还可以像使用主要框架那样使用相同的predict()方法进行分类和预测。你可以在文档中了解更多信息。

支持CatBoost模型

在daal4py中增加对CatBoost模型的支持显著增强了库在处理梯度提升任务时的多功能性和效率。CatBoost是用于分类的梯度提升算法,以其出色的速度和性能而闻名,在daal4py的加速下,你甚至可以更快地进行推断。(注意:不支持分类特征进行推断。)通过这一增加,daal4py覆盖了三个最受欢迎的梯度提升框架。

支持缺失值

在现实世界的数据集中,缺失值是常见的情况。这可能发生的原因有很多,比如人为错误、数据收集问题,或者观测机制的自然限制。忽略或不正确地处理缺失值可能会导致偏斜或有偏的分析结果,最终降低机器学习模型的性能。

在daal4py的2023.2版本中引入了对缺失值的支持。你可以使用在包含缺失值的数据上训练的模型,并在推断时使用包含缺失值的数据。这样可以获得更准确、更稳健的预测结果,同时简化了数据科学家和工程师的数据准备过程。

性能提升

自上一次进行性能比较以来,oneDAL已经增加了许多额外的优化措施(表格2)。

所有的测试都是在运行在AWS* EC2 c6i.12xlarge实例上的scikit-learn_bench上进行的(包含了24个Intel® Xeon® Platinum 8375C核心的服务器),使用的软件版本是:Python* 3.11、XGBoost 1.7.4、LightGBM 3.3.5、CatBoost 1.2以及daal4py 2023.2.1。

欢迎您为新案例和其他改进提供贡献。

如何获取daal4py

daal4py是oneDAL库的Python接口,可在PyPi、conda-forge和conda主通道上使用。这是一个完全开源的项目,我们欢迎通过GitHub仓库来提交问题、请求或贡献。要从PyPi安装该库,只需运行以下命令:

pip install daal4py

或者使用conda-forge版本:

conda install -c conda-forge daal4py --override-channels

这些结果表明,通过对您的代码进行简单修改,您可以在当前使用的Intel®硬件上更快地完成梯度提升数据分析任务。这种性能的改进可以降低计算成本,帮助您更快地获得结果,而无需牺牲质量。


Leave a Reply

Your email address will not be published. Required fields are marked *