如何使用带有估计器的参数服务器策略进行分布式训练?如何在不使用TF_CONFIG作为Estimators的情况下定义Cluster Spec?
答案 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)
)