IBM Cloud Pak® for Data 4.7 版本将于 2025 年 7 月 31 日结束支持(EOS)。 欲了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告。
在 IBM Cloud Pak for Data 4.7 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。
Federated Learning Tensorflow 教程
本教程演示 Federated Learning 的用法,目标是使用来自不同用户的数据训练机器学习模型,而无需用户共享其数据。 这些步骤在使用 UI 和 Tensorflow 框架的低代码环境中完成。
这是用于运行 UI 驱动的 Federated Learning 试验的逐步教程。 要查看 API 驱动的方法的代码样本,请参阅 Federated Learning Tensorflow 样本。
在本教程中, admin 指的是启动 Federated Learning 试验的用户, party 指的是在该试验由管理员启动后发送其模型结果的一个或多个用户。 虽然教程可以由管理员和多个参与方完成,但单个用户也可同时以管理员和参与方身份完成整个运行过程。 为更简单地进行演示,在以下教程中,一个参与方仅提交一个数据集。 有关管理员和参与方的更多信息,请参阅 术语。
在本教程中,您将学习:
步骤 1: 以管理员身份启动 Federated Learning
在本教程中,您将使用 Tensorflow 框架和 MNIST 数据集来训练 Federated Learning 试验。
准备工作
- 登录到 Cloud Pak for Data 集群。
- 安装 Watson Machine Learning 映像 (如果未在环境中设置)。
- 登录 IBM Cloud Pak for Data 主机。
- 使用现有 项目 或创建新的项目。 您必须至少具有编辑者许可权。
启动聚集器
创建联合学习试验资产:
单击项目中的 资产 选项卡。
单击 新建资产> 联合学习。
输入试验的 名称 和 (可选) 描述。
配置试验。
在 " 配置 " 页面上,选择 硬件规范。
在 机器学习框架 下拉列表下,选择 Tensorflow 2。
选择 模型类型。
下载未训练的模型。
返回 Federated Learning 试验中,单击模型规范下的选择。
将已下载的名为
tf_mnist_model.zip的文件拖到 上载 文件 box.1上。 对于 软件规范 下拉列表,选择runtime-23.1-py3.10。为模型提供名称,然后单击 添加。

单击 融合方法的 加权平均值 ,然后单击 下一步。

定义超参数。
接受缺省超参数或根据需要进行调整。
完成后,请单击下一步。
选择远程训练系统。
- 单击添加新系统。

请给该远程训练系统命名。
在 允许的身份下,选择作为参与方的用户,然后单击 添加。 在本教程中,您可以为演示目的添加虚拟用户或自己。
必须将此用户作为具有 查看者 或更高许可权的合作者添加到项目中。 针对您打算使用的每个远程参与方重复此步骤,以添加其他系统。完成后,请单击添加系统。

返回到 " 选择远程训练系统 " 页面,验证是否选择了系统,然后单击 下一步。
复查设置,然后单击创建。
监视状态。 该 Federated Learning 试验启动后,其状态为暂挂中。 当该试验准备就绪,可供参与方连接时,状态会更改为设置 - 正在等待远程系统。 此过程可能需要几分钟时间。
单击 查看设置信息 以下载可以在远程参与方上运行的参与方配置和参与方连接器脚本。
单击创建的每个远程训练系统之外的下载图标,然后单击 参与方连接器脚本。 这将为您提供参与方连接器脚本。 请将该脚本保存到机器上的某个目录中。

步骤 2: 培训模型作为参与方
执行以下步骤以将模型训练为参与方:
确保您正在使用与管理员相同的 Python 版本。 使用不同的 Python 版本可能会导致兼容性问题。 要查看与不同框架兼容的 Python 版本,请参阅 框架和 Python 版本兼容性。
创建新的本地目录,并将参与方连接器脚本放入其中。
通过右键单击来下载数据处理程序 mnist_keras_data_handler.py,然后单击将链接另存为。 将其保存到与参与方连接器脚本相同的目录。
从 Gallery 中下载 MNIST 手写数据集。 在与参与方连接器脚本,数据处理程序和其余文件相同的目录中,通过运行 unzip 命令
unzip MNIST-pkl.zip将其解压缩。安装 Watson Machine Learning。
如果您正在使用 Linux,请运行
pip install 'ibm-watson-machine-learning[fl-rt23.1-py3.10]'。如果使用带有 M 系列 CPU 和 Conda 的 Mac OS ,请下载安装脚本 ,然后运行
./install_fl_macos.sh fl-rt23.1-py3.10 <name for new conda environment>。
现在,在同一目录下有聚会连接器脚本、mnist_keras_data_handler.py、mnist-keras-test.pkl和mnist-keras-train.pkl、数据处理器。
您的参与方连接器脚本类似于以下内容。 通过填写远程训练系统中定义的用户的数据文件位置,数据处理程序,用户名和密码来对其进行编辑。
from ibm_watson_machine_learning import APIClient wml_credentials = { "username": "<username>", "password": "<password>", "instance_id" : "wml_local", "url": "https://cpd-cluster.com", "version": "4.6" } wml_client = APIClient(wml_credentials) wml_client.set.default_project("XXX-XXX-XXX-XXX-XXX") party_metadata = { wml_client.remote_training_systems.ConfigurationMetaNames.DATA_HANDLER: { # Supply the name of the data handler class and path to it. # The info section may be used to create a key value pair for the file type of local data set or the path of your data set. # For example, # "name": "MnistTFDataHandler", # This is the name of the data handler class # "path": "pwd + "mnist_sklearn_data_handler.py"", # "info": { # "train_file": pwd + "/mnist-keras-train.pkl", # "test_file": pwd + "/mnist-keras-test.pkl" # } "name": "<data handler>", "path": "<path to data handler>", "info": { "<information to pass to data handler>" } } } party = wml_client.remote_training_systems.create_party("XXX-XXX-XXX-XXX-XXX", party_metadata) party.monitor_logs() party.run(aggregator_id="XXX-XXX-XXX-XXX-XXX", asynchronous=False)运行参与方连接器脚本:
python3 rts_<RTS Name>_<RTS ID>.py。
从 UI 中,可以监视该 Federated Learning 试验的状态。
步骤 3: 以联机方式保存并部署模型
在此部分中,您将学习保存和部署训练的模型。
保存模型。
- 在已完成的 Federated Learning 试验中,单击 将模型保存到项目。
- 为模型提供名称,然后单击 保存。
- 转至项目主页。
如果没有部署空间,请创建部署空间。
- 从导航菜单
,单击部署。
- 单击新建部署空间。
- 填写字段,然后单击 创建。
- 从导航菜单
将模型提升到空间。
- 返回到项目,然后单击 资产 选项卡。
- 在 模型 部分中,单击模型以查看其详细信息页面。
- 单击 提升到空间。
- 为已训练的模型选择部署空间。
- 选择 提升模型后转至空间中的模型 选项。
- 单击提升。
当模型显示在部署空间内时,单击 新建部署。
- 选择 联机 作为 部署类型。
- 指定部署名称。
- 单击创建。
单击 部署 选项卡以监视模型的部署状态。
后续步骤
准备好创建您自己的定制联合试验了吗? 请参阅创建 Federated Learning 试验中的高级步骤。