带有估计量的参数服务器策略(Tensorflow)

时间:2019-03-05 12:52:05

标签: tensorflow tensorflow-serving

如何使用带有估计器的参数服务器策略进行分布式训练?如何在不使用TF_CONFIG作为Estimators的情况下定义Cluster Spec?

1 个答案:

答案 0 :(得分:0)

据我了解,为了使用“参数服务器分布式策略”,使用Environment变量必须使用TF_CONFIG,在该策略中,我们以json格式定义集群规范,PS信息和有关Tasks的信息。

请找到下面的代码段,该代码段演示了使用带有估计量的Parameter Server Strategy进行分布式训练:

    # Configuring the Workers, Parameter Servers and Tasks
    NUM_WORKERS = 1
    IP_ADDRS = ['localhost']
    PORTS = [12345]

    os.environ['TF_CONFIG'] = json.dumps({
            'cluster': {
                'worker': ['%s:%d' % (IP_ADDRS[w], PORTS[w]) for w in range(NUM_WORKERS)],
                'ps': ['%s:%d' % (IP_ADDRS[w], PORTS[w]) for w in range(NUM_WORKERS)]
            },
            'task': {'type': 'worker', 'index': 0}
        })

    # Method for using ParamterServerStrategy
    strategy = tf.distribute.experimental.ParameterServerStrategy()

    config = tf.estimator.RunConfig(train_distribute=strategy)

    classifier = tf.estimator.Estimator(
        model_fn=model_fn, model_dir='/tmp/multiworker', config=config)
    tf.estimator.train_and_evaluate(
        classifier,
        train_spec=tf.estimator.TrainSpec(input_fn=input_fn),
        eval_spec=tf.estimator.EvalSpec(input_fn=input_fn)
    )