Installing XGBoost inside a Docker Container on NVIDIA AGX Xavier

Hello,

I’m trying to install XGBoost module inside a L4T-tensorflow container on an AGX Xavier. However, I’m getting this error whenever I try to do so:

(.venv) root@a8f063ef372d:/home/Software/RADEC# pip install xgboost
Collecting xgboost
  Using cached xgboost-1.2.0.tar.gz (774 kB)
Requirement already satisfied: numpy in ./.venv/lib/python3.6/site-packages (from xgboost) (1.19.1)
Requirement already satisfied: scipy in ./.venv/lib/python3.6/site-packages (from xgboost) (1.5.2)
Building wheels for collected packages: xgboost
  Building wheel for xgboost (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/Software/RADEC/.venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3yqedb1r/xgboost/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3yqedb1r/xgboost/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-x425p4nu
       cwd: /tmp/pip-install-3yqedb1r/xgboost/
  Complete output (1052 lines):

 ...

  copying xgboost/CMakeLists.txt -> build/temp.linux-aarch64-3.6/xgboost
  copying xgboost/LICENSE -> build/temp.linux-aarch64-3.6/xgboost
  INFO:XGBoost build_ext:Building from source. /tmp/pip-install-3yqedb1r/lib/libxgboost.so
  INFO:XGBoost build_ext:Run CMake command: ['cmake', 'xgboost', '-GUnix Makefiles', '-DUSE_OPENMP=1', '-DUSE_CUDA=0', '-DUSE_NCCL=0', '-DBUILD_WITH_SHARED_NCCL=0', '-DHIDE_CXX_SYMBOLS=1', '-DUSE_HDFS=0', '-DUSE_AZURE=0', '-DUSE_S3=0', '-DPLUGIN_LZ4=0', '-DPLUGIN_DENSE_PARSER=0']
  error: [Errno 2] No such file or directory: 'cmake': 'cmake'
  ----------------------------------------
  ERROR: Failed building wheel for xgboost
  Running setup.py clean for xgboost
Failed to build xgboost
DEPRECATION: Could not build wheels for xgboost which do not use PEP 517. pip will fall back to legacy 'setup.py install' for these. pip 21.0 will remove support for this functionality. A possible replacement is to fix the wheel build issue reported above. You can find discussion regarding this at https://github.com/pypa/pip/issues/8368.
Installing collected packages: xgboost
    Running setup.py install for xgboost ... error
    ERROR: Command errored out with exit status 1:
     command: /home/Software/RADEC/.venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3yqedb1r/xgboost/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3yqedb1r/xgboost/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-f2y6ide6/install-record.txt --single-version-externally-managed --compile --install-headers /home/Software/RADEC/.venv/include/site/python3.6/xgboost
         cwd: /tmp/pip-install-3yqedb1r/xgboost/
    Complete output (1052 lines):
    running install

   ...

    copying xgboost/CMakeLists.txt -> build/temp.linux-aarch64-3.6/xgboost
    copying xgboost/LICENSE -> build/temp.linux-aarch64-3.6/xgboost
    INFO:XGBoost build_ext:Building from source. /tmp/pip-install-3yqedb1r/lib/libxgboost.so
    INFO:XGBoost build_ext:Run CMake command: ['cmake', 'xgboost', '-GUnix Makefiles', '-DUSE_OPENMP=1', '-DUSE_CUDA=0', '-DUSE_NCCL=0', '-DBUILD_WITH_SHARED_NCCL=0', '-DHIDE_CXX_SYMBOLS=1', '-DUSE_HDFS=0', '-DUSE_AZURE=0', '-DUSE_S3=0', '-DPLUGIN_LZ4=0', '-DPLUGIN_DENSE_PARSER=0']
    error: [Errno 2] No such file or directory: 'cmake': 'cmake'
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/Software/RADEC/.venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3yqedb1r/xgboost/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3yqedb1r/xgboost/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-f2y6ide6/install-record.txt --single-version-externally-managed --compile --install-headers /home/Software/RADEC/.venv/include/site/python3.6/xgboost Check the logs for full command output.

Operating System: Ubuntu 18.04.3 LTS (L4T 32.4.3)
Architecture: ARM64

Anyone knows what’s going on? Is XGBoost not compatible with Xavier? Any help will be greatly appreciated.

Thank you,

Paul

Are you able to install CMake in your system? Pip is attempting to build XGBoost from the source (xgboost-1.2.0.tar.gz) and it needs CMake to do so.

Hi @hcho3, thanks for responding!

I do have cmake installed on the device.

Still haven’t found a solution for this issue… =( Hoping someone might know what’s going on.

@paul Have you tried building XGBoost from the source? Instructions are available at https://xgboost.readthedocs.io/en/latest/build.html#building-xgboost-from-source.

Note that you need proper set of build tools (CMake, GCC etc) inside your Docker container.