Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为Spark Deep Learning 集成

为Spark Deep Learning 集成

作者头像
用户2936994
发布于 2018-08-27 06:37:36
发布于 2018-08-27 06:37:36
40200
代码可运行
举报
文章被收录于专栏:祝威廉祝威廉
运行总次数:0
代码可运行

前言

昨晚睡了12小时,早上起来神清气爽,索性把之前提的一个Issue:Is there any plan to port TensorframeOnSpark(From yahoo) 给尝试着集成进来。 前两天已经添加了一个 TFTextEstimator:为Spark Deep Learning 添加NLP处理实现,不过只能做hyper parameter tuning,做不了真正的分布式训练,所以正好把这个特性加到了这个Estimator里。

使用方法

建议看这篇文章之前,先看为Spark Deep Learning 添加NLP处理实现。 我给TFTextFileEstimator 添加了一个新的参数叫做 runningMode。目前只有两个值: Normal 和 TFoS。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# create a estimator to training where map_fun contains tensorflow's code
estimator = TFTextFileEstimator(inputCol="sentence_matrix", outputCol="sentence_matrix", labelCol="preds",
                                fitParam=[{"epochs": 1, "cluster_size": 2, "batch_size": 1, "model": "/tmp/model"}],
                                runningMode="TFoS",
                                mapFnParam=map_fun)

如果使用TFoS model参数是必须的。并且 map_fun方法也需要做些改造。主要是tensorflow 分布式training 和 单机多device 还是有区别的。

原理

在TFTextEstimator里,通过参数runningMode控制:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        if self.getRunningMode() == "TFoS":
            return self._fitInCluster(dataset, paramMaps)
        else:
            return self._fitInParallel(dataset, paramMaps)

如果是,则走集群模式,否则走并行训练。 我们来看看_fitInCluster:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def _fitInCluster(self, dataset, paramMaps):
        sc = JVMAPI._curr_sc()

        temp_item = dataset.take(1)[0]
        vocab_s = temp_item["vocab_size"]
        embedding_size = temp_item["embedding_size"]

        baseParamMap = self.extractParamMap()
        baseParamDict = dict([(param.name, val) for param, val in baseParamMap.items()])

        args = self._clusterModelDefaultValue(sc, paramMaps[0])
        args["feature"] = self.getInputCol()
        args["label"] = self.getLabelCol()
        args["vacab_size"] = vocab_s
        args["embedding_size"] = embedding_size
        args["params"] = baseParamDict

        cluster = TFCluster.run(sc, self.getMapFnParam(), args, args['cluster_size'], args['num_ps'],
                                args['tensorboard'],
                                TFCluster.InputMode.SPARK)
        cluster.train(dataset.rdd, args["epochs"])
        cluster.shutdown()

很简单,创建 TFCluster对象,并且调用其train方法。 最核心的还是 map_fun函数,这里实现了所有的tf逻辑(除了数据以外)。我后面会单独一个篇幅来讲。在做实现的过程,发现两个问题:

  1. TFoS 最好一个批次的数据会丢失 ,我对应提了一个IssueWhen training, the data of last batch will not be trained
  2. TFoS 没有办法跑在Local模式,所以调试麻烦些,需要跑在spark standalone模式下。

可运行的实例代码在: TFoSTest.py

mapfun函数解析

TFoSTest.py 里的代码兼容单机和集群模式运行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def map_fun(args={}, ctx=None, _read_data=None):

如果ctx为None,则是单机模式,否则为集群模式。如果是集群模式则直接使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TFNode.DataFeed(ctx.mgr, True)

获取数据,否则使用 _read_data 获取数据。具体详细参看示例中代码。

结束语

