一文了解机器学习、深度学习分布式计算框架层
作者头像
  • 2019-12-12 17:41:38 4

在硬件计算集群之上是分布式计算框架层,这一层主要负责将特定任务拆分成多个节点可执行的任务,并合并各个节点的结果。严格来说,分布式计算包括两个步骤:一是任务在分布式框架层面进行拆分和组合;二是通过调度引擎分配资源并下发计算任务,通常使用开源的Yarn作为调度引擎。本节重点介绍分布式计算框架。

大数据计算框架

大数据计算框架是分布式计算框架的重要组成部分,它随着数据计算业务的发展而不断演进。目前,大数据分布式计算框架已经发展出了三代,分别是第一代以MapReduce为代表、第二代以Spark为代表以及第三代以Flink为代表的框架。

MapReduce

MapReduce最初由Google公司研发,是一种面向大规模数据处理的并行计算模型。它的设计初衷主要是为了优化搜索引擎中的大规模网页数据处理。尽管MapReduce最初是为了处理搜索引擎中的Web文档索引问题,但其应用范围远远超出了搜索引擎领域,广泛应用于各种大规模数据处理任务。然而,在计算过程中,MapReduce需要频繁地将中间结果写入磁盘,这虽然提高了可靠性,却牺牲了性能。因此,在涉及大量矩阵运算的机器学习场景中,MapReduce逐渐被Spark取代。但在商业智能(BI)计算场景中,MapReduce依然发挥着重要作用。

Spark

Spark是由UC Berkeley AMP实验室开发并开源的一个通用并行框架,类似于Hadoop MapReduce。Spark将中间结果存储在内存中,从而显著提升了大规模矩阵计算的效率,非常适合人工智能相关的大数据计算任务。此外,Spark是一个顶级的Apache开源项目,拥有丰富的生态系统。Spark生态系统中包含了开源的分布式机器学习算法库Spark MLlib,该库提供了数百种机器学习算法,并支持多种编程语言接口,如Java、Scala、Python和R。因此,Spark已成为目前主流的机器学习算法库之一。

Flink

Flink是一款由德国公司DataArtisans开发并开源的分布式计算框架,已发展成为Apache Flink的顶级项目。随着互联网行业的快速发展,传统计算框架如MapReduce和Spark面临着性能瓶颈。Flink应运而生,旨在解决实时计算的需求。Flink的最大特点是能够实现流式数据处理,这意味着它可以实时处理数据,而不仅仅是处理静态数据。例如,在社交媒体应用中,推荐算法模型需要实时处理用户行为数据,以提供即时的个性化推荐。在这种情况下,Flink的实时计算能力可以显著提升用户体验。

深度学习框架

近年来,随着人工智能技术的飞速发展,尤其是图像识别领域的突破和AlphaGo的成功,深度学习框架逐渐受到广泛关注。深度学习框架的主要区别在于其模型的复杂度和灵活性。目前,市场上主流的深度学习框架主要有TensorFlow和PyTorch。

TensorFlow

TensorFlow由Google的人工智能团队Google Brain开发并维护,是一种基于数据流编程的符号型编程系统。TensorFlow在各大公司中得到了广泛应用。TensorFlow具有丰富的工具和生态系统,支持从模型构建到训练再到部署的全流程。用户可以通过Python API构建网络模型,利用TensorBoard监控训练过程中的参数变化,通过TensorServing部署模型,并使用TensorFlow.js在前端展示模型的可视化结果。尽管TensorFlow工具丰富且适用于工业应用场景,但其抽象的数据流编程方式使得入门门槛相对较高。

PyTorch

PyTorch最初是由Torch演变而来,由Facebook主导开源并维护。PyTorch发展迅速,已经推出了较为稳定的1.X版本。尽管PyTorch起步较晚,但其动态图编程方式使其更容易上手,深受初学者的喜爱。随着Facebook在深度学习框架领域的持续投入,TensorFlow和PyTorch将成为市场上的两大主流框架。这两个框架各有优势,对于想要深入了解深度学习框架的人来说,建议同时研究这两个框架。

    本文来源:图灵汇
责任编辑: :
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
一文学习分布式框架深度机器了解计算
    下一篇