3.0.3 补丁版本发布 (2025年7月30日)
修复非指数增益的NDCG度量。 (#11534)
避免对
rmsle
使用平均截距。 (#11588)[jvm-packages] 添加
setNumEarlyStoppingRounds
API (#11571)避免GPU评估中的隐式同步。 (#11542)
删除数组接口处理程序中的CUDA检查 (#11386)
修复GPU直方图中的检查。 (#11574)
支持Rapids 25.06 (#11504)
将
enable_categorical
添加到 sklearn.apply
方法中 (#11550)使xgboost.testing与scikit-learn 1.7兼容 (#11502)
3.0.2 补丁版本发布 (2025年5月25日)
3.0.1 补丁版本发布 (2025年5月13日)
3.0.0 (2025年2月27日)
3.0.0是XGBoost的一个里程碑。本说明将总结一些一般性更改,然后列出特定于包的更新。主要版本号的提升是由于R包的重构以及JVM包的重大更新。
外部内存支持
此版本对外部内存实现进行了重大更新,包括改进的性能、用于更高效数据初始化的新 ExtMemQuantileDMatrix
、新的功能覆盖(包括分类数据支持和分位数回归支持)。此外,基于GPU的外部内存经过重新设计,以支持使用CPU内存作为数据缓存。最后但同样重要的是,我们致力于使用外部内存进行分布式训练,并初步支持Spark包。
一个新的
ExtMemQuantileDMatrix
类,用于使用hist
树方法进行快速数据初始化。新类支持CPU和GPU训练。 (#10689, #10682, #10886, #10860, #10762, #10694, #10876)外部内存现在支持分布式训练 (#10492, #10861)。此外,当设备是GPU时,Spark包可以使用外部内存(主机内存)。Maven上的默认包尚不支持RMM。为了获得更好的性能,目前需要从源代码编译XGBoost。 (#11186, #11238, #11219)
通过对
hist
特定的训练和approx
(DMatrix
) 方法进行新优化,提高了性能。 (#10529, #10980, #10342)外部内存的新演示和文档,包括分布式训练。 (#11234, #10929, #10916, #10426, #11113)
通过不写入剪切矩阵,减少了二进制缓存大小和内存分配开销。 (#10444)
更多功能覆盖,包括分类数据和所有目标函数,包括分位数回归。此外,还支持SHAP值等各种预测类型。 (#10918, #10820, #10751, #10724)
基于GPU的外部内存训练实现进行了重大更新。 (#10924, #10895, #10766, #10544, #10677, #10615, #10927, #10608, #10711)
基于GPU的外部内存支持基于批处理和基于采样训练。在3.0版本之前,XGBoost在训练期间连接数据并将缓存存储在磁盘上。在3.0版本中,XGBoost现在可以将数据暂存到主机并按批次获取。 (#10602, #10595, #10606, #10549, #10488, #10766, #10765, #10764, #10760, #10753, #10734, #10691, #10713, #10826, #10811, #10810, #10736, #10538, #11333)
XGBoost现在可以利用 NVLink-C2C 进行基于GPU的外部内存训练,并可以处理高达数TB的数据。
支持预测缓存 (#10707)。
自动页面连接以提高GPU利用率 (#10887)。
改进了基于批处理输入的分位数素描算法。更多信息请参见 新功能 部分。
近乎密集输入的优化,更多信息请参见 优化 部分。
详情请参阅我们的最新文档 使用XGBoost外部内存版本。PyPI包 (pip install
) 不支持 RMM
,而GPU外部内存实现需要它。要进行实验,您可以从源代码编译XGBoost或等待RAPIDS conda包可用。
网络
延续上一版本的工作,我们更新了网络模块以提高可靠性。 (#10453, #10756, #11111, #10914, #10828, #10735, #10693, #10676, #10349, #10397, #10566, #10526, #10349)
NCCL异步模式现在支持使用NCCL的超时选项 (#10850, #10934, #10945, #10930)。
此外,新增了一个 Config
类,供用户指定各种选项,包括超时、跟踪器端口等,用于分布式训练。Dask接口和PySpark接口都支持新的配置。 (#11003, #10281, #10983, #10973)
SYCL
延续SYCL集成的工作,此版本在功能覆盖方面取得了显著进展,包括更多的训练参数和目标函数,以及分布式训练,同时进行了各种优化 (#10884, #10883)。
从3.0版本开始,SYCL插件的功能已接近完整,用户可以开始在SYCL设备上进行内存内训练和推理。新引入的功能包括
Dask支持分布式训练 (#10812)
各种训练过程,包括拆分评估 (#10605, #10636)、生长策略 (#10690, #10681)、缓存预测 (#10701)。
仅适用于float32设备的持续工作。 (#10702)
其他相关PRs (#10842, #10543, #10806, #10943, #10987, #10548, #10922, #10898, #10576)
特点
本节描述了XGBoost核心中的新功能。有关特定于语言的功能,请访问相应的章节。
GLM派生目标的新初始化方法。新方法基于输入标签的平均值。新方法改变了
base_score
估计的结果。 (#10298, #11331)xgboost.QuantileDMatrix
可以用于CPU和GPU的所有预测类型。在以前的版本中,XGBoost会为助推器创建一个副本以释放内部树方法持有的内存。我们将该过程形式化为一个新的助推器方法
reset()
/XGBoosterReset()
。 (#11042)OpenMP线程设置暴露给XGBoost全局配置。用户可以使用它来解决硬编码的OpenMP环境变量。 (#11175)
我们改进了排序学习任务,以获得更好的超参数配置和分布式训练。
我们改进了GPU分位数素描,以减少内存使用。此改进有助于构建
QuantileDMatrix
和新的ExtMemQuantileDMatrix
。采用了一种新的多级素描算法,以减少批量输入下的总体内存使用。
此更改为
QuantileDMatrix
和DataIter
引入了两个附加参数,即max_quantile_batches
和min_cache_page_bytes
。
需要更多工作来改进对分类特征的支持。此版本支持绘制带有分类节点统计信息的树 (#11053)。此外,正在进行自动重新编码分类的准备工作。 (#11094, #11114, #11089) 这些是功能增强,而不是阻碍性问题。
实现基于权重的特征重要性,用于向量叶子。 (#10700)
减少DMatrix构建中的日志记录。 (#11080)
优化
除了外部内存和分位数素描的改进之外,我们还进行了一些优化和性能修复。
对于近乎密集的输入,GPU训练对
hist
(约2倍) 和approx
都更快。CPU上的分位数回归现在可以更有效地处理不平衡树。 (#11275)
DMatrix构建的小优化,以减少延迟。此外,C用户现在可以重用
ProxyDMatrix
进行多次推理调用。 (#11273)CPU对
QuantileDMatrix
的预测性能已得到改进 (#11139),现在与普通DMatrix
持平。修复了使用CPU对极其稀疏的
QuantileDMatrix
进行推理时的性能问题 (#11250)。优化CPU训练内存分配以提高性能。 (#11112)
改进了RMM(Rapids内存管理器)集成。现在,借助
config_context()
,XGBoost分配的所有内存都应路由到RMM。作为额外的好处,所有thrust
算法现在都使用异步策略。 (#10873, #11173, #10712, #10712, #10562)当不使用RMM时,XGBoost在使用缓存分配器时会更加谨慎,以避免占用过多的设备内存。 (#10582)
突破性更改
本节列出了影响所有包的突破性更改。
错误修复
文档
新的在线文档网站现在展示了所有包的文档,包括Python、R和基于JVM的包。 (#11240, #11216, #11166)
大量增强功能。 (#10822, 11137, #11138, #11246, #11266, #11253, #10731, #11222, #10551, #10533)
文档中cmake的一致使用。 (#10717)
添加使用GLM设置(如
Poisson
)中的offset
的简要说明。 (#10996)清理从源代码构建的文档。 (#11145)
各种修复。 (#10412, #10405, #10353, #10464, #10587, #10350, #11131, #10815)
Python包
sklearn接口中的
feature_weights
参数现在定义为scikit-learn参数。 (#9506)plot_importance()
中更好的xlabel (#11009)验证用于训练的参考数据集。
train()
函数现在在QuantileDMatrix
用作验证数据集而没有参考时抛出错误。 (#11105)修复在推理过程中缺少特征名称时误导性错误 (#10814)
为Python警告回调添加Stacklevel。此更改有助于改进Python包的错误消息。 (#10977)
移除DataIter中的循环引用。有助于减少内存使用。 (#11177)
添加对 cv 无效输入的检查。 (#11255)
支持sklearn模块的文档链接。用户现在可以在jupyter notebook中找到文档链接。 (#10287)
Dask
PySpark
文档更新 (#11265)。
维护。 (#11071, #11211, #10837, #10754, #10347, #10678, #11002, #10692, #11006, #10972, #10907, #10659, #10358, #11149, #11178, #11248)
突破性更改
R 包
我们已经对R包进行了几个版本的重构。在3.0版本中,我们将开始在R-universe上发布一个新的R包,然后转向CRAN更新。新包具有更符合人体工程学的接口,也更符合R用户的习惯。此外,该包引入了一系列新功能。举几个例子,新包包括分类特征支持、QuantileDMatrix
和外部内存训练的初始实现。要测试新包
install.packages('xgboost', repos = c('https://dmlc.r-universe.dev', 'https://cloud.r-project.org'))
此外,我们终于为R包提供了在线文档网站,其中包含小插图和API参考 (#11166, #11257)。新接口的一个很好的起点是新的 xgboost()
函数。我们不会在此列出所有功能增益,因为太多了!请访问 XGBoost R 包 获取更多信息。如果您使用以前的XGBoost R包版本,那里有一个迁移指南 (#11197)。
维护 (#11259)
相关PRs。 (#11171, #11231, #11223, #11073, #11224, #11076, #11084, #11081, #11072, #11170, #11123, #11168, #11264, #11140, #11117, #11104, #11095, #11125, #11124, #11122, #11108, #11102, #11101, #11100, #11077, #11099, #11074, #11065, #11092, #11090, #11096, #11148, #11151, #11159, #11204, #11254, #11109, #11141, #10798, #10743, #10849, #10747, #11022, #10989, #11026, #11060, #11059, #11041, #11043, #11025, #10674, #10727, #10745, #10733, #10750, #10749, #10744, #10794, #10330, #10698, #10687, #10688, #10654, #10456, #10556, #10465, #10337)
JVM 包
XGBoost 3.0版本发布带来了JVM包,特别是Spark包的重大更新。打包和某些参数存在突破性更改。请访问 迁移指南 获取相关更改。这项工作带来了新功能以及CPU和GPU实现之间更统一的功能集。 (#10639, #10833, #10845, #10847, #10635, #10630, #11179, #11184)
维护
代码维护包括重构 (#10531, #10573, #11069)、清理 (#11129, #10878, #11244, #10401, #10502, #11107, #11097, #11130, #10758, #10923, #10541, #10990) 以及测试改进 (#10611, #10658, #10583, #11245, #10708),同时修复了编译器中的各种警告和测试依赖项 (#10757, #10641, #11062, #11226)。此外,还有一些杂项更新,包括一些开发脚本和性能分析注释 (#10485, #10657, #10854, #10718, #11158, #10697, #11276)。
最后,依赖项更新 (#10362, #10363, #10360, #10373, #10377, #10368, #10369, #10366, #11032, #11037, #11036, #11035, #11034, #10518, #10536, #10586, #10585, #10458, #10547, #10429, #10517, #10497, #10588, #10975, #10971, #10970, #10949, #10947, #10863, #10953, #10954, #10951, #10590, #10600, #10599, #10535, #10516, #10786, #10859, #10785, #10779, #10790, #10777, #10855, #10848, #10778, #10772, #10771, #10862, #10952, #10768, #10770, #10769, #10664, #10663, #10892, #10979, #10978)。