diff --git a/cpp/src/fil/fil.cu b/cpp/src/fil/fil.cu index 69b0320e1e..44ea2a3c23 100644 --- a/cpp/src/fil/fil.cu +++ b/cpp/src/fil/fil.cu @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2024, NVIDIA CORPORATION. + * Copyright (c) 2019-2025, NVIDIA CORPORATION. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -391,6 +391,14 @@ struct dense_forest> : forest { { this->init_common(h, cat_sets, vector_leaf, params); if (this->algo_ == algo_t::NAIVE) this->algo_ = algo_t::BATCH_TREE_REORG; + /* The following line is added to disable BATCH_TREE_REORG mode. Currently + * there is a bug in the implementation of this mode which causes a batch + * of trees to be marked as complete before every tree has reached a leaf + * node. At best, this results in a crash due to a bad memory access, but + * it can also silently impact the final output of the model. No issue has + * been logged for this workaround because we will be migrating to the new + * FIL codebase which is not impacted by this bug. */ + if (this->algo_ == algo_t::BATCH_TREE_REORG) { this->algo_ = algo_t::TREE_REORG; } int num_nodes = forest_num_nodes(this->num_trees_, this->depth_); nodes_.resize(num_nodes, h.get_stream()); diff --git a/python/cuml/cuml/benchmark/bench_helper_funcs.py b/python/cuml/cuml/benchmark/bench_helper_funcs.py index 979a4df921..951824c03b 100644 --- a/python/cuml/cuml/benchmark/bench_helper_funcs.py +++ b/python/cuml/cuml/benchmark/bench_helper_funcs.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2019-2024, NVIDIA CORPORATION. +# Copyright (c) 2019-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -142,7 +142,7 @@ def _build_fil_classifier(m, data, args, tmpdir): num_rounds = args["num_rounds"] n_feature = data[0].shape[1] train_size = data[0].shape[0] - model_name = f"xgb_{max_depth}_{num_rounds}_{n_feature}_{train_size}.model" + model_name = f"xgb_{max_depth}_{num_rounds}_{n_feature}_{train_size}.ubj" model_path = os.path.join(tmpdir, model_name) bst = xgb.train(params, dtrain, num_rounds) bst.save_model(model_path)