Add global configuration (#6414)
* Add management functions for global configuration: XGBSetGlobalConfig(), XGBGetGlobalConfig(). * Add Python interface: set_config(), get_config(), and config_context(). * Add unit tests for Python * Add R interface: xgb.set.config(), xgb.get.config() * Add unit tests for R Co-authored-by: Jiaming Yuan <jm.yuan@outlook.com>
This commit is contained in:
committed by
GitHub
parent
c2ba4fb957
commit
fb56da5e8b
@@ -63,6 +63,23 @@ XGB_DLL const char *XGBGetLastError(void);
|
||||
*/
|
||||
XGB_DLL int XGBRegisterLogCallback(void (*callback)(const char*));
|
||||
|
||||
/*!
|
||||
* \brief Set global configuration (collection of parameters that apply globally). This function
|
||||
* accepts the list of key-value pairs representing the global-scope parameters to be
|
||||
* configured. The list of key-value pairs are passed in as a JSON string.
|
||||
* \param json_str a JSON string representing the list of key-value pairs. The JSON object shall
|
||||
* be flat: no value can be a JSON object or an array.
|
||||
* \return 0 for success, -1 for failure
|
||||
*/
|
||||
XGB_DLL int XGBSetGlobalConfig(const char* json_str);
|
||||
|
||||
/*!
|
||||
* \brief Get current global configuration (collection of parameters that apply globally).
|
||||
* \param json_str pointer to received returned global configuration, represented as a JSON string.
|
||||
* \return 0 for success, -1 for failure
|
||||
*/
|
||||
XGB_DLL int XGBGetGlobalConfig(const char** json_str);
|
||||
|
||||
/*!
|
||||
* \brief load a data matrix
|
||||
* \param fname the name of the file
|
||||
|
||||
30
include/xgboost/global_config.h
Normal file
30
include/xgboost/global_config.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/*!
|
||||
* Copyright 2020 by Contributors
|
||||
* \file global_config.h
|
||||
* \brief Global configuration for XGBoost
|
||||
* \author Hyunsu Cho
|
||||
*/
|
||||
#ifndef XGBOOST_GLOBAL_CONFIG_H_
|
||||
#define XGBOOST_GLOBAL_CONFIG_H_
|
||||
|
||||
#include <xgboost/parameter.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
namespace xgboost {
|
||||
class Json;
|
||||
|
||||
struct GlobalConfiguration : public XGBoostParameter<GlobalConfiguration> {
|
||||
int verbosity;
|
||||
DMLC_DECLARE_PARAMETER(GlobalConfiguration) {
|
||||
DMLC_DECLARE_FIELD(verbosity)
|
||||
.set_range(0, 3)
|
||||
.set_default(1) // shows only warning
|
||||
.describe("Flag to print out detailed breakdown of runtime.");
|
||||
}
|
||||
};
|
||||
|
||||
using GlobalConfigThreadLocalStore = dmlc::ThreadLocalStore<GlobalConfiguration>;
|
||||
} // namespace xgboost
|
||||
|
||||
#endif // XGBOOST_GLOBAL_CONFIG_H_
|
||||
@@ -557,7 +557,6 @@ using String = JsonString;
|
||||
using Null = JsonNull;
|
||||
|
||||
// Utils tailored for XGBoost.
|
||||
|
||||
template <typename Parameter>
|
||||
Object ToJson(Parameter const& param) {
|
||||
Object obj;
|
||||
@@ -568,13 +567,13 @@ Object ToJson(Parameter const& param) {
|
||||
}
|
||||
|
||||
template <typename Parameter>
|
||||
void FromJson(Json const& obj, Parameter* param) {
|
||||
Args FromJson(Json const& obj, Parameter* param) {
|
||||
auto const& j_param = get<Object const>(obj);
|
||||
std::map<std::string, std::string> m;
|
||||
for (auto const& kv : j_param) {
|
||||
m[kv.first] = get<String const>(kv.second);
|
||||
}
|
||||
param->UpdateAllowUnknown(m);
|
||||
return param->UpdateAllowUnknown(m);
|
||||
}
|
||||
} // namespace xgboost
|
||||
#endif // XGBOOST_JSON_H_
|
||||
|
||||
@@ -45,7 +45,6 @@ struct XGBAPIThreadLocalEntry {
|
||||
PredictionCacheEntry prediction_entry;
|
||||
};
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Learner class that does training and prediction.
|
||||
* This is the user facing module of xgboost training.
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <xgboost/base.h>
|
||||
#include <xgboost/parameter.h>
|
||||
#include <xgboost/global_config.h>
|
||||
|
||||
#include <sstream>
|
||||
#include <map>
|
||||
@@ -35,19 +36,6 @@ class BaseLogger {
|
||||
std::ostringstream log_stream_;
|
||||
};
|
||||
|
||||
// Parsing both silent and debug_verbose is to provide backward compatibility.
|
||||
struct ConsoleLoggerParam : public XGBoostParameter<ConsoleLoggerParam> {
|
||||
int verbosity;
|
||||
|
||||
DMLC_DECLARE_PARAMETER(ConsoleLoggerParam) {
|
||||
DMLC_DECLARE_FIELD(verbosity)
|
||||
.set_range(0, 3)
|
||||
.set_default(1) // shows only warning
|
||||
.describe("Flag to print out detailed breakdown of runtime.");
|
||||
DMLC_DECLARE_ALIAS(verbosity, debug_verbose);
|
||||
}
|
||||
};
|
||||
|
||||
class ConsoleLogger : public BaseLogger {
|
||||
public:
|
||||
enum class LogVerbosity {
|
||||
@@ -60,9 +48,6 @@ class ConsoleLogger : public BaseLogger {
|
||||
using LV = LogVerbosity;
|
||||
|
||||
private:
|
||||
static LogVerbosity global_verbosity_;
|
||||
static ConsoleLoggerParam param_;
|
||||
|
||||
LogVerbosity cur_verbosity_;
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user