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)
oneDAL的更新
距离我们上一篇关于加速推断的文章(改进XGBoost和LightGBM推断的性能)已经过去了几年,所以我们认为是时候给出自那时以来的变化和改进的更新了:
- 简化API和与梯度提升框架的对齐
- 支持CatBoost模型
- 支持缺失值
- 性能提升
简化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