Skip to content

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.

  • 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.
Top 5 of 54 that need code or config changes

Python requirement changed in 1.7.0rc1: >=3.4 → >=3.8.

Breaking38
XGBoost Sklearn estimator method get_params no longer returns internally configured values.
get_params
Removes the grow_local_histmaker updater.
grow_local_histmaker
Removes 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.
rabitcollective
Removes the timeoutRequestWorkers parameter, no longer needed with barrier mode support.
timeoutRequestWorkers
Removes 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.
lz4
Speeds up GPU histogram building 2-3 times on large datasets and removes the deterministic_histogram parameter, making the GPU algorithm always deterministic.
deterministic_histogram
Removes the n_gpus parameter, which was deprecated in the 1.0 release.
n_gpus
Removes feature grouping in the CPU hist tree method, which had been disabled long ago.
Removes the magrittr dependency from the R package.
magrittr
Renames all data parameters in prediction functions to X for sklearn estimator interface compliance.
dataX
Removes generation of pseudo feature names with DMatrix when inputs like np.ndarray lack column names.
DMatrixnp.ndarray
Drops saving the binary format for memory snapshot.
Changes the default evaluation metric for the binary:logitraw objective to logloss.
binary:logitraw
Removes cupy.array_equal because it is not compatible with cuPy 7.8.
cupy.array_equal
Removes the silent parameter; use verbosity instead.
silentverbosity
Removes the Makefile; CMake is now used exclusively to build XGBoost, except the R package which uses Autotools.
MakefileCMakeAutotools
Removes the long-broken distcol updater.
distcol
Removes SimpleCSRSource.
SimpleCSRSource
Removes unnecessary DMatrix methods.
DMatrix
Removes the n_gpus parameter; multi-GPU training now requires a distributed framework such as Dask or Spark.
n_gpus
Removes the deprecated gpu_exact training method; use gpu_hist instead.
gpu_exactgpu_hist
Removes the deprecated learning_rates parameter in Python; use the callback API instead.
learning_rates
Removes the num_roots parameter, since training code always uses a single root node.
num_roots
Removes GPU-specific objectives such as gpu:reg:linear; GPU is now used automatically when available.
gpu:reg:linear
Moves all fit parameters not related to input data into the sklearn estimator constructor, settable via set_params.
fitset_params
Changes the C API for Quantile DMatrix to be consistent with the new external memory implementation.
Quantile DMatrix
Disallows importing non-dask estimators from xgboost.dask.
xgboost.dask
Upgrades cuDF and RMM to 0.18 nightlies and requires RMM 0.18+ for the RMM plugin.
cuDFRMM
Changes 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_margin
The C API function XGBoosterPredict() now requires an extra training parameter.
XGBoosterPredict()training
XGBoost now builds exclusively with CMake; the Makefile is being sunset, except for the R package which uses Autotools.
MakefileCMakeAutotools
De-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.
jackson
Platform6
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.
manylinux2010
Requires Python 3.5 or newer for the XGBoost Python package.
Deprecated8
Deprecates use_label_encoder in XGBClassifier, affecting only the indicator parameter.
use_label_encoderXGBClassifier
Removes 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+.
XGBoost4J
Deprecates the XGDMatrixSetGroup C API in favor of XGDMatrixSetUIntInfo.
XGDMatrixSetGroupXGDMatrixSetUIntInfo