【大数据分析&机器学习】分布式机器学习

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。

  机器学习方法是计算机利用已有的数据生成某种模型,并利用此模型预测的一种方法。在确定模型结构之后,根据已知模型寻找模型参数的过程就是训练,训练过程中不断依据训练数据来迭代调整模型的参数值,从而使模型的预测结果更为准确。在现实应用中,要达到好的效果,训练数据集可能很大,模型参数量剧增,会带来很多性能和算法设计问题,单台机器难以胜任,需要分布式的机器学习架构。本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。

一、分布式机器学习基础

分布式机器学习中的一些核心问题:
(1)如何提高各分布式任务节点之间的网络传输效率;
(2)如何解决参数同步问题,传统训练模型是采用同步方法,如果机器性能不统一,必然会产生训练任务之间的协作;
(3)分布式环境下如何提高容错能力,需要避免单点故障,并能合理处理异常,训练子节点出错不影响全局任务。

(一)参数服务器

  应用传统的大数据处理框架训练大型的机器学习模型时,由于数据量比较大并且训练方法多样,存在着一致性、扩展性、稳定性的问题。较大的模型也意味着参数较多,因而需要实现分布式并行训练,参数服务器是分布式并行训练框架之一,存储着模型的参数和状态。参数服务器具有如下特点:高效通信、宽松一致性、灵活可扩展、容错能力强、易用。

  训练过程中支持动态扩展节点,不需要重启训练任务就可以动态插入新节点到集合中,这一特性无疑有利于那些训练周期较长(长达数天或数周)的机器学习项目,可节省大量训练时间。

  在大型服务器集群中,由于节点较多,小概率故障往往常态化,所以需要节点的恢复(状态清理、任务重启)时间要短,而且不能中断训练过程,这就要求并行化系统具有较强的容错能力。

  目前机器学习项目开发者数量较少,为了减少学习难度,需要尽可能的使用常用语言或将参数表示成通用的形式,如向量、矩阵等,并与现有机器学习框架无缝拼接。

(二)分布式并行计算框架

  分布式并行计算的类型一般分为三种:模型并行、数据并行、混合并行。

1. 模型并行

  模型并行是指将模型按照其结构放在不同的分布式机器上进行训练,一般用在那些内存要求较高的机器学习项目,例如,单机训练一个1000层的DNN网络,内存容易溢出,而使用模型并行,用不同的机器负责不同的层进行训练,通过维护各层间参数同步实现整个DNN网络的并行训练。

image.png

2. 数据并行

  数据并行是指各机器上的模型相同,对训练数据进行分割,并分配到各机器上,最后将计算结果按照某种方式合并。该方法主要应用在海量训练数据的情况,数据以并行化方式训练,训练过程中组合各工作节点的结果,实现模型参数的更新。参数并行常用的方法有参数平均和异步梯度下降的方法。

image.png

(1)参数平均:参数平均是在每次训练迭代完成后计算各节点各模型参数平均值,这一方法操作简单,主要依赖网络同步更新,如果更新频率较慢会导致参数差别较大,平均之后的模型参数的局部差异化被抵消,效果较差,影响模型的精确性。反之,如果更新较快,对网络压力较大,通信和同步的成本较高,所以在应用中需要结合模型复杂度和优化方法进行平衡。

(2)异步梯度下降:异步梯度下降是一种基于更新的数据并行化,它传递的是模型训练过程中的梯度、动量等信息,而没有直接传递参数值,这样一方面可以减少传输数据量,提高网络传输效率;另一方面不同计算节点通过共享梯度,可以提高模型收敛速度。该方法的不足之处在于会随着引入参数数量的增多出现梯度值过时的问题。

3. 混合并行

  混合并行的方式是指综合应用模型并行和数据并行,在训练集群的设计中,将上述两种方式进行合并,各取所长,形成互补。例如,可以在同一台机器上采用模型并行化,在GPU和CPU之间使用模型并行。然后在机器之间采用数据并行化,将数据分配在不同的机器上,既实现了计算资源利用的最大化,也减少了数据分发的压力。

