Horovod и TensorFlow: ошибка в вычислении градиентов при использовании allgather () - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь вычислить медиану тензора для всех партий и всех процессов. Однако я получил ошибку TypeError: Expected int32, got None of type 'NoneType' instead. при вызове optimizer.compute_gradients(loss). Кажется, что вычисление градиентов плохо работает с операцией horovod allgather. Простая иллюстрация того, чего я хотел бы достичь, состоит в следующем:

my_tensor = compute_my_tensor()  # has dimension (None, N) for example
gathered_my_tensor = hvd.allgather(my_tensor)  # this will concatenate my_tensor of all processes along first dimension
median = get_median(gathered_my_tensor)
loss = compute_loss(my_tensor, median)  # say subtract each element of my_tensor by the median, then an L2 loss
optimizer = tf.compat.v1.train.AdamOptimizer()
optimizer = hvd.DistributedOptimizer(optimizer)
gradients = optimizer.compute_gradients(loss)  # this step throws the error

Очевидно, что операция allgather() не дифференцируема, поэтому она встречает значение None при вычислении градиентов? У кого-нибудь есть идеи, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...