Tensorflow for Java + Spark-Scala分布式机器学习计算框架的应用实践

2.2 框架选型

在分布式机器学习计算框架选型上,一类是机器学习框架自身支持的分布式能力,比如Tensorflow、Pytorch两大主流框架都已支持分布式计算;另一类是大数据分布式框架和机器学习框架结合,通过Spark、Flink等大数据框架集成机器学习框架API。

目前虽然机器学习框架逐渐具备分布式能力,但主要目的是解决数据量大、模型参数多场景下的模型训练性能问题。相对于传统大数据分布式框架,优点是对于分布式训练的支持和针对机器学习场景的分布式方案。缺点是在数据归并和多级分层上没有提供很好的解决方案,其次,需要单独搭建和维护集群,增加了运维成本。综合考虑,在分布式预测场景下,采用了大数据框架和机器学习框架结合的方案。

大数据框架通常分为流处理和批处理两类。流处理适用于实时和准实时计算, Flink 、 Storm 、 Spark-Streaming 等都属于流处理框架;批处理适用于离线计算,我们的场景是典型的离线批处理场景,主流的批处理框架目前有 Spark 和 Hadoop 的 MapReduce 。通过框架实现上的对比,可以发现 Spark 基于内存运算虽然消耗更多资源,但在性能上能带来很大的提升。

请添加图片描述

而在机器学习框架领域, TensorFlow 、 PyTorch 目前分别成为了工业界和学术界使用最广泛的两大框架。TensorFlow 是谷歌的开发者创造的一款开源的深度学习框架,于 2015 年发布。PyTorch 是最新的深度学习框架之一,由 Facebook 的团队开发,并于 2017 年在 GitHub 上开源。

请添加图片描述

我们从多个维度对比下 Tensorflow 和 Pytorch 两种框架,可以发现:Pytorch 具备更优秀的 API ,上手快,动态图,易调试等优点,适合研究者快速构建模型,迭代速度快。Tensorflow 在多语言支持、跨平台能力、性能、生产部署等方面具备优势,适合于生产部署。这也是为什么 Pytorch 更受学术界欢迎,而 Tensorflow 保持着工业界的主导地位。Tensorflow 和 Pytorch 目前都在试图向对方的优势靠拢,不过短期内这样的现状应该不会改变。

请添加图片描述

通过上面的分析,结合实际应用场景,风控模型的算法结构并不是很复杂,在 Tensorflow 和 Pytorch 下都能快速构建,因此考虑到模型生产环境部署难度,以及跨平台部署的需求,我们选择 Tensorflow 来构建模型。

2.3 为什么选择Tensorflow for Java & Spark-Scala?

在Spark和Tensorflow集成的方案中,一种是在Python环境中使用PySpark+Tensorflow for Python 来实现,这也是目前多数的实践方案。另一种就是 Java/Scala 环境中 Spark-Scala+Tensorflow for Java 的方案。我们选择第二种方案,主要是出于性能考虑,下文将对比两种框架底层的性能差异:

2.3.1 Tensorflow for Java 和 Spark-Scala 介绍

TensorFlow 已支持多种客户端语言下的安装和运行,不过 Python 仍是目前唯一受到良好支持的语言。Tensorflow for Java 是 TensorFlow 提供的用于 Java 程序的 API ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值