XGBoost 3.3.0 Release
Community
About
Blog
Sponsors
Docs
Github
XGBoost 3.3.0 Release
Jul 21, 2026
Jiaming Yuan and Rory Mitchell
We are pleased to announce XGBoost 3.3.0. This release adds expectile regression,<br>enables categorical feature support by default, expands SHAP support for<br>vector-leaf multi-output trees, and includes a broad set of performance and<br>scalability improvements across CPU, GPU, distributed training, Python, JVM, and<br>the build system. In particular, GPU quantile sketching uses significantly less<br>memory for training.
XGBoost 3.3.0 is available from the usual package channels. The complete release<br>notes are available in the<br>XGBoost documentation,<br>and release artifacts are available on<br>GitHub.
Faster quantile sketching and distributed training
Quantile sketching received a substantial refactor in 3.3.0. The internals are<br>simpler, the weighted quantile sketch implementation is improved, and GPU<br>quantile sketching uses significantly less memory.
These changes matter because quantile construction is a central part of the<br>histogram-based training pipeline. Reducing memory use and simplifying the<br>implementation improves robustness for large datasets, wide datasets, and GPU<br>workloads where memory pressure often decides whether a job fits.
Distributed quantile construction is also more efficient in this release, using<br>tree reductions to improve scalability. XGBoost no longer requires all-to-all<br>collective connections for distributed training, and users can now customize the<br>worker port when deploying distributed jobs.
Expectile regression
This release adds expectile regression, giving practitioners another tool for<br>risk-sensitive forecasting, uncertainty-aware modeling, and applications where<br>overprediction and underprediction carry different costs. It is available<br>through the new reg:expectileerror objective, the expectile metric, and the<br>expectile_alpha parameter.
Expectile regression is useful when users want an asymmetric squared-loss<br>analogue of quantile regression. It gives a smooth objective for estimating<br>different parts of the conditional response distribution, while retaining a<br>squared-error style penalty.
Multiple expectiles are supported, allowing users to train models for several<br>asymmetric targets in a single configuration. Unlike quantile regression,<br>expectile curves do not suffer from crossing, which makes them easier to use<br>when estimating multiple levels of the response distribution together. This<br>complements XGBoost’s existing regression objectives.
Categorical features are on by default
Categorical feature support is now enabled by default. Users no longer need to<br>set enable_categorical=True in the common case. The parameter remains available<br>for users who need to disable categorical handling explicitly.
This change reflects the maturity of categorical support in XGBoost and makes<br>the Python and dataframe workflows a little more natural. Dataframes with<br>categorical columns can be passed into XGBoost without an extra opt-in step,<br>making the default behavior match what many users already expect from modern<br>tabular machine learning libraries.
The CPU hist tree method also gained one-hot categorical split support for the<br>work-in-progress vector-leaf model. Vector-leaf trees are still under active<br>development, but this release continues to close gaps in the feature set.
SHAP support for vector-leaf trees
XGBoost 3.3.0 expands SHAP support for vector-leaf multi-output trees. Exact SHAP<br>contribution and interaction prediction are now available for vector-leaf<br>multi-output trees on both CPU and GPU.
This is an important step for multi-output models. Vector-leaf trees can model<br>relationships across targets directly by storing a vector of weights in each<br>leaf, but users also need the same interpretability tools they rely on for<br>single-output models. With this release, multi-output workflows gain a more<br>complete explanation story.
The TreeSHAP implementation has also been updated for improved numerical<br>stability and faster execution with QuadratureTreeSHAP [1].
CPU and GPU performance improvements
On CPUs, histogram building has been optimized for wide datasets with column<br>block tiling. XGBoost can also detect CPU cache sizes through Linux sysfs on<br>aarch64, improving its ability to choose efficient execution strategies on<br>modern ARM platforms.
On GPUs, sampling now uses Philox for faster random number generation. This<br>release also continues the wider work on reducing GPU memory pressure and<br>improving the efficiency of the training pipeline.
Training with sampling is now more reproducible within a single session. XGBoost<br>uses a local random number generator and serializes the RNG state in the model<br>configuration, so pickled models can retain that state across save/load<br>boundaries. This helps when training multiple sampled models in the same process.
Python and Spark updates
The minimum supported Python version is now Python 3.12. This lets the...