在 AWS 上使用 FedML、Amaz

在 AWS 上使用 FedML、Amazon EKS 和 Amazon SageMaker 的联邦学习

作者 :Randy DeFauw, Al Nevarez, Arnab Sinha, Chaoyang He, Salman Avestimehr, Hans Nesbitt, Prachi Kulkarni, Samir Lad, Stephen Kraemer, Tamer Sherif
日期 :2024年3月15日

关键要点

  • 联邦学习 (FL) 是一种以分散式方式训练机器学习模型的技术,特别适合于需要保护数据隐私的情况。
  • 利用 FedMLAmazon EKSAmazon SageMaker 可以在保持数据安全的情况下协作训练 ML 模型。
  • 在医疗保健领域,FL 可以提高患者预测的准确性,并遵从严格的数据隐私规范。

许多组织正在实施机器学习(ML)以通过自动化和使用大型分散数据集来增强商业决策。然而,跨不同地点共享未经清理的敏感信息会带来重大安全和隐私风险,特别是在医疗等受监管行业中。为了应对这一问题,联邦学习(FL)作为一种分散式的合作 ML 训练技术,提供了数据隐私的保障,同时保持准确性和忠实性。FL训练在客户端的独立安全会话中进行,客户仅将输出模型参数发送到集中式伺服器,而不是实际数据。这一方式减轻了数据隐私的担忧,同时促进了有效的模型训练协作。

尽管 FL为改善数据隐私和安全性迈出了一步,但并不是保证的解决方案。在缺乏访问控制和加密的安全网络中,敏感信息仍然会暴露给攻击者。此外,若通过推断攻击重建本地训练的信息也可能会泄露私人数据。为了减轻这些风险,FL模型在与训练协调器分享信息之前,使用个性化的训练算法及有效的掩码和参数化。强大的网络控制可以进一步降低推断和导出风险。

在本文中,我们分享了一种使用 **** 、**** 和 **** 的 FL方法,旨在提升患者预后的同时解决数据隐私和安全问题。

医疗领域中联邦学习的必要性

医疗领域在做出准确的患者护理预测和评估时,依赖于分散的数据源。为了保护隐私而限制可用的数据源,会对结果准确性造成负面影响,最终影响患者照护质量。因此,在 AWS 客户确保跨分散实体的隐私和安全时,ML 产生了挑战。

医疗组织必须遵循严格的合规性规定,例如美国的健康保险流通与问责法案(HIPAA),同时实施 FL解决方案。在医疗行业中,数据隐私、安全性和合规性的保障变得更加关键,这需要可靠的加密、访问控制、审计机制和安全通信协议。此外,医疗数据集通常包含复杂和异构的数据类型,这使得在 FL 设置中实现数据标准化和互操作性成为挑战。

使用案例概述

本篇中列出的使用案例涉及不同组织的心脏病数据,ML 模型将运行分类算法来预测患者的心脏病。由于这些数据来自不同组织,我们使用联邦学习来整合这些发现。

来自加州大学尔湾分校机器学习资料库的


是一个被广泛使用的心血管研究和预测建模数据集。它包含303个样本,每个样本代表一名患者,并包括临床和人口统计属性以及心脏病的有无。

这个多变量数据集包含患者信息的76个属性,其中14个属性最常用于开发和评估 ML 算法,以预测根据给定属性患者是否有心脏病。

FedML 框架

尽管市面上有多种 FL 框架可供选择,但我们选择使用 **** 框架,因为它是开源的并支持多种 FL 模式。FedML 提供了一套流行的开源库、MLOps 平台和应用生态系统,用于 FL解决方案的开发和部署。它提供全面的工具、库和算法,使用户能够在分散环境中实施和实验 FL 算法。FedML 解决了 FL中的数据隐私、通信和模型聚合等挑战,并提供友好的用户界面和可定制组件。FedML框架是模型无关的,包括最近新增对大型语言模型(LLMs)的支持。更多信息请参见 **** 。

FedML Octopus

在实际的 FL 使用案例中,系统层级和异质性是主要挑战,因为不同数据孤岛之间的基础设施可能有所不同(包括 CPU 和 GPU)。在这种情况下,可以使用 **** 。

FedML Octopus 是一个工业级的跨孤岛 FL 平台,用于跨组织和跨账户的训练。结合 FedMLMLOps,它允许开发者或组织以安全的方式在任何规模下进行开放合作。FedML Octopus 在每个数据孤岛内运行分散式训练范例,并使用同步或异步训练。

FedML MLOps

FedML MLOps 允许本地编写的代码在 FedML 框架中部署。在启动训练之前,您需要先建立 FedML 帐户,然后在 FedML Octopus中创建并上传服务器和客户端包。详细步骤可参考 **** 和 **** 。

解决方案概述

