面向大规模联邦学习系统设计
1 INTRODUCTION
利用Tensorflow对存储在手机上的数据进行深度学习训练
权重在云中利用联邦学习进行聚合,并将该模型推送回收机
以复杂方式(例如,时区相关性)与本地数据分布相关的设备可用性;
不可靠的设备连接和中断的执行;
跨不同可用性的设备协调锁定步骤执行;
有限的设备存储和计算资源。
2 PROTOCOL(协议)
2.1 Basic Notions(基本概念)
1、在每轮通讯中,服务器告诉选择的设备使用FL计划运行什么计算——一个包含TensorFlow图和如何执行它的指令的数据结构。
2、一旦建立了一轮,接下来服务器将向每个参与者发送当前的全局模型参数和任何其他必要的状态作为FL检查点(本质上是TensorFlow会话的序列化状态)
3、每个参与者根据全局状态及其本地数据集执行本地计算,并以FL检查点的形式向服务器发送更新。
2.2 Phases(阶段)
该通信协议使设备能够在轮之间推进FL种群的全局、单例模型。整个协议由以下三个部分构成:
选择
服务器根据某些目标(如参与设备的最佳数量)选择连接设备的子集(通常每轮有数百个设备参与)。如果未选择设备参与,服务器会在稍后的时间点以重新连接的指令进行响应。
配置
服务器是根据所选设备选择的聚合机制来配置的(例如,简单聚合或安全聚合)。服务器将FL预计计划和带有全局模型的FL检查点发送到每个设备。
报告
如图,未及时报告或未对服务器的配置作出反应的分散设备将被简单地忽略。
2.3 Pace Steering(速度转向)
3 DEVICE
这一部分描述了参与 FL 的设备的软件架构。
Example Store: 存储数据。本文建议限制 Example Store 的大小,并且如果合适的话,自动删除超过预定存储时长的数据。 FL Runtime: 计算模型更新或对模型质量进行评估。如上图所示,控制流组成如下:
Multi-Tenancy: 我们的实现提供了一个 multi-tenant 架构,支持在同一个应用程序(或服务)中对多个 FL populations 进行训练。该架构允许在多个训练活动之间进行协调,避免设备被许多同时进行的 training sessions 所超载。 Attestation: 我们希望设备能匿名参与 FL,这就排除了通过用户身份验证它们的可能性。在不验证用户身份的情况下,我们需要防止来自非真实设备的攻击影响 FL 的结果。
4 SERVER
FL服务器的设计是由需要操作多个数量级的人口规模和其他维度所驱动的。
服务器必须使用规模从数十个设备(开发期间)到数亿个设备的FL种群,并能够处理参与者数量从数十个设备到数万个设备的轮数。 此外,在每一轮中收集和通信的更新的大小可以从千字节到几十兆字节不等。 最后,根据设备空闲和充电的时间,进出任何特定地理区域的流量可能会在一天内发生巨大变化。
4.1 Actor Model
4.2 Architecture
Coordinators:最高级别的参与者,它使全局同步和推进回合步调一致。服务器中有多个 Coordinators,每个 Coordinator 负责一个 FL population 的设备群。协调员接收有关每个选择器连接了多少设备的信息,并根据计划的FL任务指示他们接受多少设备参与。
Selectors:负责接受和转发设备连接。他们定期从协调员那里收到有关每个FL群体需要多少设备的信息,他们使用这些信息来做出是否接受每个设备的本地决策。在产生主聚合器和一组聚合器之后,协调器指示选择器将其连接的设备的子集转发到聚合器,从而允许协调器有效地将设备分配给FL任务,而不管有多少设备可用。
Master Aggregators:管理每个FL任务的轮次。为了根据设备数量和更新大小进行扩展,它们会做出动态决策,以生成一个或多个工作委派给的聚合器。
4.3 Pipelining
虽然每一轮的 Selection、Configuration 和 Reporting 阶段是线性顺序的,但 Selection 阶段并不依赖于前一轮的任何输入。我们的系统架构支持这种流水线,而不增加额外的复杂性,因为并行性是通过选择器角色连续运行选择过程而实现的。
4.4 Failure Modes
5 ANALYTICS
在设备和服务器之间的交互中有许多因素和故障保护措施。此外,许多平台活动发生在我们既不能控制也不能访问的设备上。因此,我们依靠分析来了解该领域的实际情况,并监控设备的健康统计数据。在设备方面,我们执行的是计算密集型操作,必须避免浪费手机的电池或带宽,或降低手机的性能。为了确保这一点,我们将几个活动和健康参数记录到云中。例如:训练被激活的设备状态,运行的频率和时间,使用的内存,检测到的错误,使用的手机型号/ OS / FL运行时版本等等。我们还为训练回合中的每个状态记录一个事件,并使用这些日志生成发生在所有设备上的状态转换序列的ASCII可视化。在服务器端,我们类似地收集信息,例如每个训练回合有多少设备被接受和拒绝,回合各个阶段的时间,上传和下载数据的吞吐量,错误等等。
译者简介:
齐天宇,北京理工大学自动化学院智能信息与控制研究所二年级研究生。主要研究兴趣包括机器学习、联邦学习、隐私保护。知乎:一朵小脑花。