XGBoost 发布策略

版本控制策略

从 XGBoost 1.0.0 版本开始,每个 XGBoost 版本的版本号格式为 [MAJOR].[FEATURE].[MAINTENANCE]

  • MAJOR (主要版本号): 我们保证相同主要版本号的发布版本之间的 API 兼容性。我们预计新的主要版本号发布版本的开发周期为 1 年以上。

  • FEATURE (特性版本号): 我们通过特性版本发布新功能、改进和错误修复。特性版本的周期长度由特性路线图的规模决定。路线图在前一个版本发布后立即确定。

  • MAINTENANCE (维护版本号): 维护版本仅包含错误修复。此类版本仅在我们发现重要的正确性或性能错误,并且这些错误是用户平滑升级到新版本 XGBoost 的障碍时发布。

进行发布

  1. 为本次发布创建一个 issue,注明预计日期和预期功能或重要修复,并置顶该 issue。

  2. 如果是主要版本,则创建一个发布分支。提升(Bump)发布版本号。可以使用辅助脚本 ops/script/change_version.py

  3. 提交更改,在 GitHub 的发布分支上创建 PR。将提升后的版本号移植到默认分支,可以选择性地加上后缀 SNAPSHOT

  4. 在发布分支上创建标签(tag),可以在 GitHub 上或本地创建。

  5. 在 GitHub 标签页面上创建发布(release),如果在 GitHub 上创建标签,此步骤可能与上一步同时完成。

  6. 提交 pip、CRAN 和 Maven 包。

    xgboost/dev/ 目录下有自动化此过程的辅助脚本。

R CRAN 包

在提交发布之前,应首先在 R-hubwin-builder 上测试该包。请注意,R-hub 的 Windows 实例与 win-builder 上托管的环境并不完全相同。

根据 CRAN 政策

如果运行一个包使用了多线程/多核,则同时使用的线程/核心数绝不能超过两个:检查农场是一个共享资源,通常会同时运行许多检查。

我们需要检查示例中使用的 CPU 数量。在运行 R CMD check --as-cran [1] 之前,请导出 _R_CHECK_EXAMPLE_TIMING_CPU_TO_ELAPSED_THRESHOLD_=2.5 并确保您使用的机器有足够的 CPU 核心以暴露任何潜在的策略违规。

参考资料

[1] https://stat.ethz.ch/pipermail/r-package-devel/2022q4/008610.html