二、分布式机器学习框架

  分布式机器学习是机器学习领域的一大主要研究方向,其中MapReduce适合做离线计算,Storm适合做流式计算,Spark是内存计算框架,能快速得到计算结果。分布式机器学习平台归类为三种基本设计方法:基本数据流、参数服务器模型以及高级数据流。基于这三种方法来介绍分布式机器学习框架。

(一)MapReduce编程模型

  MapReduce是一个能处理和生成超大数据集的算法模型,该架构能够在大量硬件配置不高的计算机上实现并行化处理,这一编程模型结合用户自定义的Map和Reduce函数。Map函数处理一个输入的基于对的集合,输出中间基于对的集合,Reduce函数是将所有具有相同key值的value值进行合并,将数据集合进行压缩。

  一个典型的MapReduce程序的执行流程如下图所示。

image.png

(二)Hadoop MapReduce框架

  Hadoop MapReduce是Hadoop三大组件之一,包括JobTracker和一定数量的TaskTracker。JobTracker负责任务分配和调度,一个MapReduce作业通常会把输入的数据集切分为若干独立的数据块,由Map任务以并行方式处理它们,框架会对Map的输出先进行排序,然后把结果输入到Reduce任务中。通常作业的输入和输出都会被存储在文件系统HDFS中,由JobTracker负责任务的调度和监控,以及重新执行已经失败的任务。

image.png

  Hadoop MapReduce框架由一个单独的主JobTracker和每个集群节点对应一个备TaskTracker组成。JobTracker负责调度作业的所有任务,并监控它们的执行,这些任务分布在不同的备TaskTracker上。如果TaskTracker上的任务执行失败,还会调度其重新执行。而TaskTracker仅负责执行指派的任务。

image.png
image.png

(三)Spark

  与Hadoop MapReduce相比,Spark的优势在于处理迭代计算的机器学习任务,尤其是内存要求小的应用,性能提升很大,Spark还可以进行批处理、实时数据处理、机器学习以及图算法等计算模块。使用Spark平台无需关心分布式并行计算的细节,可以智能地进行数据切分、算法复制、分布执行、结果合并,以支持数据分析人员快速开发分布式应用。

image.png

  Spark的基本框架如下图所示:

image.png

  Spark应用核心由启动环境和执行程序两部分组成,其中执行程序负责执行任务,运行执行程序的机器是工作节点,而启动环境由用户程序启动,通过集群管理器与各个执行程序进行通信。集群管理器主要负责集群的资源管理和调度,目前支持Standalone、Apache Mesos和YARN三种类型的管理器。

image.png

  Spark使用弹性分布式数据集(RDD)抽象分布式计算,RDD是Spark并行数据处理的基础,它是一种只读的分区记录的集合,用户可以通过RDD对数据显示地控制存储位置和选择数据的分区。RDD主要通过转换和动作操作来进行分布式计算,转换是根据现有数据集创建新数据集,动作是在数据集上进行计算后返回值给Driver程序。使用RDD可以用基本一致的方式应对不同的大数据处理场景,还能够提高分布式计算的容错性。

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf

// Create SparkContext
val conf = new SparkConf().setAppName("WordCountApp").setMaster("local")
val sc = new SparkContext(conf)

// Read text file from HDFS
val file = sc.textFile("hdfs://<path-to-your-file>", 5)

// Split lines into words and map each word to (word, 1)
val words = file.flatMap(line => line.split(" ")).map(word => (word, 1))

// Cache the RDD for better performance
words.cache()

// Reduce by key to get the word counts
val counts = words.reduceByKey(_ + _)

// Get the top 10 words by count
val top = counts.top(10)(Ordering.by(f => f._2))

