Keras на GPU - низкое использование GPU - PullRequest
0 голосов
/ 07 мая 2019

Я тренирую модель с использованием Keras 2.2.4 и python 3.5.3 и Tensorflow на виртуальной машине GCP с графическим процессором K80.

Загрузка графического процессора колеблется между 25 и 50%, в то время как процессорный процесс с Python съедает 98%

I Предположим, Python слишком медленный, чтобы заполнить данные K80.

Код как ниже.

Существует несколько дней данных для каждой эпохи. Каждый день имеет около 20 тысяч образцов - число немного отличается для каждого. Размер партии фиксируется переменной window_size=900 Так что я кормлю его около 19 тысяч раз в день. Партия 0 начинается с образца 0 и отбирает 900 образцов, партия 1 начинается с образца 1 и отбирает 900 образцов и т. Д. До конца дня.

Итак, у меня есть 3 цикла - эпоха, дни, партии. Я чувствую, что эпоха и дни должны быть сохранены для ясности. Я не думаю, что они являются проблемой

Я думаю, следует рассмотреть самую внутреннюю петлю.

Реализация внутреннего цикла наивна. Есть ли хитрость, которая может ускорить работу с массивами?

# d is tuple from groupby - d[0] = date, d[1] = values
for epoch in epochs:
    print('epoch: ', epoch)

    for d in days : 
        print('  day: ', d[0])

        # get arrays for the day
        features = np.asarray(d[1])[:,2:9].astype(dtype = 'float32')
        print(len(features), len(features[0]), features[1].dtype)

        labels = np.asarray(d[1])[:, 9:].astype(dtype = 'int8')
        print(len(labels), len(labels[0]), labels[1].dtype)

        for batch in range(len(features) - window_size):

            # # # can these be optimised?
            fb = features[batch:batch+window_size,:]
            lb = labels[batch:batch+window_size,:]

            fb = fb.reshape(1, fb.shape[0], fb.shape[1])
            lb = lb.reshape(1, lb.shape[0], lb.shape[1])
            # # #

            model.train_on_batch(fb, lb)

        #for batches

        #model.reset_states()

    #for days
#for epoch

1 Ответ

1 голос
/ 08 мая 2019

попробуйте обернуть ваш скрипт:

import tensorflow as tf

with tf.device('/device:GPU:0'):
    <your code>

Ознакомьтесь с руководством Tensorflow по использованию графических процессоров для получения дополнительной информации

...