本教程演示 Federated Learning 的用法,目标是使用来自不同用户的数据训练机器学习模型,而无需用户共享其数据。 这些步骤在使用 UI 和 Tensorflow 框架的低代码环境中完成。
这是用于运行 UI 驱动的 Federated Learning 试验的逐步教程。 要查看 API 驱动的方法的代码样本,请参阅 Federated Learning Tensorflow 样本。
在本教程中, admin 指的是启动 Federated Learning 试验的用户, party 指的是在该试验由管理员启动后发送其模型结果的一个或多个用户。 虽然教程可以由管理员和多个参与方完成,但单个用户也可同时以管理员和参与方身份完成整个运行过程。 为更简单地进行演示,在以下教程中,一个参与方仅提交一个数据集。 有关管理员和参与方的更多信息,请参阅 术语。
在本教程中,您将完成这些任务:
预览教程
观看本视频短片教程,了解如何使用watsonx.aiStudio 创建联合学习实验。
此视频提供了一种可视方法来学习本文档中的概念和任务。
先决条件
验证Python版本
确保您正在使用与管理员相同的 Python 版本。 使用不同的 Python 版本可能会导致兼容性问题。 要查看与不同框架兼容的 Python 版本,请参阅 框架和 Python 版本兼容性。
打开项目
使用现有 项目 或创建新的项目。 您必须至少具有管理许可权。
将watsonx.aiRuntime 服务与您的项目关联。
- 在项目中,单击 管理> 服务和集成。
- 单击 关联服务。
- 从列表中选择 "watsonx.ai运行时实例,然后点击 "协理;如果没有设置实例,则点击 "新服务。
任务 1:以管理员身份启动 Federated Learning
在您的项目中,您将创建一个联邦学习实验,其中包含Tensorflow使用 MNIST 数据集的框架。
任务 1a: 确定实验细节
在您的项目中,点击资产标签。
点击新资产 > 在分布式数据上训练模型创建联邦学习实验资产。
输入试验的 名称 和 (可选) 描述。
在 "选择机器学习实例"下验证相关的watsonx.aiRuntime 实例。 如果没有看到相关的watsonx.aiRuntime 实例,请按照以下步骤操作:
单击 关联 Machine Learning 服务实例。
选择现有实例并单击 关联,或者创建 新服务。
单击 重新装入 以查看关联的服务。
单击下一步。
任务 1b: 配置实验
在 " 配置 " 页面上,选择 硬件规范。
对于 机器学习框架,选择 Tensorflow 2。
为模型类型选择分类。
下载未训练的模型。
返回 Federated Learning 试验中,单击模型规范下的选择。
将已下载的名为
tf_mnist_model.zip
的文件拖到 上载 文件框中。如有必要,在 runtime-23.1-py3.10 下拉菜单中选择软件规范。
键入模型名称,然后单击 添加。
单击 融合方法的 加权平均值 ,然后单击 下一步。
任务 1c: 定义超参数
接受缺省超参数或根据需要进行调整。
完成后,请单击下一步。
任务 1d: 选择远程培训系统
单击添加新系统。
键入远程培训系统的名称。
在 允许的身份下,选择作为参与方的用户,然后单击 添加。 在本教程中,您可以添加一个虚构的用户或您自己,以用于演示目的。
必须将此用户作为协作者添加到您的项目中编辑或更高的权限。 针对您打算使用的每个远程参与方重复此步骤,以添加其他系统。完成后,请单击添加系统。
返回到 " 选择远程训练系统 " 页面,验证是否选择了系统,然后单击 下一步。
任务 1e: 查看设置
查看设置。 然后单击 创建。
监视状态。 该 Federated Learning 试验启动后,其状态为暂挂中。 当该试验准备就绪,可供参与方连接时,状态会更改为设置 - 正在等待远程系统。 这可能需要几分钟。
单击 查看设置信息,下载聚会配置和聚会连接器脚本,您可以在远程聚会上运行这些配置和脚本。
点击您创建的每个远程培训系统旁边的下载配置图标 "。 将 Party Connector 脚本保存到你机器上的一个目录中,名称为
remote-test-system-configuration.py
。单击完成。
检查您的进度
下图显示了状态为“等待远程系统”的实验。
任务 2:将模型训练成派对
为了训练模型,您需要下载数据集,然后编辑并运行python脚本。 执行以下步骤以将模型训练为参与方:
任务2a:下载数据集和脚本
新建一个本地目录,并将下载的 Party Connector 脚本放入 Task 中1e进入新目录。
右击文件名,然后单击 "另存链接",下载数据处理器mnist_keras_data_handler.py。 将其保存到与参与方连接器脚本相同的目录。
编辑数据处理器 python 脚本,将
ibm_watson_machine_learning
更改为ibm_watsonx_ai
。保存该文件。
从我们的资源中心下载 MNIST 手写数据集。 在与派对连接器脚本、数据处理程序和其余文件相同的目录中,通过运行 unzip 命令对其进行解压缩
unzip MNIST-pkl.zip
。
你现在有了派对连接器脚本,mnist_keras_data_handler.py
,mnist-keras-test.pkl
和mnist-keras-train.pkl
在同一目录中。
任务2b:安装watsonx.ai运行时
如果您使用 Windows 或Linux ,运行以下命令:
pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
如果你使用的是带有 M 系列 CPU 和 Conda 的 Mac OS,请下载安装脚本然后运行:
./install_fl_rt23.1_macos.sh <name for new conda environment>
任务2c:编辑并运行 Party 连接器脚本
您的参与方连接器脚本与以下脚本类似:
from ibm_watsonx_ai import APIClient
wml_credentials = {
"url": "https://us-south.ml.cloud.ibm.com",
"apikey": "<API KEY>"
}
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 pass information to the
# data handler.
# For example,
# "name": "MnistSklearnDataHandler",
# "path": "example.mnist_sklearn_data_handler",
# "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)
编辑派对连接器文件,remote-test-systm-configuration.py
,并做以下更改:
提供您的凭证:粘贴远程培训系统中定义的用户的 API 密钥。 如果您没有 API 密钥,请转到IBM CloudAPI 密钥页面,然后单击创建 API 密钥,填写字段并单击创建。
在里面party_metadata字段,提供名称、路径和信息,应类似于以下 JSON 文本。
"name": "MnistTFDataHandler", "path": "mnist_keras_data_handler.py", "info": { "train_file": "mnist-keras-train.pkl", "test_file": "mnist-keras-test.pkl" }
保存聚会连接器脚本。
使用以下任一方式运行派对连接器脚本
python
或者python3
取决于您安装的内容。python remote-test-system-configuration.py
从 UI 中,可以监视该 Federated Learning 试验的状态。
检查您的进度
下图显示了已完成的实验
任务 3:保存并在线部署模型
在此部分中,您将学习保存和部署训练的模型。
任务 3a: 保存模型
- 在已完成的联合学习实验中,单击 保存聚合。
- 在 Save aggregated model to project 屏幕上,键入模型名称。 然后单击 创建。
- 当您看到模型已创建的通知时,单击在项目中查看。 如果错过了通知,请点击项目名称返回资产选项卡,然后点击模型名称进行查看。
任务 3b: 将模型提升到空间
- 从模型详细信息页面,单击 "推广 "到部署空间"。
- 从列表中选择 目标空间,或创建新的部署空间。
选择 创建新部署空间。
键入部署空间的名称。
选择您的存储服务。
选择您的机器学习服务。
单击创建。
创建部署空间后,关闭窗口。
- 选择 提升模型后转至空间中的模型 选项。
- 单击提升。
任务3c:创建和查看在线部署
- 当模型显示在部署空间内时,单击 新建部署。
- 选择 联机 作为 部署类型。
- 指定部署名称。
- 单击创建。
- 等待部署状态更改为 已部署,然后单击部署名称。
- 查看端点和代码片段,以便在应用程序中使用此部署。
检查您的进度
下图显示了部署情况
后续步骤
准备好创建您自己的定制联合试验了吗? 请参阅创建 Federated Learning 试验中的高级步骤。