You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/user_guide/federated_xgboost/secure_xgboost_user_guide.rst
+23-22
Original file line number
Diff line number
Diff line change
@@ -13,12 +13,13 @@ NVFlare supports federated training with XGBoost. It provides the following adva
13
13
14
14
It supports federated training in the following 4 modes:
15
15
16
-
1. **horizontal(h)**: Row split without encryption
17
-
2. **vertical(v)**: Column split without encryption
18
-
3. **horizontal_secure(hs)**: Row split with HE (Requires at least 3 clients. With 2 clients, the other client's histogram can be deduced.)
19
-
4. **vertical_secure(vs)**: Column split with HE
16
+
1. Row split without encryption
17
+
2. Column split without encryption
18
+
3. Row split with HE (Requires at least 3 clients. With 2 clients, the other client's histogram can be deduced.)
19
+
4. Column split with HE
20
20
21
-
When running with NVFlare, all the GRPC connections in XGBoost are local and the messages are forwarded to other clients through NVFlare's CellNet communication. The local GRPC ports are selected automatically by NVFlare.
21
+
When running with NVFlare, all the GRPC connections in XGBoost are local and the messages are forwarded to other clients through NVFlare's CellNet communication.
22
+
The local GRPC ports are selected automatically by NVFlare.
22
23
23
24
The encryption is handled in XGBoost by encryption plugins, which are external components that can be installed at runtime. The plugins are bundled with NVFlare.
24
25
@@ -43,7 +44,7 @@ or if XGBoost 2.2 is not released yet, use
``TenSEAL`` package is needed for horizontal secure training,
49
50
@@ -120,11 +121,11 @@ This is a snippet of the ``secure_project.yml`` file with the HEBuilder:
120
121
121
122
Data Preparation
122
123
================
123
-
Data must be properly formatted for federated XGBoost training based on split mode (horizontal or vertical).
124
+
Data must be properly formatted for federated XGBoost training based on split mode (row or column).
124
125
125
-
For horizontal training, the datasets on all clients must share the same columns.
126
+
For horizontal (row-split) training, the datasets on all clients must share the same columns.
126
127
127
-
For vertical training, the datasets on all clients contain different columns, but must share overlapping rows. For more details on vertical split preprocessing, refer to the :github_nvflare_link:`Vertical XGBoost Example <examples/advanced/vertical_xgboost>`.
128
+
For vertical (column-split) training, the datasets on all clients contain different columns, but must share overlapping rows. For more details on vertical split preprocessing, refer to the :github_nvflare_link:`Vertical XGBoost Example <examples/advanced/vertical_xgboost>`.
128
129
129
130
XGBoost Plugin Configuration
130
131
============================
@@ -206,8 +207,9 @@ On the server side, following controller must be configured in workflows,
206
207
Even though the XGBoost training is performed on clients, the parameters are configured on the server so all clients share the same configuration.
207
208
XGBoost parameters are defined here, https://xgboost.readthedocs.io/en/stable/python/python_intro.html#setting-parameters
208
209
209
-
- **num_rounds**: Number of training rounds
210
-
- **training_mode**: Training mode, must be one of the following: horizontal, vertical, horizontal_secure, vertical_secure.
210
+
- **num_rounds**: Number of training rounds.
211
+
- **data_split_mode**: Same as XGBoost data_split_mode parameter, 0 for row-split, 1 for column-split.
212
+
- **secure_training**:If true, XGBoost will train in secure mode using the plugin.
211
213
- **xgb_params**: The training parameters defined in this dict are passed to XGBoost as **params**, the boost paramter.
212
214
- **xgb_options**: This dict contains other optional parameters passed to XGBoost. Currently, only **early_stopping_rounds** is supported.
213
215
- **client_ranks**: A dict that maps client name to rank.
@@ -226,15 +228,14 @@ Only one parameter is required for executor,
226
228
Data Loader
227
229
-----------
228
230
229
-
On the client side, a data loader must be configured in the components. The SecureDataLoader can be used if the data is pre-processed. For example,
231
+
On the client side, a data loader must be configured in the components. The CSVDataLoader can be used if the data is pre-processed. For example,
0 commit comments