// Print the top 10 words
println(top.mkString("\n"))

  Spark是一种粗粒度、基于数据集的并行计算框架。其计算范式是数据集上的计算,在使用Spark的时候,要按照这一范式编写算法。所谓的数据集操作,就是成堆的数据,如果源数据集是按行存储的话,就需要对其进行适配,将若干记录组成一个集合。因此在提交给Spark任务时,需要先构建数据集,然后通过数据集的操作,实现目标任务。

(四)TensorFlow

  TensorFlow为用户封装了底层的分布式操作,使其可以专注于编写机器学习代码。使用数据流图进行数值计算,用有向图中的节点表示,节点的状态是可变的,边是张量,对应为多维数组。TensorFlow中数据并行化的方式由In-graph、Between-graph、异步训练、同步训练几种方式,通过将模型训练分配给不同的工作节点,并使用参数服务器共享参数。

三、并行决策树

  随着大数据时代的到来,算法需要处理的数据量急剧增加,仅依靠原始的决策树算法进行分类无论在效率上还是准确性上都不足以满足需求。高效出色的在大数据量下使用决策树算法,需要将决策树算法并行化。

  并行决策树算法基于MapReduce框架,核心思想是分而治之的策略。MapReduce通过将海量数据集分割成多个小数据集交给多台不同计算机进行处理,实现并行化数据处理。应用到决策树算法上,通过MapReduce将决策树算法并行处理,将耗时的属性相似度计算的步骤并行执行。Map阶段,以单元组形式分解数据,计算属性相似度,以<属性名,相似度>形式输出。Reduce阶段,汇总所有局部结果,找到最大相似度属性名,以这个属性作为测试节点,若是叶子节点,则返回,否则执行分裂,将其录入待计算数据库中进行存储。不断重复上述过程完成决策树的构建。

(一)并行决策树算法

image.png

上图展示了并行决策树算法的主要流程,通过划分和并行化处理训练数据集,利用MapReduce等机制来构建决策树的过程。以下是主要步骤的解析:

1. 数据划分

  • 水平划分

    • 数据集被水平切分为多个子数据集(如图中rid 0-4rid 5-9),每个分区的数据可以独立进行处理。
    • 这样做的目的是便于数据分布到不同的计算节点上,实现并行化处理。
  • 垂直划分

    • 将数据集中的属性(如age, credit等)单独拆分,计算每个属性的条件概率或信息增益,以便构建决策树的分裂点。
    • 每个属性在不同节点上处理,形成<key, value, value2>的键值对结构。

2. Map阶段

  • 生成键值对

    • 每个分区独立对数据集进行处理,将数据映射为键值对形式:<特征, 类别, 记录数>
    • 示例:
      • age的键值对:<youth, no, 3>表示age = youth且分类为no的记录有3条。
      • credit的键值对:<fair, no, 3>表示credit = fair且分类为no的记录有3条。
  • 并行计算特征与类别分布

    • 每个计算节点独立统计对应特征值和类别之间的分布关系。

3. Reduce 阶段

  • 合并统计结果

    • 对同一特征的所有分布进行全局统计,例如age = youth的分类noyes的总数分别为3和1。
    • 通过这些统计值计算各特征的分裂指标(如信息增益、基尼系数等),选择最佳分裂特征。
  • 构建分裂节点

    • Reduce阶段汇总后,确定当前节点的分裂点(如选择agecredit),并将子节点继续递归处理。

4. 并行处理的优势

  • 任务分解

    • 水平划分实现了数据集的分片处理,减少了单个计算节点的内存压力。
    • 垂直划分实现了特征的独立统计,进一步提升了计算效率。
  • 完全并行化

    • 每个节点(数据分片)可以独立构建其子树,直到最终形成完整的决策树。

5. 总结

  • 关键思想:利用MapReduce将数据的水平和垂直处理并行化。
  • 应用场景:适用于大规模数据集和高维特征场景,充分利用分布式计算的能力。
  • 优势
    • 减少单节点计算负担;
    • 提高训练效率;
    • 支持海量数据和特征处理。

