0 / 0
Go back to the English version of the documentation
Federated Learning Tensorflow 教程
Last updated: 2024年11月28日
Federated Learning Tensorflow 教程

本教程演示 Federated Learning 的用法,目标是使用来自不同用户的数据训练机器学习模型,而无需用户共享其数据。 这些步骤在使用 UI 和 Tensorflow 框架的低代码环境中完成。

注:

这是用于运行 UI 驱动的 Federated Learning 试验的逐步教程。 要查看 API 驱动的方法的代码样本,请参阅 Federated Learning Tensorflow 样本

提示:

在本教程中, admin 指的是启动 Federated Learning 试验的用户, party 指的是在该试验由管理员启动后发送其模型结果的一个或多个用户。 虽然教程可以由管理员和多个参与方完成,但单个用户也可同时以管理员和参与方身份完成整个运行过程。 为更简单地进行演示,在以下教程中,一个参与方仅提交一个数据集。 有关管理员和参与方的更多信息,请参阅 术语

在本教程中,您将完成这些任务:

预览教程

观看本视频短片教程,了解如何使用watsonx.aiStudio 创建联合学习实验。

此视频提供了一种可视方法来学习本文档中的概念和任务。

先决条件

验证Python版本

确保您正在使用与管理员相同的 Python 版本。 使用不同的 Python 版本可能会导致兼容性问题。 要查看与不同框架兼容的 Python 版本,请参阅 框架和 Python 版本兼容性

打开项目

  1. 使用现有 项目 或创建新的项目。 您必须至少具有管理许可权。

  2. 将watsonx.aiRuntime 服务与您的项目关联。

    1. 在项目中,单击 管理> 服务和集成
    2. 单击 关联服务
    3. 从列表中选择 "watsonx.ai运行时实例,然后点击 "协理;如果没有设置实例,则点击 "新服务

    关联服务的截屏

任务 1:以管理员身份启动 Federated Learning

在您的项目中,您将创建一个联邦学习实验,其中包含Tensorflow使用 MNIST 数据集的框架。

任务 1a: 确定实验细节

  1. 在您的项目中,点击资产标签。

  2. 点击新资产 > 在分布式数据上训练模型创建联邦学习实验资产。

  3. 输入试验的 名称 和 (可选) 描述。

  4. 在 "选择机器学习实例"下验证相关的watsonx.aiRuntime 实例。 如果没有看到相关的watsonx.aiRuntime 实例,请按照以下步骤操作:

    1. 单击 关联 Machine Learning 服务实例

    2. 选择现有实例并单击 关联,或者创建 新服务

    3. 单击 重新装入 以查看关联的服务。

      关联服务的截屏

    4. 单击下一步

任务 1b: 配置实验

  1. 在 " 配置 " 页面上,选择 硬件规范

  2. 对于 机器学习框架,选择 Tensorflow 2

  3. 模型类型选择分类

  4. 下载未训练的模型

  5. 返回 Federated Learning 试验中,单击模型规范下的选择

    1. 将已下载的名为 tf_mnist_model.zip 的文件拖到 上载 文件框中。

    2. 如有必要,在 runtime-23.1-py3.10 下拉菜单中选择软件规范

    3. 键入模型名称,然后单击 添加

      导入初始模型的截屏

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

    Fusion 方法 UI 的截屏

任务 1c: 定义超参数

  1. 接受缺省超参数或根据需要进行调整。

  2. 完成后,请单击下一步

任务 1d: 选择远程培训系统

  1. 单击添加新系统

    添加 RTS UI 的截屏

  2. 键入远程培训系统的名称。

  3. 允许的身份下,选择作为参与方的用户,然后单击 添加。 在本教程中,您可以添加一个虚构的用户或您自己,以用于演示目的。
    必须将此用户作为协作者添加到您的项目中编辑或更高的权限。 针对您打算使用的每个远程参与方重复此步骤,以添加其他系统。

  4. 完成后,请单击添加系统

    添加用户的截屏

  5. 返回到 " 选择远程训练系统 " 页面,验证是否选择了系统,然后单击 下一步

