mindspore/docs/api/api_python/federated/federated_server.rst

191 lines
16 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Federated-Server
======================
.. py:function:: mindspore.set_fl_context(**kwargs)
设置联邦学习训练模式的context。
.. note::
设置属性时,必须输入属性名称。
某些配置需要在特定角色上设置,有关详细信息,请参见下表:
+-------------------------+---------------------------------+-----------------------------+
| 功能分类 | 配置参数 | 联邦学习角色 |
+=========================+=================================+=============================+
| 组网配置 | enable_fl | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | server_mode | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | ms_role | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | worker_num | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | server_num | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | scheduler_ip | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | scheduler_port | scheduler/server/worker |
| +---------------------------------+-----------------------------+
| | fl_server_port | scheduler/server |
| +---------------------------------+-----------------------------+
| | scheduler_manage_port | scheduler |
+-------------------------+---------------------------------+-----------------------------+
| 训练配置 | start_fl_job_threshold | server |
| +---------------------------------+-----------------------------+
| | start_fl_job_time_window | server |
| +---------------------------------+-----------------------------+
| | update_model_ratio | server |
| +---------------------------------+-----------------------------+
| | update_model_time_window | server |
| +---------------------------------+-----------------------------+
| | fl_iteration_num | server |
| +---------------------------------+-----------------------------+
| | client_epoch_num | server |
| +---------------------------------+-----------------------------+
| | client_batch_size | server |
| +---------------------------------+-----------------------------+
| | client_learning_rate | server |
| +---------------------------------+-----------------------------+
| | worker_step_num_per_iteration | worker |
| +---------------------------------+-----------------------------+
| | global_iteration_time_window | server |
+-------------------------+---------------------------------+-----------------------------+
| 加密配置 | encrypt_type | server |
| +---------------------------------+-----------------------------+
| | share_secrets_ratio | server |
| +---------------------------------+-----------------------------+
| | cipher_time_window | server |
| +---------------------------------+-----------------------------+
| | reconstruct_secrets_threshold | server |
| +---------------------------------+-----------------------------+
| | dp_eps | server |
| +---------------------------------+-----------------------------+
| | dp_delta | server |
| +---------------------------------+-----------------------------+
| | dp_norm_clip | server |
| +---------------------------------+-----------------------------+
| | sign_k | server |
| +---------------------------------+-----------------------------+
| | sign_eps | server |
| +---------------------------------+-----------------------------+
| | sign_thr_ratio | server |
| +---------------------------------+-----------------------------+
| | sign_global_lr | server |
| +---------------------------------+-----------------------------+
| | sign_dim_out | server |
+-------------------------+---------------------------------+-----------------------------+
| 认证配置 | enable_ssl | server |
| +---------------------------------+-----------------------------+
| | client_password | server |
| +---------------------------------+-----------------------------+
| | server_password | server |
| +---------------------------------+-----------------------------+
| | root_first_ca_path | server |
| +---------------------------------+-----------------------------+
| | pki_verify | server |
| +---------------------------------+-----------------------------+
| | root_second_ca_path | server |
| +---------------------------------+-----------------------------+
| | equip_crl_path | server |
| +---------------------------------+-----------------------------+
| | replay_attack_time_diff | server |
| +---------------------------------+-----------------------------+
| | http_url_prefix | server |
+-------------------------+---------------------------------+-----------------------------+
| 容灾和运维配置 | fl_name | server |
| +---------------------------------+-----------------------------+
| | config_file_path | scheduler/server |
| +---------------------------------+-----------------------------+
| | checkpoint_dir | server |
+-------------------------+---------------------------------+-----------------------------+
| 压缩配置 | upload_compress_type | server |
| +---------------------------------+-----------------------------+
| | upload_sparse_rate | server |
| +---------------------------------+-----------------------------+
| | download_compress_type | server |
+-------------------------+---------------------------------+-----------------------------+
**参数:**
- **enable_fl** (bool) - 是否启用联邦学习训练模式。默认值False。
- **server_mode** (str) - 描述服务器模式,它必须是'FEDERATED_LEARNING'和'HYBRID_TRAINING'中的一个。
- **ms_role** (str) - 进程在联邦学习模式中的角色,
它必须是'MS_SERVER'、'MS_WORKER'和'MS_SCHED'中的一个。
- **worker_num** (int) - 云侧训练进程的数量。
- **server_num** (int) - 联邦学习服务器的数量。默认值0。
- **scheduler_ip** (str) - 调度器IP。默认值'0.0.0.0'。
- **scheduler_port** (int) - 调度器端口。默认值6667。
- **fl_server_port** (int) - 服务器端口。默认值6668。
- **start_fl_job_threshold** (int) - 开启联邦学习作业的阈值计数。默认值1。
- **start_fl_job_time_window** (int) - 开启联邦学习作业的时间窗口持续时间以毫秒为单位。默认值300000。
- **update_model_ratio** (float) - 计算更新模型阈值计数的比率。默认值1.0。
- **update_model_time_window** (int) - 更新模型的时间窗口持续时间以毫秒为单位。默认值300000。
- **fl_name** (str) - 联邦学习作业名称。默认值:""。
- **fl_iteration_num** (int) - 联邦学习的迭代次数即客户端和服务器的交互次数。默认值20。
- **client_epoch_num** (int) - 客户端训练epoch数量。默认值25。
- **client_batch_size** (int) - 客户端训练数据batch数。默认值32。
- **client_learning_rate** (float) - 客户端训练学习率。默认值0.001。
- **worker_step_num_per_iteration** (int) - 端云联邦中云侧训练进程在与服务器通信之前的独立训练步数。默认值65。
- **encrypt_type** (str) - 用于联邦学习的安全策略,可以是'NOT_ENCRYPT'、'DP_ENCRYPT'、
'PW_ENCRYPT'、'STABLE_PW_ENCRYPT'或'SIGNDS'。如果是'DP_ENCRYPT',则将对客户端应用差分隐私模式,
隐私保护效果将由上面所述的dp_eps、dp_delta、dp_norm_clip确定。如果'PW_ENCRYPT'则将应用成对pairwisePW安全聚合
来保护客户端模型在跨设备场景中不被窃取。如果'STABLE_PW_ENCRYPT',则将应用成对安全聚合来保护客户端模型在云云联邦场景中
免受窃取。如果'SIGNDS'则将在于客户端上使用SignDS策略。SignDS的介绍可以参照
`SignDS-FL: Local Differentially Private Federated Learning with Sign-based Dimension Selection <https://dl.acm.org/doi/abs/10.1145/3517820>`_
默认值:'NOT_ENCRYPT'。
- **share_secrets_ratio** (float) - PW参与秘密分享的客户端比例。默认值1.0。
- **cipher_time_window** (int) - PW每个加密轮次的时间窗口持续时间以毫秒为单位。默认值300000。
- **reconstruct_secrets_threshold** (int) - PW秘密重建的阈值。默认值2000。
- **dp_eps** (float) - DP差分隐私机制的epsilon预算。dp_eps越小隐私保护效果越好。默认值50.0。
- **dp_delta** (float) - DP差分隐私机制的delta预算通常等于客户端数量的倒数。dp_delta越小隐私保护效果越好。默认值0.01。
- **dp_norm_clip** (float) - DP差分隐私梯度裁剪的控制因子。建议其值为0.5~2。默认值1.0。
- **sign_k** (float) - SignDSTop-k比率即Top-k维度的数量除以维度总数。建议取值范围在(0, 0.25]内。默认值0.01。
- **sign_eps** (float) - SignDS隐私预算。该值越小隐私保护力度越大精度越低。建议取值范围在(0, 100]内。默认值100。
- **sign_thr_ratio** (float) - SignDS预期Top-k维度的阈值。建议取值范围在[0.5, 1]内。默认值0.6。
- **sign_global_lr** (float) - SignDS分配给选定维的常量值。适度增大该值会提高收敛速度但有可能让模型梯度爆炸。取值必须大于0。默认值1。
- **sign_dim_out** (int) - SignDS输出维度的数量。建议取值范围在[0, 50]内。默认值0。
- **config_file_path** (str) - 用于集群容灾恢复的配置文件路径、认证相关参数以及文件路径、评价指标文件路径和运维相关文件路径。默认值:""。
- **scheduler_manage_port** (int) - 用于扩容/缩容的调度器管理端口。默认值11202。
- **enable_ssl** (bool) - 设置联邦学习开启SSL安全通信。默认值False。
- **client_password** (str) - 解密客户端证书中存储的秘钥的密码。默认值:""。
- **server_password** (str) - 解密服务器证书中存储的秘钥的密码。默认值:""。
- **pki_verify** (bool) - 如果为True则将打开服务器和客户端之间的身份验证。
您还应从https://pki.consumer.huawei.com/ca/下载Root CA证书、Root CA G2证书和移动设备CRL证书。
需要注意的是只有当客户端是具有HUKS服务的Android环境时pki_verify可以为True。默认值False。
- **root_first_ca_path** (str) - Root CA证书的文件路径。当pki_verify为True时需要设置该值。默认值""。
- **root_second_ca_path** (str) - Root CA G2证书的文件路径。当pki_verify为True时需要设置该值。默认值""。
- **equip_crl_path** (str) - 移动设备CRL证书的文件路径。当pki_verify为True时需要设置该值。默认值""。
- **replay_attack_time_diff** (int) - 证书时间戳验证的最大可容忍错误毫秒。默认值600000。
- **http_url_prefix** (str) - 设置联邦学习端云通信的http路径。默认值""。
- **global_iteration_time_window** (int) - 一次迭代的全局时间窗口轮次ms。默认值3600000。
- **checkpoint_dir** (str) - server读取和保存模型文件的目录。若没有设置则不读取和保存模型文件。默认值""。
- **upload_compress_type** (str) - 上传压缩方法。可以是'NO_COMPRESS'或'DIFF_SPARSE_QUANT'。如果是'NO_COMPRESS',则不对上传的模型
进行压缩。如果是'DIFF_SPARSE_QUANT',则对上传的模型使用权重差+稀疏+量化压缩策略。默认值:'NO_COMPRESS'。
- **upload_sparse_rate** (float) - 上传压缩稀疏率。稀疏率越大,则压缩率越小。取值范围:(0, 1.0]。默认值0.4。
- **download_compress_type** (str) - 下载压缩方法。可以是'NO_COMPRESS'或'QUANT'。如果是'NO_COMPRESS',则不对下载的模型进行压缩。
如果是'QUANT',则对下载的模型使用量化压缩策略。默认值:'NO_COMPRESS'。
**异常:**
- **ValueError** - 如果输入key不是联邦学习模式context中的属性。
.. py:function:: mindspore.get_fl_context(attr_key)
根据key获取联邦学习模式context中的属性值。
**参数:**
- **attr_key** (str) - 属性的key。
请参考 `set_fl_context` 中的参数来决定应传递的key。
**返回:**
根据key返回属性值。
**异常:**
- **ValueError** - 如果输入key不是联邦学习模式context中的属性。