Upgrading xgboost 0.90 to 1
Breaking0.90 → 1.7.6Breaking38Security3Platform6Deprecated8New126Changed181Fixed265Other324
BreakingUpgrade verdict
38 breaking changes and 6 platform requirement changes and 2 security fixes.
In plain terms
- If you call get_params on an XGBoost scikit-learn estimator, it now returns only the parameters you set, not the internal defaults.
- A rarely used tree-building updater has been removed.
- The single-precision histogram option is gone because its rounding errors could be hard to detect and made it dangerous to use.
- Prebuilt binaries no longer run on older, deprecated NVIDIA CUDA architectures.
Must act Top 5 of 54 that need code or config changes
Python requirement changed in 1.7.0rc1: >=3.4 → >=3.8.
What you must change
Breaking38
XGBoost Sklearn estimator method get_params no longer returns internally configured values.
get_paramsRemoves the grow_local_histmaker updater.
grow_local_histmakerRemoves single precision histogram due to floating point accuracy errors.
Deprecated CUDA architectures are no longer supported in the release binaries.
Replaces the rabit module with the new collective module, a drop-in replacement with runtime backend selection.
rabitcollectiveRemoves the timeoutRequestWorkers parameter, no longer needed with barrier mode support.
timeoutRequestWorkersRemoves the label encoder deprecated in 1.3.
Removes the old callback deprecated in 1.3.
Removes lz4 compression during development of the new external memory interface.
lz4Speeds up GPU histogram building 2-3 times on large datasets and removes the deterministic_histogram parameter, making the GPU algorithm always deterministic.
deterministic_histogramRemoves the n_gpus parameter, which was deprecated in the 1.0 release.
n_gpusRemoves feature grouping in the CPU hist tree method, which had been disabled long ago.
Removes the magrittr dependency from the R package.
magrittrRenames all data parameters in prediction functions to X for sklearn estimator interface compliance.
dataXRemoves generation of pseudo feature names with DMatrix when inputs like np.ndarray lack column names.
DMatrixnp.ndarrayDrops saving the binary format for memory snapshot.
Changes the default evaluation metric for the binary:logitraw objective to logloss.
binary:logitrawRemoves cupy.array_equal because it is not compatible with cuPy 7.8.
cupy.array_equalRemoves the
silent parameter; use verbosity instead.silentverbosityRemoves the
Makefile; CMake is now used exclusively to build XGBoost, except the R package which uses Autotools.MakefileCMakeAutotoolsRemoves the long-broken
distcol updater.distcolRemoves SimpleCSRSource.
SimpleCSRSourceRemoves unnecessary DMatrix methods.
DMatrixRemoves the n_gpus parameter; multi-GPU training now requires a distributed framework such as Dask or Spark.
n_gpusRemoves the deprecated gpu_exact training method; use gpu_hist instead.
gpu_exactgpu_histRemoves the deprecated
learning_rates parameter in Python; use the callback API instead.learning_ratesRemoves the
num_roots parameter, since training code always uses a single root node.num_rootsRemoves GPU-specific objectives such as
gpu:reg:linear; GPU is now used automatically when available.gpu:reg:linearMoves all fit parameters not related to input data into the sklearn estimator constructor, settable via set_params.
fitset_paramsChanges the C API for Quantile DMatrix to be consistent with the new external memory implementation.
Quantile DMatrixDisallows importing non-dask estimators from xgboost.dask.
xgboost.daskUpgrades cuDF and RMM to 0.18 nightlies and requires RMM 0.18+ for the RMM plugin.
cuDFRMMChanges
DaskXGBClassifier.predict() to produce class predictions; use predict_proba() for probability predictions.DaskXGBClassifier.predict()DaskXGBClassifier.predict_proba()Custom evaluation metric now receives raw untransformed predictions and must transform them itself.
Sets
output_margin to True for custom objectives in R and Python, returning raw predictions.output_marginThe C API function
XGBoosterPredict() now requires an extra training parameter.XGBoosterPredict()trainingXGBoost now builds exclusively with CMake; the
Makefile is being sunset, except for the R package which uses Autotools.MakefileCMakeAutotoolsDe-duplicates parameters and docstrings in the constructors of Scikit-Learn models.
Security2
Adds a new security policy.
Removes jackson from the JVM dependencies, fixing CVE-2020-36518.
jacksonPlatform6
Python 3.8 is now the minimum required Python version.
Requires Python 3.7 as the lowest supported Python version.
Starting in the next release, the Python package will require Pip 19.3+ due to the use of manylinux2014 tag.
XGBoost Python package now requires Python 3.6 and later.
XGBoost Python package now requires Pip 19.0 and higher.
manylinux2010Requires Python 3.5 or newer for the XGBoost Python package.
Deprecations to plan for
Deprecated8
Deprecates use_label_encoder in XGBClassifier, affecting only the indicator parameter.
use_label_encoderXGBClassifierRemoves an old warning introduced in 1.3.
Deprecates JVM constructors with implicit missing value due to confusing behaviors.
This release will be the last release to support CUDA 10.0.
Users are strongly encouraged to use xgb.save() and xgb.save.raw() instead of saveRDS() for persisting models.
xgb.save()xgb.save.raw()saveRDS()Python 3.5 is deprecated; this is the last release supporting it, and 1.2.0 will require Python 3.6.
Scala 2.11 support in XGBoost4J may be dropped if a future release adopts Spark 3, which requires Scala 2.12+.
XGBoost4JDeprecates the XGDMatrixSetGroup C API in favor of XGDMatrixSetUIntInfo.
XGDMatrixSetGroupXGDMatrixSetUIntInfo