Multi GPU с обучением Multi CPU, как консолидировать - PullRequest
0 голосов
/ 24 февраля 2020

Я использую набор видеоданных Youtube 5M musi c, и я хотел бы обучить их алгоритму. Чтобы использовать набор данных, я должен загрузить каждое видео и дополнить его, чтобы они все были одинакового размера. Затем я подгоняю видео к меткам в нейронной сети. У меня есть система 8 GPU и система ядра 8 CPU с онлайн-сервера. Я хотел бы выделить один процессор для каждого процесса загрузки / заполнения, а затем потренироваться с использованием графических процессоров.

, что является наиболее эффективным способом сделать это. Буду ли я загружать и обрабатывать 8 видео .. затем отправлять их в графические процессоры, или у меня будет по одному графическому процессору на процессор, и пусть они будут работать так. Кроме того, как в плане схемы будет выглядеть каждый сценарий.

Мой код многопроцессорной обработки выглядит следующим образом:

  if __name__ == '__main__':

    processes = []

    p = multiprocessing.Process(target=video_proc())
    processes.append(p)
    p.start()

    for process in processes:
        process.join()

Функция называется video_pro c и моя функция multi Код GPU выглядит следующим образом. этот код для нескольких графических процессоров содержится в video_pro c, поэтому каждый процессор имеет доступ ко ВСЕМ 8 графическим процессорам. Это также может сработать.


            parallel_model = multi_gpu_model(model, gpus=8)
            parallel_model.compile(loss='binary_crossentropy',
                                   optimizer='rmsprop')

            # This `fit` call will be distributed on 8 GPUs.


            callbacks = [
                EarlyStoppingByLossVal(monitor='loss', value=0.001, verbose=1),
                # EarlyStopping(monitor='val_loss', patience=2, verbose=0),
                ModelCheckpoint(kfold_weights_path, monitor='loss', save_best_only=True, verbose=0),
            ]
            parallel_model.fit(X_D, Y_D, batch_size=8, nb_epoch=nb_epoch,
                               shuffle=True, verbose=1,
                               callbacks=callbacks)

Другое соображение заключается в том, что я бы хотел, чтобы графические процессоры никогда не простаивали, как это происходит во время процесса загрузки. А также процессоры будут простаивать во время установки данных в нейронной сети. Как я мог преодолеть это? Спасибо за любую помощь!

...