📔
활용정보
초보사용자 가이드누리온 지침서뉴론 지침서활용정보MyKSC 지침서
  • 활용정보
  • 1️⃣소프트웨어 설치
    • 누리온
      • LAMMPS
        • lammps-2Aug2023 설치 소개
        • lammps-3Mar20 설치 소개(SKL)
        • lammps-3Mar20 설치 소개(KNL)
        • lammps-12Dec18 설치 소개
      • GROMACS
        • GROMACS-2021.4 버전 설치 소개 (SKL)
        • GROMACS-2021.4 버전 설치 소개 (KNL)
        • GROMACS-2020.2 버전 설치 소개 (KNL)
        • GROMACS-2020.2 버전 설치 소개 (SKL)
        • GROMACS-2018.6 버전 설치 소개 (KNL)
        • GROMACS-2018.6 버전 설치 소개 (SKL)
        • GROMACS-5.1.4 설치
      • Quantum Espresso
        • Quantum Espresso-7.2 설치 소개
        • Quantum Espresso-6.6 설치 소개
        • Quantum Espresso-6.2.1 설치 소개
      • OpenFOAM
        • OpenFOAM-v1912 설치 소개
        • OpenFOAM-v1712 설치 소개
        • OpenFOAM-7 버전 설치 소개(SKL)
        • OpenFOAM-7 버전 설치 소개(KNL)
        • OpenFOAM-5.x 버전 설치 소개(SKL)
        • OpenFOAM-5.x 버전 설치 소개(KNL)
      • VASP
        • VASP 6.5.0 설치 소개
        • VASP 6.1.0 설치 소개
        • VASP 5.4.4 설치 (KNL)
        • VASP 5.4.4 설치 (SKL)
        • VASP 5.3.5 설치
      • 누리온 R-3.6.2 버전 설치 소개
      • CP2K
        • CP2K-6.1.0 버전 설치 소개
        • CP2K-5.1.0 버전 설치 소개
      • SIESTA
        • SIESTA 4.1-b3 설치(KNL)
        • SIESTA 4.1-b3 설치(SKL)
      • WRF-V3.9.1.1 설치
      • RASPA v2.0.47 설치 소개
      • gcc v8.1.0 설치
      • UPP v3.1 설치 소개
      • mpiP v3.4.1 설치 소개
      • V_Sim v3.7.2 설치 소개
      • foam-extend v3.1 설치 소개
      • ParaView v5.2.0 설치 소개
      • AutoDock Vina v1.1.2 설치 소개
      • DDSCAT v7.3.3 설치 소개
    • 뉴론
      • VASP
        • VASP 6.4.3 설치 (GPU)
        • VASP 5.4.4 설치 (GPU)
      • GROMACS
        • GROMACS-2018.6 (GPU 버전) 설치
        • GROMACS-2016.4 (GPU 버전) 설치
      • LAMMPS
        • lammps-16Mar18 (GPU 버전) 설치
      • NAMD 2.12 (GPU 버전) 설치
      • Quantum Espresso
        • Quantum Espresso-7.3 (GPU 버전) 설치
        • Quantum Espresso-6.6 (GPU 버전) 설치
        • Quantum Espresso-6.4 (GPU 버전) 설치
      • OpenFOAM-v1912 설치 소개 (SKL)
  • 2️⃣슈퍼컴퓨터 활용 팁
    • 공통
      • oneAPI 소개
      • AMD Instinct MI100 GPU 성능 테스트
      • Checkpoint 기능 관련 안내
      • 인터렉티브 작업 제출 예제
      • git 사용 방법 안내
      • PYTHON 2.7 EOL(End of Life) 안내
      • Conda 의 활용 소개
      • CPU 관련 오류 사항 ( illegal instruction )
      • vasp.5.4.4.18Apr17 Version Bug 이슈
      • 컴파일러별 AVX-512 옵션 정리
      • Linux(Unix) 에서 Text 파일 내용에 ^M 이 붙어 있는 경우 해결 방법
      • vasp.5.4.1.24Jun15 Version Bug 이슈
      • 오픈 소스 빌드 시에 OpenMP 체크 오류 (Intel 컴파일러)
      • X86_64 어셈블리 프로그래밍 기초
    • 누리온
      • MVAPICH2/MVAPICH2-X 성능 비교(VASP)
      • WRF
        • WRF 멀티노드 활용(SKL)
        • WRF 멀티노드 활용(KNL)
      • VASP
        • VASP 멀티노드 활용(SKL)
        • VASP 멀티노드 활용(KNL)
      • LAMMPS
        • LAMMPS 멀티노드 활용(SKL)
        • LAMMPS 멀티노드 활용(KNL)
      • Gromacs
        • Gromacs 멀티노드 활용 (SKL)
        • Gromacs 멀티노드 활용 (KNL)
      • QE
        • QE 멀티노드 활용(SKL)
        • QE 멀티노드 활용(KNL)
    • 뉴론
      • SSH Port Forwarding 을 통한 Jupyter 작업 실행
      • AMD 노드 활용
      • LAMMPS 멀티노드 활용
      • Gromacs 멀티노드 활용
      • OpenMPI 3.1.X 이슈 사항
      • MPI 환경설정 및 작업 제출 방법(2021.03)
  • 3️⃣동영상 지침서
    • 공통
      • 파일 전송 (FTP) 사용법
    • 누리온
      • 작업 제출 방법
      • 작업 스크립트 작성법
      • 슈퍼컴퓨터 모듈 사용법
      • 슈퍼컴퓨터 접속 방법 [Windows 사용자]
      • 슈퍼컴퓨터 접속 방법 [Mac 사용자]
    • 뉴론
      • 인터렉티브 작업 방법
      • Slurm 작업 제출 방법
      • conda 설정방법
      • 작업 스크립트 작성 방법
  • 4️⃣기타
    • 누리온
      • FAQ (2025.03)
      • 사용자 지침서 (2021.05)
      • 데스크톱 가상화(VDI)
      • TSMSF 사용자 지침서
      • i-PI 사용법 (LAMMPS)
      • 딥러닝 프레임워크 병렬화 사용법
      • Q-CHEM v5.2 사용자 지침서
      • ABAQUS 사용자 지침서(2020.12)
      • OpenFOAM 사용자 지침서
      • 가우시안16(Gaussian16) S/W 사용 안내 (2019.03)
      • ANSYS FLUENT 사용자 지침서(2020.03)
      • ANSYS CFX 사용자 지침서(2020.02)
      • NASTRAN 사용자 지침서(2020.02)
      • LS-DYNA 사용자 지침서(2020.02)
      • 가우시안16(Gaussian16) LINDA S/W 사용 안내 (2019.08)
    • 뉴론
      • 공유 노드 정책 변경에 따른 메모리 할당량 설정 안내
      • SLURM 스케줄러 Fairshare 스케줄링 정책
      • FAQ (2025.01)
      • OpenFOAM 사용자 지침서
      • Jupyter 사용자 지침서
      • 딥러닝 프레임워크 병렬화 사용법
      • Keras 기반 Multi GPU 사용 방법 (2020.10)
      • 가우시안16(Gaussian16) GPU S/W 사용 안내 (2019.08)
      • slurm 스케쥴러 기본 사용법 (2021.04)
      • 뉴론 시스템 개요(2021.04)
  • External Link
    • Nurion Guide(Eng)
    • Neuron Guide(Eng)
