Dual GPU 사용시 NVLink 등으로 묶거나 상호 교차 계산(multi-tasking) 하지 않고, 두 개의 프로그램을 각각 다른 GPU에서 독립적으로 분업으로 실행시키고자 할 때의 환경을 만드는 방법이다.
1. Anaconda prompt 에서 가상환경 만들기
여기서는 gpu_0와 gpu_1 두 개의 가상환경을 만든다.
- 아래 그림 처럼 (base) conda create -n gpu_0 실행
- Proceed [y]
- gpu_1에 대해서도 (base) conda create -n gpu_1 도 실행
2. 각각 가상환경에서 커널 연결
각 가상환경(gpu_0, gpu_1)에서 아래 명령어 실행
python -m ipykernel install --user --name [가상환경 이름] --display-name "[커널이름]"
만약, 아나콘다 가상 환경에 주피터 노트북 등의 패키지를 설치할 때는 pip 대신 conda를 사용해야 합니다. 만약 pip를 사용하면 ~/Anaconda3/Lib/site-packages 에 패키지가 저장되므로 주의.
3. jupyter notebook 에서 생성된 커널 확인
아래 그림 처럼,Kernal > Change kernel 에서 GPU_0, GPU_1 생성된 것을 확인
커널 삭제 방법
(gpu_0) jupyter kernerlspec uninstall gpu_0
4. 파이썬 프로그램에서 각 커널이 따로 사용할 GPU 번호 지정
각 가상 커널에서 GPU 사용할 GPU 번호를 지정해 준다.
5. GPU에서 실제 작동 여부 확인
아래 그림과 같이, 현재 GPU 전용 메모리는 둘 다 사용되지 않고 있음.
딥러닝 코드 실행
아래 그림 처럼, 각 GPU가 따로 돌아가는 것을 볼 수 있음.
6. 분업 속도 확인
본 예제에서는 아래 그림처럼 각자 4초 정도 시간이 소요되었다.
주의:
각각의 가상환경으로 설정하지 않거나 설정이 잘 못 된 경우, 계산 도중 예전 데이터를 Disk에 Overwrite 할 것인지 Reload 할 것인지 계속 묻는다. 이는 하나의 가상환경에서 두개의 GPU를 따로 지정해서는 분업이 이루어지지 않는 상태라는 말임.
링크:
딥러닝 TensorFlow-GPU 설정 방법은 아래 링크를 참조