이번 포스팅에서는 AI 반도체 기초라는 시리즈의 두번째 글로 GPU의 특징인 합성곱 연산이란 무엇인지 정리해보고 GPU NPU 차이에 대해 알아볼 예정입니다.
참고로 본 포스팅은 “AI 반도체 기초”라는 시리즈로 아래와 같이 2가지 포스팅으로 구성하였습니다.
AI 반도체 기초 (1) CPU GPU 차이와 구조, GPU 필요한 이유
AI 반도체 기초 (2) 합성곱 연산이란, GPU NPU 차이 (이번 포스팅)
앞선 포스팅에서는 CPU와 GPU를 정의하고 GPU가 필요한 이유와 CPU GPU 차이와 GPU 구조에 대해서 간단히 정리해보았습니다.
GPU는 그래픽 처리를 위한 대량 연산을 수행하는 목적으로 만들어진 장치로 GPU는 그래픽 처리에 필요한 계산에 중점을 맞춰서 복잡한 명령어 세트나 많은 수의 레지스터 확보 또는 복잡한 캐시 구조가 아닌 그저 동일한 형태의 부동 소수점 곱셈 대량 수행에 최적화된 형태를 갖고 있습니다.
이번 포스팅에서는 이러한 GPU의 특징인 부동소수점 연산인 합성곱 연산에 대해 알아보고 이를 통해 인공지능 GPU 연관관계를 살펴볼 예정입니다. 그리고 마지막으로 GPU NPU 차이에 대해 정리해보겠습니다.
AI, 인공지능 GPU 연관관계
GPU는 말그대로 앞선 포스팅에서 정리한 바와 같이 그래픽스 연산/처리에 최적화 되어 있어 이미지 처리에 필요한 학습이나 추론에 필요한 매트릭스 합성곱 연산 횟수에 대응할 수 있는 특징이 있습니다.
합성곱 연산은 이미지에서 특징을 추출하여 처리하는데 이미지 인식 분야에서 딥러닝을 이용하는 기법은 대부분 합성곱 연산을 기초로 진행됩니다.
합성곱 연산에 대해 예시를 들어 알기 쉽게 정리하자면 아래와 같습니다.
합성곱 연산이란
합성곱 연산(Convolution)은 이미지 처리에 대한 딥러닝 측면에서는 특징점 추출(feature extraction)이라고 불리기도 하는데요, 아래와 같은 구조로 진행합니다.
합성곱은 더하기(합성)과 곱하기(곱)만 사용하는데요, 이미지에 필터를 씌우는 과정과 동일하다고 보면 이해가 쉽습니다.
합성곱 과정은 커널(Kernel) 또는 필터(Filter)라는 n x m 크기의 행렬로 원래의 이미지를 처음부터 끝까지 겹치면서 순서대로 훑으면서 n x m 크기의 겹치는 부분의 각 이미지와 커널에 있는 값을 곱해서 모두 더한 값을 출력으로 하는 것을 의미합니다.
보통 훑는 순서는 가장 왼쪽 위부터 오른쪽까지 순차적으로 훑습니다.
예를 들어 아래와 같은 3×3 크기(픽셀)의 커널로 5×5(픽셀)의 이미지 행렬에 연산을 수행하는 경우,
한번의 연산을 1스텝이라고 하면 아래와 같이 진행됩니다.
1스텝에 대한 합성곱은 아래와 같이 진행됩니다.
(1×1) + (2×0) + (3×1) + (2×1) + (1×0) + (0×1) + (3×0) + (0×1) + (1×0) = 6
물론 이것은 1스텝일 뿐이고 아래와 같이 커널을 한 칸씩 이동하면서 모든 연산을 수행해야 합니다.
위와 같이 5×5 픽셀의 실제로는 인지조차 어려운 작은 이미지로 1개의 필터를 사용했음에도 진행해야하는 덧셈 및 곱셈 연산이 무수히 많이 발생되는 것을 확인할 수 있습니다.
보통은 600~700 픽셀의 이미지를 사용하고 필터의 개수 또한 알고리즘에 따라 수백, 수천개 네트워크를 사용한다고 할 때 굉장히 많은 연산이 발생되게 됩니다.
이미지 한장에서 사람이나 동물 또는 자전거나 자동차 등의 객체를 인식하는데에서는 이러한 합성곱 연산 횟수가 엄청나게 발생되는데요,
이것을 매우 값이 비싸고 만능으로 동작이 가능한 CPU를 활용해서 할 필요가 있어 보이지는 않습니다.
즉, 간단히 비유하자면 수만개의 돌을 나르는 단순한 일을 건축 설계 박사에게 맡기지 않는 것과 비슷합니다.
TPU NPU의 정의와 GPU NPU 차이
GPU NPU 차이를 정의하기에 앞서 TPU와 NPU를 비교하자면 실은 TPU와 NPU는 실제로 크게 다름이 없습니다. NPU는 Neural Processing Unit의 약자로 Neural Network에 특화된 칩셋이고 TPU는 구글에서 제작한 NPU의 이름으로 Tensor Processing Unit이라고 합니다.
실제로 이 밖에도 NPU는 엔비디아의 Tensor Core, 애플의 Neural Engine등의 브랜드 이름으로 불리기도 합니다.
NPU와 TPU는 인공지능 모델의 인공신경망 연산을 효율적으로 하기 위해 설계된 프로세서로 TPU/NPU GPU의 차이는 바로 Neural Network에 특화되었다는 부분으로,
GPU는 그래픽 연산에 최적화된 구조이기 때문에 학습에는 효과적이지만 추론에는 비효율적인 문제가 있었습니다.
학습은 부동소수점이 유리하지만 추론에는 정수연산이 필요하기 때문입니다.
CPU가 연산을 통제하고 GPU는 그래픽을 처리한다고 하면 NPU는 인간처럼 생각하는 인공 신경망 구조, Neural Network 구조를 활용하여 빅데이터로 수집된 방대한 정보를 처리하는 목적을 갖게 됩니다.
GPU나 CPU보다 저전력이고 빠르고 작다는 장점이 존재하지만 하지만 실제로 테슬라와 애플을 제외하면 NPU를 통해 큰 실적을 내는 회사는 없습니다. 자체 NPU보다 GPU에 의존하고 있는 상황입니다.
이번 포스팅에서는 GPU의 특징인 부동소수점 연산인 합성곱 연산에 대해 알아보고 이를 통해 인공지능 GPU 연관관계와 함께 GPU NPU 차이에 대해 정리해보았습니다.
참고로 본 포스팅은 “AI 반도체 기초”라는 시리즈로 아래와 같이 2가지 포스팅으로 구성하였습니다.
AI 반도체 기초 (1) CPU GPU 차이와 구조, GPU 필요한 이유
AI 반도체 기초 (2) 합성곱 연산이란, GPU NPU 차이 (이번 포스팅)