Keras를 다중 시스템 다중 코어 CPU 시스템에서 실행


11

Keras의 LSTM (Theano 배경 사용)을 사용하여 Seq2Seq 모델 을 작업 중이며 몇 MB의 데이터조차도 훈련에 몇 시간이 필요하기 때문에 프로세스를 병렬화하고 싶습니다.

GPU가 CPU보다 병렬 처리에서 훨씬 더 낫다는 것은 분명합니다. 현재는 CPU 만 사용할 수 있습니다. 16 개의 CPU에 액세스 할 수 있습니다 (코어 당 2 개의 스레드 X 소켓 당 4 개의 코어 X 2 소켓)

Theano 의 다중 코어 지원 문서 에서 단일 소켓의 4 개 코어를 모두 사용할 수있었습니다. 따라서 기본적으로 CPU는 4 개의 CPU를 사용하고 400 개의 CPU를 사용하고 나머지 12 개의 CPU는 사용되지 않은 상태로 유지됩니다. 그것들도 어떻게 사용합니까? 작동하는 경우 Theano 배경 대신 Tensorflow를 사용할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

답변:


7

Theano에서 사용되는 스레드 수 (따라서 CPU 코어 수)를 설정하려면 환경에서 몇 가지 매개 변수를 설정해야합니다.

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

이를 통해 모든 CPU의 모든 코어를 사용할 수 있습니다.

물론 이것은 텐서 플로우에서도 가능합니다 :

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에서 코어 수를 설정 한이 코드에 감사드립니다 (R에서 keras를 사용하고 있으며 코어의 일부만 사용하고 있습니다 ...). 특히 tensorflow의 경우. 감사합니다, 밀라노
gutompf

2
Python에서 os.environ [var]을 사용하는 것과 유사하게 Sys.setenv ()를 사용하여 R에서 환경 변수를 설정할 수 있습니다.
Thomas Cleberg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.