这个只是Demo性质的,单机和集群模式的融合度还不够好,map_fun编写难度还有些。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.10.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为Spark Deep Learning 添加NLP处理实现
前段时间研究了SDL项目,看到了Spark的宏大愿景,写了篇Spark新愿景:让深度学习变得更加易于使用。后面看了TFoS,感觉很是巧妙,写了一篇TensorFlowOnSpark 源码解析。这些项目都得益于Spark对python的支持,所以了解了下spark和python如何进行交互的,可参看此文PySpark如何设置worker的python命令。
用户2936994
2018/08/27
9310
如何基于SDL+TensorFlow/SK-Learn开发NLP程序
确保安装了python 2.7 ,强烈建议你使用Virtualenv方便python环境的管理。之后通过pip 安装pyspark
用户2936994
2018/08/27
4740
利用PySpark 数据预处理(特征化)实战
之前说要自己维护一个spark deep learning的分支,加快SDL的进度,这次终于提供了一些组件和实践,可以很大简化数据的预处理。
用户2936994
2018/08/27
1.8K0
学习笔记TF065: TensorFlowOnSpark
Hadoop生态大数据系统分为Yam、 HDFS、MapReduce计算框架。TensorFlow分布式相当于MapReduce计算框架,Kubernetes相当于Yam调度系统。TensorFlow
利炳根
2017/11/13
3.3K0
TensorFlowOnSpark 源码解析
这两天琢磨了下spark-deep-learning和spark-sklearn两个项目,但是感觉都不尽人如意。在training时,都需要把数据broadcast到各个节点进行并行训练,基本就失去实用价值了(tranning数据都会大于单节点内存的好么),而且spark-deep-learning目前还没有实现和tf cluster的结合。所以这个时候转向了开源已久的yahoo的TensorFlowOnSpark项目。简单了过了下他的源码,大致理清楚了原理,这里算是记录下来,也希望能帮到读者。
用户2936994
2018/08/27
9880
TensorFlow分布式实践
大数据时代,基于单机的建模很难满足企业不断增长的数据量级的需求,开发者需要使用分布式的开发方式,在集群上进行建模。而单机和分布式的开发代码有一定的区别,本文就将为开发者们介绍,基于TensorFlow进行分布式开发的两种方式,帮助开发者在实践的过程中,更好地选择模块的开发方向。
个推
2019/01/29
8080
TensorFlow分布式实践
教程 | 用TensorFlow Estimator实现文本分类
选自ruder.io 作者:Sebastian Ruder 机器之心编译 参与:Geek AI、张倩 本文探讨了如何使用自定义的 TensorFlow Estimator、嵌入技术及 tf.layers 模块来处理文本分类任务,使用的数据集为 IMDB 评论数据集。通过本文你将学到如何使用 word2vec 词嵌入和迁移学习技术,在有标签数据稀缺时获得更好的模型性能。 本文主要内容如下: 使用 Datasets 装载数据 使用预封装好的评估器(estimator)构建基线 使用词嵌入技术 通过卷积层和 LS
机器之心
2018/06/08
2K0
基于pytorch_pytorch handbook
代码来源 少量中文注解 纯学习https://github.com/joosthub/PyTorchNLPBook/blob/master/chapters/chapter_5/5_2_CBOW/5_2_Continuous_Bag_of_Words_CBOW.ipynb
全栈程序员站长
2022/10/02
6190
代码+实战:TensorFlow Estimator of Deep CTR —— DeepFM/NFM/AFM/FNN/PNN
深度学习在 ctr 预估领域的应用越来越多,新的模型不断冒出。从 ctr 预估问题看看 f(x) 设计—DNN 篇(https://zhuanlan.zhihu.com/p/28202287)整理了各模型之间的联系之后,一直在琢磨这些东西如何在工业界落地。经过几个月的调研,发现目前存在的一些问题: 开源的实现基本都是学术界的人在搞,距离工业应用还有较大的鸿沟 模型实现大量调用底层 API,各版本实现千差万别,代码臃肿难懂,迁移成本较高 单机,放到工业场景下跑不动 针对存在的问题做了一些探索,摸索出一套
AI研习社
2018/03/16
5.8K1
代码+实战:TensorFlow Estimator of Deep CTR —— DeepFM/NFM/AFM/FNN/PNN
TensorFlow 机器学习秘籍第二版:9~11
在本章中,我们将介绍循环神经网络(RNN)以及如何在 TensorFlow 中实现它们。我们将首先演示如何使用 RNN 来预测垃圾邮件。然后,我们将介绍一种用于创建莎士比亚文本的 RNN 变体。我们将通过创建 RNN 序列到序列模型来完成从英语到德语的翻译:
ApacheCN_飞龙
2023/04/23
1K0
BERT源码分析PART III
继续之前没有介绍完的Pre-training部分,在上一篇中我们已经完成了对输入数据的处理,接下来看看BERT是怎么完成Masked LM和Next Sentence Prediction两个任务的训练的。
AINLP
2019/07/23
8760
Transformer 模型示例
Transformer 架构是现代深度学习中非常重要的模型,广泛应用于自然语言处理(NLP)和计算机视觉(CV)领域。以下是一个使用 Python 和 PyTorch 编写的简单 Transformer 模型示例,用于处理文本数据(例如机器翻译或文本生成任务)。
软件架构师Michael
2025/01/20
3190
Word2Vec的PyTorch实现(乞丐版)
根据论文所述,我这里设定window size=2,即每个中心词左右各取2个词作为背景词,那么对于上面的list,窗口每次滑动,选定的中心词和背景词如下图所示
mathor
2020/06/15
9870
Spark Pipeline官方文档
官方文档链接:https://spark.apache.org/docs/latest/ml-pipeline.html
HoLoong
2020/09/21
4.8K0
Spark Pipeline官方文档
TextCNN的PyTorch实现
本文主要介绍一篇将CNN应用到NLP领域的一篇论文 Convolutional Neural Networks for Sentence Classification,然后给出 PyTorch 实现
mathor
2020/06/28
3.1K0
学习笔记TF060:图像语音结合,看图说话
本文介绍了如何使用TensorFlow进行图像分类,包括数据集准备、模型训练和评估以及部署。作者还介绍了如何使用TensorFlow进行图像字幕生成,并提供了示例代码。
利炳根
2017/11/07
1.4K0
机器翻译的Attention机制
在机器翻译(Neural Machine Translation)中,Seq2Seq模型将源序列映射到目标序列,其中Encoder部分将源序列编码为Context Vector传递给Decoder,Decoder将Context Vector解码为目标语言的序列。
YoungTimes
2022/04/28
1.5K0
机器翻译的Attention机制
Spark 模型选择和调参
官方文档:https://spark.apache.org/docs/2.2.0/ml-tuning.html
HoLoong
2020/10/10
1K0
TensorFlow On Spark 开源项目分析
原文:http://sparkdata.org/?p=423&utm_source=tuicool&utm_medium=referral 作者:京东大数据技术保障团队 概述 自Google发布Ten
小莹莹
2018/04/19
6.9K0
TensorFlow On Spark 开源项目分析
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
在这篇文章中,我们将构建一个基于LSTM的Seq2Seq模型,使用编码器-解码器架构进行机器翻译。
deephub
2020/09/23
1.9K0
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
相关推荐
为Spark Deep Learning 添加NLP处理实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验