Skip to content

Commit

Permalink
[backport] CI fixes (#6933)
Browse files Browse the repository at this point in the history
* Relax shotgun test. (#6900)

It's non-deterministic algorithm, the test is flaky.

* Disable pylint error. (#6911)

* [CI] Skip external memory gtest on osx. (#6901)

* [CI] Fix custom metric test with empty dataset. (#6917)

* Reduce Travis environment setup time. (#6912)

* Remove unused r from travis.
* Don't update homebrew.
* Don't install indirect/unused dependencies like libgit2, wget, openssl.
* Move graphviz installation to conda.

* Relax shotgun test. (#6918)

* Relax test for decision stump in distributed environment. (#6919)

* Backport cupy fix.
  • Loading branch information
trivialfis authored May 3, 2021
1 parent a6d1fbf commit 96f8843
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 22 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ jobs:
- name: Run gtest binary
run: |
cd build
ctest --exclude-regex AllTestsInDMLCUnitTests --extra-verbose
# libomp internal error:
# OMP: Error #131: Thread identifier invalid.
./testxgboost --gtest_filter="-HistIndexCreationWithExternalMemory.Test"
ctest -R TestXGBoostCLI --extra-verbose
gtest-cpu-nonomp:
name: Test Google C++ unittest (CPU Non-OMP)
Expand Down
12 changes: 2 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,10 @@ jobs:
env: TASK=java_test

# dependent brew packages
# the dependencies from homebrew is installed manually from setup script due to outdated image from travis.
addons:
homebrew:
packages:
- cmake
- libomp
- graphviz
- openssl
- libgit2
- lz4
- wget
- r
update: true
update: false
apt:
packages:
- snapd
Expand Down
6 changes: 4 additions & 2 deletions python-package/xgboost/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1872,7 +1872,9 @@ def inplace_predict(
)
)
return _prediction_output(shape, dims, preds, False)
if lazy_isinstance(data, "cupy.core.core", "ndarray"):
if lazy_isinstance(data, "cupy.core.core", "ndarray") or lazy_isinstance(
data, "cupy._core.core", "ndarray"
):
from .data import _transform_cupy_array
data = _transform_cupy_array(data)
interface = data.__cuda_array_interface__
Expand Down Expand Up @@ -2027,7 +2029,7 @@ def dump_model(self, fout, fmap='', with_stats=False, dump_format="text"):
"""
if isinstance(fout, (STRING_TYPES, os.PathLike)):
fout = os.fspath(os.path.expanduser(fout))
fout = open(fout, 'w')
fout = open(fout, 'w') # pylint: disable=consider-using-with
need_close = True
else:
need_close = False
Expand Down
1 change: 1 addition & 0 deletions tests/ci_build/conda_env/macos_cpu_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies:
- matplotlib
- dask
- distributed
- graphviz
- python-graphviz
- hypothesis
- astroid
Expand Down
10 changes: 4 additions & 6 deletions tests/python/test_linear.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,13 @@ def test_shotgun(self, param, num_rounds, dataset):
param['updater'] = 'shotgun'
param = dataset.set_params(param)
result = train_result(param, dataset.get_dmat(), num_rounds)['train'][dataset.metric]
# shotgun is non-deterministic, so we relax the test by sampling
# result.
# shotgun is non-deterministic, so we relax the test by only using first and last
# iteration.
if len(result) > 2:
sampled_result = [score for i, score in enumerate(result)
if i % 2 == 0]
sampled_result[-1] = result[-1] # make sure the last one is used
sampled_result = (result[0], result[-1])
else:
sampled_result = result
assert tm.non_increasing(sampled_result, 1e-3)
assert tm.non_increasing(sampled_result)

@given(parameter_strategy, strategies.integers(10, 50),
tm.dataset_strategy, strategies.floats(1e-5, 2.0),
Expand Down
12 changes: 11 additions & 1 deletion tests/python/test_with_dask.py
Original file line number Diff line number Diff line change
Expand Up @@ -1023,7 +1023,17 @@ def run_updater_test(
evals=[(m, 'train')])['history']
note(history)
history = history['train'][dataset.metric]
assert tm.non_increasing(history)

def is_stump():
return params["max_depth"] == 1 or params["max_leaves"] == 1

def minimum_bin():
return "max_bin" in params and params["max_bin"] == 2

if minimum_bin() and is_stump():
assert tm.non_increasing(history, tolerance=1e-3)
else:
assert tm.non_increasing(history)
# Make sure that it's decreasing
assert history[-1] < history[0]

Expand Down
2 changes: 2 additions & 0 deletions tests/python/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ def eval_error_metric(predt, dtrain: xgb.DMatrix):
label = dtrain.get_label()
r = np.zeros(predt.shape)
gt = predt > 0.5
if predt.size == 0:
return "CustomErr", 0
r[gt] = 1 - label[gt]
le = predt <= 0.5
r[le] = label[le]
Expand Down
2 changes: 0 additions & 2 deletions tests/travis/run_test.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#!/bin/bash

make -f dmlc-core/scripts/packages.mk lz4

source $HOME/miniconda/bin/activate

if [ ${TASK} == "python_sdist_test" ]; then
Expand Down
4 changes: 4 additions & 0 deletions tests/travis/setup.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
#!/bin/bash

# https://travis-ci.community/t/macos-build-fails-because-of-homebrew-bundle-unknown-command/7296/27
brew install cmake libomp lz4


if [ ${TASK} == "python_test" ] || [ ${TASK} == "python_sdist_test" ]; then
if [ ${TRAVIS_OS_NAME} == "osx" ]; then
wget --no-verbose -O conda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
Expand Down

0 comments on commit 96f8843

Please sign in to comment.