Я хочу использовать несколько графических процессоров и в итоге реализовать параллелизм моделей для архитектуры unet. Я использую tf.device
для назначения слоев разным графическим процессорам. Хотя я назначаю большинство слоев gpu:1
, тензорный поток использует gpu:0
, как показано ниже.
+-------------------------------+----------------------+----------------------+
| 0 GeForce GTX 108... Off | 00000000:83:00.0 Off | N/A |
| 29% 45C P2 56W / 250W | 3501MiB / 11178MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 108... Off | 00000000:84:00.0 Off | N/A |
| 30% 45C P2 57W / 250W | 499MiB / 11178MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
_
with tf.device('/device:gpu:0'):
input = tf.keras.layers.Input((IMG_HEIGHT, IMG_WIDTH ,3))
x = Conv2D(16, 3, padding='same', activation='relu')(input)
with tf.device('/device:gpu:1'):
x = MaxPooling2D()(x)
x = Conv2D(32, 3, padding='same', activation='relu')(x)
x = MaxPooling2D()(x)
x = Conv2D(64, 3, padding='same', activation='relu')(x)
x = MaxPooling2D()(x)
x = Flatten()(x)
x = Dense(512, activation='relu')(x)
output =Dense(1)(x)
model = tf.keras.models.Model(inputs=input, outputs=output)
model.compile(optimizer='adam',
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit_generator(
train_data_gen,
steps_per_epoch=total_train // batch_size,
epochs=epochs,
validation_data=val_data_gen,
validation_steps=total_val // batch_size
)
Я использую эту небольшую сеть для тестирования устройства. размещение.
- Это потому, что вычисление градиентов и оптимизатор происходит в первом графическом процессоре?
- Если да, как я могу назначить его соответствующему графическому процессору. а если не в чем проблема.
Полный блокнот можно найти здесь Заранее спасибо.