안녕하세요. 비스카이비전입니다.
GPU를 사용하면 빠릅니다. 왜냐하면 병렬 연산이 가능하기 때문입니다. 이것이 무슨 말인가 하면 명령을 하나씩 순차적으로 처리하는 CPU와 달리 GPU는 여러 명령을 동시에 처리할 수 있다는 뜻입니다. 그래서 연산량이 많은 딥러닝을 다룰 때는 GPU를 사용하는 것이 좋습니다.
GPU 사용가능 여부 확인
먼저 tensorflow에서 GPU를 사용 가능 여부를 확인해보는 것에 대해 다루도록 하겠습니다. 사용가능 여부를 알기 위해서는 다음 두 줄의 코드를 입력해보면 됩니다.
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
만약 다음과 같이 CPU 관련된 내용 뿐만 아니라 GPU에 관한 것이 출력된다면 사용가능한 것입니다.
보시다시피 제 노트북에는 GeForce GTX 1050 그래픽 카드가 설치되어 있습니다. 그런데 이와 달리 CPU에 관한 내용만 나온다면 GPU는 사용할 수 없는 상태입니다.
참고로 GPU를 사용하시려면 컴퓨터에 그래픽 카드가 깔려 있어야 하고, 또 그에 맞는 드라이버와 적절한 버전의 CUDA, cuDNN이 설치되어 있어야합니다.
실제로 얼마나 빠른지 확인
이번에는 GPU를 사용하는 것이 CPU만 사용할 때에 비해 얼마나 빠른지를 비교해보겠습니다. 저는 하나의 CNN 모델을 CPU를 이용해서 훈련시킬 때와 GPU를 이용해서 훈련시킬 때 각각 얼마의 시간이 소요되는지를 체크해봤습니다. 소요된 시간 측정과 관련해서는 링크글을 참고하세요.^^
먼저 CPU만을 이용해서 훈련시킬 때 소요되는 시간을 측정해봤습니다. 아래 캡쳐 화면을 보시면 CPU는 일하고 있지만 GPU는 쉬고 있다는 것을 알 수 있습니다.
약 221분이 소요되었네요. 거의 4시간 가까이 걸린 것이니 꽤 오래 걸렸죠. 네트워크의 구조와 훈련셋의 크기에 따라 이보다 더 걸릴 수도 있습니다.
이번에는 GPU를 이용해서 훈련시켜보겠습니다. 보시다시피 GPU도 CPU와 함께 열일하고 있죠?
훈련에 소요된 시간은 다음과 같습니다.
약 30분이 소요됬습니다. CPU만 사용했을 때에 비해 1/7 정도의 시간밖에 소요되지 않았습니다. 말도 안되게 빨라졌죠? 이래서 한번 GPU의 맛을 보면 GPU를 쓸 수밖에 없습니다. 우리의 시간은 소중하니까요. ㅎㅎ
관련 글
딥러닝 알고리즘의 대세, 컨볼루션 신경망(convolutional neural network, CNN)
[Anaconda+python] CIFAR-10 데이터셋으로 이미지 분류기 만들기(컨볼루션 신경망)
참고자료
[1] https://light-tree.tistory.com/25, All about, "CPU와 GPU의 차이"
[2] https://lucycle.tistory.com/237, LuCycle, "텐서플로우 GPU 작동 확인하는 방법"
'Dev > python' 카테고리의 다른 글
[python] 스파이더 fullscreen 모드 푸는 법 (0) | 2020.06.22 |
---|---|
[python] 뽀로로 친구들을 검출해보자(Tensorflow object detection API) (0) | 2020.06.19 |
[python] 다른 파일에 있는 함수를 가져와서 사용하려면? (0) | 2020.06.18 |
[python] 메모리 에러 해결법(MemoryError: Unable to allocate ## for an array with shape ## and data type ##) (7) | 2020.06.10 |
[python] convolution과 activation을 분리해서 해주려면? (4) | 2020.06.09 |
[python] KeyError: 'mae' 또는 KeyError: 'acc'를 만났을 때 해결방법 (0) | 2020.06.06 |
[python] 파이썬 유용한 내장 함수들 10개 정리 (0) | 2020.05.23 |
[python] 함수(function)와 메서드(method)의 차이, 간단 설명 (0) | 2020.05.22 |