Keras'ın çok makineli çok çekirdekli işlemci sisteminde çalışmasını sağlayın


11

Keras (Theano arka planını kullanarak) LSTM kullanarak Seq2Seq modeli üzerinde çalışıyorum ve ben birkaç MB veri bile eğitim için birkaç saat gerekir, çünkü süreçleri paralelleştirmek istiyorum.

GPU'ların paralelleştirmede CPU'lardan çok daha iyi olduğu açıktır. Şu anda yalnızca üzerinde çalışabileceğim CPU'larım var. 16 CPU'ya erişebildim (çekirdek başına 2 iş parçacığı X soket başına 4 çekirdek X 2 soketi)

Theano'daki çok çekirdekli destek belgesinden, tek bir soketin dört çekirdeğini de kullanmayı başardım. Yani, temelde CPU kullanılan 4CPU'larla% 400 kullanımda ve geri kalan 12 CPU kullanılmıyor. Onları nasıl kullanırım. Tensorflow, çalışırsa Theano arka planı yerine de kullanılabilir.

resim açıklamasını buraya girin

Yanıtlar:


7

Theano'da kullanılan iş parçacığı sayısını (ve dolayısıyla CPU çekirdeği sayısını) ayarlamak için, çevrede birkaç parametre ayarlamanız gerekir:

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

Bu, tüm CPU'ların tüm çekirdeklerini kullanmanıza izin vermelidir.

Bu, elbette, Tensorflow'da da yapılabilir:

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>

Bu kod için R çekirdek sayısı ayarlamak için minnettar olacaktır (R keras kullanıyorum ve çekirdeklerin sadece bir kısmını kullanıyor ...). Özellikle tensorflow için. Teşekkürler, Milan
gutompf

2
Python'daki os.environ [var] gibi, ortam değişkenlerini R olarak ayarlamak için Sys.setenv () kullanabilirsiniz.
Thomas Cleberg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.