딥러닝에서 성능 최적화는 데이터와 알고리즘을 이용하는 것 외에 하드웨어를 이용하는 방법이 있다.
기존 CPU가 아닌 GPU를 이용하는 것이다.
- CPU와 GPU 사용의 차이
그래프를 살펴보면 CPU 다섯 개(파란색)를 동시에 돌려도 GPU 한 개(노란색)보다 성능이 좋지 못한 것을 확인할 수 있다.
CPU와 GPU는 개발된 목적이 다르고, 그에 따라 내부 구조도 다르기 때문.
CPU는 연산을 담당하는 ALU와 명령어를 해석하고 실행하는 컨트롤(control), 그리고 데이터를 담아 두는 캐시(cache)로 구성되어 있다.
따라서 CPU는 명령어가 입력되는 순서대로 데이터를 처리하는 직렬 처리 방식이다.
즉, CPU는 한 번에 하나의 명령어만 처리하기 때문에 연산을 담당하는 ALU(Arithmetic Logic Unit)(산술 논리 장치) 개수가 많을 필요가 없다.
GPU는 병렬 처리를 위해 개발되었다.
캐시 메모리 비중은 낮고, 연산을 수행하는 ALU 개수가 많아졌다.
GPU는 서로 다른 명령어를 동시에 병렬적으로 처리하도록 설계되었기 때문에 성능에 부담이 없습니다.
즉, GPU는 연산을 수행하는 많은 ALU로 구성되어 있기 때문에 여러 명령을 동시에 처리하는 병렬 처리 방식에 특화되어 있다.
또한, 하나의 코어에 ALU 수백~수천 개가 장착되어 있기 때문에 CPU로는 시간이 많이 걸리는 3D 그래픽 작업 등을 빠르게 수행할 수 있습니다.
개별적 코어 속도는 CPU가 GPU보다 훨씬 빠르다.
예전보다 GPU 코어 속도가 빨라졌다고는 하지만 여전히 CPU만큼 성능을 내기는 어렵다.
파이썬이나 매트랩(MATLAB)처럼 행렬 연산을 많이 사용하는 재귀 연산이 대표적인 ‘직렬’ 연산을 수행한다.
즉, 3×3 행렬에서 A·B·C열이 있을 때 A열이 처리된 후에야 B열이 처리되고 C열이 처리되는 순차적 연산일 때는 CPU가 적합하다.
하지만 역전파(backpropagation) 처럼 복잡한 미적분은 병렬 연산을 해야 속도가 빨라진다.
A,B,C 열을 얼마나 동시에 처리하느냐에 따라 계산 시간이 달라지기 때문.
병렬처리는 복잡한 연산이 수반되는 딥러닝에서 속도와 성능을 높여주는 주요 요인이 된다.
여기서 딥러닝은 데이터를 벡터로 변환한 후 연산을 수행한다는 의미.
'공부자료 > Deep Learning' 카테고리의 다른 글
자연어 처리 (0) | 2022.09.26 |
---|---|
하이퍼파라미터를 이용한 성능 최적화 (0) | 2022.09.26 |
성능 최적화 (0) | 2022.09.26 |
양방향 RNN (0) | 2022.09.26 |
GRU (0) | 2022.09.26 |