Federated learning plugin for xgboost: * A gRPC server to aggregate MPI-style requests (allgather, allreduce, broadcast) from federated workers. * A Rabit engine for the federated environment. * Integration test to simulate federated learning. Additional followups are needed to address GPU support, better security, and privacy, etc.
20 lines
601 B
CMake
20 lines
601 B
CMake
cmake_minimum_required(VERSION 3.3)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
set(RABIT_SOURCES
|
|
${CMAKE_CURRENT_LIST_DIR}/src/allreduce_base.cc
|
|
${CMAKE_CURRENT_LIST_DIR}/src/rabit_c_api.cc)
|
|
|
|
if (PLUGIN_FEDERATED)
|
|
# Skip the engine if the Federated Learning plugin is enabled.
|
|
elseif (RABIT_BUILD_MPI)
|
|
list(APPEND RABIT_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/engine_mpi.cc)
|
|
elseif (RABIT_MOCK)
|
|
list(APPEND RABIT_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/engine_mock.cc)
|
|
else ()
|
|
list(APPEND RABIT_SOURCES ${CMAKE_CURRENT_LIST_DIR}/src/engine.cc)
|
|
endif ()
|
|
|
|
set(RABIT_SOURCES ${RABIT_SOURCES} PARENT_SCOPE)
|