图中展示的具体示例(如<key, value, value2>和Reduce的结果)形象地说明了如何通过分布式统计和并行计算快速构建决策树。

(二)并行化的随机森林——并行CART决策树算法

image.png

上图描述了随机森林(Random Forest)算法的并行化实现过程,特别是基于CART(分类回归树)算法构建的随机森林。以下是主要步骤的解析:

1. 原始数据集的处理

  • 步骤①:从原始数据集$D$中,基于随机抽样的方法生成多个随机数据集(即子样本数据集 $D_1, D_2, \dots, D_k$)。
    • 这种随机抽样采用的是有放回的随机采样方法(Bootstrap),每个子数据集和原始数据集大小相同,但样本可能重复。

2. 构建子数据集

  • 步骤②:对每个子数据集$D_i$,随机选择原始数据集中的$M$个特征,而非使用全部特征(即进行特征随机选择)。
    • 在每个节点分裂时,只考虑$M$个特征中的最佳分裂,而不是所有特征,从而增加模型的多样性。

3. 构建决策树

  • 步骤③:基于CART算法,在每个子数据集$D_i$上构建决策树$T_1, T_2, \dots, T_k$。
    • 注意:CART决策树一般会完全生长(无剪枝),以最大程度保留样本数据的特征。

4. 并行化的树构建过程

  • 并行实现
    • 每个决策树$T_i$的构建过程可以在不同的计算节点或线程上独立并行进行,因为每棵树仅依赖于其对应的随机样本数据$D_i$和随机特征选择,不需要与其他树通信。
    • 并行化大大提升了随机森林训练的效率,尤其在大规模数据集的场景中。

5. 集成决策与投票

  • 步骤④:训练完成后,将所有决策树$T_1, T_2, \dots, T_k$组成随机森林。
  • 步骤⑤:输入新的预测数据,随机森林会让所有决策树分别对输入数据进行预测,得到多个分类结果$R_1, R_2, \dots, R_k$。
  • 步骤⑥:通过投票机制(分类问题)或平均机制(回归问题),对所有树的预测结果进行综合处理,得出最终的预测结果。

总结

  • 并行化:随机森林利用数据样本的独立性和树的构建独立性,天然适合并行化。
  • CART决策树:作为随机森林的基本组成部分,使用了随机特征选择,进一步增强模型的多样性和泛化能力。
  • 投票机制:通过多树投票,随机森林具备较强的鲁棒性和抗过拟合能力。

该方法广泛应用于分类、回归等任务,是一种高效且效果优异的集成学习方法。

四、并行k-均值算法

  k-均值算法是应用最广泛的聚类算法之一,随着大数据的发展,在实际使用过程中如何提升该算法的性能成为了一个有挑战性的任务。可以基于Map Reduce实现k-均值算法,在Hadoop环境中并行运行,能够高效且廉价的处理大型数据集。

  在具体实现该算法时,将输入数据集存储在分布式文件系统HDFS中,作为的序列文件,每个键值对代表数据集的一条记录,其中key记录的是数据文件距离起始位置的偏移量,value是该条记录的内容。将迭代后或初始化后的k个聚类中心放到Configuration中,然后在Mapper的setUp计算读取这k个聚类中心。Mapper会将同一类的数据发送至同一个Reducer。在Reducer中,只需要根据数据重新计算聚类中心即可。

  使用MapReduce框架实现k-均值聚类算法时,需要将每一次迭代作为一个MapReduce Job进行计算,通过多次运行该Job达到迭代的效果,最终得到k个聚类中心。基于MapReduce的并行k-均值算法,可以在廉价机器上有效处理大型数据集。

(一)k-均值算法算例

进行k-均值聚类的数据如下表:

