Использование Tensorflow / keras с многопроцессорным пулом Python - PullRequest
0 голосов
/ 12 октября 2019

Я хочу пройти обучение по нейронной сети в Tensorflow / Keras, но предпочитаю использовать многопроцессорный модуль python для максимального использования системных ресурсов и экономии времени. То, что я делаю, просто так (я хочу запустить этот код в системе без графического процессора или с одним или несколькими графическими процессорами):

import ... (required modules)
from multiprocessing import Pool
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
tf.keras.backend.set_session(sess)

... some tf and non-tf variable initializations...
... some functions to facilitate reading tensorflow datasets in TFRecord format...
... function defining keras model...

# Main worker function
def doWork(args):
    from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
    from tensorflow.keras.models import load_model

    train_data = read_datasets(...)
    val_data = read_datasets(...)
    test_data = read_datasets(...)

    if (NumGPUs > 1):
        strategy = tf.distribute.MirroredStrategy()
        with strategy.scope():
            model = keras_model(...)
            model.compile(...)
    else:
        model = keras_model(...)
        model.compile(...)

    model.fit(train_data, epochs=epochs, steps_per_epoch=train_steps, ...)
    _, test_acc = model.evaluate(test_data, steps=test_steps)
    ...log results...

if __name__ == '__main__':
    pool = Pool(processes=2)
    a1 = <set of parameters for the first run>
    a1 = <set of parameters for the second run>
    pool.map(doWork, (a1, a2))

Я могу запустить этот код на разных компьютерах и получить свои результаты, ноиногда я сталкиваюсь с системными перебоями (особенно если я хочу прервать выполнение нажатием CTRL + C) или завершением программы с различными ошибками, и я думаю, что вышеописанное не является правильным стилем комбинирования многопроцессорной обработки Tensorflow / Keras и Python. Каков правильный стиль написания кода выше?

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