TensorflowonSpark 从入门到放弃

TensorflowonSpark 从入门到放弃

最近因为项目原因,需要在短时间内把之前的代码移植到TensorflowonSpark平台中去,于是开始了愉快的探索之旅。
##虚拟内存不足

Application application_1536745728661_0003 failed 2 times due to AM Container for appattempt_1536745728661_0003_000002 exited with exitCode: -103
For more detailed output, check application tracking page:http://master:8088/cluster/app/application_1536745728661_0003Then, click on links to logs of each attempt.
Diagnostics: Container [pid=46766,containerID=container_1536745728661_0003_02_000001] is running beyond virtual memory limits. Current usage: 315.6 MB of 1 GB physical memory used; 2.3 GB of 2.1 GB virtual memory used. Killing container.

这里虚拟内存是将物理内存乘以一个比例计算出来的,默认是2.1,所以这里才是2.1G,是在yarn-site.xml 中对这个比例进行修改,如下:

<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>5</value>
    <description>Ratio between virtual memory to physical memory when setting memory limits for containers. Container allocations are expressed in terms of physical memory, and virtual memory usage is allowed to exceed this allocation by this ratio.</description>
  </property>

我这里给改成了5,不知道是不是有点过分。

使用pyspark中的SparkConf()代替spark-submit中的参数

spark-submit中的参数和SparkConf()中要配置的内容大体上还是一致的,如下是两者的配置:

/usr/local/spark/bin/spark-submit --master yarn --deploy-mode client --num-executors 2 --executor-memory 2G --archives hdfs:///user/baomi/Python.zip,hdfs:///user/baomi/mnist.zip --conf spark.executorEnv.LD_LIBRARY_PATH="/usr/local/cuda/lib64" --driver-library-path="/usr/local/cuda/lib64" mnist_data_setup.py --output mnist/csv --format csv
all_conf = [('spark.deploy.mode', 'client'), ('spark.executor.cores', '2'), ('spark.executor.memory', '2G'),
                ('spark.archives', 'hdfs:///user/baomi/Python.zip,hdfs:///user/baomi/mnist.zip'),
                ('spark.conf', 'spark.executorEnv.LD_LIBRARY_PATH="/usr/local/cuda/lib64"'),
                ('spark.driver.library.path', '/usr/local/cuda/lib64'),
                ('spark.master', 'yarn')]    
conf = SparkConf().setAll(all_conf).setAppName('mnist_parallelize')
sc = SparkContext(conf=conf)

pyspark玩耍步骤

  • 定义好SparkConf,所有关于spark的配置都能在这里面搞定,只不过要注意具体是要配置的参数名称
  • 基于定义好的SparkConf创建SparkContext,sc是整个项目的发动机,有点类似于Tensorflow中的Session
  • 好了,下午的结果出来了,我现在可以用ToS勉强进行训练的操作,晚上要做的就是尽量搞清楚中间的输出到底要怎么去做,然后训练完成之后,要怎么去使用训练好的model,饿死了,吃饭
  • 接下来,就是我下午加晚上要玩命探索的内容,怎么使用sc去驱动一个mainfunc去做我想要做的事情,ps和worker到底是怎么联系起来的
  • ok,用了三天时间想清楚了一件事情,我似乎并不需要将中间的model保存下来,当然,这是我极度偷懒的想法,后面还是要把spark的所有东西都给摸透(是真的,我尽力吧,如果透了,我就买个新手机)
  • 然后,这里我已经能够使用一个ps和一个worker进行我想要做的事情,能够运行程序,能够获取运行的结果,有图的
    这里写图片描述
  • 这张图是我使用Flask搭建了一个小服务器,获取到的从worker中发来的实验结果

整理下思路

  • 最外层,还是前面那个简陋的Flask

  • 直到获取运行命令,检验网络结构,都是一样的

  • 网络结构没问题,数据也没问题,接下来就用这两天整出来的那个tensorflowonspark程序,使用搭建好的model,用现成的数据进行训练

  • 然后呢,就是航路规划的新界面,就明天,我要搞明白一件事情,怎么给正在运行的程序喂数据,这里应该是有点思路了,或者就按照下面说的来

  • 把训练和使用给分开,这样子来,规划路径的时候肯定是用不到分布式的,训练的时候使用分布式,想办法把worker-index为0的节点上的model给搞下来使用新的model来规划路径

9月15号 周六

  • 把简陋服务器flask和tos结合了一下,上午把keras版本的A3C代码搞定之后再去吃饭

9.18

  • 今天是9月18日 默哀。。。。。。。。。
  • 把亚周发过来的源码看懂
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值