$x_1$ $x_2$ $x_3$ $x_4$ $x_5$ $x_6$ $x_7$ $x_8$ $x_9$ $x_{10}$ $x_{11}$
1 2 2 3 9 10 10 11 15 16 16
2 2 5 3 14 13 15 16 6 5 8

将x1-x6分配给node1,将x7-x11分配给node2,选择k=3,在开始阶段,创建一个如下表的全局文件。

image.png

Map阶段对于数据集中的每一个节点,读取全局文件,获得上一轮迭代生成的簇中心信息,计算样本点到簇中心的距离。在Reduce阶段reduce程序收到关于某一个簇的信息,包括该簇的ID和簇的中心以及包含的样本个数。具体如下表。

image.png

一次迭代完成后,进入下一次迭代,直到聚类结果不再发生变化,输出最终得到的聚类结果如下表。

image.png
image.png

(二)多元线性回归模型

image.png
image.png
image.png
image.png

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
60 4
|
12天前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
52 2
|
1月前
|
SQL 消息中间件 分布式计算
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
67 5
|
2月前
|
存储 大数据 测试技术
用于大数据分析的数据存储格式:Parquet、Avro 和 ORC 的性能和成本影响
在大数据环境中,数据存储格式直接影响查询性能和成本。本文探讨了 Parquet、Avro 和 ORC 三种格式在 Google Cloud Platform (GCP) 上的表现。Parquet 和 ORC 作为列式存储格式,在压缩和读取效率方面表现优异,尤其适合分析工作负载;Avro 则适用于需要快速写入和架构演化的场景。通过对不同查询类型(如 SELECT、过滤、聚合和联接)的基准测试,本文提供了在各种使用案例中选择最优存储格式的建议。研究结果显示,Parquet 和 ORC 在读取密集型任务中更高效,而 Avro 更适合写入密集型任务。正确选择存储格式有助于显著降低成本并提升查询性能。
446 1
用于大数据分析的数据存储格式:Parquet、Avro 和 ORC 的性能和成本影响
|
2天前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
12 4
|
15天前
|
存储 监控 数据挖掘
【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
ClickHouse 的物化视图是一种特殊表,通过预先计算并存储查询结果,显著提高查询性能,减少资源消耗,适用于实时报表、日志分析、用户行为分析、金融数据分析和物联网数据分析等场景。物化视图的创建、数据插入、更新和一致性保证通过事务机制实现。
66 14
|
20天前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
64 2
|
22天前
|
数据采集 机器学习/深度学习 搜索推荐
大数据与社交媒体:用户行为分析
【10月更文挑战第31天】在数字化时代,社交媒体成为人们生活的重要部分,大数据技术的发展使其用户行为分析成为企业理解用户需求、优化产品设计和提升用户体验的关键手段。本文探讨了大数据在社交媒体用户行为分析中的应用,包括用户画像构建、情感分析、行为路径分析和社交网络分析,以及面临的挑战与机遇。
|
22天前
|
机器学习/深度学习 搜索推荐 大数据
大数据与教育:学生表现分析的工具
【10月更文挑战第31天】在数字化时代,大数据成为改善教育质量的重要工具。本文探讨了大数据在学生表现分析中的应用,介绍学习管理系统、智能评估系统、情感分析技术和学习路径优化等工具,帮助教育者更好地理解学生需求,制定个性化教学策略,提升教学效果。尽管面临数据隐私等挑战,大数据仍为教育创新带来巨大机遇。
|
25天前
|
人工智能 供应链 搜索推荐
大数据分析:解锁商业智能的秘密武器
【10月更文挑战第31天】在信息爆炸时代,大数据分析成为企业解锁商业智能的关键工具。本文探讨了大数据分析在客户洞察、风险管理、供应链优化、产品开发和决策支持等方面的应用,强调了明确分析目标、选择合适工具、培养专业人才和持续优化的重要性,并展望了未来的发展趋势。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 下一篇
    无影云桌面