任务 1e: 查看设置

  1. 查看设置。 然后单击 创建

  2. 监视状态。 该 Federated Learning 试验启动后,其状态为暂挂中。 当该试验准备就绪,可供参与方连接时,状态会更改为设置 - 正在等待远程系统。 这可能需要几分钟。

  3. 单击 查看设置信息,下载聚会配置和聚会连接器脚本,您可以在远程聚会上运行这些配置和脚本。

  4. 点击您创建的每个远程培训系统旁边的下载配置图标 "下载配置。 将 Party Connector 脚本保存到你机器上的一个目录中,名称为remote-test-system-configuration.py

    远程训练系统设置信息

  5. 单击完成

检查点图标检查您的进度

下图显示了状态为“等待远程系统”的实验。

下图显示了状态为“等待远程系统”的实验。

任务 2:将模型训练成派对

为了训练模型,您需要下载数据集,然后编辑并运行python脚本。 执行以下步骤以将模型训练为参与方:

任务2a:下载数据集和脚本

  1. 新建一个本地目录,并将下载的 Party Connector 脚本放入 Task 中1e进入新目录。

  2. 右击文件名,然后单击 "另存链接",下载数据处理器mnist_keras_data_handler.py。 将其保存到与参与方连接器脚本相同的目录。

    1. 编辑数据处理器 python 脚本,将 ibm_watson_machine_learning 更改为 ibm_watsonx_ai

    2. 保存该文件。

  3. 从我们的资源中心下载 MNIST 手写数据集。 在与派对连接器脚本、数据处理程序和其余文件相同的目录中,通过运行 unzip 命令对其进行解压缩unzip MNIST-pkl.zip
    你现在有了派对连接器脚本,mnist_keras_data_handler.pymnist-keras-test.pklmnist-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 ,并做以下更改:

  1. 提供您的凭证:粘贴远程培训系统中定义的用户的 API 密钥。 如果您没有 API 密钥,请转到IBM CloudAPI 密钥页面,然后单击创建 API 密钥,填写字段并单击创建

  2. 在里面party_metadata字段,提供名称、路径和信息,应类似于以下 JSON 文本。

    "name": "MnistTFDataHandler",
     "path": "mnist_keras_data_handler.py",
     "info": {
             "train_file": "mnist-keras-train.pkl",
     	     "test_file": "mnist-keras-test.pkl"
             }
    
  3. 保存聚会连接器脚本。

  4. 使用以下任一方式运行派对连接器脚本python或者python3取决于您安装的内容。

    python remote-test-system-configuration.py
    

从 UI 中,可以监视该 Federated Learning 试验的状态。

检查点图标检查您的进度



下图显示了已完成的实验

下图显示了已完成的实验。

任务 3:保存并在线部署模型

在此部分中,您将学习保存和部署训练的模型。

任务 3a: 保存模型

  1. 在已完成的联合学习实验中,单击 保存聚合
  2. Save aggregated model to project 屏幕上,键入模型名称。 然后单击 创建
  3. 当您看到模型已创建的通知时,单击在项目中查看。 如果错过了通知,请点击项目名称返回资产选项卡,然后点击模型名称进行查看。

任务 3b: 将模型提升到空间

  1. 从模型详细信息页面,单击 "推广 "到部署空间"提升到部署空间
  2. 从列表中选择 目标空间,或创建新的部署空间。
    1. 选择 创建新部署空间

    2. 键入部署空间的名称。

    3. 选择您的存储服务。

    4. 选择您的机器学习服务。

    5. 单击创建

    6. 创建部署空间后,关闭窗口。

  3. 选择 提升模型后转至空间中的模型 选项。
  4. 单击提升

任务3c:创建和查看在线部署

  1. 当模型显示在部署空间内时,单击 新建部署
  2. 选择 联机 作为 部署类型
  3. 指定部署名称。
  4. 单击创建
  5. 等待部署状态更改为 已部署,然后单击部署名称。
  6. 查看端点和代码片段,以便在应用程序中使用此部署。

检查点图标检查您的进度



下图显示了部署情况

下图显示了部署情况。

后续步骤

准备好创建您自己的定制联合试验了吗? 请参阅创建 Federated Learning 试验中的高级步骤。

父主题: Federated Learning 教程和样本

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more