分布式机器学习算法、理论与实践 学习笔记
续 前
3 分布式机器学习框架
- 大数据与大模型的挑战
1)大数据:为训练大模型提供了物质基础,耗费大量计算资源和时间,对计算机软硬件提了更高的要求
2)大模型:模型参数规模巨大,具有超强的表达能力;但也非常容易过拟合
对计算能力和存储容量提出新要求:趋势是采用并行度更高的处理器(GPU)或者计算机集群(由GPU集群支持的云计算服务)完成训练任务、分布式存储 - 分布式机器学习基本流程
需要使用分布式机器学习的情形(实际情况三者混合)
1)计算量太大:可采取基于共享内存的多线程或多机并行运算(计算并行)
2)训练数据太多:对数据进行划分,分配到多个工作节点上进行训练;每个工作节点基于局部数据训练出子模型,按照一定规律与其他工作节点进行通信(子模型参数/参数更新),有效整合来自各个工作节点的训练结果并得到全局机器学习模型(data-based,数据并行)
3)模型规模太大:对模型进行划分,分配到多个工作节点上进行训练;每个工作节点基于全局数据训练出子模型;各子模型之间依赖关系可能非常强,对通信要求较高(model-based,模型并行) - 数据与模型划分模块
1)数据划分
①训练样本划分
基于随机采样的方法:保证局部训练数据与原训练数据是独立同分布的;但训练数据量大,全局采样代价高,且低频训练样本无法得到充分利用
基于置乱切分的方法:可能不满足独立同分布
②特征维度划分
将训练数据的不同特正维度划分到不同工作节点上,需配合特定的优化方法使用
2)模型划分:影响不同工作节点之间的依赖关系和通信强度
需考虑模型结构特点:线性模型(不同特征维度划分)/深度神经网络(横向/纵向/随机)…… - 单机优化模块
对于工作节点自身,其实是传统的单机机器学习任务:根据自己的训练数据,采用某种优化算法,通过最小化经验风险来学习模型参数。
问题:主流的优化算法在分布式环境下理论性质(收敛性、泛化能力……)会发生何种变化? - 通信模块
1)通信的内容
数据并行模型:子模型/重要样本
模型并行模型:中间计算结果
2)通信的拓扑结构
①基于迭代式MapReduce/AllReduce的通信拓扑
大数据处理的MapReduce方法:Map完成数据分发和并行处理,Reduce完成全局同步和聚合;改进为基于内存的实现,相比基于I/O的计算代价减小,引入永久性存储;运算和存储无逻辑隔离,因此只能同步通信
②基于参数服务器的通信拓扑
工作与存储节点分开,各工作节点不一定需要保持同步,可采用多个参数服务器共同维护较大的模型,平衡负载且提高通信效率,稀疏模型访问情形下可支持模型并行
③基于数据流的通信拓扑
计算被建模为有向无环图
每个节点都有两个通信通道:控制消息流和计算数据流
3)通信的步调
同步:每个节点等待收齐来自其他所有节点的模型更新后,才继续自己的本地模型训练
异步:不相互等待,将本地模型训练和其他节点通信隔离开来
早期,同步方式大量使用:MapReduce盛行,早期机器学习规模不大,因此等待时间可接受;逻辑上更清晰
后期,同步方式产生局限性:工作节点计算性能不同时,全局计算性能受限于性能较差的节点;若某个工作节点死机,全局都无法完成工作;异步方式逻辑上隔离了各个工作节点
需考虑如何保持模型更新的一致性,对不同版本的模型更新进行充分、合理的应用,否则步调相差过大可能会影响全局模型的收敛速度
半同步/混合同步方式:综合二者好处,规避各自问题
4)通信的频率
目标:实现最高的学习效率
根据分布式计算机集群的配置(每个工作节点的计算速度、机器之间互联的通信网络带宽),问题自身特点(数据、模型),计算出最优的通信频率 - 数据与模型聚合模块
模型平均:学习目标为凸函数条件下有相应理论保证,非凸问题无法保证平均模型性能
模型集成:保证非凸问题精度不会损失;但可能出现“模型爆炸”,需进行模型压缩 - 分布式机器学习理论
收敛性,加速比,泛化性 - 分布式机器学习系统
产业界成型的分布式机器学习系统 - 总结