Keras, Tensorflow에서 GPU 똑똑하게 사용하기 - 2부

혹시 잊었다면: Keras, Tensorflow에서 GPU 똑똑하게 사용하기 - 1부


1부에서는, tensorflow를 통해 gpu와 그 메모리들을 관리하는 방법에 대해 다루었다.

이번 포스팅에서는 실제로 어떠한 방법들을 사용해야 gpu를 효율적으로 다룰 수 있을지에 대해 논해본다.

Out of Memory?


당장 해법이 급하다면 넘어가도 무방하다


Out of Memory를 자주보고 있다면, 본인이 아래의 케이스에 속하는지 확인해보자. StackOverflow에도 종종 올라오는 대표적인 사례들이다.

  • batch_size가 너무나 크다.
  • 한 프로세스에서 다른 Model을 두번 compile 했다.
  • gpu를 사용하는 (또는 했던) 다른 프로세스가 아직 작업 중이거나, 작업이 끝났음에도 불구하고 terminate 되지 않았다.

물론 이 외에도 OOM을 일으키는 경우가 있겠지만, 십중팔구 위의 3가지 이유 때문에 발생한다고 생각하면 된다. 아니, 정말 이 외에 있던가...?

세 가지 경우 모두 keras에 별다른 옵션을 지정하지 않고 사용하면 더 자주 발생할 수 있는데, 이번 포스팅에서 어떠한 옵션들이 있는지도 가볍게 다루도록 한다.


batch_size


우선 batch_size란, keras.models.Model (이하 Model)에서 가장 많이, 그리고 때로는 가장 적게 사용되는 argument 중 하나이다.

가장 적게 사용되는 이유로는, 여타 argument들과 같이 default값이 존재하기 때문으로, 본인이 학습 또는 예측의 속도에 대해 크게 신경쓰지 않으면 딱히 건들 이유가 없기 때문이기도 하다.

다음은 Modelmethodbatch_size를 argument로 가지고 있는 method들 이다:

  • Model.fit
  • Model.evaluate
  • Model.predict

generator를 사용하지 않는다면 학습, 검증 그리고 예측에 당연히 들어가는 method 들이므로 한번쯤 사용해 봤을 것이다. 해당 argument들은 모두 기본값을 32로 가지고 있다.

batch_size: Integer or None. Number of samples per step. If unspecified, batch_size will default to 32.

출처: Keras: Model (functional API)

 


'Python > Keras' 카테고리의 다른 글

Keras, Tensorflow에서 GPU 똑똑하게 사용하기 - 1부  (4) 2018.10.11