你好,游客 登录 注册 发布搜索
背景:
阅读新闻

TensorFlow 生态系统:与多种开源框架的融合

[日期:2016-11-05] 来源:机器之心  作者: [字体: ]

该 repository 包含 TensorFlow 与其他开源框架融合的样例。这些样例是有限的,但可以作为模板使用。用户也可以根据自己的使用情况特制这些模板。

项目地址: https://github.com/tensorflow/ecosystem

内容:

  • docker-Docker 配置用来在 cluster managers 上运行 TensorFlow

  • kubernetes-用来在 kubernetes 上运行分布式 TensorFlow 的模板

  • marathon-使用 Marathon 用来运行分布式 TensorFlow 的模板,在 Mesos 上部署

  • hadoop-为 Hadoop MapReduce 和 Spark 备录 InputFormat/OutputFormat 的 TFRecord 文件

分布式训练的常见设置

每个分布式训练项目都有一些常见设置。首先,定义 flags,以便于该 worker 知道其他 works 在分布式训练中扮演的角色:

# Flags for configuring the taskflags.DEFINE_integer("task_index", None,
                     "Worker task index, should be >= 0. task_index=0 is "                     "the master worker task the performs the variable "                     "initialization.")
flags.DEFINE_string("ps_hosts", None,
                    "Comma-separated list of hostname:port pairs")
flags.DEFINE_string("worker_hosts", None,
                    "Comma-separated list of hostname:port pairs")
flags.DEFINE_string("job_name", None, "job name: worker or ps")

然后,开始自己的 server。因为 worker 和 parameter servers(ps jobs)通常共享常见的程序,parameter servers 应该在此停顿,所以他们和该 server 可以结合。

# Construct the cluster and start the serverps_spec = FLAGS.ps_hosts.split(",")
worker_spec = FLAGS.worker_hosts.split(",")

cluster = tf.train.ClusterSpec({
    "ps": ps_spec,
    "worker": worker_spec})

server = tf.train.Server(
    cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index)if FLAGS.job_name == "ps":
  server.join()

之后,代码的不同由你打算做的分布式训练的形式所决定。最常见的形式是图间复制(between-graph replication)。

Between-graph Replication

在此模式中,每个 worker 独立构建同一图。然后每个 worker 独立运行该图,只和 parameter servers 共享梯度。该设置可又下图进行解释,注意每个虚线框表示一个任务。

在为该训练模式构建图之前,你必须明令设置此设备。下面的代码显示了该设置:

with tf.device(tf.train.replica_device_setter(    worker_device="/job:worker/task:%d" % FLAGS.task_index,    cluster=cluster)):  # Construct the TensorFlow graph.# Run the TensorFlow graph

运行这些样例的需求

为了运行这些样例,Jinja 模板必须被安装:

# On Ubuntusudo apt-get install python-jinja2# On most other platformssudo pip install Jinja2

Jinja 是用作模板的扩展。还有其他的特定框架需求,请阅读 README 文件查看每个框架的需求。

收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款