免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

XGBoost 版本演进技术指南:从 2.0 多目标树、device 参数统一到学习排序与分布式新架构

XGBoost 版本演进技术指南:从 2.0 多目标树、device 参数统一到学习排序与分布式新架构 XGBoost 版本演进技术指南从 2.0 多目标树、device 参数统一到学习排序与分布式新架构【免费下载链接】xgboostScalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow项目地址: https://gitcode.com/gh_mirrors/xg/xgboost导读本文基于仓库根目录的 NEWS.md即 XGBoost Change Log整理而成系统梳理 XGBoost 从 v0.12014 年到 2.0.02023 年的完整版本演进脉络。文章以 2.0.0 的重大架构变革向量叶子多目标树、device参数统一、hist成为默认树方法、学习排序重写为主体结合仓库源码 src/tree/hist/hist_param.h、src/objective/lambdarank_obj.cc、src/context.cc 等实现细节进行验证与展开。读者读完可获得2.0 迁移所需的完整破坏性变更清单、新参数device、max_cached_hist_node、lambdarank_*的用法与底层原理以及 1.7 系列引入的QuantileDMatrix、PySpark 接口、分类特征支持等关键能力的演进背景。说明按照 NEWS.md 的说明从 2.1.0 开始发布说明已迁移到doc/changes/目录下的文档中如 doc/changes/v2.1.0.rst、doc/changes/v3.0.0.rst 等本文件继续按时间倒序记录 2.0.0 及更早版本的变更。一、XGBoost 2.0.0一次面向未来的大版本重构2.0.02023 年 8 月 16 日发布是继 1.0.0 之后的又一个里程碑式大版本。它的核心主题可以概括为四个词统一设备选择、默认算法切换、多目标原生支持、学习排序重写。1.1 新的device参数统一设备选择入口在 2.0 之前用户需要分别通过gpu_id、gpu_hist、gpu_predictor、cpu_predictor、gpu_coord_descent以及 PySpark 特有的use_gpu等一组参数来控制运行设备参数繁多且容易混淆。2.0 引入的device参数将这一组参数统一收编用户只需通过device指定设备类型与设备序号即可。例如params { device: cuda, # 指定在 CUDA 设备上运行 tree_method: hist, # 在 GPU 上执行 hist 树方法 }devicecuda, tree_methodhist表示在 GPU 上运行hist树方法devicecpu则退回 CPU该参数同样支持设备序号例如devicecuda:0可通过 src/context.cc 中的CUDAOrdinal逻辑看到XGBoost 会校验可见 GPU 数量并对超出范围的序号做取模回绕并给出警告。从源码看实现src/context.cc 中定义了kDevice device参数常量训练、预测、数据构造共用的Context对象据此决定设备与线程配置。旧的gpu_hist行为被保留但标记为弃用predictor参数则被直接移除Python 包中同样移除见 python-package/xgboost/core.py 的参数处理逻辑。1.2hist成为默认树方法从 2.0 开始hist基于直方图的近似算法成为默认tree_method。此前版本会根据输入数据与训练环境在approx与exact之间自动选择。新默认值让 XGBoost 训练更高效、行为更一致——直方图算法通过特征分箱binning将复杂度与数据规模解耦是大规模训练事实上的标准路径。1.3 多目标树Multi-Target Trees与向量叶子输出这是 2.0 中处于开发中状态但方向性极强的特性用一棵树同时为多个目标输出向量叶子vector leaf覆盖多目标回归、多标签分类与多分类任务。此前 XGBoost 为每个目标各建一个独立模型向量叶子方案则让一棵树同时拟合所有目标带来的收益包括帮助防止过拟合各目标共享树结构天然引入正则化模型体积更小树的数量可显著减少树结构能显式建模目标之间的相关性correlation between targets。使用方式训练时通过multi_strategy参数启用并支持使用回调callback在一次训练会话中混合向量叶子树与标量叶子树。限制目前仅有 CPU 上的hist默认树方法支持构建向量叶子树相关实现分散在 src/gbm/gbtree.cc训练入口、src/gbm/gbtree_model.cc模型存储以及预测器 src/predictor/cpu_predictor.cc、src/predictor/gpu_predictor.cu 中。该特性的更多背景可参考 doc/tutorials/multioutput.rst1.6 引入的多输出模型教程。1.4 直方图缓存上限参数max_cached_hist_node为了控制 CPU 端直方图缓存的内存占用2.0 新增max_cached_hist_node参数用于限制直方图缓存的节点数上限。底层原理hist算法会缓存已计算节点的直方图以便复用而缓存规模随树深度呈指数增长每层节点数翻倍。深树场景下缓存可能失控该参数提供了硬性上限不设缓存虽然可能略微降低性能但不会影响模型精度因此大多数用户无需配置。从源码看默认值src/tree/hist/hist_param.h 中HistMakerTrainParam定义NotSet()默认值std::numeric_limitsstd::size_t::max()CPU 默认缓存节点数CpuDefaultNodes() 1 1665536CUDA 默认缓存节点数CudaDefaultNodes() 1 124096因 GPU 显存更受限而取更小值参数下限校验为 1set_lower_bound(1)。同时2.0 在分布式系统上通过把hist与approx的缓存减半进一步压缩了内存占用。1.5 外部内存External Memory支持大幅改进外部内存out-of-core能力在 2.0 中仍标记为实验性但性能显著提升用memory map内存映射替换了旧的文件 IO 逻辑降低了 CPU 内存占用补充了大量文档见 doc/tutorials/external_memory.rst。使用建议当QuantileDMatrix的内存节省不足以满足需求时可以尝试使用hist树方法配合外部内存。底层数据迭代与分页读取逻辑可在 src/data/sparse_page_source.cc、src/data/file_iterator.cc 中查看。1.6 Learning to Rank全新实现2.0 对学习排序任务进行了全新实现新增/升级的能力包括特性参数/说明配对构造策略新参数lambdarank_pair_method每组采样对数控制新参数lambdarank_num_pair_per_sample无偏学习排序实验性lambdarank_unbiasedNDCG 自定义增益函数ndcg_exp_gainGPU 确定性计算所有目标函数与评估指标在 GPU 上确定化默认目标函数NDCG原默认rank:pairwise不再默认指标性能使用缓存加速评估指标sklearn 工具XGBRanker获得 scikit-learn 工具链兼容文档专门的 learning-to-rank 教程 doc/tutorials/learning_to_rank.rst从源码看实现src/objective/lambdarank_obj.cc 中可看到lambdarank_unbiased与ndcg_exp_gain在梯度计算路径中实际生效的分支如增益计算处if (param_.ndcg_exp_gain)选择指数型增益配对构造与分组策略的相关代码位于 src/common/ranking_utils.h 与 src/metric/rank_metric.cc。可运行的排序示例参见 demo/guide-python/learning_to_rank.py。1.7 自动估计截距Automatically Estimated Intercept此前base_score是用户手工设置的训练常量2.0 起 XGBoost 会根据输入标签自动估计该参数以获得更优的初始预测与精度。这意味着大多数场景下用户无需再手工调base_score。相关教程见 doc/tutorials/intercept.rst。1.8 分位数回归Quantile Regression2.0 正式支持分位数回归其损失函数为分位数损失也称 pinball loss。XGBoost 还允许同时训练多个目标分位数——每个分位数对应一棵树由quantile_alpha参数可传列表控制。例如params { objective: reg:quantileerror, quantile_alpha: [0.25, 0.5, 0.75], # 同时学习三个分位数 }实现位于 src/objective/quantile_obj.cc。同时L1reg:absoluteerror与分位数回归两类目标因为缺乏有效的 Hessian二阶导值而使用自适应树2.0 中它们支持按学习率缩放叶子值提升收敛行为。1.9 导出分箱切分点Export Cut Value通过 Python 或 C 包用户可以导出hist树方法使用的分位数quantile切分点——注意这不同于分位数回归。该能力便于用户理解特征分箱边界相关接口见 python-package/xgboost/core.py 中 Booster 的数据导出方法。1.10 列分片与联邦学习Column-based Split Federated Learning2.0 在列分片按特征维度切分数据上取得实质进展approx、hist、以及带向量叶子的hist均可配合按列切分的数据工作支持纵向联邦学习vertical federated learning特征在参与者间切分GPU 支持仍在开发中。这与 1.7 引入的横向联邦学习基于 gRPC 联邦服务器聚合 allreduce形成互补详见下文 1.7 章节。分布式通信基础设施位于 src/collective/ 目录。1.11 PySpark 接口成熟2.0 中 PySpark 接口python-package/xgboost/spark/获得一批新特性GPU 预测device参数驱动数据初始化优化避免栈操作支持预测特征贡献feature contribution / SHAPPython 类型标注支持use_gpu弃用推荐deviceeval_metric校验支持字符串列表训练日志改进与多项维护性修复。1.12 其他通用新特性与优化CSC 矩阵改用 array interfaceXGBoost 统一线程数使用并使 CSC 输入在按需类型转换下降低内存占用CUDA compute 90 纳入默认构建CPU 上 array interface如 numpy输入性能显著提升数据初始化相关的 CUDA 优化使用最新 thrust 策略避免 GPU 设备同步XGBoost 改为使用每线程 CUDA stream防止与其他 stream 互相同步。1.13 2.0 破坏性变更清单迁移必读变更说明device统一gpu_id、gpu_hist、gpu_predictor、cpu_predictor、gpu_coord_descent、use_gpu均被device取代predictor参数被移除文本输入必须指定格式必须显式给出文本输入格式官方建议优先使用numpy.ndarray等第三方数据结构而非文本输入Python 包移除ntree_limit该参数此前已弃用2.0 中移除移除单字符串特征信息特征类型与特征名应使用字符串序列save_model移除多余参数scikit-learn 接口的save_model不再接受额外参数升级提示若你的代码仍使用gpu_hist作为tree_method2.0 下应改为devicecuda, tree_methodhist二者在 GPU 上执行的是同一套直方图算法。1.14 2.0 值得注意的 Bug 修复线程安全的缓存某些语言运行时用独立线程做垃圾回收会破坏 XGBoost 的线程本地缓存2.0 用轻量锁实现了线程安全缓存取而代之修复模型 IO 时未清空预测缓存的问题数据构造阶段即检查inf值保留已保存 updater 配置的顺序使用updater参数而非tree_method时可见修复分类特征切分时的 GPU 显存分配问题JSON 模型 dump 中特征名的转义序列如\t\n处理模型 IO 与文本输入的路径规范化Windows 短路径、Unix 下含~的路径且所有路径输入要求 UTF-8 编码修复 H100 上的整数溢出修复 GPU 上带分类特征的加权 sketching修复指标序列化此前可能导致评估时部分指标丢失修复 MSVC x86 目标编译错误。1.15 Python / R / JVM 包要点Python 包python-package/xgboost/支持 pyarrow 后端 pandas DataFrame 的原始类型警告消息改用 Pythonwarnings机制发出plot_importance支持自定义条形图旁数值的格式化float16 半精度支持增强pandas、cupy、cuDFGPU 输入走 CUDA__half零拷贝inplace_predict与QuantileDMatrix支持Series与 Python 原生类型支持全部 pandas 可空整数类型sklearn 接口的自定义指标支持sample_weight采用现代 Python 打包规范PEP 517/518/621setup.py被 python-package/pyproject.toml 取代并支持 Python 3.11QuantileDMatrix缓存转换后的数据提升效率DataIter只接受关键字参数best_iteration仅在启用早停时定义与文档行为一致。R 包R-package/使用新的数据消费接口处理 CSR/CSC线程数控制更好、性能提升训练时接受多个评估指标修复整数输入含NA的问题大量重构感谢 jameslamb 等贡献者。JVM 包jvm-packages/预测不再使用 Rabit设置feature_names与feature_types为分类特征支持做准备支持 Scala 2.13训练阶段从ResultStage调整为ShuffleMapStage早停自动设置最优分数的最大/最小方向破坏性变更移除 Scala 版 trackerDeviceQuantileDmatrix更名为QuantileDMatrix采用依赖机器人dependabot持续更新依赖。二、1.7 系列PySpark、QuantileDMatrix 与联邦学习的奠基2.1 v1.7.0特性密集的一次发布1.7.02022 年 10 月是 2.0 之前的蓄力版本许多 2.0 特性的地基都源于此。PySpark 初始支持1.7 引入 PySpark 集成实验性接口改编自 databricks 的 PySpark XGBoost并额外支持QuantileDMatrix与 rapidsai 插件GPU 流水线。用户可以在分布式集群上用 Python 定义自定义目标、回调用与指标。限制分类特征与多输出模型暂不支持。教程见 doc/tutorials/spark_estimator.rst。分类特征支持推进1.7 中分类特征可以处理缺失值并新增max_cat_threshold参数——该参数在使用分区算法partition-based split时启用限制参与切分评估的类别数量防止过拟合。sklearn 接口新增feature_types参数允许为非 DataFrame 数据类型声明分类特征。完整教程见 doc/tutorials/categorical.rst。实验性联邦学习与新通信模块collective联邦学习以 gRPC 联邦服务器实现服务器聚合 allreduce 调用联邦客户端在本地数据上训练可使用approx、hist、gpu_hist等现有树方法目前仅支持横向联邦学习样本在参与者间切分各方拥有全部特征与标签未来计划包括纵向联邦学习以及同态加密、差分隐私等更强的隐私保障作为配套1.7 用新的collective模块替换了旧rabit模块作为网络通信接口支持运行时选择后端rabit或federated此前后端在编译期固定不可改。相关代码见 src/collective/ 目录。QuantileDMatrixXGBoost 将内部的DeviceQuantileDMatrix及其分布式版本扩展支持 CPU 并更名为QuantileDMatrix。它针对hist/gpu_hist优化内存使用对稠密数据尤其能显著降低 CPU 内存。特性要点可由 CPU 或 GPU 数据构造且无论数据来源构造出的实例都能被 CPU 与 GPU 算法用于训练与预测设备不匹配时有一定转换开销新增ref参数可用它构造验证/测试数据集复用训练数据的分箱结构无需重新扫描在 sklearn 接口中当用户指定了受支持的树方法时默认使用。参考实现python-package/xgboost/data.py 中的QuantileDMatrix类以及 src/data/quantile_dmatrix.cc。配套演示见 demo/guide-python/quantile_data_iterator.py。平均绝对误差MAE目标reg:absoluteerror加入目标函数家族。其特殊之处在于 MAE 的 Hessian 恒为零——而 XGBoost 依赖牛顿优化缺少有效 Hessian 时收敛可能很慢。为此 XGBoost 在训练算法中引入了线性搜索line search。实现可参考 src/objective/absolute_error_obj.cc。XGBoost 跑在浏览器里借助 pyodide 项目XGBoost 现在可以在浏览器中运行。Dask 接口实验性支持 IPv6。hist与 GPU Hist 优化CPUhist支持按列构建直方图可选依据输入数据条件自动配置更好地适配不同形状的数据集直方图内核更好地利用 CPU 寄存器GPU hist 对宽数据集wide dataset性能显著提升支持批处理节点构建batched node build降低内核延迟、提高吞吐深树 depthwise策略下提升尤为明显。1.7 破坏性变更移除grow_local_histmakerupdater极少使用且无测试移除单精度直方图浮点误差大且危险发布二进制不再支持已弃用的 CUDA 架构rabit模块被collective模块替换drop-in replacement支持运行时后端选择。其他亮点DMatrix/QuantileDMatrix新增get_data方法Python 与 C取回数据修复 GPU 上缺失值的幽灵梯度浮点误差导致参数校验不再是实验特性支持 IBM i 操作系统Python 最低版本升至 3.8XGBoostError的 sklearn 兼容性改进scikit-learn 接口feature_names_in_属性等。2.2 v1.7.6 / v1.7.5 / v1.7.4 / v1.7.3 / v1.7.2 / v1.7.1补丁维护1.7.6修复混合稠密/稀疏分区的分布式训练修复大树的 CPU 单调约束Spark 模型 UID 与 estimator 一致QuantileDMatrix预测优化。CRAN 上 R 包保持在 1.7.5。1.7.5C 标准升至 C-17默认 CTK 为 CUDA 11.8修复 pyspark ranker 导入、Windows wheel 与 Poetry 兼容性、GPU hist 列采样等。1.7.4R 包 macOS OpenMP 检测修复numpy 数组对齐检查gpu_hist 评估器列采样下的特征交互修复等。1.7.3get_params不再返回内部配置值Breaking修复 L1 误差崩溃、CPU-only 构建加载 GPU pickle 模型、未见类别推理等。1.7.2适配更新的 thrust/libcudacxxCUDA array interface 支持空值AIX 平台getsockname替换pyspark 按 qid 排序等。1.7.1恢复xgboost.rabit以保持向后兼容。三、1.6 与 1.5分类特征、外部内存与序列化格式变革3.1 v1.6.02022 年 4 月分类特征支持全面化Python 与 C 包中hist、approx、gpu_hist全部支持分类数据训练。更重要的是引入了基于分区的分类切分partition-based categorical split——此前只支持 one-hot 式切分形如x ∈ {c}特征与单个类别比较新版本支持更富表达力的x ∈ S特征与多个候选类别比较。相关代码见 src/common/categorical.h 与 src/tree/hist/evaluate_splits.h。多输出模型实验性支持包括多输出回归与多标签分类XGBClassifier支持 base margin 而无需用户手动展平输入。初始版本为每个目标各建一个模型类似 sklearn 的 meta estimator。教程见 doc/tutorials/multioutput.rst。外部内存特性完备基于迭代器接口hist与approx在训练与预测时逐批迭代数据移除了此前hist把所有 batch 拼成内部表示的逻辑数据规模可扩展性更高磁盘 IO 可能带来性能下降。重写approx基于hist重写消除功能差距并提升性能。用户可见变化包括支持max_leaves与max_depth、支持grow_policy、单调约束、特征权重用max_bin取代sketch_eps支持分类数据分布式训练性能与鲁棒性提升depthwise策略下外部内存性能显著改善。新序列化格式UBJSON在 JSON 基础上引入 UBJSON 作为更高效的备选并计划逐步淘汰旧二进制模型格式。用户可在序列化函数中通过扩展名json或ubj选择格式save_raw新增格式参数json、ubj、deprecated默认内部序列化格式改为 UBJSON影响 Python pickle 与 R RDS。模型 IO 相关实现见 include/xgboost/json_io.h文档见 doc/tutorials/saving_model.rst。其他新增huber_slope参数Pseudo-Huber 目标aucpr指标重写并支持 GPU指标计算改双精度max_leave与max_depth默认行为统一评估指标与线性模型结果确定性num_parallel_tree从训练超参改为模型参数修复随机森林模型 IODask 接口不再视为实验性Python 最低版本 3.7Apple Silicon 预编译 wheelR 包load.raw可返回 booster 等。3.2 v1.5.02021 年 10 月分类特征1.3 引入的原生分类特征免 one-hot在此版本得到全面完善——预测、SHAP、特征重要性、模型绘图均原生支持分类切分形式仍为x ∈ {v}numpy/cupy、cuDF/pandas/modin 等数据结构全部支持。当时的启用条件为Python 包 gpu_hist JSON 模型格式。外部内存新接口全新的迭代器式外部内存实现沿用DeviceQuantileDMatrix的数据迭代器同时移除 lz4 压缩。该接口当时仍属实验性官方建议从旧的URL 后缀式接口迁移。其他min_delta加入早停回调Python 支持约束按特征名配置R 包predict新增iteration_rangeJVM 包支持 GPU dataframe 与DeviceQuantileDMatrixCUDA compute capability 86 纳入默认构建GPU 直方图构建提速大数据集训练时间 2–3 倍提升、移除deterministic_histogram参数GPU 算法总是确定性n_gpus移除C API 的 Quantile DMatrix 与外部内存接口对齐。四、1.0 1.4现代化与生态扩展的关键阶段4.1 v1.4.x2021 年R 包 GPU 预编译二进制R CMD INSTALL ./xgboost_r_gpu_linux.tar.gz即可安装带 GPU 支持的 R 包预测函数统一重构C API 与 Python API 预测接口统一sklearn 接口默认使用 inplace predict所有树模型预测线程安全新增strict_shape参数Dask 接口功能完备支持学习排序qid 分组、SHAP、随机森林、安全 pickle、类型提示预测显著加速ROC-AUC 重实现支持多分类与更广的排序任务分布式平均语义更清晰全局配置Python/R/C 接口支持全局参数verbosity、use_rmmarray interface 增强接受任意数组 strides列主序支持、零拷贝支持__cuda_array_interface__v3破坏性变更预测函数的data参数更名为X不再生成伪特征名binary:logitraw默认指标改为logloss。4.2 v1.3.02020 年 12 月GPUTreeSHAPCUDA 加速 TreeSHAPGPU 上计算 SHAP 特征归因新风格 Python 回调 API可用惯用 Python 设计训练扩展支持 Dask 原生 API 早停python-package/xgboost/callback.py大型数据DeviceQuantileDMatrix绕过 2^31 元素的 CUB/Thrust 整数溢出模型切片[start, end)区间切分树集成早停回调支持save_best加权列采样按特征权重采样权重为 0 的特征永不参与切分demo/guide-python/feature_weights.py分类特征直接切分实验性测试节点条件形如feature_value ∈ match_set须配合 JSON 模型序列化RMM 插件共享 GPU 内存池demo/rmm_plugin/README.mdoneAPI 实验性插件破坏性变更分类默认指标改为logloss/mlogloss与binary:logistic目标在统计上一致skmaker移除JSON 模型不再存储叶子子节点数要求 macOS 10.14性能DMatrix 构建提速至 3.7x、CPU 预测 3.6x、BuildHist线程本地内存分配 1.7x、JSON 序列化 1.5–2xintrusive pointer。4.3 v1.2.02020 年 8 月XGBoost4J-Spark 支持 GPU 训练支持 CUDA 11 构建R 环境模型持久化指引推荐xgb.save()/xgb.save.raw()而非saveRDS()旧 RDS 兼容层仅为临时措施新目标/指标reg:pseudohubererror指标mphesurvival:aftGPU 加速sklearn 集成n_features_in_、XGBoostError继承ValueErrorDask异步接口、DaskDeviceQuantileDMatrix零拷贝 GPU 阵列摄入、预测返回 GPU Series外部数据类型处理逻辑集中重构JSON 序列化增强更快更小、Ryū 算法保证 round-trip 可复现与 locale 无关、支持从 S3 等远程源加载破坏性变更DaskXGBClassifier.predict()改为输出类别概率用predict_proba()自定义评估指标接收原始未变换预测XGBoost4J-Spark 要求 Spark 3.0 / Scala 2.12Python 要求 3.6采用 C14 标准。4.4 v1.1.02020 年 5 月多核 CPU 性能缩放修复Intel CPU 上效果显著GPU 回归/分类算法确定化单 GPUGPU 外部内存基于梯度的采样gradient-based sampling智能选择子集拷入显存参数校验拼写错误的参数不再被静默忽略sklearn 与 R 绑定同样生效线程安全的inplace_predict()无需构造DMatrix直接对numpy.ndarray/scipy.sparse.csr_matrix/cupy.ndarray/cudf.DataFrame/pd.DataFrame就地预测可用共享模型对象服务并发请求生存分析目标survival:aft加速失效时间模型支持区间标签doc/tutorials/aft_survival_analysis.rstmacOS 安装简化brew install libomppip install xgboostDeviceQuantileDMatrix直接从 GPU 内存摄入数据与 cuDF、cuPy、PyTorch 互通破坏性变更要求 Pip 19.0GPU 算法要求 CUDA 10.0移除silent用verbosity自定义目标默认output_marginTrue移除 Makefile统一 CMake移除distcolupdater。4.5 v1.0.x2020 年 2–3 月1.0.0 是项目现代化里程碑Apache 风格治理与语义化版本semantic versioning——主版本号变更即代表序列化格式不兼容多核 CPU 性能缩放重大改进macOS 安装体验彻底改善Kubernetes 分布式训练教程Ruby 绑定原生 Dask 接口多 GPU/多节点比上版本快 20%cuDF/cuPy 一等公民支持数据全程留在 GPU 显存接受任何暴露__array_interface__的结构特征交互约束扩展到approx与gpu_hist学习排序 GPU 加速NDCG/MAP/Pairwise外部内存 GPU 训练实验性JSON 模型序列化实验性引入拆分模型与内部配置save_model只保存模型保证模型文件可在任意机器加载修复 GPU 模型在无 GPU 机器上无法加载的问题参数校验未使用/拼写错误参数给出警告save_config()可检查全部生效训练参数单个 worker 故障恢复实验性破坏性变更要求 Python 3.5、CUDA 9.0移除n_gpus多 GPU 训练需分布式框架移除gpu_exact、learning_rates、num_roots、GPU 前缀目标如gpu:reg:linearXGBoosterPredict()新增training参数统一使用 CMake 构建。五、0.x 时代从初版到 GPU 与分布式生态成型5.1 v0.902019 年 5 月Python 包放弃 Python 2.xXGBoost4J-Spark 要求 Spark 2.4.x缺失值处理一致性修复sklearn 风格随机森林 APIXGBRFClassifier/XGBRFRegressorGPU 预测器支持外部内存输入见 demo/c-api/basic/ 等 C 示例CMake 提供xgboost::xgboost目标方便嵌入 C/C 应用多分类指标merror/mloglossGPU 化reg:linear弃用改用reg:squarederror。5.2 v0.822019 年 3 月分布式hist算法多节点多 GPU 训练rabit AllReduce 传递 GPU 信息colsample_bynode节点级列采样与colsample_bytree/colsample_bylevel累积生效verbosity日志级别0 静默 / 1 警告 / 2 信息 / 3 调试silent与debug_verbose弃用外部内存多项重大修复XGBoost4J 系列早停语义与 Python 对齐。5.3 v0.81 / v0.802018 年特征交互约束feature interaction constraintssklearn 接口学习排序XGBRankerR 接口 SHAP 交互GPU 预测器支持多 GPU 并行预测大规模集群扩展1.5k executors、120 亿行数据集新 GPU 目标函数hinge、multi:softmax、multi:softprob、count:poisson、reg:gamma、reg:tweedieXGBoost4J-Spark 重大重构Spark ML Pipeline 风格 API、camelCase 与下划线双风格参数GPUNCCL2 多 GPU、共享内存原子操作加速、动态显存分配LIBSVM 文件支持 qid 列binary:hinge目标datatable 输入total_gain/total_cover重要性指标。5.4 v0.7x2017–2018v0.72GPU 加速坐标下降sklearn API 全面参数化n_jobs、random_state、booster 选择、sample_weight、训练续跑xgb_modelv0.71pip install可用性大幅提升gblinear重构支持多坐标下降 updaterhist/gpu_hist近似分位数 sketch 修复L1/L2 正则按样本数归一化与 sklearn/glmnet 一致为破坏性变更v0.72017 年末距 v0.6 一年半直方图树算法hist、GPU 树算法gpu_hist/gpu_exact、DART、单调约束、AVX、JSON 模型导出、Tweedie 回归、模型原地更新sklearn 兼容层JVM 包支持 Spark/Flink 分布式训练、早停、排序任务。5.5 v0.6 及更早2014–2016v0.6核心库大规模重构模块化、C11、std::mt19937、插件注册机制tree_method参数正式化libxgboost.soJVM 包支持 Flink 与 SparkDART boosterCMake 构建系统v0.47R 包缺失值语义切换0 → NAPython 包异常化、重要性/树绘图、逐轮学习率、训练续跑、CV 早停、pip 安装Java API 可用v0.4YARN 分布式版本十亿级样本、S3/HDFS 直读、R 特征重要性可视化、泊松回归、早停、R/Python 原生保存加载、sklearn wrapper、实验性外部内存v0.3列采样bst:col_samplebytree、从初始预测提升、LambdaRank 实验版、并行线性提升器、R 模块v0.2x / v0.1Python 模块、样本加权、pairwise rank 初版2014 年 3 月首次发布。六、总结如何根据版本演进规划你的升级路线关注点建议版本与配置新项目默认配置2.0使用tree_methodhistGPU 场景加devicecuda老代码迁移重点处理device参数替换1.7 的gpu_hist写法 →devicecuda, tree_methodhist、predictor移除、文本输入格式显式化内存受限场景2.0 的max_cached_hist_nodeQuantileDMatrixref参数复用分箱排序/搜索业务2.0 的lambdarank_*参数族与 NDCG 默认目标参考 doc/tutorials/learning_to_rank.rst多输出/多标签2.0 向量叶子多目标树实验性CPUhist或 1.6 起的多输出模型doc/tutorials/multioutput.rst分布式生态Daskdoc/tutorials/dask.rst、PySparkdoc/tutorials/spark_estimator.rst、JVMjvm-packages/、联邦学习collective后端src/collective/最后提醒发布说明自 2.1.0 起迁移至 doc/changes/ 目录查看最新版本特性请直接阅读该目录下的对应版本文件如 doc/changes/v3.4.0.rst仓库根目录 NEWS.md 继续按时间倒序保留 2.0.0 及更早版本的历史记录。【免费下载链接】xgboostScalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow项目地址: https://gitcode.com/gh_mirrors/xg/xgboost创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表