Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement secure horizontal scheme for federated learning (#10231)
* Add additional data split mode to cover the secure vertical pipeline * Add IsSecure info and update corresponding functions * Modify evaluate_splits to block non-label owners to perform hist compute under secure scenario * Continue using Allgather for best split sync for secure vertical, equvalent to broadcast * Modify histogram sync scheme for secure vertical case, can identify global best split, but need to further apply split correctly * Sync cut informaiton across clients, full pipeline works for testing case * Code cleanup, phase 1 of alternative vertical pipeline finished * Code clean * change kColS to kColSecure to avoid confusion with kCols * Replace allreduce with allgather, functional but inefficient version * Update AllGather behavior from individual pair to bulk by adopting new histogram transmission data structure of a flat vector * comment out the record printing * fix pointer bug for histsync with allgather * identify the HE adding locations * revise and simplify template code * revise and simplify template code * prepare aggregator for gh broadcast * prepare histogram for histindex and row index for allgather * fix conflicts * fix conflicts * fix format * fix allgather logic and update unit test * fix linting * fix linting and other unit test issues * fix linting and other unit test issues * integration with interface initial attempt * integration with interface initial attempt * integration with interface initial attempt * functional integration with interface * remove debugging prints * remove processor from another PR * Update the processor functions according to new processor implementation * Move processor interface init from learner to communicator * Move processor interface init from learner to communicator functional * switch to allgatherV for encrypted message with varying lenghts * consolidate with processor interface PR * remove prints and fix format * fix linting over reference pass * fix undefined symbol issue * fix processor test * secure vertical relies on processor, move the unit test * type correction * type correction * extra linting from last change * Added Windows support * fix for cstdint types * fix for cstdint types * Added support for horizontal secure XGBoost * update with mock plugin * secure horizontal fully functional with mock plugin * linting fix * linting fix * linting fix * fix type * change loader and proc params input pattern to align with std map * update with secure vertical incorporation * Update mock_processor to enable nvflare usage * [backport] Fix compiling with the latest CTX. (#10263) * fix secure horizontal inference * initialized aggr context only once * Added support for multiple plugins in a single lib * remove redundant condition * Added support for boolean in proc_params * free buffer * CUDA. * Fix clean build. * Fix include. * tidy. * lint. * nolint. * disable. * disable sanitizer. --------- Co-authored-by: Zhihong Zhang <[email protected]> Co-authored-by: Jiaming Yuan <[email protected]>
- Loading branch information