Merge tag 'v2.0.2' into release_2.0.2-rocm
This commit is contained in:
commit
56d2821bb9
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
|
||||||
project(xgboost LANGUAGES CXX C VERSION 2.0.1)
|
project(xgboost LANGUAGES CXX C VERSION 2.0.2)
|
||||||
include(cmake/Utils.cmake)
|
include(cmake/Utils.cmake)
|
||||||
list(APPEND CMAKE_MODULE_PATH "${xgboost_SOURCE_DIR}/cmake/modules")
|
list(APPEND CMAKE_MODULE_PATH "${xgboost_SOURCE_DIR}/cmake/modules")
|
||||||
cmake_policy(SET CMP0022 NEW)
|
cmake_policy(SET CMP0022 NEW)
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Package: xgboost
|
Package: xgboost
|
||||||
Type: Package
|
Type: Package
|
||||||
Title: Extreme Gradient Boosting
|
Title: Extreme Gradient Boosting
|
||||||
Version: 2.0.1.1
|
Version: 2.0.2.1
|
||||||
Date: 2023-10-12
|
Date: 2023-10-12
|
||||||
Authors@R: c(
|
Authors@R: c(
|
||||||
person("Tianqi", "Chen", role = c("aut"),
|
person("Tianqi", "Chen", role = c("aut"),
|
||||||
|
|||||||
18
R-package/configure
vendored
18
R-package/configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.71 for xgboost 2.0.1.
|
# Generated by GNU Autoconf 2.71 for xgboost 2.0.2.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
|
# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
|
||||||
@ -607,8 +607,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='xgboost'
|
PACKAGE_NAME='xgboost'
|
||||||
PACKAGE_TARNAME='xgboost'
|
PACKAGE_TARNAME='xgboost'
|
||||||
PACKAGE_VERSION='2.0.1'
|
PACKAGE_VERSION='2.0.2'
|
||||||
PACKAGE_STRING='xgboost 2.0.1'
|
PACKAGE_STRING='xgboost 2.0.2'
|
||||||
PACKAGE_BUGREPORT=''
|
PACKAGE_BUGREPORT=''
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1225,7 +1225,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures xgboost 2.0.1 to adapt to many kinds of systems.
|
\`configure' configures xgboost 2.0.2 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1287,7 +1287,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of xgboost 2.0.1:";;
|
short | recursive ) echo "Configuration of xgboost 2.0.2:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1367,7 +1367,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
xgboost configure 2.0.1
|
xgboost configure 2.0.2
|
||||||
generated by GNU Autoconf 2.71
|
generated by GNU Autoconf 2.71
|
||||||
|
|
||||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
@ -1533,7 +1533,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by xgboost $as_me 2.0.1, which was
|
It was created by xgboost $as_me 2.0.2, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
$ $0$ac_configure_args_raw
|
$ $0$ac_configure_args_raw
|
||||||
@ -3412,7 +3412,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by xgboost $as_me 2.0.1, which was
|
This file was extended by xgboost $as_me 2.0.2, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -3467,7 +3467,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config='$ac_cs_config_escaped'
|
ac_cs_config='$ac_cs_config_escaped'
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
xgboost config.status 2.0.1
|
xgboost config.status 2.0.2
|
||||||
configured by $0, generated by GNU Autoconf 2.71,
|
configured by $0, generated by GNU Autoconf 2.71,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
AC_PREREQ(2.69)
|
AC_PREREQ(2.69)
|
||||||
|
|
||||||
AC_INIT([xgboost],[2.0.1],[],[xgboost],[])
|
AC_INIT([xgboost],[2.0.2],[],[xgboost],[])
|
||||||
|
|
||||||
: ${R_HOME=`R RHOME`}
|
: ${R_HOME=`R RHOME`}
|
||||||
if test -z "${R_HOME}"; then
|
if test -z "${R_HOME}"; then
|
||||||
|
|||||||
@ -21,12 +21,14 @@ def normpath(path):
|
|||||||
else:
|
else:
|
||||||
return normalized
|
return normalized
|
||||||
|
|
||||||
|
|
||||||
def cp(source, target):
|
def cp(source, target):
|
||||||
source = normpath(source)
|
source = normpath(source)
|
||||||
target = normpath(target)
|
target = normpath(target)
|
||||||
print("cp {0} {1}".format(source, target))
|
print("cp {0} {1}".format(source, target))
|
||||||
shutil.copy(source, target)
|
shutil.copy(source, target)
|
||||||
|
|
||||||
|
|
||||||
def maybe_makedirs(path):
|
def maybe_makedirs(path):
|
||||||
path = normpath(path)
|
path = normpath(path)
|
||||||
print("mkdir -p " + path)
|
print("mkdir -p " + path)
|
||||||
@ -36,6 +38,7 @@ def maybe_makedirs(path):
|
|||||||
if e.errno != errno.EEXIST:
|
if e.errno != errno.EEXIST:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def cd(path):
|
def cd(path):
|
||||||
path = normpath(path)
|
path = normpath(path)
|
||||||
@ -47,18 +50,22 @@ def cd(path):
|
|||||||
finally:
|
finally:
|
||||||
os.chdir(cwd)
|
os.chdir(cwd)
|
||||||
|
|
||||||
|
|
||||||
def run(command, **kwargs):
|
def run(command, **kwargs):
|
||||||
print(command)
|
print(command)
|
||||||
subprocess.check_call(command, shell=True, **kwargs)
|
subprocess.check_call(command, shell=True, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def get_current_git_tag():
|
def get_current_git_tag():
|
||||||
out = subprocess.check_output(["git", "tag", "--points-at", "HEAD"])
|
out = subprocess.check_output(["git", "tag", "--points-at", "HEAD"])
|
||||||
return out.decode().split("\n")[0]
|
return out.decode().split("\n")[0]
|
||||||
|
|
||||||
|
|
||||||
def get_current_commit_hash():
|
def get_current_commit_hash():
|
||||||
out = subprocess.check_output(["git", "rev-parse", "HEAD"])
|
out = subprocess.check_output(["git", "rev-parse", "HEAD"])
|
||||||
return out.decode().split("\n")[0]
|
return out.decode().split("\n")[0]
|
||||||
|
|
||||||
|
|
||||||
def get_current_git_branch():
|
def get_current_git_branch():
|
||||||
out = subprocess.check_output(["git", "log", "-n", "1", "--pretty=%d", "HEAD"])
|
out = subprocess.check_output(["git", "log", "-n", "1", "--pretty=%d", "HEAD"])
|
||||||
m = re.search(r"release_[0-9\.]+", out.decode())
|
m = re.search(r"release_[0-9\.]+", out.decode())
|
||||||
@ -66,38 +73,53 @@ def get_current_git_branch():
|
|||||||
raise ValueError("Expected branch name of form release_xxx")
|
raise ValueError("Expected branch name of form release_xxx")
|
||||||
return m.group(0)
|
return m.group(0)
|
||||||
|
|
||||||
|
|
||||||
def retrieve(url, filename=None):
|
def retrieve(url, filename=None):
|
||||||
print(f"{url} -> {filename}")
|
print(f"{url} -> {filename}")
|
||||||
return urlretrieve(url, filename)
|
return urlretrieve(url, filename)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("--release-version", type=str, required=True,
|
parser.add_argument(
|
||||||
help="Version of the release being prepared")
|
"--release-version",
|
||||||
|
type=str,
|
||||||
|
required=True,
|
||||||
|
help="Version of the release being prepared",
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if sys.platform != "darwin" or platform.machine() != "x86_64":
|
if sys.platform != "darwin" or platform.machine() != "arm64":
|
||||||
raise NotImplementedError("Please run this script using an Intel Mac")
|
raise NotImplementedError("Please run this script using an M1 Mac")
|
||||||
|
|
||||||
version = args.release_version
|
version = args.release_version
|
||||||
expected_git_tag = "v" + version
|
expected_git_tag = "v" + version
|
||||||
current_git_tag = get_current_git_tag()
|
current_git_tag = get_current_git_tag()
|
||||||
if current_git_tag != expected_git_tag:
|
if current_git_tag != expected_git_tag:
|
||||||
if not current_git_tag:
|
if not current_git_tag:
|
||||||
raise ValueError(f"Expected git tag {expected_git_tag} but current HEAD has no tag. "
|
raise ValueError(
|
||||||
f"Run: git checkout {expected_git_tag}")
|
f"Expected git tag {expected_git_tag} but current HEAD has no tag. "
|
||||||
raise ValueError(f"Expected git tag {expected_git_tag} but current HEAD is at tag "
|
f"Run: git checkout {expected_git_tag}"
|
||||||
f"{current_git_tag}. Run: git checkout {expected_git_tag}")
|
)
|
||||||
|
raise ValueError(
|
||||||
|
f"Expected git tag {expected_git_tag} but current HEAD is at tag "
|
||||||
|
f"{current_git_tag}. Run: git checkout {expected_git_tag}"
|
||||||
|
)
|
||||||
|
|
||||||
commit_hash = get_current_commit_hash()
|
commit_hash = get_current_commit_hash()
|
||||||
git_branch = get_current_git_branch()
|
git_branch = get_current_git_branch()
|
||||||
print(f"Using commit {commit_hash} of branch {git_branch}, git tag {current_git_tag}")
|
print(
|
||||||
|
f"Using commit {commit_hash} of branch {git_branch}, git tag {current_git_tag}"
|
||||||
|
)
|
||||||
|
|
||||||
with cd("jvm-packages/"):
|
with cd("jvm-packages/"):
|
||||||
print("====copying pure-Python tracker====")
|
print("====copying pure-Python tracker====")
|
||||||
for use_cuda in [True, False]:
|
for use_cuda in [True, False]:
|
||||||
xgboost4j = "xgboost4j-gpu" if use_cuda else "xgboost4j"
|
xgboost4j = "xgboost4j-gpu" if use_cuda else "xgboost4j"
|
||||||
cp("../python-package/xgboost/tracker.py", f"{xgboost4j}/src/main/resources")
|
cp(
|
||||||
|
"../python-package/xgboost/tracker.py",
|
||||||
|
f"{xgboost4j}/src/main/resources",
|
||||||
|
)
|
||||||
|
|
||||||
print("====copying resources for testing====")
|
print("====copying resources for testing====")
|
||||||
with cd("../demo/CLI/regression"):
|
with cd("../demo/CLI/regression"):
|
||||||
@ -115,7 +137,11 @@ def main():
|
|||||||
cp(file, f"{xgboost4j_spark}/src/test/resources")
|
cp(file, f"{xgboost4j_spark}/src/test/resources")
|
||||||
|
|
||||||
print("====Creating directories to hold native binaries====")
|
print("====Creating directories to hold native binaries====")
|
||||||
for os_ident, arch in [("linux", "x86_64"), ("windows", "x86_64"), ("macos", "x86_64")]:
|
for os_ident, arch in [
|
||||||
|
("linux", "x86_64"),
|
||||||
|
("windows", "x86_64"),
|
||||||
|
("macos", "x86_64"),
|
||||||
|
]:
|
||||||
output_dir = f"xgboost4j/src/main/resources/lib/{os_ident}/{arch}"
|
output_dir = f"xgboost4j/src/main/resources/lib/{os_ident}/{arch}"
|
||||||
maybe_makedirs(output_dir)
|
maybe_makedirs(output_dir)
|
||||||
for os_ident, arch in [("linux", "x86_64")]:
|
for os_ident, arch in [("linux", "x86_64")]:
|
||||||
@ -123,52 +149,86 @@ def main():
|
|||||||
maybe_makedirs(output_dir)
|
maybe_makedirs(output_dir)
|
||||||
|
|
||||||
print("====Downloading native binaries from CI====")
|
print("====Downloading native binaries from CI====")
|
||||||
nightly_bucket_prefix = "https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds"
|
nightly_bucket_prefix = (
|
||||||
maven_repo_prefix = "https://s3-us-west-2.amazonaws.com/xgboost-maven-repo/release/ml/dmlc"
|
"https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds"
|
||||||
|
)
|
||||||
|
maven_repo_prefix = (
|
||||||
|
"https://s3-us-west-2.amazonaws.com/xgboost-maven-repo/release/ml/dmlc"
|
||||||
|
)
|
||||||
|
|
||||||
retrieve(url=f"{nightly_bucket_prefix}/{git_branch}/xgboost4j_{commit_hash}.dll",
|
retrieve(
|
||||||
filename="xgboost4j/src/main/resources/lib/windows/x86_64/xgboost4j.dll")
|
url=f"{nightly_bucket_prefix}/{git_branch}/libxgboost4j/xgboost4j_{commit_hash}.dll",
|
||||||
|
filename="xgboost4j/src/main/resources/lib/windows/x86_64/xgboost4j.dll",
|
||||||
|
)
|
||||||
|
retrieve(
|
||||||
|
url=f"{nightly_bucket_prefix}/{git_branch}/libxgboost4j/libxgboost4j_{commit_hash}.dylib",
|
||||||
|
filename="xgboost4j/src/main/resources/lib/macos/x86_64/libxgboost4j.dylib",
|
||||||
|
)
|
||||||
|
|
||||||
with tempfile.TemporaryDirectory() as tempdir:
|
with tempfile.TemporaryDirectory() as tempdir:
|
||||||
# libxgboost4j.so for Linux x86_64, CPU only
|
# libxgboost4j.so for Linux x86_64, CPU only
|
||||||
zip_path = os.path.join(tempdir, "xgboost4j_2.12.jar")
|
zip_path = os.path.join(tempdir, "xgboost4j_2.12.jar")
|
||||||
extract_dir = os.path.join(tempdir, "xgboost4j")
|
extract_dir = os.path.join(tempdir, "xgboost4j")
|
||||||
retrieve(url=f"{maven_repo_prefix}/xgboost4j_2.12/{version}/"
|
retrieve(
|
||||||
f"xgboost4j_2.12-{version}.jar",
|
url=f"{maven_repo_prefix}/xgboost4j_2.12/{version}/"
|
||||||
filename=zip_path)
|
f"xgboost4j_2.12-{version}.jar",
|
||||||
|
filename=zip_path,
|
||||||
|
)
|
||||||
os.mkdir(extract_dir)
|
os.mkdir(extract_dir)
|
||||||
with zipfile.ZipFile(zip_path, "r") as t:
|
with zipfile.ZipFile(zip_path, "r") as t:
|
||||||
t.extractall(extract_dir)
|
t.extractall(extract_dir)
|
||||||
cp(os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"),
|
cp(
|
||||||
"xgboost4j/src/main/resources/lib/linux/x86_64/libxgboost4j.so")
|
os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"),
|
||||||
|
"xgboost4j/src/main/resources/lib/linux/x86_64/libxgboost4j.so",
|
||||||
|
)
|
||||||
|
|
||||||
# libxgboost4j.so for Linux x86_64, GPU support
|
# libxgboost4j.so for Linux x86_64, GPU support
|
||||||
zip_path = os.path.join(tempdir, "xgboost4j-gpu_2.12.jar")
|
zip_path = os.path.join(tempdir, "xgboost4j-gpu_2.12.jar")
|
||||||
extract_dir = os.path.join(tempdir, "xgboost4j-gpu")
|
extract_dir = os.path.join(tempdir, "xgboost4j-gpu")
|
||||||
retrieve(url=f"{maven_repo_prefix}/xgboost4j-gpu_2.12/{version}/"
|
retrieve(
|
||||||
f"xgboost4j-gpu_2.12-{version}.jar",
|
url=f"{maven_repo_prefix}/xgboost4j-gpu_2.12/{version}/"
|
||||||
filename=zip_path)
|
f"xgboost4j-gpu_2.12-{version}.jar",
|
||||||
|
filename=zip_path,
|
||||||
|
)
|
||||||
os.mkdir(extract_dir)
|
os.mkdir(extract_dir)
|
||||||
with zipfile.ZipFile(zip_path, "r") as t:
|
with zipfile.ZipFile(zip_path, "r") as t:
|
||||||
t.extractall(extract_dir)
|
t.extractall(extract_dir)
|
||||||
cp(os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"),
|
cp(
|
||||||
"xgboost4j-gpu/src/main/resources/lib/linux/x86_64/libxgboost4j.so")
|
os.path.join(extract_dir, "lib", "linux", "x86_64", "libxgboost4j.so"),
|
||||||
|
"xgboost4j-gpu/src/main/resources/lib/linux/x86_64/libxgboost4j.so",
|
||||||
|
)
|
||||||
|
|
||||||
print("====Next Steps====")
|
print("====Next Steps====")
|
||||||
print("1. Gain upload right to Maven Central repo.")
|
print("1. Gain upload right to Maven Central repo.")
|
||||||
print("1-1. Sign up for a JIRA account at Sonatype: ")
|
print("1-1. Sign up for a JIRA account at Sonatype: ")
|
||||||
print("1-2. File a JIRA ticket: "
|
print(
|
||||||
"https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134. Example: "
|
"1-2. File a JIRA ticket: "
|
||||||
"https://issues.sonatype.org/browse/OSSRH-67724")
|
"https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134. Example: "
|
||||||
print("2. Store the Sonatype credentials in .m2/settings.xml. See insturctions in "
|
"https://issues.sonatype.org/browse/OSSRH-67724"
|
||||||
"https://central.sonatype.org/publish/publish-maven/")
|
)
|
||||||
print("3. Now on a Mac machine, run:")
|
print(
|
||||||
|
"2. Store the Sonatype credentials in .m2/settings.xml. See insturctions in "
|
||||||
|
"https://central.sonatype.org/publish/publish-maven/"
|
||||||
|
)
|
||||||
|
print(
|
||||||
|
"3. Now on a M1 Mac machine, run the following to build Scala 2.12 artifacts:"
|
||||||
|
)
|
||||||
print(" GPG_TTY=$(tty) mvn deploy -Prelease -DskipTests")
|
print(" GPG_TTY=$(tty) mvn deploy -Prelease -DskipTests")
|
||||||
print("4. Log into https://oss.sonatype.org/. On the left menu panel, click Staging "
|
print(
|
||||||
"Repositories. Visit the URL https://oss.sonatype.org/content/repositories/mldmlc-1085 "
|
"4. Log into https://oss.sonatype.org/. On the left menu panel, click Staging "
|
||||||
"to inspect the staged JAR files. Finally, press Release button to publish the "
|
"Repositories. Visit the URL https://oss.sonatype.org/content/repositories/mldmlc-xxxx "
|
||||||
"artifacts to the Maven Central repository.")
|
"to inspect the staged JAR files. Finally, press Release button to publish the "
|
||||||
|
"artifacts to the Maven Central repository. The top-level metapackage should be "
|
||||||
|
"named xgboost-jvm_2.12."
|
||||||
|
)
|
||||||
|
print("5. Remove the Scala 2.12 artifacts and build Scala 2.13 artifacts:")
|
||||||
|
print(" rm -rf targets/")
|
||||||
|
print(" GPG_TTY=$(tty) mvn deploy -Prelease-cpu-only,scala-2.13 -DskipTests")
|
||||||
|
print(
|
||||||
|
"6. Go to https://oss.sonatype.org/ to release the Scala 2.13 artifacts."
|
||||||
|
"The top-level metapackage should be named xgboost-jvm_2.13."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
@ -6,6 +6,6 @@
|
|||||||
|
|
||||||
#define XGBOOST_VER_MAJOR 2 /* NOLINT */
|
#define XGBOOST_VER_MAJOR 2 /* NOLINT */
|
||||||
#define XGBOOST_VER_MINOR 0 /* NOLINT */
|
#define XGBOOST_VER_MINOR 0 /* NOLINT */
|
||||||
#define XGBOOST_VER_PATCH 1 /* NOLINT */
|
#define XGBOOST_VER_PATCH 2 /* NOLINT */
|
||||||
|
|
||||||
#endif // XGBOOST_VERSION_CONFIG_H_
|
#endif // XGBOOST_VERSION_CONFIG_H_
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>XGBoost JVM Package</name>
|
<name>XGBoost JVM Package</name>
|
||||||
<description>JVM Package for XGBoost</description>
|
<description>JVM Package for XGBoost</description>
|
||||||
@ -190,6 +190,93 @@
|
|||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>release-cpu-only</id>
|
||||||
|
<modules>
|
||||||
|
<module>xgboost4j</module>
|
||||||
|
<module>xgboost4j-example</module>
|
||||||
|
<module>xgboost4j-spark</module>
|
||||||
|
<module>xgboost4j-flink</module>
|
||||||
|
</modules>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>empty-javadoc-jar</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classifier>javadoc</classifier>
|
||||||
|
<classesDirectory>${basedir}/javadoc</classesDirectory>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-release-plugin</artifactId>
|
||||||
|
<version>3.0.1</version>
|
||||||
|
<configuration>
|
||||||
|
<autoVersionSubmodules>true</autoVersionSubmodules>
|
||||||
|
<useReleaseProfile>false</useReleaseProfile>
|
||||||
|
<releaseProfiles>release</releaseProfiles>
|
||||||
|
<goals>deploy</goals>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-gpg-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>sign-artifacts</id>
|
||||||
|
<phase>verify</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>sign</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>attach-sources</id>
|
||||||
|
<goals>
|
||||||
|
<goal>jar-no-fork</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.sonatype.plugins</groupId>
|
||||||
|
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||||
|
<version>1.6.13</version>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<serverId>ossrh</serverId>
|
||||||
|
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||||
|
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<skipTests>true</skipTests>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>assembly</id>
|
<id>assembly</id>
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -5,12 +5,12 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<name>xgboost4j-example</name>
|
<name>xgboost4j-example</name>
|
||||||
<artifactId>xgboost4j-example_${scala.binary.version}</artifactId>
|
<artifactId>xgboost4j-example_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|||||||
@ -5,13 +5,13 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<name>xgboost4j-flink</name>
|
<name>xgboost4j-flink</name>
|
||||||
<artifactId>xgboost4j-flink_${scala.binary.version}</artifactId>
|
<artifactId>xgboost4j-flink_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
<properties>
|
<properties>
|
||||||
<flink-ml.version>2.2.0</flink-ml.version>
|
<flink-ml.version>2.2.0</flink-ml.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|||||||
@ -5,12 +5,12 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>xgboost4j-gpu_${scala.binary.version}</artifactId>
|
<artifactId>xgboost4j-gpu_${scala.binary.version}</artifactId>
|
||||||
<name>xgboost4j-gpu</name>
|
<name>xgboost4j-gpu</name>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<name>xgboost4j-spark-gpu</name>
|
<name>xgboost4j-spark-gpu</name>
|
||||||
<artifactId>xgboost4j-spark-gpu_${scala.binary.version}</artifactId>
|
<artifactId>xgboost4j-spark-gpu_${scala.binary.version}</artifactId>
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<name>xgboost4j-spark</name>
|
<name>xgboost4j-spark</name>
|
||||||
<artifactId>xgboost4j-spark_${scala.binary.version}</artifactId>
|
<artifactId>xgboost4j-spark_${scala.binary.version}</artifactId>
|
||||||
|
|||||||
@ -5,12 +5,12 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ml.dmlc</groupId>
|
<groupId>ml.dmlc</groupId>
|
||||||
<artifactId>xgboost-jvm</artifactId>
|
<artifactId>xgboost-jvm_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<name>xgboost4j</name>
|
<name>xgboost4j</name>
|
||||||
<artifactId>xgboost4j_${scala.binary.version}</artifactId>
|
<artifactId>xgboost4j_${scala.binary.version}</artifactId>
|
||||||
<version>2.0.1</version>
|
<version>2.0.2</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|||||||
@ -7,7 +7,7 @@ build-backend = "packager.pep517"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "xgboost"
|
name = "xgboost"
|
||||||
version = "2.0.1"
|
version = "2.0.2"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Hyunsu Cho", email = "chohyu01@cs.washington.edu" },
|
{ name = "Hyunsu Cho", email = "chohyu01@cs.washington.edu" },
|
||||||
{ name = "Jiaming Yuan", email = "jm.yuan@outlook.com" }
|
{ name = "Jiaming Yuan", email = "jm.yuan@outlook.com" }
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
2.0.1
|
2.0.2
|
||||||
|
|||||||
@ -2093,7 +2093,17 @@ class XGBRanker(XGBModel, XGBRankerMixIn):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
X, qid = _get_qid(X, None)
|
X, qid = _get_qid(X, None)
|
||||||
Xyq = DMatrix(X, y, qid=qid)
|
# fixme(jiamingy): base margin and group weight is not yet supported. We might
|
||||||
|
# need to make extra special fields in the dataframe.
|
||||||
|
Xyq = DMatrix(
|
||||||
|
X,
|
||||||
|
y,
|
||||||
|
qid=qid,
|
||||||
|
missing=self.missing,
|
||||||
|
enable_categorical=self.enable_categorical,
|
||||||
|
nthread=self.n_jobs,
|
||||||
|
feature_types=self.feature_types,
|
||||||
|
)
|
||||||
if callable(self.eval_metric):
|
if callable(self.eval_metric):
|
||||||
metric = ltr_metric_decorator(self.eval_metric, self.n_jobs)
|
metric = ltr_metric_decorator(self.eval_metric, self.n_jobs)
|
||||||
result_str = self.get_booster().eval_set([(Xyq, "eval")], feval=metric)
|
result_str = self.get_booster().eval_set([(Xyq, "eval")], feval=metric)
|
||||||
|
|||||||
@ -75,3 +75,28 @@ def run_ranking_qid_df(impl: ModuleType, tree_method: str) -> None:
|
|||||||
|
|
||||||
with pytest.raises(ValueError, match="Either `group` or `qid`."):
|
with pytest.raises(ValueError, match="Either `group` or `qid`."):
|
||||||
ranker.fit(df, y, eval_set=[(X, y)])
|
ranker.fit(df, y, eval_set=[(X, y)])
|
||||||
|
|
||||||
|
|
||||||
|
def run_ranking_categorical(device: str) -> None:
|
||||||
|
"""Test LTR with categorical features."""
|
||||||
|
from sklearn.model_selection import cross_val_score
|
||||||
|
|
||||||
|
X, y = tm.make_categorical(
|
||||||
|
n_samples=512, n_features=10, n_categories=3, onehot=False
|
||||||
|
)
|
||||||
|
rng = np.random.default_rng(1994)
|
||||||
|
qid = rng.choice(3, size=y.shape[0])
|
||||||
|
qid = np.sort(qid)
|
||||||
|
X["qid"] = qid
|
||||||
|
|
||||||
|
ltr = xgb.XGBRanker(enable_categorical=True, device=device)
|
||||||
|
ltr.fit(X, y)
|
||||||
|
score = ltr.score(X, y)
|
||||||
|
assert score > 0.9
|
||||||
|
|
||||||
|
ltr = xgb.XGBRanker(enable_categorical=True, device=device)
|
||||||
|
|
||||||
|
# test using the score function inside sklearn.
|
||||||
|
scores = cross_val_score(ltr, X, y)
|
||||||
|
for s in scores:
|
||||||
|
assert s > 0.7
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import pytest
|
|||||||
|
|
||||||
import xgboost as xgb
|
import xgboost as xgb
|
||||||
from xgboost import testing as tm
|
from xgboost import testing as tm
|
||||||
from xgboost.testing.ranking import run_ranking_qid_df
|
from xgboost.testing.ranking import run_ranking_categorical, run_ranking_qid_df
|
||||||
|
|
||||||
sys.path.append("tests/python")
|
sys.path.append("tests/python")
|
||||||
import test_with_sklearn as twskl # noqa
|
import test_with_sklearn as twskl # noqa
|
||||||
@ -165,6 +165,11 @@ def test_ranking_qid_df():
|
|||||||
run_ranking_qid_df(cudf, "gpu_hist")
|
run_ranking_qid_df(cudf, "gpu_hist")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(**tm.no_pandas())
|
||||||
|
def test_ranking_categorical() -> None:
|
||||||
|
run_ranking_categorical(device="cuda")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(**tm.no_cupy())
|
@pytest.mark.skipif(**tm.no_cupy())
|
||||||
@pytest.mark.mgpu
|
@pytest.mark.mgpu
|
||||||
def test_device_ordinal() -> None:
|
def test_device_ordinal() -> None:
|
||||||
|
|||||||
@ -12,7 +12,7 @@ from sklearn.utils.estimator_checks import parametrize_with_checks
|
|||||||
|
|
||||||
import xgboost as xgb
|
import xgboost as xgb
|
||||||
from xgboost import testing as tm
|
from xgboost import testing as tm
|
||||||
from xgboost.testing.ranking import run_ranking_qid_df
|
from xgboost.testing.ranking import run_ranking_categorical, run_ranking_qid_df
|
||||||
from xgboost.testing.shared import get_feature_weights, validate_data_initialization
|
from xgboost.testing.shared import get_feature_weights, validate_data_initialization
|
||||||
from xgboost.testing.updater import get_basescore
|
from xgboost.testing.updater import get_basescore
|
||||||
|
|
||||||
@ -173,6 +173,11 @@ def test_ranking():
|
|||||||
np.testing.assert_almost_equal(pred, pred_orig)
|
np.testing.assert_almost_equal(pred, pred_orig)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(**tm.no_pandas())
|
||||||
|
def test_ranking_categorical() -> None:
|
||||||
|
run_ranking_categorical(device="cpu")
|
||||||
|
|
||||||
|
|
||||||
def test_ranking_metric() -> None:
|
def test_ranking_metric() -> None:
|
||||||
from sklearn.metrics import roc_auc_score
|
from sklearn.metrics import roc_auc_score
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user