Ich benutze zwei Arbeiter/Replikate und ein Parameter-Server. wieverteilt Tensorflow tf.train.SyncReplicasOptimizer scheint nicht synchronisiert
--ps_hosts='hosta.com:2222' --worker_hosts='hosta.com:2223,hostb.com:2223'
Mit dem tf.train.SyncReplicasOptimizer wie
opt = tf.train.SyncReplicasOptimizer(
opt,
replicas_to_aggregate=2,
replica_id=FLAGS.task_id,
total_num_replicas=2,
variables_to_average=variables_to_average)
Aus dem Protokoll i worker0 (hosta.com:2223) ist viel schneller als worker1 (hostb.com:2223) sehen aufgrund von Cross-Machine-Netzwerk kommunizieren. Sieht so aus, als ob Worker0 die Gradienten von worker1 nicht abgewartet hat. Selbst nachdem ich den Job von worker1 beendet habe, wird worker0 noch verarbeitet. Und worker0 viele doppelte Protokolle wie
INFO:tensorflow:Worker 0: 2016-04-21 03:24:02.659749: step 29010, loss = 0.40(812.0 examples/sec; 0.315 sec/batch)
INFO:tensorflow:Worker 0: 2016-04-21 03:24:02.990509: step 29010, loss = 0.59(775.3 examples/sec; 0.330 sec/batch)
INFO:tensorflow:Worker 0: 2016-04-21 03:24:04.650522: step 29013, loss = 0.56(774.0 examples/sec; 0.331 sec/batch)
INFO:tensorflow:Worker 0: 2016-04-21 03:24:04.989555: step 29013, loss = 0.47(756.3 examples/sec; 0.338 sec/batch)
INFO:tensorflow:Worker 0: 2016-04-21 03:24:06.549120: step 29016, loss = 0.49(816.6 examples/sec; 0.313 sec/batch)
INFO:tensorflow:Worker 0: 2016-04-21 03:24:06.867229: step 29016, loss = 0.48(806.1 examples/sec; 0.318 sec/batch)
hat also sollte nicht gehangen die tf.train.SyncReplicasOptimizer und alle der replicas_to_aggregate Arbeiter warten?
Danke. Wenn Trainingsdaten gleichmäßig auf "worker0" und "worker1" mit unterschiedlicher Trainingsgeschwindigkeit aufgeteilt werden, werden einige Stapel von langsameren Worker ignoriert, sodass das Modell möglicherweise nicht ausreichend trainiert wird. – LiuJia