diff --git a/docs/Installation-Guide.rst b/docs/Installation-Guide.rst index 41b84f9b82c2..1e28d037388d 100644 --- a/docs/Installation-Guide.rst +++ b/docs/Installation-Guide.rst @@ -1,17 +1,30 @@ Installation Guide ================== -This is a guide for building the LightGBM Command Line Interface (CLI). If you want to build the Python-package or R-package please refer to `Python-package`_ and `R-package`_ folders respectively. - All instructions below are aimed at compiling the 64-bit version of LightGBM. It is worth compiling the 32-bit version only in very rare special cases involving environmental limitations. The 32-bit version is slow and untested, so use it at your own risk and don't forget to adjust some of the commands below when installing. +By default, instructions below will use **VS Build Tools** or **make** tool to compile the code. +It it possible to use `Ninja`_ tool instead of make on all platforms, but VS Build Tools cannot be replaced with Ninja. +You can add ``-G Ninja`` to CMake flags to use Ninja. + +By default, instructions below will produce a shared library file and an executable file with command-line interface. +You can add ``-DBUILD_CLI=OFF`` to CMake flags to disable the executable compilation. + If you need to build a static library instead of a shared one, you can add ``-DBUILD_STATIC_LIB=ON`` to CMake flags. +By default, instructions below will place header files into system-wide folder. +You can add ``-DINSTALL_HEADERS=OFF`` to CMake flags to disable headers installation. + +By default, on macOS, CMake is looking into Homebrew standard folders for finding dependencies (e.g. OpenMP). +You can add ``-DUSE_HOMEBREW_FALLBACK=OFF`` to CMake flags to disable this behaviour. + Users who want to perform benchmarking can make LightGBM output time costs for different internal routines by adding ``-DUSE_TIMETAG=ON`` to CMake flags. -It is possible to build LightGBM in debug mode. In this mode all compiler optimizations are disabled and LightGBM performs more checks internally. To enable debug mode you can add ``-DUSE_DEBUG=ON`` to CMake flags or choose ``Debug_*`` configuration (e.g. ``Debug_DLL``, ``Debug_mpi``) in Visual Studio depending on how you are building LightGBM. +It is possible to build LightGBM in debug mode. +In this mode all compiler optimizations are disabled and LightGBM performs more checks internally. +To enable debug mode you can add ``-DUSE_DEBUG=ON`` to CMake flags or choose ``Debug_*`` configuration (e.g. ``Debug_DLL``, ``Debug_mpi``) in Visual Studio depending on how you are building LightGBM. .. _sanitizers: @@ -30,7 +43,7 @@ It is very useful to build `C++ unit tests <#build-c-unit-tests>`__ with sanitiz .. _nightly-builds: -You can also download the artifacts of the latest successful build on master branch (nightly builds) here: |download artifacts|. +You can download the artifacts of the latest successful build on master branch (nightly builds) here: |download artifacts|. .. contents:: **Contents** :depth: 1 @@ -40,12 +53,10 @@ You can also download the artifacts of the latest successful build on master bra Windows ~~~~~~~ -On Windows LightGBM can be built using +On Windows, LightGBM can be built using - **Visual Studio**; - - **CMake** and **VS Build Tools**; - - **CMake** and **MinGW**. Visual Studio (or VS Build Tools) @@ -54,22 +65,23 @@ Visual Studio (or VS Build Tools) With GUI ******** -1. Install `Visual Studio`_ (2015 or newer). +1. Install `Visual Studio`_. 2. Navigate to one of the releases at https://github.com/microsoft/LightGBM/releases, download ``LightGBM-complete_source_code_zip.zip``, and unzip it. -3. Go to ``LightGBM-master/windows`` folder. +3. Go to ``LightGBM-complete_source_code_zip/windows`` folder. -4. Open ``LightGBM.sln`` file with **Visual Studio**, choose ``Release`` configuration and click ``BUILD`` -> ``Build Solution (Ctrl+Shift+B)``. +4. Open ``LightGBM.sln`` file with **Visual Studio**, choose ``Release`` configuration if you need executable file or ``DLL`` configuration if you need shared library and click ``Build`` -> ``Build Solution (Ctrl+Shift+B)``. - If you have errors about **Platform Toolset**, go to ``PROJECT`` -> ``Properties`` -> ``Configuration Properties`` -> ``General`` and select the toolset installed on your machine. + If you have errors about **Platform Toolset**, go to ``Project`` -> ``Properties`` -> ``Configuration Properties`` -> ``General`` and select the toolset installed on your machine. -The ``.exe`` file will be in ``LightGBM-master/windows/x64/Release`` folder. +The ``.exe`` file will be in ``LightGBM-complete_source_code_zip/windows/x64/Release`` folder. +The ``.dll`` file will be in ``LightGBM-complete_source_code_zip/windows/x64/DLL`` folder. From Command Line ***************** -1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** (2015 or newer) is already installed). +1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** is already installed). 2. Run the following commands: @@ -98,7 +110,7 @@ MinGW-w64 The ``.exe`` and ``.dll`` files will be in ``LightGBM/`` folder. -**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles"`` one more time if you encounter the ``sh.exe was found in your PATH`` error. +**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles"`` one more time or add ``-DCMAKE_SH=CMAKE_SH-NOTFOUND`` to CMake flags if you encounter the ``sh.exe was found in your PATH`` error. It is recommended that you use **Visual Studio** since it has better multithreading efficiency in **Windows** for many-core systems (see `Question 4 <./FAQ.rst#i-am-using-windows-should-i-use-visual-studio-or-mingw-for-compiling-lightgbm>`__ and `Question 8 <./FAQ.rst#cpu-usage-is-low-like-10-in-windows-when-using-lightgbm-on-very-large-datasets-with-many-core-systems>`__). @@ -106,9 +118,17 @@ It is recommended that you use **Visual Studio** since it has better multithread Linux ~~~~~ -On Linux LightGBM can be built using **CMake** and **gcc** or **Clang**. +On Linux, LightGBM can be built using + +- **CMake** and **gcc**; +- **CMake** and **Clang**. + +After compilation the executable and ``.so`` files will be in ``LightGBM/`` folder. -1. Install `CMake`_. +gcc +^^^ + +1. Install `CMake`_ and **gcc**. 2. Run the following commands: @@ -119,53 +139,69 @@ On Linux LightGBM can be built using **CMake** and **gcc** or **Clang**. cmake -B build -S . cmake --build build -j4 -**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). +Clang +^^^^^ -Using ``Ninja`` -^^^^^^^^^^^^^^^ +1. Install `CMake`_, **Clang** and **OpenMP**. -On Linux, LightGBM can also be built with `Ninja `__ instead of ``make``. +2. Run the following commands: -.. code:: sh + .. code:: sh git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM - cmake -B build -S . -G 'Ninja' - cmake --build build -j2 + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine + cmake -B build -S . + cmake --build build -j4 macOS ~~~~~ -On macOS LightGBM can be installed using **Homebrew**, or can be built using **CMake** and **Apple Clang** or **gcc**. +On macOS, LightGBM can be installed using -Apple Clang -^^^^^^^^^^^ +- **Homebrew**; +- **MacPorts**; + +or can be built using -Only **Apple Clang** version 8.1 or higher is supported. +- **CMake** and **Apple Clang**; +- **CMake** and **gcc**. Install Using ``Homebrew`` -************************** +^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: sh brew install lightgbm -Build from GitHub -***************** +Refer to https://formulae.brew.sh/formula/lightgbm for more details. -1. Install `CMake`_ : +Install Using ``MacPorts`` +^^^^^^^^^^^^^^^^^^^^^^^^^^ - .. code:: sh +.. code:: sh - brew install cmake + sudo port install LightGBM + +Refer to https://ports.macports.org/port/LightGBM for more details. + +**Note**: Port for LightGBM is not maintained by LightGBM's maintainers. -2. Install **OpenMP**: +Build from GitHub +^^^^^^^^^^^^^^^^^ + +After compilation the executable and ``.dylib`` files will be in ``LightGBM/`` folder. + +Apple Clang +*********** + +1. Install `CMake`_ and **OpenMP**: .. code:: sh - brew install libomp + brew install cmake libomp -3. Run the following commands: +2. Run the following commands: .. code:: sh @@ -175,21 +211,15 @@ Build from GitHub cmake --build build -j4 gcc -^^^ - -1. Install `CMake`_ : - - .. code:: sh - - brew install cmake +*** -2. Install **gcc**: +1. Install `CMake`_ and **gcc**: .. code:: sh - brew install gcc + brew install cmake gcc -3. Run the following commands: +2. Run the following commands: .. code:: sh @@ -213,12 +243,10 @@ You can build LightGBM without OpenMP support but it is **strongly not recommend Windows ^^^^^^^ -On Windows a version of LightGBM without OpenMP support can be built using +On Windows, a version of LightGBM without OpenMP support can be built using - **Visual Studio**; - - **CMake** and **VS Build Tools**; - - **CMake** and **MinGW**. Visual Studio (or VS Build Tools) @@ -227,26 +255,27 @@ Visual Studio (or VS Build Tools) With GUI -------- -1. Install `Visual Studio`_ (2015 or newer). +1. Install `Visual Studio`_. 2. Navigate to one of the releases at https://github.com/microsoft/LightGBM/releases, download ``LightGBM-complete_source_code_zip.zip``, and unzip it. -3. Go to ``LightGBM-master/windows`` folder. +3. Go to ``LightGBM-complete_source_code_zip/windows`` folder. -4. Open ``LightGBM.sln`` file with **Visual Studio**. +4. Open ``LightGBM.sln`` file with **Visual Studio**, choose ``Release`` configuration if you need executable file or ``DLL`` configuration if you need shared library. -5. Go to ``PROJECT`` -> ``Properties`` -> ``Configuration Properties`` -> ``C/C++`` -> ``Language`` and change the ``OpenMP Support`` property to ``No (/openmp-)``. +5. Go to ``Project`` -> ``Properties`` -> ``Configuration Properties`` -> ``C/C++`` -> ``Language`` and change the ``OpenMP Support`` property to ``No (/openmp-)``. -6. Get back to the project's main screen, then choose ``Release`` configuration and click ``BUILD`` -> ``Build Solution (Ctrl+Shift+B)``. +6. Get back to the project's main screen and click ``Build`` -> ``Build Solution (Ctrl+Shift+B)``. - If you have errors about **Platform Toolset**, go to ``PROJECT`` -> ``Properties`` -> ``Configuration Properties`` -> ``General`` and select the toolset installed on your machine. + If you have errors about **Platform Toolset**, go to ``Project`` -> ``Properties`` -> ``Configuration Properties`` -> ``General`` and select the toolset installed on your machine. -The ``.exe`` file will be in ``LightGBM-master/windows/x64/Release`` folder. +The ``.exe`` file will be in ``LightGBM-complete_source_code_zip/windows/x64/Release`` folder. +The ``.dll`` file will be in ``LightGBM-complete_source_code_zip/windows/x64/DLL`` folder. From Command Line ----------------- -1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** (2015 or newer) is already installed). +1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** is already installed). 2. Run the following commands: @@ -275,14 +304,36 @@ MinGW-w64 The ``.exe`` and ``.dll`` files will be in ``LightGBM/`` folder. -**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DUSE_OPENMP=OFF`` one more time if you encounter the ``sh.exe was found in your PATH`` error. +**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DUSE_OPENMP=OFF`` one more time or add ``-DCMAKE_SH=CMAKE_SH-NOTFOUND`` to CMake flags if you encounter the ``sh.exe was found in your PATH`` error. Linux ^^^^^ -On Linux a version of LightGBM without OpenMP support can be built using **CMake** and **gcc** or **Clang**. +On Linux, a version of LightGBM without OpenMP support can be built using + +- **CMake** and **gcc**; +- **CMake** and **Clang**. + +After compilation the executable and ``.so`` files will be in ``LightGBM/`` folder. + +gcc +*** + +1. Install `CMake`_ and **gcc**. + +2. Run the following commands: + + .. code:: sh -1. Install `CMake`_. + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + cmake -B build -S . -DUSE_OPENMP=OFF + cmake --build build -j4 + +Clang +***** + +1. Install `CMake`_ and **Clang**. 2. Run the following commands: @@ -290,20 +341,24 @@ On Linux a version of LightGBM without OpenMP support can be built using **CMake git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine cmake -B build -S . -DUSE_OPENMP=OFF cmake --build build -j4 macOS ^^^^^ -On macOS a version of LightGBM without OpenMP support can be built using **CMake** and **Apple Clang** or **gcc**. +On macOS, a version of LightGBM without OpenMP support can be built using + +- **CMake** and **Apple Clang**; +- **CMake** and **gcc**. + +After compilation the executable and ``.dylib`` files will be in ``LightGBM/`` folder. Apple Clang *********** -Only **Apple Clang** version 8.1 or higher is supported. - -1. Install `CMake`_ : +1. Install `CMake`_: .. code:: sh @@ -321,19 +376,13 @@ Only **Apple Clang** version 8.1 or higher is supported. gcc *** -1. Install `CMake`_ : +1. Install `CMake`_ and **gcc**: .. code:: sh - brew install cmake + brew install cmake gcc -2. Install **gcc**: - - .. code:: sh - - brew install gcc - -3. Run the following commands: +2. Run the following commands: .. code:: sh @@ -354,35 +403,36 @@ If you need to run a distributed learning application with high performance comm Windows ^^^^^^^ -On Windows an MPI version of LightGBM can be built using +On Windows, an MPI version of LightGBM can be built using - **MS MPI** and **Visual Studio**; - - **MS MPI**, **CMake** and **VS Build Tools**. +**Note**: Building MPI version by **MinGW** is not supported due to the miss of MPI library in it. + With GUI ******** 1. You need to install `MS MPI`_ first. Both ``msmpisdk.msi`` and ``msmpisetup.exe`` are needed. -2. Install `Visual Studio`_ (2015 or newer). +2. Install `Visual Studio`_. 3. Navigate to one of the releases at https://github.com/microsoft/LightGBM/releases, download ``LightGBM-complete_source_code_zip.zip``, and unzip it. -4. Go to ``LightGBM-master/windows`` folder. +4. Go to ``LightGBM-complete_source_code_zip/windows`` folder. -5. Open ``LightGBM.sln`` file with **Visual Studio**, choose ``Release_mpi`` configuration and click ``BUILD`` -> ``Build Solution (Ctrl+Shift+B)``. +5. Open ``LightGBM.sln`` file with **Visual Studio**, choose ``Release_mpi`` configuration and click ``Build`` -> ``Build Solution (Ctrl+Shift+B)``. - If you have errors about **Platform Toolset**, go to ``PROJECT`` -> ``Properties`` -> ``Configuration Properties`` -> ``General`` and select the toolset installed on your machine. + If you have errors about **Platform Toolset**, go to ``Project`` -> ``Properties`` -> ``Configuration Properties`` -> ``General`` and select the toolset installed on your machine. -The ``.exe`` file will be in ``LightGBM-master/windows/x64/Release_mpi`` folder. +The ``.exe`` file will be in ``LightGBM-complete_source_code_zip/windows/x64/Release_mpi`` folder. From Command Line ***************** 1. You need to install `MS MPI`_ first. Both ``msmpisdk.msi`` and ``msmpisetup.exe`` are needed. -2. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** (2015 or newer) is already installed). +2. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** is already installed). 3. Run the following commands: @@ -395,18 +445,22 @@ From Command Line The ``.exe`` and ``.dll`` files will be in ``LightGBM/Release`` folder. -**Note**: Building MPI version by **MinGW** is not supported due to the miss of MPI library in it. - Linux ^^^^^ -On Linux an MPI version of LightGBM can be built using **Open MPI**, **CMake** and **gcc** or **Clang**. +On Linux, an MPI version of LightGBM can be built using -1. Install `Open MPI`_. +- **CMake**, **gcc** and **Open MPI**; +- **CMake**, **Clang** and **Open MPI**. -2. Install `CMake`_. +After compilation the executable and ``.so`` files will be in ``LightGBM/`` folder. -3. Run the following commands: +gcc +*** + +1. Install `CMake`_, **gcc** and `Open MPI`_. + +2. Run the following commands: .. code:: sh @@ -415,37 +469,41 @@ On Linux an MPI version of LightGBM can be built using **Open MPI**, **CMake** a cmake -B build -S . -DUSE_MPI=ON cmake --build build -j4 -**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). - -macOS -^^^^^ +Clang +***** -On macOS an MPI version of LightGBM can be built using **Open MPI**, **CMake** and **Apple Clang** or **gcc**. +1. Install `CMake`_, **Clang**, **OpenMP** and `Open MPI`_. -Apple Clang -*********** +2. Run the following commands: -Only **Apple Clang** version 8.1 or higher is supported. + .. code:: sh -1. Install `CMake`_ : + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine + cmake -B build -S . -DUSE_MPI=ON + cmake --build build -j4 - .. code:: sh +macOS +^^^^^ - brew install cmake +On macOS, an MPI version of LightGBM can be built using -2. Install **OpenMP**: +- **CMake**, **Open MPI** and **Apple Clang**; +- **CMake**, **Open MPI** and **gcc**. - .. code:: sh +After compilation the executable and ``.dylib`` files will be in ``LightGBM/`` folder. - brew install libomp +Apple Clang +*********** -3. Install **Open MPI**: +1. Install `CMake`_, **OpenMP** and `Open MPI`_: .. code:: sh - brew install open-mpi + brew install cmake libomp open-mpi -4. Run the following commands: +2. Run the following commands: .. code:: sh @@ -457,25 +515,13 @@ Only **Apple Clang** version 8.1 or higher is supported. gcc *** -1. Install `CMake`_ : - - .. code:: sh - - brew install cmake - -2. Install **gcc**: +1. Install `CMake`_, `Open MPI`_ and **gcc**: .. code:: sh - brew install gcc + brew install cmake open-mpi gcc -3. Install **Open MPI**: - - .. code:: sh - - brew install open-mpi - -4. Run the following commands: +2. Run the following commands: .. code:: sh @@ -488,48 +534,19 @@ gcc Build GPU Version ~~~~~~~~~~~~~~~~~ -Linux -^^^^^ - -On Linux a GPU version of LightGBM (``device_type=gpu``) can be built using **OpenCL**, **Boost**, **CMake** and **gcc** or **Clang**. - -The following dependencies should be installed before compilation: - -- **OpenCL** 1.2 headers and libraries, which is usually provided by GPU manufacture. - - The generic OpenCL ICD packages (for example, Debian package ``ocl-icd-libopencl1`` and ``ocl-icd-opencl-dev``) can also be used. - -- **libboost** 1.56 or later (1.61 or later is recommended). - - We use Boost.Compute as the interface to GPU, which is part of the Boost library since version 1.61. However, since we include the source code of Boost.Compute as a submodule, we only require the host has Boost 1.56 or later installed. We also use Boost.Align for memory allocation. Boost.Compute requires Boost.System and Boost.Filesystem to store offline kernel cache. - - The following Debian packages should provide necessary Boost libraries: ``libboost-dev``, ``libboost-system-dev``, ``libboost-filesystem-dev``. - -- **CMake** - -To build LightGBM GPU version, run the following commands: - -.. code:: sh - - git clone --recursive https://github.com/microsoft/LightGBM - cd LightGBM - cmake -B build -S . -DUSE_GPU=1 - # if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following: - # cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ - cmake --build build - -**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). - Windows ^^^^^^^ -On Windows a GPU version of LightGBM (``device_type=gpu``) can be built using **OpenCL**, **Boost**, **CMake** and **VS Build Tools** or **MinGW**. +On Windows, a GPU version of LightGBM (``device_type=gpu``) can be built using + +- **OpenCL**, **Boost**, **CMake** and **VS Build Tools**; +- **OpenCL**, **Boost**, **CMake** and **MinGW**. If you use **MinGW**, the build procedure is similar to the build on Linux. Following procedure is for the **MSVC** (Microsoft Visual C++) build. -1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** (2015 or newer) is installed). +1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** is installed). 2. Install **OpenCL** for Windows. The installation depends on the brand (NVIDIA, AMD, Intel) of your GPU card. @@ -559,13 +576,68 @@ Following procedure is for the **MSVC** (Microsoft Visual C++) build. git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM - cmake -B build -S . -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 + cmake -B build -S . -A x64 -DUSE_GPU=ON -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 # if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following: - # cmake -B build -S . -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 -DOpenCL_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/OpenCL.lib" -DOpenCL_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include" + # cmake -B build -S . -A x64 -DUSE_GPU=ON -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 -DOpenCL_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/OpenCL.lib" -DOpenCL_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include" cmake --build build --target ALL_BUILD --config Release **Note**: ``C:/local/boost_1_63_0`` and ``C:/local/boost_1_63_0/lib64-msvc-14.0`` are locations of your **Boost** binaries (assuming you've downloaded 1.63.0 version for Visual Studio 2015). +The ``.exe`` and ``.dll`` files will be in ``LightGBM/Release`` folder. + +Linux +^^^^^ + +On Linux, a GPU version of LightGBM (``device_type=gpu``) can be built using + +- **CMake**, **OpenCL**, **Boost** and **gcc**; +- **CMake**, **OpenCL**, **Boost** and **Clang**. + +**OpenCL** headers and libraries are usually provided by GPU manufacture. +The generic OpenCL ICD packages (for example, Debian packages ``ocl-icd-libopencl1``, ``ocl-icd-opencl-dev``, ``pocl-opencl-icd``) can also be used. + +Required **Boost** libraries (Boost.Align, Boost.System, Boost.Filesystem, Boost.Chrono) should be provided by the following Debian packages: ``libboost-dev``, ``libboost-system-dev``, ``libboost-filesystem-dev``, ``libboost-chrono-dev``. + +After compilation the executable and ``.so`` files will be in ``LightGBM/`` folder. + +gcc +*** + +1. Install `CMake`_, **gcc**, **OpenCL** and **Boost**. + +2. Run the following commands: + + .. code:: sh + + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + cmake -B build -S . -DUSE_GPU=ON + # if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following: + # cmake -B build -S . -DUSE_GPU=ON -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ + cmake --build build -j4 + +Clang +***** + +1. Install `CMake`_, **Clang**, **OpenMP**, **OpenCL** and **Boost**. + +2. Run the following commands: + + .. code:: sh + + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine + cmake -B build -S . -DUSE_GPU=ON + # if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following: + # cmake -B build -S . -DUSE_GPU=ON -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ + cmake --build build -j4 + +macOS +^^^^^ + +The GPU version is not supported on macOS. + Docker ^^^^^^ @@ -574,60 +646,84 @@ Refer to `GPU Docker folder `__ of LightGBM (``device_type=gpu``) is based on OpenCL. +The `original GPU version <#build-gpu-version>`__ of LightGBM (``device_type=gpu``) is based on OpenCL. -The CUDA-based build (``device_type=cuda``) is a separate implementation. +The CUDA-based version (``device_type=cuda``) is a separate implementation. Use this version in Linux environments with an NVIDIA GPU with compute capability 6.0 or higher. +Windows +^^^^^^^ + +The CUDA version is not supported on Windows. +Use the `GPU version <#build-gpu-version>`__ (``device_type=gpu``) for GPU acceleration on Windows. + Linux ^^^^^ -On Linux a CUDA version of LightGBM can be built using **CUDA**, **CMake** and **gcc** or **Clang**. +On Linux, a CUDA version of LightGBM can be built using -The following dependencies should be installed before compilation: +- **CMake**, **gcc** and **CUDA**; +- **CMake**, **Clang** and **CUDA**. -- **CUDA** 11.0 or later libraries. Please refer to `this detailed guide`_. Pay great attention to the minimum required versions of host compilers listed in the table from that guide and use only recommended versions of compilers. +Please refer to `this detailed guide`_ for **CUDA** libraries installation. -- **CMake** +After compilation the executable and ``.so`` files will be in ``LightGBM/`` folder. -To build LightGBM CUDA version, run the following commands: +gcc +*** -.. code:: sh +1. Install `CMake`_, **gcc** and **CUDA**. + +2. Run the following commands: - git clone --recursive https://github.com/microsoft/LightGBM - cd LightGBM - cmake -B build -S . -DUSE_CUDA=1 - cmake --build build -j4 + .. code:: sh + + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + cmake -B build -S . -DUSE_CUDA=ON + cmake --build build -j4 + +Clang +***** + +1. Install `CMake`_, **Clang**, **OpenMP** and **CUDA**. + +2. Run the following commands: -**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). + .. code:: sh + + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine + cmake -B build -S . -DUSE_CUDA=ON + cmake --build build -j4 macOS ^^^^^ The CUDA version is not supported on macOS. -Windows -^^^^^^^ - -The CUDA version is not supported on Windows. -Use the GPU version (``device_type=gpu``) for GPU acceleration on Windows. - Build Java Wrapper ~~~~~~~~~~~~~~~~~~ Using the following instructions you can generate a JAR file containing the LightGBM `C API <./Development-Guide.rst#c-api>`__ wrapped by **SWIG**. +After compilation the ``.jar`` file will be in ``LightGBM/build`` folder. + Windows ^^^^^^^ -On Windows a Java wrapper of LightGBM can be built using **Java**, **SWIG**, **CMake** and **VS Build Tools** or **MinGW**. +On Windows, a Java wrapper of LightGBM can be built using + +- **Java**, **SWIG**, **CMake** and **VS Build Tools**; +- **Java**, **SWIG**, **CMake** and **MinGW**. VS Build Tools ************** -1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** (2015 or newer) is already installed). +1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** is already installed). -2. Install `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` is set properly). +2. Install `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` environment variable is set properly). 3. Run the following commands: @@ -638,14 +734,12 @@ VS Build Tools cmake -B build -S . -A x64 -DUSE_SWIG=ON cmake --build build --target ALL_BUILD --config Release -The ``.jar`` file will be in ``LightGBM/build`` folder and the ``.dll`` files will be in ``LightGBM/Release`` folder. - MinGW-w64 ********* 1. Install `Git for Windows`_, `CMake`_ and `MinGW-w64`_. -2. Install `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` is set properly). +2. Install `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` environment variable is set properly). 3. Run the following commands: @@ -656,9 +750,7 @@ MinGW-w64 cmake -B build -S . -G "MinGW Makefiles" -DUSE_SWIG=ON cmake --build build -j4 -The ``.jar`` file will be in ``LightGBM/build`` folder and the ``.dll`` files will be in ``LightGBM/`` folder. - -**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DUSE_SWIG=ON`` one more time if you encounter the ``sh.exe was found in your PATH`` error. +**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DUSE_SWIG=ON`` one more time or add ``-DCMAKE_SH=CMAKE_SH-NOTFOUND`` to CMake flags if you encounter the ``sh.exe was found in your PATH`` error. It is recommended to use **VS Build Tools (Visual Studio)** since it has better multithreading efficiency in **Windows** for many-core systems (see `Question 4 <./FAQ.rst#i-am-using-windows-should-i-use-visual-studio-or-mingw-for-compiling-lightgbm>`__ and `Question 8 <./FAQ.rst#cpu-usage-is-low-like-10-in-windows-when-using-lightgbm-on-very-large-datasets-with-many-core-systems>`__). @@ -666,9 +758,15 @@ It is recommended to use **VS Build Tools (Visual Studio)** since it has better Linux ^^^^^ -On Linux a Java wrapper of LightGBM can be built using **Java**, **SWIG**, **CMake** and **gcc** or **Clang**. +On Linux, a Java wrapper of LightGBM can be built using + +- **CMake**, **gcc**, **Java** and **SWIG**; +- **CMake**, **Clang**, **Java** and **SWIG**. + +gcc +*** -1. Install `CMake`_, `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` is set properly). +1. Install `CMake`_, **gcc**, `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` environment variable is set properly). 2. Run the following commands: @@ -679,34 +777,40 @@ On Linux a Java wrapper of LightGBM can be built using **Java**, **SWIG**, **CMa cmake -B build -S . -DUSE_SWIG=ON cmake --build build -j4 -**Note**: In some rare cases you may need to install OpenMP runtime library separately (use your package manager and search for ``lib[g|i]omp`` for doing this). +Clang +***** -macOS -^^^^^ +1. Install `CMake`_, **Clang**, **OpenMP**, `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` environment variable is set properly). -On macOS a Java wrapper of LightGBM can be built using **Java**, **SWIG**, **CMake** and **Apple Clang** or **gcc**. +2. Run the following commands: -First, install `SWIG`_ and **Java** (also make sure that ``JAVA_HOME`` is set properly). -Then, either follow the **Apple Clang** or **gcc** installation instructions below. + .. code:: sh -Apple Clang -*********** + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine + cmake -B build -S . -DUSE_SWIG=ON + cmake --build build -j4 -Only **Apple Clang** version 8.1 or higher is supported. +macOS +^^^^^ -1. Install `CMake`_ : +On macOS, a Java wrapper of LightGBM can be built using - .. code:: sh +- **CMake**, **Java**, **SWIG** and **Apple Clang**; +- **CMake**, **Java**, **SWIG** and **gcc**. - brew install cmake +Apple Clang +*********** -2. Install **OpenMP**: +1. Install `CMake`_, **Java** (also make sure that ``JAVA_HOME`` environment variable is set properly), `SWIG`_ and **OpenMP**: .. code:: sh - brew install libomp + brew install cmake openjdk swig libomp + export JAVA_HOME="$(brew --prefix openjdk)/libexec/openjdk.jdk/Contents/Home/" -3. Run the following commands: +2. Run the following commands: .. code:: sh @@ -718,19 +822,14 @@ Only **Apple Clang** version 8.1 or higher is supported. gcc *** -1. Install `CMake`_ : +1. Install `CMake`_, **Java** (also make sure that ``JAVA_HOME`` environment variable is set properly), `SWIG`_ and **gcc**: .. code:: sh - brew install cmake - -2. Install **gcc**: - - .. code:: sh - - brew install gcc + brew install cmake openjdk swig gcc + export JAVA_HOME="$(brew --prefix openjdk)/libexec/openjdk.jdk/Contents/Home/" -3. Run the following commands: +2. Run the following commands: .. code:: sh @@ -740,15 +839,31 @@ gcc cmake -B build -S . -DUSE_SWIG=ON cmake --build build -j4 +Build Python-package +~~~~~~~~~~~~~~~~~~~~ + +Refer to `Python-package folder `__. + +Build R-package +~~~~~~~~~~~~~~~ + +Refer to `R-package folder `__. + Build C++ Unit Tests ~~~~~~~~~~~~~~~~~~~~ Windows ^^^^^^^ -On Windows, C++ unit tests of LightGBM can be built using **CMake** and **VS Build Tools**. +On Windows, C++ unit tests of LightGBM can be built using + +- **CMake** and **VS Build Tools**; +- **CMake** and **MinGW**. + +VS Build Tools +************** -1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** (2015 or newer) is already installed). +1. Install `Git for Windows`_, `CMake`_ and `VS Build Tools`_ (**VS Build Tools** is not needed if **Visual Studio** is already installed). 2. Run the following commands: @@ -756,17 +871,43 @@ On Windows, C++ unit tests of LightGBM can be built using **CMake** and **VS Bui git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM - cmake -B build -S . -A x64 -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF + cmake -B build -S . -A x64 -DBUILD_CPP_TEST=ON cmake --build build --target testlightgbm --config Debug The ``.exe`` file will be in ``LightGBM/Debug`` folder. +MinGW-w64 +********* + +1. Install `Git for Windows`_, `CMake`_ and `MinGW-w64`_. + +2. Run the following commands: + + .. code:: console + + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + cmake -B build -S . -G "MinGW Makefiles" -DBUILD_CPP_TEST=ON + cmake --build build --target testlightgbm -j4 + +The ``.exe`` file will be in ``LightGBM/`` folder. + +**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DBUILD_CPP_TEST=ON`` one more time or add ``-DCMAKE_SH=CMAKE_SH-NOTFOUND`` to CMake flags if you encounter the ``sh.exe was found in your PATH`` error. + Linux ^^^^^ -On Linux a C++ unit tests of LightGBM can be built using **CMake** and **gcc** or **Clang**. +On Linux, a C++ unit tests of LightGBM can be built using + +- **CMake** and **gcc**; +- **CMake** and **Clang**. + +After compilation the executable file will be in ``LightGBM/`` folder. + +gcc +*** -1. Install `CMake`_. +1. Install `CMake`_ and **gcc**. 2. Run the following commands: @@ -774,24 +915,42 @@ On Linux a C++ unit tests of LightGBM can be built using **CMake** and **gcc** o git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM - cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF + cmake -B build -S . -DBUILD_CPP_TEST=ON + cmake --build build --target testlightgbm -j4 + +Clang +***** + +1. Install `CMake`_, **Clang** and **OpenMP**. + +2. Run the following commands: + + .. code:: sh + + git clone --recursive https://github.com/microsoft/LightGBM + cd LightGBM + export CXX=clang++-14 CC=clang-14 # replace "14" with version of Clang installed on your machine + cmake -B build -S . -DBUILD_CPP_TEST=ON cmake --build build --target testlightgbm -j4 macOS ^^^^^ -On macOS a C++ unit tests of LightGBM can be built using **CMake** and **Apple Clang** or **gcc**. +On macOS, a C++ unit tests of LightGBM can be built using + +- **CMake** and **Apple Clang**; +- **CMake** and **gcc**. + +After compilation the executable file will be in ``LightGBM/`` folder. Apple Clang *********** -Only **Apple Clang** version 8.1 or higher is supported. - -1. Install `CMake`_ : +1. Install `CMake`_ and **OpenMP**: .. code:: sh - brew install cmake + brew install cmake libomp 2. Run the following commands: @@ -799,42 +958,32 @@ Only **Apple Clang** version 8.1 or higher is supported. git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM - cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF + cmake -B build -S . -DBUILD_CPP_TEST=ON cmake --build build --target testlightgbm -j4 gcc *** -1. Install `CMake`_ : +1. Install `CMake`_ and **gcc**: .. code:: sh - brew install cmake - -2. Install **gcc**: + brew install cmake gcc - .. code:: sh - - brew install gcc - -3. Run the following commands: +2. Run the following commands: .. code:: sh git clone --recursive https://github.com/microsoft/LightGBM cd LightGBM export CXX=g++-7 CC=gcc-7 # replace "7" with version of gcc installed on your machine - cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF + cmake -B build -S . -DBUILD_CPP_TEST=ON cmake --build build --target testlightgbm -j4 .. |download artifacts| image:: ./_static/images/artifacts-not-available.svg :target: https://lightgbm.readthedocs.io/en/latest/Installation-Guide.html -.. _Python-package: https://github.com/microsoft/LightGBM/tree/master/python-package - -.. _R-package: https://github.com/microsoft/LightGBM/tree/master/R-package - .. _Visual Studio: https://visualstudio.microsoft.com/downloads/ .. _Git for Windows: https://git-scm.com/download/win @@ -864,3 +1013,5 @@ gcc .. _this detailed guide: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html .. _following docs: https://github.com/google/sanitizers/wiki + +.. _Ninja: https://ninja-build.org diff --git a/docs/_static/js/script.js b/docs/_static/js/script.js index c4717b8a0ee5..c6d21713fe5c 100644 --- a/docs/_static/js/script.js +++ b/docs/_static/js/script.js @@ -15,7 +15,7 @@ $(() => { /* Collapse specified sections in the installation guide */ if (window.location.pathname.toLocaleLowerCase().indexOf("installation-guide") !== -1) { $( - '', + '', ).appendTo("body"); const collapsible = [ "#build-threadless-version-not-recommended", @@ -23,6 +23,8 @@ $(() => { "#build-gpu-version", "#build-cuda-version", "#build-java-wrapper", + "#build-python-package", + "#build-r-package", "#build-c-unit-tests", ]; $.each(collapsible, (_, val) => { diff --git a/include/LightGBM/bin.h b/include/LightGBM/bin.h index a33fcfa9c45c..5826f2387102 100644 --- a/include/LightGBM/bin.h +++ b/include/LightGBM/bin.h @@ -9,6 +9,7 @@ #include #include +#include #include #include #include diff --git a/include/LightGBM/cuda/cuda_column_data.hpp b/include/LightGBM/cuda/cuda_column_data.hpp index 314a178859c6..8875cd151d7d 100644 --- a/include/LightGBM/cuda/cuda_column_data.hpp +++ b/include/LightGBM/cuda/cuda_column_data.hpp @@ -13,6 +13,7 @@ #include #include +#include #include namespace LightGBM { diff --git a/include/LightGBM/cuda/cuda_row_data.hpp b/include/LightGBM/cuda/cuda_row_data.hpp index 1d4cb2f73b1e..85da72bc083d 100644 --- a/include/LightGBM/cuda/cuda_row_data.hpp +++ b/include/LightGBM/cuda/cuda_row_data.hpp @@ -15,6 +15,7 @@ #include #include +#include #include #define COPY_SUBROW_BLOCK_SIZE_ROW_DATA (1024) diff --git a/include/LightGBM/dataset.h b/include/LightGBM/dataset.h index ef214b7cd89d..c2a4b62296f2 100644 --- a/include/LightGBM/dataset.h +++ b/include/LightGBM/dataset.h @@ -15,6 +15,7 @@ #include #include +#include #include #include #include diff --git a/include/LightGBM/feature_group.h b/include/LightGBM/feature_group.h index f13a5fff966f..bcc0388ba507 100644 --- a/include/LightGBM/feature_group.h +++ b/include/LightGBM/feature_group.h @@ -10,6 +10,7 @@ #include #include +#include #include #include #include diff --git a/include/LightGBM/train_share_states.h b/include/LightGBM/train_share_states.h index f102668edf70..e4f4e4afea5f 100644 --- a/include/LightGBM/train_share_states.h +++ b/include/LightGBM/train_share_states.h @@ -11,6 +11,7 @@ #include #include +#include #include #include diff --git a/include/LightGBM/tree.h b/include/LightGBM/tree.h index c28ddd140c48..bc5af621e402 100644 --- a/include/LightGBM/tree.h +++ b/include/LightGBM/tree.h @@ -8,6 +8,7 @@ #include #include +#include #include #include #include diff --git a/python-package/lightgbm/compat.py b/python-package/lightgbm/compat.py index 0b9444b0ecbf..96dee6522572 100644 --- a/python-package/lightgbm/compat.py +++ b/python-package/lightgbm/compat.py @@ -14,14 +14,6 @@ from sklearn.utils.multiclass import check_classification_targets from sklearn.utils.validation import assert_all_finite, check_array, check_X_y - # sklearn.utils Tags types can be imported unconditionally once - # lightgbm's minimum scikit-learn version is 1.6 or higher - try: - from sklearn.utils import ClassifierTags as _sklearn_ClassifierTags - from sklearn.utils import RegressorTags as _sklearn_RegressorTags - except ImportError: - _sklearn_ClassifierTags = None - _sklearn_RegressorTags = None try: from sklearn.exceptions import NotFittedError from sklearn.model_selection import BaseCrossValidator, GroupKFold, StratifiedKFold @@ -148,8 +140,6 @@ class _LGBMRegressorBase: # type: ignore _LGBMCheckClassificationTargets = None _LGBMComputeSampleWeight = None _LGBMValidateData = None - _sklearn_ClassifierTags = None - _sklearn_RegressorTags = None _sklearn_version = None # additional scikit-learn imports only for type hints diff --git a/python-package/lightgbm/sklearn.py b/python-package/lightgbm/sklearn.py index d730b66c3556..108ef1e14498 100644 --- a/python-package/lightgbm/sklearn.py +++ b/python-package/lightgbm/sklearn.py @@ -40,8 +40,6 @@ _LGBMModelBase, _LGBMRegressorBase, _LGBMValidateData, - _sklearn_ClassifierTags, - _sklearn_RegressorTags, _sklearn_version, dt_DataTable, pd_DataFrame, @@ -726,7 +724,7 @@ def __sklearn_tags__(self) -> Optional["_sklearn_Tags"]: # take whatever tags are provided by BaseEstimator, then modify # them with LightGBM-specific values return self._update_sklearn_tags_from_dict( - tags=_LGBMModelBase.__sklearn_tags__(self), + tags=super().__sklearn_tags__(), tags_dict=self._more_tags(), ) @@ -1298,10 +1296,7 @@ def _more_tags(self) -> Dict[str, Any]: return tags def __sklearn_tags__(self) -> "_sklearn_Tags": - tags = LGBMModel.__sklearn_tags__(self) - tags.estimator_type = "regressor" - tags.regressor_tags = _sklearn_RegressorTags(multi_label=False) - return tags + return super().__sklearn_tags__() def fit( # type: ignore[override] self, @@ -1360,9 +1355,9 @@ def _more_tags(self) -> Dict[str, Any]: return tags def __sklearn_tags__(self) -> "_sklearn_Tags": - tags = LGBMModel.__sklearn_tags__(self) - tags.estimator_type = "classifier" - tags.classifier_tags = _sklearn_ClassifierTags(multi_class=True, multi_label=False) + tags = super().__sklearn_tags__() + tags.classifier_tags.multi_class = True + tags.classifier_tags.multi_label = False return tags def fit( # type: ignore[override] diff --git a/src/c_api.cpp b/src/c_api.cpp index 98748bc9ff2f..cf6577ad5e2c 100644 --- a/src/c_api.cpp +++ b/src/c_api.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include #include diff --git a/src/io/cuda/cuda_column_data.cpp b/src/io/cuda/cuda_column_data.cpp index eb0938c01225..415578847f07 100644 --- a/src/io/cuda/cuda_column_data.cpp +++ b/src/io/cuda/cuda_column_data.cpp @@ -7,6 +7,8 @@ #include +#include + namespace LightGBM { CUDAColumnData::CUDAColumnData(const data_size_t num_data, const int gpu_device_id) { diff --git a/src/io/json11.cpp b/src/io/json11.cpp index 32a9c9d718b7..acd09f9ecb12 100644 --- a/src/io/json11.cpp +++ b/src/io/json11.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include diff --git a/tests/python_package_test/test_sklearn.py b/tests/python_package_test/test_sklearn.py index d187e9df5a9f..1cdd047f1857 100644 --- a/tests/python_package_test/test_sklearn.py +++ b/tests/python_package_test/test_sklearn.py @@ -1488,6 +1488,12 @@ def test_sklearn_tags_should_correctly_reflect_lightgbm_specific_values(estimato assert sklearn_tags.input_tags.allow_nan is True assert sklearn_tags.input_tags.sparse is True assert sklearn_tags.target_tags.one_d_labels is True + if estimator_class is lgb.LGBMClassifier: + assert sklearn_tags.estimator_type == "classifier" + assert sklearn_tags.classifier_tags.multi_class is True + assert sklearn_tags.classifier_tags.multi_label is False + elif estimator_class is lgb.LGBMRegressor: + assert sklearn_tags.estimator_type == "regressor" @pytest.mark.parametrize("task", all_tasks)