Заставьте Keras работать на многоядерной многоядерной системе

11

Я работаю над моделью Seq2Seq, используя LSTM от Keras (используя Theano background), и я хотел бы распараллелить процессы, потому что даже нескольким МБ данных требуется несколько часов для обучения.

Ясно, что графические процессоры намного лучше в параллелизации, чем процессоры. На данный момент у меня есть только процессоры для работы. Я мог получить доступ к 16 процессорам (2 потока на ядро ​​X 4 ядра на сокет X 2 сокета)

Из документа поддержки многоядерных процессоров в Theano мне удалось использовать все четыре ядра одного сокета. Таким образом, в основном ЦП используется на 400% при использовании 4 ЦПУ, а оставшиеся 12 ЦП остаются неиспользованными. Как мне их тоже использовать. Tensorflow также можно использовать вместо фона Theano, если он работает.

введите описание изображения здесь

yazhi
источник

Ответы:

7

Чтобы установить количество потоков, используемых в Theano (и, следовательно, количество ядер ЦП), вам необходимо установить несколько параметров в среде:

import os
os.environ['MKL_NUM_THREADS'] = '16'
os.environ['GOTO_NUM_THREADS'] = '16'
os.environ['OMP_NUM_THREADS'] = '16'
os.eviron['openmp'] = 'True'

Это должно позволить вам использовать все ядра всех процессоров.

Это, конечно, можно сделать и в Tensorflow:

import tensorflow as tf
from keras.backend import tensorflow_backend as K

with tf.Session(config=tf.ConfigProto(
                    intra_op_parallelism_threads=16)) as sess:
    K.set_session(sess)
    <Your Keras code>
Томас Клеберг
источник
Я был бы благодарен за этот код для установки количества ядер в R (я использую keras в R, и он использует только часть ядер ...). Особенно для тензорного потока. Спасибо, Милан
gutompf
2
Вы можете использовать Sys.setenv () для установки переменных окружения в R, аналогично использованию os.environ [var] в Python.
Томас Клеберг