딥러닝 스터디를 시작하게 되면서 핵심적인 개념들을 정리해보려고 한다!
이번 시간에는 딥러닝에서 GPU를 사용하는 이유에 대해서 알아보도록 한다.

이미지 출처 : https://sparcs.org/blog/introducing-gpu/
GPU가 딥러닝에서 사용되는 이유를 알아보기 전에, 기존의 CPU와 GPU의 구조는 어떠하고 또 어떤 차이점이 있는지 알아보는 것이 중요하다.
기존의 CPU의 구조는 Control Unit(제어 장치), ALU(Arthimetic Logic Unit, 산술논리연산장치), Cache Memory으로 이루어져 있다.
CPU의 구조를 자세히 다루기엔 글이 너무 길어질 것 같아서 나중에 따로 다루도록 하고, 간단하게만 CPU에 대해서 설명해보도록 하겠다.
CPU는 고성능 프로세서를 가진 수십개의 코어로 구성되고, Serial Processing(직렬 연산)을 수행한다.
GPU는 수천 개의 작은 코어(ALU)를 포함한 병렬 연산에 특화된 프로세서이다.
간단하게 구조를 보자면,
쉽게 말해 GPU에서는 수천~수만개의 코어로 텐서 연산을 병렬적으로 수행함으로써, 그래픽 연산이나 딥러닝에서의 계산을 한꺼번에 할 수 있다는 것이 특징이다.
유튜브 영상에서 봤는데, CPU는 박사 1명이라면 GPU는 초등학생 몇백명이라고 비유한 것이 생각난다.
그 비유가 적합한 것이, GPU에서는 오로지 단순 텐서 계산을 몇천~몇만개의 코어가 수행하기 때문에 계산속도가 CPU보다 월등히 빠른 것이다.
또한 GPU는 CPU보다 높은 메모리 대역폭(bandwidth)를 가지고 있어 더 빠르게 메모리를 빠르게 처리하고 전송할 수 있다는 특징이 있다.
실제로 내가 예전에 ML 현장실습을 하고 있을 때 느낀건데, 그때 GPU를 쓰긴 했는데 100% 쓴게 아니라 CPU도 엄청 많이 써서 했었는데 CPU <-> GPU 데이터 이동할 때 bottleneck 현상이 많이 발생했던 걸로 기억한다. 그래서 아예 gpu에 처음부터 data를 넣어버리도록 하는 Rapids.ai 라는 곳에서 cudf, cuml 같은 라이브러리를 지원했었는데 CentOS 버전문제로 설치하지 못했던 기억이 난다.

아무튼 이런 이유 때문에 GPU를 사용하고, 현재 딥러닝에서 GPU는 빠질 수 없는 요소가 되었다.
나중에 시간이 되면 CPU와 GPU의 세부적인 구조와 동작 방식에 대해서 포스팅 해야겠다.