我们将 FedML 部署到多个 EKS 集群中,并与 SageMaker 集成来跟踪实验。我们使用 **** 部署所需的基础设施。EKS Blueprints 有助于组建完整的 EKS 集群,这些集群与运行所需的作业软件完全引导。使用 EKSBlueprints,可以用基础设施即代码(IaC)蓝图描述 EKS 环境的预期状态,如控制平面、工作节点和 Kubernetes附加组件。在配置蓝图之后,您可以使用持续部署自动化来跨多个 AWS 帐户和区域创建一致的环境。

本文中共享的内容反映了实际情况和经验,但重要的是要注意,不同地点的这些情况的部署可能有所不同。虽然我们使用单个 AWS 帐户和单独的 VPC,但重要的是要理解每个环境的具体情况和配置可能不同。因此,提供的信息应用作一般指南,并可能需要根据具体要求和当地条件进行调整。

以下图示展示了我们的解决方案架构。

删除)

除了 FedML MLOps 在每次训练运行中的追踪外,我们还使用 **** 用来跟踪每个客户端模型和集中模型的性能。

SageMaker Experiments 是 SageMaker 的一项功能,允许您创建、管理、分析和比较 ML实验。通过记录实验详情、参数和结果,研究者可以准确重现和验证他们的工作。这还便于对不同方法进行有效比较和分析,从而支持有根据的决策。跟踪实验还促进了迭代改进,提供了模型进展的见解,使研究者能够从以往的迭代中学习,最终加速更有效解决方案的开发。

我们将以下内容发送到 SageMaker Experiments 中:

  • 模型评估指标 – 训练损失和曲线下面积(AUC)
  • 超参数 – 迭代次数、学习率、批量大小、优化器和权重衰减

前提条件

要跟随本文,您应具备以下前提条件:

  • 一个 AWS 帐户
  • 本地访问 **** (AWS CLI) 或使用 ****
  • Terraform
  • kubectl
  • 一个 FedML 帐户 ID

部署解决方案

首先,将包含范例代码的库克隆到本地:

bash git clone https://github.com/aws-samples/federated-learning-with-fedml- on-aws

然后使用以下命令部署使用案例基础设施:

bash terraform init terraform apply

Terraform 模板可能需要 20-30 分钟才能完全部署。部署完成后,请按照以下部分的步骤运行 FL 应用程序。

创建 MLOps 部署包

作为 FedML 文档的一部分,我们需要创建将由 MLOps 平台分发的客户端和服务器包,以开始训练。

要创建这些包,请运行位于根目录中的以下脚本:

bash . ./build_mlops_pkg.sh

这将在项目根目录的以下目录中创建相应的包:

bash mlops/dist-packages

上传包到 FedML MLOps 平台

完成以下步骤以下载包:

  1. 在 FedML UI 上,选择导航窗格中的 我的应用程序
  2. 选择 新应用程序

删除)

  1. 从您的工作站上传客户端和服务器包。

删除)

  1. 您还可以调整超参数或创建新参数。

删除)

触发联邦训练

要运行联邦训练,请完成以下步骤:

  1. 在 FedML UI 上,选择导航窗格中的 项目列表
  2. 选择 创建新项目
  3. 输入组名和项目名称,然后选择 确定

![创建新项目](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/02/15/ML-3539-new- 删除)

  1. 选择新创建的项目,然后选择 创建新运行 来触发训练运行。

![触发新运行](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/02/15/ML-3539-new- 删除)

  1. 选择边缘客户端设备和集中聚合器服务器进行此次训练运行。
  2. 选择在之前步骤中创建的应用程序。

删除)

  1. 更新任意超参数或使用默认设置。
  2. 选择 开始 开始训练。

![开始训练](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/02/15/ML-3539-start- 删除)

  1. 选择 训练状态 标签,并等待训练运行完成。您也可以浏览可用的标签。
  2. 当训练完成后,选择 系统 标签查看您在边缘服务器的训练时间与聚合事件。

查看结果和实验详情

训练完成后,您可以使用 FedML 和 SageMaker 查看结果。

在 FedML UI 上的 模型 标签中,您可以看到聚合器和客户端模型。您也可以从网站下载这些模型。

![查看结果](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/02/15/ML-3539-View- 删除)

您还可以登录到 **** ,并在导航窗格中选择 实验

![SageMaker删除)

以下截图显示了登录的实验情况。

![登录的实验](https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/02/15/ML-3539-logged- 删除)

实验追踪代码

在本节中,我们探讨整合 SageMaker 实验追踪与 FL 框架训练的代码。

在您选择的编辑器中,打开以下文件夹以查看注入 SageMaker 实验追踪代码的修改:

bash cd fl_fedml.ai/

为了追踪训练,我们使用 **** 的代码,通过 log_parameter

Leave a Reply

Required fields are marked *