我很难理解如何使用分布式tensorflow进行估算(tensorflow / contrib / learn / python / learn / estimators / estimator.py)。
我的非分布式实施版基于learn_runner,experiment和estimator(github.com/google/seq2seq)。这就是为什么我尝试使用ClusterConfig和TF_CONFIG而不是使用在Tensorflow的官方教程中使用的ClusterSpec的原因。
我在调用run_config.RunConfig(...)之前添加了以下代码:
ps_hosts = FLAGS.ps_hosts.split(",")
worker_hosts = FLAGS.worker_hosts.split(",")
cluster = {"ps": ps_hosts, "worker": worker_hosts}
os.environ['TF_CONFIG'] = json.dumps({
'cluster': cluster,
'task': {
'type': FLAGS.job_name,
'index': FLAGS.task_index
}
})
我的问题是关于参数服务器。 我注意到我使用作业名称" ps"启动的过程也表现为工作人员并进行培训。我查看了代码(estimator.py和device_setter.py),似乎估算器的实现实际上允许参数服务器成为另一个工作者。
是真的如此,还是我错过了什么?
还有一个问题是,我尝试使用SyncReplicasOptimizer进行同步分布式学习,由于实验+估算器包装器,因此很难遵循Tensorflow。有没有人对此有更好的想法?
我非常感谢你的帮助。