@[TOC]联邦学习、分布式学习、协作学习

(一)联邦学习与分布式学习的区别

最大的区别应该就是**「中心服务器」对其他「计算节点」的控制权不同**。但具体来说,它们有以下几点不同之处:

中心服务器对数据和计算节点的控制权不同。
联邦:计算节点对数据具有绝对的控制权。中心服务器无法直接或间接操作计算节点上的数 据;计算节点可以随时停止计算和通信,退出学习过程。
分布:中心服务器对计算节点以及其中的数据具有较高的控制权,计算节点完全受中心服务器的控制,接收来自中心服务器的指令。例如,在 MapReduce 这种分布式计算模型中,中心服务器可以下发一个指令,让计算节点互相交换数据。

计算节点上数据分布类型不同。
联邦:并不能简单假设数据是独立同分布的,由于计算节点中的数据数据是独立产生的,他们往往表现出不同的分布特征(非独立同分布)。
分布:不同计算节点上的数据的划分通常是均匀、随机打乱的,它们具有独立同分布的特点,这样的特性非常适合设计高效的训练算法。

计算节点上数据量级不同。
联邦:然而在联邦学习的条件下,每个计算节点拥有的数据量与设备自身有关,很难保证不同计算节点拥有相近的数据量。
分布:分布式学习为了提高训练效率,通常都会把训练数据均匀分布在每个计算节点上,实现负载均衡。

计算节点稳定性不同。
分布式学习场景下的计算节点,通常都位于专用的机房中,用高速宽带进行互联,网络、运行环境都非常稳定。而参与联邦学习的计算节点可能是手机、平板等移动设备,这些设备因为用户的使用习惯,其所处的网络环境并不稳定,随时都可能与中心服务器断开连接。

通信代价不同。
因为分布式学习中的计算节点与中心服务器通常处于同一地理位置,而且有专用的通信条件,所以通信代价往往较小。而联邦学习中的计算节点可能分布在不同的地理位置,与中心服务器一般处于远程连接的状态,同时受不同设备网络带宽的影响,其通信代价要更高。

(二)联邦学习

在联邦学习环境中,数据以极不均匀的方式分布在数百万台设备上。非独立同分布

联邦学习无需在云中存储用户数据,但我们并没有就此止步。我们开发了一种安全聚合协议使用加密技术,因此协调服务器只能在100或1000个用户参与时解密平均更新 - 在平均之前不能检查单个设备的更新。

(三)分布式学习

数据并行(Data Parallelism)
数据并行性是另外一种完全不同的参数优化方法。数据并行化减少训练时间的一般思路是,采用n个workers同时并行计算n个不同的数据块(partitions,分区),来优化一个central model的参数。在这种情况下,把n个模型副本放在n个处理节点上,即每个节点(或进程)都拥有一个模型的副本。然后,每个worker使用指定的数据块来训练一个局部的模型副本。但是,可以让所有的workers同时一致工作,优化同一个目标。有几种方法来实现这一目标,在后面的章节中详细的讨论这些方法。

尽管如此,达到这一目标的一个常见的方法是采用一个集中的参数服务器。参数服务器的目标是负责收集来自于各个worker的参数更新(updates),以及处理来自各个worker的参数请求(request)。分布式学习过程首先将数据集分割成n个块(shards)。每个单独的块将被分配给一个特定的worker。接下来,每个worker从其shards中采样mini-batches的数据用于训练一个local model。在一个(或多个)mini-batches之后,每个worker将与参数服务器通信,发送变量更新请求。这个更新请求一般都是梯度∇fi(x)。最后,参数服务器将所有这些参数更新的梯度收集起来,求平均(更新),并把更新之后的值发送到每个worker。图2展示上述过程。
在这里插入图片描述
数据并行方法的示意图。在这种方法,采用n个worker(不一定在不同的机器上),并将数据集的数据块(分区)分配给每个worker。使用这个数据块,每个worker i将遍历一个的mini-batch的数据,生成梯度∇fi(x)。然后,将梯度∇fi(x)被发送给服务器参数,参数服务器PS将梯度收集起来,按照特定的更新方式(update mechanism)进行更新。

Logo

鸿蒙生态一站式服务平台。

更多推荐