Powered by GitBook
On this page
  • 가. 학습에 사용된 신경망 코드 (cifar10.py)
  • 나. 단일 GPU 사용 작업 제출 방법
  • 다. Multi-GPU 사용을 위한 코드 변경 및 작업 제출 방법
  • 1. [from keras.utils import multi_gpu_model] 모듈 추가
  • 2. 코드 내 multi-gpu사용 선언
  • 3. Multi-GPU 사용 작업 제출 방법
  1. 기타
  2. 뉴론

Keras 기반 Multi GPU 사용 방법 (2020.10)

슈퍼컴퓨팅인프라센터 2019. 9. 18. 10:31

Previous딥러닝 프레임워크 병렬화 사용법Next가우시안16(Gaussian16) GPU S/W 사용 안내 (2019.08)

Last updated 1 year ago

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 데이터를 이용하여 학습하는 예제를 이용하였다.

가. 학습에 사용된 신경망 코드 (cifar10.py)

나. 단일 GPU 사용 작업 제출 방법

※작업제출 스크립트

#!/bin/sh
#SBATCH -J keras
#SBATCH --time=24:00:00
#SBATCH -o %x_%j.out
#SBATCH -e %x_%j.err
#SBATCH -p cas_v100_2
#SBATCH --comment tensorflow
#SBATCH --gres=gpu:2
#SBATCH -N 1

module load python/3.7.1
source activate tf_gpu

srun python cifar10.py
  • 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만을 사용한다는 것을 확인할 수 있음.


다. Multi-GPU 사용을 위한 코드 변경 및 작업 제출 방법

1. [from keras.utils import multi_gpu_model] 모듈 추가

from __feature__ import print_function
import keras
from keras.datasets import cifar10
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.utils import multi_gpu_model
import os

2. 코드 내 multi-gpu사용 선언

# initiate RMSprop optimizer
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)

#multi-gpu
model = multi_gpu_model(model, gpus=2)

# Let's train the model using RMSprop
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
  • 사용하고자하는 GPU 개수만큼 gpus를 설정. (ex. skl_v100nv_4노드의 경우에는 gpus=4라고 설정)

3. Multi-GPU 사용 작업 제출 방법

※ 작업제출 스크립트 (단일 GPU 사용과 동일)

#!/bin/sh
#SBATCH -J keras
#SBATCH --time=24:00:00
#SBATCH -o %x_%j.out
#SBATCH -e %x_%j.err
#SBATCH -p cas_v100_2
#SBATCH --comment tensorflow
#SBATCH --gres=gpu:2
#SBATCH -N 1
 
module load python/3.7.1
source activate tf_gpu
 
srun python cifar10.py
4️⃣
<NEURON 큐 구성 (2020.10월 기준)>
<GPU 모니터링 – 단일 GPU 사용 확인>
<GPU 모니터링 – Multi-GPU 사용 확인>