# FLParameter [![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.0/resource/_static/logo_source.png)](https://gitee.com/mindspore/docs/blob/r2.0/docs/federated/docs/source_zh_cn/java_api_flparameter.md) ```java import com.mindspore.flclient.FLParameter ``` FLParameter定义联邦学习相关参数,供用户进行设置。 ## 公有成员函数 | **function** | | ------------------------------------------------------------ | | public static synchronized FLParameter getInstance() | | public String getDeployEnv() | | public void setDeployEnv(String env) | | public String getDomainName() | | public void setDomainName(String domainName) | | public String getClientID() | | public void setClientID(String clientID) | | public String getCertPath() | | public void setCertPath(String certPath) | | public SSLSocketFactory getSslSocketFactory() | | public void setSslSocketFactory(SSLSocketFactory sslSocketFactory) | | public X509TrustManager getX509TrustManager( | | public void setX509TrustManager(X509TrustManager x509TrustManager) | | public IFLJobResultCallback getIflJobResultCallback() | | public void setIflJobResultCallback(IFLJobResultCallback iflJobResultCallback) | | public String getFlName() | | public void setFlName(String flName) | | public String getTrainModelPath() | | public void setTrainModelPath(String trainModelPath) | | public String getInferModelPath() | | public void setInferModelPath(String inferModelPath) | | public String getSslProtocol() | | public void setSslProtocol(String sslProtocol) | | public int getTimeOut() | | public void setTimeOut(int timeOut) | | public int getSleepTime() | | public void setSleepTime(int sleepTime) | | public boolean isUseElb() | | public void setUseElb(boolean useElb) | | public int getServerNum() | | public void setServerNum(int serverNum) | | public boolean isPkiVerify() | | public void setPkiVerify(boolean ifPkiVerify) | | public String getEquipCrlPath() | | public void setEquipCrlPath(String certPath) | | public long getValidInterval() | | public void setValidInterval(long validInterval) | | public int getThreadNum() | | public void setThreadNum(int threadNum) | | public int getCpuBindMode() | | public void setCpuBindMode(BindMode cpuBindMode) | | public List getHybridWeightName(RunType runType) | | public void setHybridWeightName(List hybridWeightName, RunType runType) | | public Map/> getDataMap() | | public void setDataMap(Map/> dataMap) | | public ServerMod getServerMod() | | public void setServerMod(ServerMod serverMod) | | public int getBatchSize() | | public void setBatchSize(int batchSize) | ## getInstance ```java public static synchronized FLParameter getInstance() ``` 获取FLParameter单例。 - 返回值 FLParameter类型的单例对象。 ## getDeployEnv ```java public String getDeployEnv() ``` 获取用户设置联邦学习的部署环境。 - 返回值 String类型的联邦学习的部署环境。 ## setDeployEnv ```java public void setDeployEnv(String env) ``` 用于设置联邦学习的部署环境, 设置了白名单,目前只支持"x86", "android"。 - 参数 - `env`: 联邦学习的部署环境。 ## getDomainName ```java public String getDomainName() ``` 获取用户设置的域名domainName。 - 返回值 String类型的域名。 ## setDomainName ```java public void setDomainName(String domainName) ``` 用于设置端云通信url,目前,可支持https和http通信,对应格式分别为:https://......、http://......,当`useElb`设置为true时,格式必须为:https://127.0.0.0:6666 或者http://127.0.0.0:6666 ,其中`127.0.0.0`对应提供云侧服务的机器ip(即云侧参数`--scheduler_ip`),`6666`对应云侧参数`--fl_server_port`。 - 参数 - `domainName`: 域名。 ## getClientID ```java public String getClientID() ``` 每次联邦学习任务启动前会自动生成一个唯一标识客户端的clientID(若用户需要自行设置clientID,可在启动联邦学习训练任务前使用setClientID进行设置),该方法用于获取该ID,可用于端云安全认证场景中生成相关证书。 - 返回值 String类型的唯一标识客户端的clientID。 ## setClientID ```java public void setClientID(String clientID) ``` 用于用户设置唯一标识客户端的clientID。 - 参数 - `clientID`: 唯一标识客户端的clientID。 ## getCertPath ```java public String getCertPath() ``` 获取用户设置的端云https通信所使用的自签名根证书路径certPath。 - 返回值 String类型的自签名根证书路径certPath。 ## setCertPath ```java public void setCertPath(String certPath) ``` 用于设置端云HTTPS通信所使用的自签名根证书路径certPath。当部署环境为"x86",且端云采用自签名证书进行https通信认证时,需要设置该参数,该证书需与生成云侧自签名证书所使用的CA根证书一致才能验证通过,此参数用于非Android场景。 - 参数 - `certPath`: 端云https通信所使用的自签名根证书路径。 ## getSslSocketFactory ```java public SSLSocketFactory getSslSocketFactory() ``` 获取用户设置的ssl证书认证库sslSocketFactory。 - 返回值 SSLSocketFactory类型的ssl证书认证库sslSocketFactory。 ## setSslSocketFactory ```java public void setSslSocketFactory(SSLSocketFactory sslSocketFactory) ``` 用于设置ssl证书认证库sslSocketFactory。 - 参数 - `sslSocketFactory`: ssl证书认证库。 ## getX509TrustManager ```java public X509TrustManager getX509TrustManager() ``` 获取用户设置的ssl证书认证管理器x509TrustManager。 - 返回值 X509TrustManager类型的ssl证书认证管理器x509TrustManager。 ## setX509TrustManager ```java public void setX509TrustManager(X509TrustManager x509TrustManager) ``` 用于设置ssl证书认证管理器x509TrustManager。 - 参数 - `x509TrustManager`:ssl证书认证管理器。 ## getIflJobResultCallback ```java public IFLJobResultCallback getIflJobResultCallback() ``` 获取用户设置的联邦学习回调函数对象iflJobResultCallback。 - 返回值 IFLJobResultCallback类型的联邦学习回调函数对象iflJobResultCallback。 ## setIflJobResultCallback ```java public void setIflJobResultCallback(IFLJobResultCallback iflJobResultCallback) ``` 用于设置联邦学习回调函数对象iflJobResultCallback,用户可根据实际场景所需,实现工程中接口类[IFLJobResultCallback.java](https://gitee.com/mindspore/federated/blob/r0.1/mindspore_federated/device_client/src/main/java/com/mindspore/flclient/IFLJobResultCallback.java)的具体方法后,作为回调函数对象设置到联邦学习任务中。 - 参数 - `iflJobResultCallback`:联邦学习回调函数。 ## getFlName ```java public String getFlName() ``` 用于获取用户设置的模型脚本包路径。 - 返回值 String类型的模型脚本包路径。 ## setFlName ```java public void setFlName(String flName) ``` 设置模型脚本包路径。我们提供了两个类型的模型脚本供大家参考([有监督情感分类任务](https://gitee.com/mindspore/federated/tree/r0.1/example/quick_start_flclient/src/main/java/com/mindspore/flclient/demo/albert)、[LeNet图片分类任务](https://gitee.com/mindspore/federated/tree/r0.1/example/quick_start_flclient/src/main/java/com/mindspore/flclient/demo/lenet)),对于有监督情感分类任务,该参数可设置为所提供的脚本文件[AlBertClient.java](https://gitee.com/mindspore/federated/blob/r0.1/example/quick_start_flclient/src/main/java/com/mindspore/flclient/demo/albert/AlbertClient.java) 的包路径`com.mindspore.flclient.demo.albert.AlbertClient`;对于LeNet图片分类任务,该参数可设置为所提供的脚本文件[LenetClient.java](https://gitee.com/mindspore/federated/blob/r0.1/example/quick_start_flclient/src/main/java/com/mindspore/flclient/demo/lenet/LenetClient.java) 的包路径`com.mindspore.flclient.demo.lenet.LenetClient`。同时,用户可参考这两个类型的模型脚本,自定义模型脚本,然后将该参数设置为自定义的模型文件ModelClient.java(需继承于类[Client.java](https://gitee.com/mindspore/federated/blob/r0.1/mindspore_federated/device_client/src/main/java/com/mindspore/flclient/model/Client.java))的包路径即可。 - 参数 - `flName`: 模型脚本包路径。 ## getTrainModelPath ```java public String getTrainModelPath() ``` 用于获取用户设置的训练模型路径trainModelPath。 - 返回值 String类型的训练模型路径trainModelPath。 ## setTrainModelPath ```java public void setTrainModelPath(String trainModelPath) ``` 设置训练模型路径trainModelPath。 - 参数 - `trainModelPath`: 训练模型路径。 ## getInferModelPath ```java public String getInferModelPath() ``` 用于获取用户设置的推理模型路径inferModelPath。 - 返回值 String类型的推理模型路径inferModelPath。 ## setInferModelPath ```java public void setInferModelPath(String inferModelPath) ``` 设置推理模型路径inferModelPath。 - 参数 - `inferModelPath`: 推理模型路径。 ## getSslProtocol ```java public String getSslProtocol() ``` 用于获取用户设置的端云HTTPS通信所使用的TLS协议版本。 - 返回值 String类型的端云HTTPS通信所使用的TLS协议版本。 ## setSslProtocol ```java public void setSslProtocol(String sslProtocol) ``` 用于设置端云HTTPS通信所使用的TLS协议版本, 设置了白名单,目前只支持"TLSv1.3"或者"TLSv1.2"。只在HTTPS通信场景中使用。 - 参数 - `sslProtocol`: 端云HTTPS通信所使用的TLS协议版本。 ## getTimeOut ```java public int getTimeOut() ``` 用于获取用户设置的端侧通信的超时时间timeOut。 - 返回值 int类型的端侧通信的超时时间timeOut。 ## setTimeOut ```java public void setTimeOut(int timeOut) ``` 用于设置端侧通信的超时时间timeOut。 - 参数 - `timeOut`: 端侧通信的超时时间。 ## getSleepTime ```java public int getSleepTime() ``` 用于获取用户设置的重复请求的等待时间sleepTime。 - 返回值 int类型的重复请求的等待时间sleepTime。 ## setSleepTime ```java public void setSleepTime(int sleepTime) ``` 用于设置重复请求的等待时间sleepTime。 - 参数 - `sleepTime`: 重复请求的等待时间。 ## isUseElb ```java public boolean isUseElb() ``` 是否模拟弹性负载均衡,即客户端将请求随机发给一定范围内的server地址。 - 返回值 boolean类型,true代表客户端会将请求随机发给一定范围内的server地址, false客户端的请求会发给固定的server地址。 ## setUseElb ```java public void setUseElb(boolean useElb) ``` 用于设置是否模拟弹性负载均衡,即客户端将请求随机发给一定范围内的server地址。 - 参数 - `useElb`: 是否模拟弹性负载均衡,默认为false。 ## getServerNum ```java public int getServerNum() ``` 用于获取用户设置的模拟弹性负载均衡时可发送请求的server数量。 - 返回值 int类型的模拟弹性负载均衡时可发送请求的server数量。 ## setServerNum ```java public void setServerNum(int serverNum) ``` 用于设置模拟弹性负载均衡时可发送请求的server数量。 - 参数 - `serverNum`: 模拟弹性负载均衡时可发送请求的server数量,默认为1。 ## isPkiVerify ```java public boolean isPkiVerify() ``` 是否进行端云认证。 - 返回值 boolean类型,true代表进行端云认证,false代表不进行端云认证。 ## setPkiVerify ```java public void setPkiVerify(boolean pkiVerify) ``` 用于设置是否进行端云认证。 - 参数 - `pkiVerify`: 是否进行端云认证。 ## getEquipCrlPath ```java public String getEquipCrlPath() ``` 获取用户设置的设备证书的CRL证书路径equipCrlPath,此参数用于Android环境。 - 返回值 String类型的证书路径equipCrlPath。 ## setEquipCrlPath ```java public void setEquipCrlPath(String certPath) ``` 用于设置设备证书的CRL证书路径,用于验证数字证书是否被吊销,此参数用于Android环境。 - 参数 - `certPath`: 证书路径。 ## getValidInterval ```java public long getValidInterval() ``` 获取用户设置的有效迭代时间间隔validIterInterval,此参数用于Android环境。 - 返回值 long类型的有效迭代时间间隔validIterInterval。 ## setValidInterval ```java public void setValidInterval(long validInterval) ``` 用于设置有效迭代时间间隔validIterInterval,建议时长为端云间一个训练epoch的时长(单位:毫秒),用于防范重放攻击,此参数用于Android环境。 - 参数 - `validInterval`: 有效迭代时间间隔。 ## getThreadNum ```java public int getThreadNum() ``` 获取联邦学习训练和推理时使用的线程数,默认值为1。 - 返回值 int类型的线程数threadNum。 ## setThreadNum ```java public void setThreadNum(int threadNum) ``` 设置联邦学习训练和推理时使用的线程数。 - 参数 - `threadNum`: 线程数。 ## getCpuBindMode ```java public int getCpuBindMode() ``` 获取联邦学习训练和推理时线程所需绑定的cpu内核。 - 返回值 将枚举类型的cpu内核cpuBindMode转换为int型返回。 ## setCpuBindMode ```java public void setCpuBindMode(BindMode cpuBindMode) ``` 设置联邦学习训练和推理时线程所需绑定的cpu内核。 - 参数 - `cpuBindMode`: BindMode枚举类型,其中BindMode.NOT_BINDING_CORE代表不绑定内核,由系统自动分配,BindMode.BIND_LARGE_CORE代表绑定大核,BindMode.BIND_MIDDLE_CORE代表绑定中核。 ## getHybridWeightName ```java public List getHybridWeightName(RunType runType) ``` 混合学习模式时使用。获取用户设置的训练权重名和推理权重名。 - 参数 - `runType`: RunType枚举类型,只支持设置为RunType.TRAINMODE(代表获取训练权重名)、RunType.INFERMODE(代表获取推理权重名)。 - 返回值 List 类型,根据参数runType返回相应的权重名列表。 ## setHybridWeightName ```java public void setHybridWeightName(List hybridWeightName, RunType runType) ``` 由于混合学习模式时,云侧下发的权重,一部分导入到训练模型,一部分导入到推理模型,但框架本身无法判断,需要用户自行设置相关训练权重名和推理权重名。该方法提供给用户进行设置。 - 参数 - `hybridWeightName`: List 类型的权重名列表。 - `runType`: RunType枚举类型,只支持设置为RunType.TRAINMODE(代表设置训练权重名)、RunType.INFERMODE(代表设置推理权重名)。 ## getDataMap ```java public Map> getDataMap() ``` 获取用户设置的联邦学习数据集。 - 返回值 Map>类型的数据集。 ## setDataMap ```java public void setDataMap(Map> dataMap) ``` 设置联邦学习数据集。 - 参数 - `dataMap`: Map>类型的数据集,map中key为RunType枚举类型,value为对应的数据集列表,key为RunType.TRAINMODE时代表对应的value为训练相关的数据集列表,key为RunType.EVALMODE时代表对应的value为验证相关的数据集列表, key为RunType.INFERMODE时代表对应的value为推理相关的数据集列表。 ## getServerMod ```java public ServerMod getServerMod() ``` 获取联邦学习训练模式。 - 返回值 ServerMod枚举类型的联邦学习训练模式。 ## setServerMod ```java public void setServerMod(ServerMod serverMod) ``` 设置联邦学习训练模式。 - 参数 - `serverMod`: ServerMod枚举类型的联邦学习训练模式,其中ServerMod.FEDERATED_LEARNING代表普通联邦学习模式(训练和推理使用同一个模型)ServerMod.HYBRID_TRAINING代表混合学习模式(训练和推理使用不同的模型,且云侧也包含训练过程)。 ## getBatchSize ```java public int getBatchSize() ``` 获取联邦学习训练和推理时使用的单步训练样本数,即batch size。 - 返回值 int类型的单步训练样本数batchSize。 ## setBatchSize ```java public void setBatchSize(int batchSize) ``` 设置联邦学习训练和推理时使用的单步训练样本数,即batch size。需与模型的输入数据的batch size保持一致。 - 参数 - `batchSize`: 单步训练样本数,即batch size。