『机器学习』MLSys提前看 | 机器学习的分布式优化方法( 八 )


【文章小结】
现代 GPU 及其运行时不允许在 GPU 中共存多个进程 。 对于 DL 任务来说 , 执行一个任务过程中空闲状态的内存无法释放给其它作业使用 , 这导致了巨大的资源浪费、性能损失、效率降低以及出现线头阻塞 (Head-of-lineblocking,HOL) 。 本文提出的 Salus 是一个整合的执行服务 , 它支持在复杂的、未修改的 DL 作业之间细粒度的 GPU 共享 。
Salus 是一种尝试 , 它还带来了很多需要进一步研究解决的问题 。 首先 , Salus 提供了一种机制 , 但策略问题是:在共享 GPU 上运行 DL 作业的最佳调度算法究竟是什么?本文探讨了集中简单的调度策略 , 但是对于最佳调度策略的判断依据未做讨论 。 其次 , 虽然本文没有重点介绍 , 但 Salus 可以扩展到同一台机器上的多个 GPU 甚至其他加速器 。 最后 , 作者提到 , 他们在下一步的工作中计划利用 RDMA 将 Salus 扩展到多台机器上的 GPU 中 。
Federated Optimization in Heterogeneous Networks
Distributed and parallel learning algorithms topic
https://arxiv.org/pdf/1812.06127.pdf
联邦学习已经成为了一种在远程设备网络中分发机器学习模型训练的有效方法 。 虽然都是针对机器学习的分布式优化 , 但是联邦学习与传统的分布式优化方法(例如本篇文章中我们分析的前两篇论文)有两个关键的区别:*高度的系统异质性**和统计异质性* 。 为了处理异质性和解决高通信成本问题 , 联邦学习采用的是局部更新和低参与度的优化方法 。 FedAvg 是一种著名的联邦学习方法:在每次迭代中 , FedAvg 首先在 K 个设备上执行 E 轮随机梯度下降(SGD)阶段 , 其中 E 是一个小的表示 Epoch 次数的常数 , K 是网络中所有设备的一小部分 。 然后 , 这些设备将其模型更新传递到中央服务器 , 并在那里对其进行平均化处理 。 虽然 FedAvg 在处理异质环境问题中显示出了其有效性 , 但它并没有完全解决与异质相关的潜在挑战 。
关于联邦学习 , 机器之心做过重要研究进展的梳理 , 感兴趣的读者可以读一读相关文章:打破数据孤岛:联邦学习近期重要研究进展
在存在系统异质性的情况下 , 基于 FedAvg 框架 , 各个设备并不能根据自身的资源情况完成工作量可变的工作 。 相反 , 如果在给定的时间内 , 设备没有能够在 E 轮迭代中返回局部优化的结果 , FedAvg 会直接删除该设备 。 这种直接删除没有及时反馈局部优化结果的设备(如 FedAvg)或简单收集设备中的部分信息(如 FedProx 中修正项为 0 的情况下)的操作都会在一定程度上增大系统的统计异质性 , 并且会对收敛行为产生不利影响 。 为了解决联邦学习中的异质性问题 , 本文提出了 FedProx 框架 。 FedProx 引入了一个修正项(the proximal term)来提高整体框架的稳定性 , 该修正项的本质是针对局部模型中的参数和全局模型中的参数增加差异性的限制 , 从而为解释全局与部分局部信息之间的异质性提供理论依据 。
【FedProx 详解】
首先回顾一下经典的 FedAvg 方法 。 目标函数为下式:

『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

其中 , N 为设备总数 , pk≥0 表示每个设备更新的权重 。 一般来说 , 本地优化目标衡量的是不同数据分布的本地经验风险 Dk , 例如

『机器学习』MLSys提前看 | 机器学习的分布式优化方法
本文插图

其中 , n_k 表示第 k 个设备上有 n_k 个样本 。 一般设置为 p_k=n_k/n , 其中 n 为全部 n_k 的总和 。 一般认为 Fk(w) 为非凸的 。
为了减少通信量 , 联邦优化方法中的一种常用技术是 , 在每个设备上 , 使用基于设备数据的局部目标函数作为全局目标函数的代理 。 在每次外部迭代中 , 选择一个参与本次迭代的设备子集 , 并使用局部优化算子优化每个选定设备上的局部目标函数 。 然后 , 这些设备将其本地模型更新传递给中央服务器 , 中央服务器聚合它们并相应地更新全局模型 。 在这种情况下 , 如果能够做到非精确地求解每个局部目标函数的最优解 , 就能够保证整体的灵活性能 , 这也意味着必须允许根据执行的本地迭代次数(与更精确的本地解决方案相对应的附加本地迭代)调整本地计算量与通信量 。 从数学上表示 , 这是一种γ-不准确解 。


推荐阅读