TF ON YARN¶
一、说明¶
TensorFlow是google开源的用于人工智能的学习系统,大大的降低了机器学习、深度学开发成本,分析人员、开发人员可以使用TensorFlow提供的多种算法实现自己的想法验证、模型设计等。 TensorFlow on YARN是EMR推出的结合EMR Hadoop大数据处理能力以及TensorFlow深度学习能力,提供用户调度TensorFlow程序在EMR Hadoop之上,进行分布式处理的功能。
二、使用说明¶
说先需要创建Data Science集群,目前EMR 3.13.0版本开始支持创建Data Science集群。 Data Science版本的EMR集群支持GPU调度,所以在Core节点,推荐用户选取GPU机器类型。 目前TensorFlow支持的版本是1.8,用户选择想要安装的驱动以及cuDNN版本,EMR管控会将对应的驱动和cuDNN进行自动安装。
三、任务提交¶
目前任务提交还需要通过命令行提交,或者通过EMR-Flow提交任务(正在开发中)。 如果采用命令行提交,提交命令为el_submit, 如下图:
参数说明:
-t APP_TYPE 提交的任务类型,支持三种类型的任务类型[tensorflow-ps, tensorflow-mpi, standalone],三种类型要配合后面运行模式使用
tensorflow-ps使用的是原生TensorFlow ps 类型
tensorflow-mpi使用的是 uber 开源的基于MPI架构的horovod standalone模式是用户将任务调度到YARN集群中启动单机任务,类似于单机运行 tensorflow-worker多worker模式,适用于MultiWorkerMirroredStrategy
-a APP_NAME 提交的任务名称,用户可以根据需要起名
-m MODE 提交的运行时环境,目前支持四种类型运行时环境[local, virtual-env,docker]
local 使用的是emr-worker上面的python运行环境,所以如果要使用一些第三方python包需要手动在所有机器上进行安装
docker 使用的是emr-worker上面的docker运行时,tensorflow运行在docker container内
virtual-env 使用用户上传的python环境,可以在python环境中安装一些不同于worker节点的python库
-m_arg MODE_ARG 提交的运行时补充参数,如果运行时是docker,则设置为docker镜像名称,如果是virtual-env,则指定python环境文件名称,tar.gz打包
-x Exit 分布式TensorFlow有些API需要用户手动退出PS,在这种情况下用户可以指定-x选项,当所有worker完成训练并成功后,PS节点自动退出
-enable_tensorboard 是否在启动训练任务的同时启动TensorBoard
-log_tensorboard 如果训练同时启动TensorBoard,需要指定TensorBoard日志位置,需要时HDFS上的位置
-conf CONF Hadoop conf位置,默认可以不设,使用EMR默认配置
-f FILES 运行TensorFlow所有依赖的文件和文件夹,包含执行脚本,如果设置virtual-env 执行的virtual-env文件。用户可以将所有依赖放置到一个文件夹中,脚本会自动将文件夹按照文件夹层次关系上传到HDFS中
-pn TensorFlow启动的参数服务器个数
-pc 每个参数服务器申请的CPU核数
-pm 每个参数服务器申请的内存大小
-wn TensorFlow启动的Worker节点个数
-wc 每个Worker申请的CPU核数
-wg 每个Worker申请的GPU核数
-wm 每个Worker申请的内存个数
-wait_time 获取资源最大等待时间,单位分钟,比如-wait_time 1指的是启动master后最多等待一分钟获取所有资源,否则master失败
-c COMMAND 执行的命令,如python census.py
进阶选项,用户需要谨慎使用进阶选项,可能造成任务失败
-wnpg 每个GPU核上同时跑的worker数量(针对tensorflow-ps)
-ppn 每个GPU核上同时跑的worker数量(针对horovod) 以上两个选项指的是单卡多进程操作,由于共用一张显卡,需要在程序上进行一定限制,否则会造成显卡OOM。