Выполняются ли операции TensorFlow на нескольких графических процессорах параллельно по умолчанию или последовательно?

#tensorflow #gpu #tensorflow2.0

Вопрос:

Я хотел бы вычислить верхние значения k из матричного умножения с использованием нескольких графических процессоров и тензорного потока, как показано ниже:

 @tf.function
def mult_and_get_top_k(mat1, mat2, k):
    multiplied_matrix = tf.linalg.matmul(mat1, mat2)
    return tf.math.top_k(multiplied_matrix, k=k)
 

При этом я рассматриваю возможность ручной отправки матричных данных на каждый графический процессор и вычисления там, аналогично методу, описанному в этом руководстве по TensorFlow. Здесь для вычисления умножения матриц используется несколько графических процессоров, а центральный процессор используется для суммирования конечного результата.

Мой вопрос в том, когда матрица tf вычисляется на нескольких графических процессорах, выполняется ли функция графика последовательно или параллельно? Если это выполняется последовательно, есть ли способ вручную настроить задание на каждом из графических процессоров параллельно? Я не нахожу в Интернете никаких документов по TensorFlow 2, которые бы это поддерживали.

Комментарии:

1. tf.distribute.Strategy это API TensorFlow для распределения обучения между несколькими графическими процессорами, несколькими компьютерами или процессорами. Используя этот API, вы можете распространять существующие модели и обучающий код с минимальными изменениями кода. tf.distribute.MirroredStrategy поддерживает синхронное распределенное обучение на нескольких графических процессорах на одной машине. Он создает по одной реплике на каждое графическое устройство. Каждая переменная в модели отражается во всех репликах. Для получения дополнительной информации перейдите по этой ссылке Спасибо!