大规模、分布式机器学习
分布式机器学习,可以更高效地利用大数据训练更准确的大模型。
分布式机器学习涉及如何分配训练任务,调配计算资源,协调各个功能模块,以达到训练速度与精度的平衡。
模块
一个分布式机器学习通常会包含以下主要模块:
- 数据和模型划分模块
- 单机优化模块
- 通信模块
- 模型和数据聚合模块
优劣性评判标准
这些模块都有着各自的设计准则和设计选项,而它们之间的组合更是五花八门。因此,实际的分布式机器学习系统有着非常多样的形态,其优劣性需要根据一些标准来取舍:
- 机器学习任务本身(比如模型和优化算法的类别)
- 计算机集群的属性(比如单机运算能力和通信带宽等)
- 最终的评价准则(比如精度优先还是速度优先)
特点
作为一种特殊的分布式系统,分布式机器学习非常独具一格:
- 机器学习虽然以来数据,但是它的目的是从数据中学习出规律或模型,而不是精确地对原始数据进行存储或者索引。机器学习对于数据细节的细小差别具有很强的鲁棒性。因此,分布式机器学习不像其他分布式计算任务那样要求计算过程在单机和集群上的执行是严格一致的。(即使一个机器学习任务的分布式实现与它的单机实现存在执行层面的差异,只要最后产出的规律和模型与单机版中的没有显著差别,那么这个分布式就是好的实现)
- 机器学习的终极目的是利用所学的模型来完成分类、回归等任务,这些任务完成的好坏是依据模型的测试精度来判定的。所以如果机器学习的分布式实现一味追求加速,损失所学模型的精度是不行的。另一方面,因为机器学习关心的是在测试集上的期望精度而不是在训练集伤的经验精度,所以如果在分布式实现中引入一些微小噪声,很可能反而会增加学习过程的泛化能力,带来更好的测试结果。
对于分布式机器学习与其他分布式系统不同,我们需要考虑它对数据的鲁棒性,对算法精度的特别要求,以及机器学习的泛化过程。