美文网首页深度学习程序员
人工智能 - TensorFlow 的 分布式架构 [6]

人工智能 - TensorFlow 的 分布式架构 [6]

作者: SpikeKing | 来源:发表于2017-09-19 16:07 被阅读215次

    欢迎Follow我的GitHub,关注我的简书

    TensorFlow支持分布式运行,即运行在多台机器上进行计算。机器类型分为PS,参数服务器;Worker,计算服务器。并行方式分为异步,每台机器独立计算一个Step,更新至参数服务器;同步,所有机器都完成计算,统一更新至参数服务器。

    本文源码的GitHub地址,位于dist_test文件夹。

    Cluster

    创建集群,使用集群设备;创建Server,ps参数服务器,直接等待

    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()
    
    with tf.device(tf.train.replica_device_setter(
        worker_device=worker_device,
        ps_device="/job:ps/cpu:0",
        cluster=cluster)):
    

    创建Supervisor

    sv = tf.train.Supervisor(
        is_chief=is_chief,
        logdir=train_dir,
        init_op=init_op,
        recovery_wait_secs=1,
        global_step=global_step)
    

    创建sess_config

    sess_config = tf.ConfigProto(
        allow_soft_placement=True,
        log_device_placement=False,
        device_filters=["/job:ps", "/job:worker/task:%d" % FLAGS.task_index])
    

    Supervisor和sess_config创建Session,TF的核心执行会话

    sess = sv.prepare_or_wait_for_session(server.target, config=sess_config)
    

    其余由Session执行的图,类似。

    三台机器的执行命令,ps是hd1,worker是learn和docker01。

    python mnist_replica.py --job_name=ps --task_index=0 
    python mnist_replica.py --job_name=worker --task_index=0 
    python mnist_replica.py --job_name=worker --task_index=1 
    

    异步模式,全局步骤由两台服务器分开处理,并且更新到参数服务器。

    分布式

    相关文章

      网友评论

        本文标题:人工智能 - TensorFlow 的 分布式架构 [6]

        本文链接:https://www.haomeiwen.com/subject/lozwsxtx.html