오뚝이개발자

[Keras] 케라스로 멀티 gpu 사용하기(여러 개의 gpu 사용하기, multi gpu) 본문

AI/AI 개발

[Keras] 케라스로 멀티 gpu 사용하기(여러 개의 gpu 사용하기, multi gpu)

땅어 2021. 11. 7. 18:22
728x90
300x250

 

 

keras를 사용해 멀티 gpu를 사용하는 방법을 알아보자. 해당 메소드는 케라스 2.0.9 버전부터 사용이 가능하니 해당 버전에 맞춰 설치해야 한다.

model = Sequential()
model.add(layers.LSTM(32, input_shape=(None, float_data.shape[-1])))
model.add(layers.Dense(1))

# multi-gpu 사용
from keras.utils.training_utils import multi_gpu_model
model = multi_gpu_model(model, gpus=2)

model.compile(optimizer=RMSprop(), loss='mae')
history = model.fit_generator(train_gen,steps_per_epoch=500,epochs=20,validation_data=val_gen,validation_steps=val_steps)

위와 같이 keras.utils.training_utils로부터 multi_gpu_model을 import하고 model = multi_gpu_model(model, gpus=2)와 같이 gpus= 부분에 사용하고자 하는 gpu 갯수를 입력해주면 된다. 만약 배치 사이즈가 1024, gpus=2라면 2개의 서브 배치로 나누어져 512개씩 각각의 gpu에서 처리되고 합쳐진다.

주의할 점은 배치 사이즈가 작은 경우 데이터를 나누고 합치는 과정에서 소요되는 시간때문에 오히려 하나의 gpu를 사용하는 것보다도 시간이 오래 걸리게 되는 경우가 생긴다는 것이다. 적절히 본인이 돌리고자 하는 코드에서의 배치 사이즈에 맞게 사용하도록 하자.

 

 

 

728x90
300x250
Comments