본문 바로가기

Machine Learning

[CS231n] 8. Deep Learning Software(1) - CPU vs GPU

흔히들 머신러닝이나 딥러닝 코드와 같이 컴퓨터 부하가 많이 걸리는 프로그램을 작동할 때 GPU를 사용하면 보다 빠르게 프로그램을 동작시킬 수 있다고 말합니다. 그렇다면 CPU와 GPU는 어떤 차이가 있길래 그런 것이고 GPU를 사용했을 때의 장점은 정확히 무엇일까요?

CPU는 Central Processing Unit의 약자로 컴퓨터의 모든 프로그램의 동작을 제어하는 장치입니다. 반면 GPU는 Graphical Processing Unit의 약자로 원래는 빠른 시간에 많은 연산을 수행해야 하는 그래픽 관련 처리를 담당하기 위해 만들어진 장치입니다. GPU를 생산하는 회사는 NVIDIA와 AMD가 유명한데 딥러닝 관련 API나 라이브러리는 NVIDIA사의 GPU를 기반으로 만들어진 것이 많습니다. 따라서 딥러닝 용으로는 NVIDIA의 GPU를 추천합니다.

CPU와 GPU를 간단히 비교해보자면, CPU는 코어의 수가 적은 반면 GPU는 코어의 수가 매우 많습니다. 반대로 CPU는 클락 사이클이 높고 GPU는 비교적 낮은 사이클을 가진 경우가 많습니다. 메모리의 경우는 둘다 비슷하게 내장 메모리(RAM)를 가지고 캐싱 시스템을 탑재하고 있지만 CPU의 경우는 SSD나 HDD와 같은 보조메모리와 데이터를 주고 받는 작업도 수행합니다. 아래 표는 Intel Core i7-9650X와 NVIDIA Titan Xp를 기준으로 CPU와 GPU의 스펙을 비교해놓은 것입니다.

  최대 코어수 클락 사이클
CPU (Intel Core i7-9650X) 20 3.5 GHz
GPU (NVIDIA Titan Xp) 3840 1.6 GHz

그렇다면 GPU가 머신러닝이나 딥러닝에 자주 쓰이는 이유는 무엇일까요?

바로 굉장히 많은 코어 수에 답이 있습니다. 코어 수가 많기 때문에 GPU는 병렬 처리에 특화되어 있습니다. 딥러닝에 자주 쓰이는 행렬의 곱셈 연산 같은 경우 병렬 처리를 활용할 경우 연산 시간을 획기적으로 단축시킬 수 있습니다. 따라서 클락 사이클이 느리더라도 코어수가 CPU보다 훨씬 많은 GPU가 선호되는 것입니다.

NVIDIA에서는 딥러닝에서 자사의 GPU를 활용할 수 있도록 다양한 관련 라이브러리를 제작하여 제공하고 있는데 대표적인 것이 CUDA입니다. C언어와 비슷한 구조라 사용하기도 쉽고 코드를 GPU에서 바로 실행시킬 수 있다는 것이 장점입니다. CUDA를 더욱 사용하기 쉽게 하기 위해서 cuBLAS, cuFFT, cuDNN등의 상위 API도 많이 출시되었습니다. 이와 비슷한 라이브러리로는 OpenCL이라는 것이 있는데 GPU 뿐만 아니라 더욱 범용적으로 사용가능 하지만 다른 API에 비해 처리 속도가 느리다는 것이 단점입니다.