У меня есть сеть для трансферного обучения, и я хочу тренироваться на двух GPU. Я только что тренировался на одном до этого момента и ищу способы ускорить его. Я получаю противоречивые ответы о том, как использовать его наиболее эффективно. все должно быть вложено внутрь strategy.scope()
?
Этот учебник показывает compile
внутри, но этот учебник показывает, что он находится снаружи. Первый показывает его снаружи
mirrored_strategy = tf.distribute.MirroredStrategy()
with mirrored_strategy.scope():
model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))])
model.compile(loss='mse', optimizer='sgd')
, но говорит это сразу после
. В этом примере мы использовали MirroredStrategy, поэтому мы можем запустить это на машине с несколькими графическими процессорами. strategy.scope () указывает Keras, какую стратегию использовать для распространения обучения. Создание моделей / оптимизаторов / показателей внутри этой области позволяет нам создавать распределенные переменные вместо обычных переменных. После того, как это настроено, вы можете соответствовать своей модели, как обычно. MirroredStrategy заботится о воспроизведении обучения модели на доступных графических процессорах, агрегировании градиентов и многом другом.