rapidsai-community / notebooks-contrib

RAPIDS Community Notebooks
Apache License 2.0
512 stars 266 forks source link

[BUG] Error message "Boolean is not supported" from NYCTaxi-E2E notebook #213

Open tym1062 opened 5 years ago

tym1062 commented 5 years ago

Describe the bug The following stack-trace reported after executing cell 14 in NYCTaxi-E2E notebook while using RAPIDS 0.10 container:

XGBoostError: [14:31:50] /conda/conda-bld/xgboost_1571337679414/work/src/data/simple_csr_source.cu:161: Boolean is not supported.
Stack trace:
  [bt] (0) /opt/conda/envs/rapids/lib/libxgboost.so(+0xc9594) [0x7fe4c8a83594]
  [bt] (1) /opt/conda/envs/rapids/lib/libxgboost.so(xgboost::data::SimpleCSRSource::FromDeviceColumnar(std::vector<xgboost::Json, std::allocator<xgboost::Json> > const&, bool, float)+0x743) [0x7fe4c8c66443]
  [bt] (2) /opt/conda/envs/rapids/lib/libxgboost.so(xgboost::data::SimpleCSRSource::CopyFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, float)+0xc74) [0x7fe4c8ade9e4]
  [bt] (3) /opt/conda/envs/rapids/lib/libxgboost.so(XGDMatrixCreateFromArrayInterfaces+0x1c8) [0x7fe4c8a91b08]
  [bt] (4) /opt/conda/envs/rapids/lib/python3.6/lib-dynload/../../libffi.so.6(ffi_call_unix64+0x4c) [0x7fe7e0569630]
  [bt] (5) /opt/conda/envs/rapids/lib/python3.6/lib-dynload/../../libffi.so.6(ffi_call+0x22d) [0x7fe7e0568fed]
  [bt] (6) /opt/conda/envs/rapids/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(_ctypes_callproc+0x2ce) [0x7fe7e058000e]
  [bt] (7) /opt/conda/envs/rapids/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so(+0x13a45) [0x7fe7e0580a45]
  [bt] (8) /opt/conda/envs/rapids/bin/python(_PyObject_FastCallDict+0x8b) [0x558414ded7bb]

Steps/Code to reproduce bug Download https://github.com/rapidsai/notebooks-contrib/blob/master/intermediate_notebooks/E2E/taxi/NYCTaxi-E2E.ipynb to /raid

docker run --gpus all --rm -it -p 8888:8888 -p 8787:8787 -p 8786:8786 -v /raid:/rapids/data rapidsai/rapidsai:cuda10.1-runtime-ubuntu18.04

Once inside container, start jupyter lab:

cd /rapids; ./utils/start_jupyter.sh

Open browser, specify URL: IP-Address:8888, then open NYCTaxi-E2E notebook. Execute cells in the notebook - after cell 14 is executed, should see the trace-back.

Expected behavior I suspect an extra step will need to be added to the NYCTaxi notebook to update the DMatrix before XGBoost train method is called.

Environment details (please complete the following information):

Here is the conda package list for rapids packages from inside the RAPIDS 0.10 container:

conda list |grep rapids
cudf                      0.10.0                   py36_0    rapidsai
cugraph                   0.10.0                   py36_0    rapidsai
cuml                      0.10.0          cuda10.1_py36_0    rapidsai
cupy                      6.3.0            py36hf7e11e9_0    rapidsai
cuspatial                 0.10.0                   py36_0    rapidsai
dask-cuda                 0.10.0                   py36_0    rapidsai
dask-cudf                 0.10.0                   py36_0    rapidsai
dask-xgboost              0.2.0.dev28      cuda10.1py36_0    rapidsai
libcudf                   0.10.0               cuda10.1_0    rapidsai
libcugraph                0.10.0               cuda10.1_0    rapidsai
libcuml                   0.10.0               cuda10.1_0    rapidsai
libcumlprims              0.10.0a191017       cuda10.1_15    rapidsai-nightly
libcuspatial              0.10.0               cuda10.1_0    rapidsai
libnvstrings              0.10.0               cuda10.1_0    rapidsai
librmm                    0.10.0               cuda10.1_0    rapidsai
libxgboost                1.0.0.SNAPSHOT       cuda10.1_1    rapidsai
nvstrings                 0.10.0                   py36_0    rapidsai
py-xgboost                1.0.0.SNAPSHOT   cuda10.1py36_1    rapidsai
rapids                    0.10.0          cuda10.1_py36_0    rapidsai
rapids-xgboost            0.10.0          cuda10.1_py36_0    rapidsai
rmm                       0.10.0                   py36_0    rapidsai
xgboost                   1.0.0.SNAPSHOT   cuda10.1py36_1    rapidsai

Additional context Add any other context about the problem here.

vilmara commented 5 years ago

hi @tym1062, take a look at the issue #214

taureandyernv commented 5 years ago

@tym1062 @vilmara this has been escalated and we may have a fix by end of week with nightlies. Thanks so much!!

trivialfis commented 5 years ago

Currently xgboost doesn't support consuming boolean values from cudf, as it specializes it to bitset according to arrow. Workaround would be converting it to integer or float first. For those who curious about why we can support all data types in pandas, that's because we convert them into float from Python. As GPU memory is quite precious, so I decided not to do the conversation to prevent implicit memory consumption.