Jadikan Keras berjalan pada sistem cpu multi-mesin multi-mesin

10

Saya sedang mengerjakan model Seq2Seq menggunakan LSTM dari Keras (menggunakan latar Theano) dan saya ingin memaralelkan prosesnya, karena bahkan beberapa MB data memerlukan beberapa jam untuk pelatihan.

Jelas bahwa GPU jauh lebih baik dalam paralelisasi daripada CPU. Saat ini, saya hanya punya CPU untuk bekerja. Saya dapat mengakses 16 CPU (2 Thread per core X 4 core per socket X 2 socket)

Dari dokumen dukungan multi-inti di Theano, saya berhasil menggunakan keempat inti dari satu soket. Jadi, pada dasarnya CPU menggunakan 400% penggunaan dengan 4CPU yang digunakan dan 12 CPU lainnya tetap tidak digunakan. Bagaimana cara memanfaatkannya juga. Tensorflow juga bisa digunakan sebagai pengganti latar belakang Theano, jika berhasil.

masukkan deskripsi gambar di sini

yazhi
sumber

Jawaban:

6

Untuk mengatur jumlah utas yang digunakan dalam Theano (dan, karenanya, jumlah inti CPU), Anda perlu mengatur beberapa parameter di lingkungan:

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

Ini akan memungkinkan Anda untuk menggunakan semua core dari semua CPU.

Ini bisa, tentu saja, juga dilakukan di 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>
Thomas Cleberg
sumber
Saya akan berterima kasih untuk kode ini untuk mengatur jumlah inti di R (saya menggunakan keras di R dan hanya menggunakan bagian inti ...). Khusus untuk tensorflow. Terima kasih, Milan
gutompf
2
Anda bisa menggunakan Sys.setenv () untuk mengatur variabel lingkungan di R, mirip dengan menggunakan os.environ [var] dengan Python.
Thomas Cleberg