Насколько я понимаю, использование переменной Environment, TF_CONFIG является обязательным для использования распределенной стратегии сервера параметров, в которой мы определяем спецификацию кластера, информацию PS и информацию о задачах в формате json.
Ниже приведен фрагмент кода, демонстрирующий распределенное обучение с использованием стратегии сервера параметров с оценщиками:
# 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)
)