Keras 기반 Multi GPU 사용 방법 (2020.10)
슈퍼컴퓨팅인프라센터 2019. 9. 18. 10:31
Last updated
슈퍼컴퓨팅인프라센터 2019. 9. 18. 10:31
Last updated
Keras(케라스)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리로, MXNet, Deeplearning4j, 텐서플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있는 High-level Neural Network API이다. 케라스의 특징은 User friendliness, Modularity, Easy Extensibility로 Multi-GPU를 사용하고자 하는 사용자도 코드를 최소한으로 수정하여 쉽게 Multi-GPU를 사용할 수 있도록 하고 있다.
KISTI GPU 클러스터인 NEURON의 큐 구성은 다음과 같으며, ivy_k40_2, ivy_v100_2, cas_v100_2, cas32c_v100_2, cas_v100nv_4 큐에는 한 노드에 2, 4개의 GPU가 장착되어 있어, 단일노드를 이용할 때에도 GPU를 여러 대 사용하여 신경망 학습을 할 수 있는 환경이 구축되어 있다.
※ 노드 구성은 시스템 부하에 따라 시스템 운영 중에 조정될 수 있음.
※ cas32c_v100_2 파티션 계산노드는 Xeon Gold 6242 CPU 2ea 탑재 (총 32코어)
본 Multi-GPU 사용 방법 설명서에서는 CNN기반 신경망을 cifar10 데이터를 이용하여 학습하는 예제를 이용하였다.
※작업제출 스크립트
Conda를 이용하여 Keras 패키지가 설치된 tf_gpu 가상환경을 구축하고 tf_gpu 환경에서 수행하는 방법임. (Conda의 활용은 ‘KISTI 홈페이지 > 기술지원 > 지침서 > 소프트웨어 > Conda의 활용’ 참고.)
Keras는 tensorflow 위에서 동작하기 때문에 application명으로 tensorflow 사용.
ivy_v100_2노드에는 GPU가 2개 장착되어 있기 때문에 2개 GPU를 모두 사용할 수 있지만, 코드에 Multi-GPU를 사용한다고 명시하지 않았기 때문에 —gres옵션으로 gpu를 2개 사용한다고 하여도 하나의 gpu만을 사용한다는 것을 확인할 수 있음.
사용하고자하는 GPU 개수만큼 gpus를 설정. (ex. skl_v100nv_4노드의 경우에는 gpus=4라고 설정)
※ 작업제출 스크립트 (단일 GPU 사용과 동일)