이해한 만큼만 작성해 봄,,
GPU
CPU는 컴퓨터의 모든 명령을 처리해야 하는 두뇌이기 때문에, 범용 명령어 세트를 처리하기 위한 복잡한 회로로 구성되어 있다. 그래서 다른 AI 반도체에 비해 전력 사용량도 많고, 느리다.
반면에 GPU는 컴퓨터 그래픽을 처리하기 위해 등장해서 병렬적으로 많은 연산을 수행하기 위해 코어수가 많고, 각 코어가 단순한 연산을 수행한다.
ex) 3D를 2D로 렌더링 한다고 생각했을 때, 매번 2D 픽셀당 해당하는 광량, 위치, 색상, 그림자 등등 병렬적으로 계산할 것이 많음
그래서 단순한 계산을 병렬적으로 진행할 수 있는 GPU가 훨씬 속도가 빠르고 효율적이라 GPU로 인공지능 모델을 학습하곤 한다. 이때, CUDA, cudnn, .. 을 이용해 인공지능 연산을 가속화한다. ex) convolution..
NPU
GPU가 단순한 연산을 병렬적으로 처리하긴 하지만, 탄생 자체가 컴퓨터의 그래픽 연산을 처리하기 위함이라, CPU보다는 아니지만 여전히 범용 명령어 처리를 위한 회로로 구성되어 있다. 그래서 인공지능 연산을 주로 처리하기 위한 회로로 구성된 NPU가 등장하게 되었다.
전용 회로로 구성되어 있어서 인공지능 모델을 사용할 때 전력 사용량이 줄고, 더 빠르게 연산을 수행할 수 있다. 전력을 줄이는 것에 집중하기 때문에 소형 디바이스에서 실시간 연산을 수행할 때 주로 사용한다.
TPU
TPU는 서버(클라우드)에 사용하기 위해 구글에서 개발한 AI 반도체이며 일종의 NPU로 AI 연산에 최적화된 반도체이다.
뉴로모픽 칩
우선, 여기서 사용하는 개념을 알기 위해 Computing Memory 개념을 정리해 보겠다.
일반적으로 우리가 알고 있는 컴퓨터의 메모리는 단순히 데이터(값)를 저장하는 공간이다.
그래서 연산은 반도체(CPU)가 하고, 메모리에서 값을 불러오거나 저장하는 식으로 컴퓨터는 동작한다. 다시 말하면, 인공지능을 학습할 때, 반도체를 무엇을 쓰건 간에 메모리에서 데이터를 불러오거나 저장하는 속도인 '메모리 대역폭'에 의해 성능의 한계가 생길 수밖에 없다. 그래서 메모리 내에서 연산을 수행하는 Computing Memory를 사용하여 , 반도체가 메모리에 접근하고, 값을 가져오고, 저장하는 부가적인 명령어를 처리하지 않게 해서 성능을 대폭 개선할 수 있다.
예를 들어, y=wx라는 연산을 수행한다고 하자.(w는 고정된 값)
기존의 컴퓨터, 메모리 구조로는 좌측과 같이 복잡한 연산을 수행해야 한다. 하지만 computing memory를 사용하면 이를 우측 구조처럼 아주 단순한 구조로 표현할 수 있다.
x: 전압, w: 저항의 역수(고정값)가 정해져 있기 때문에, y(w*x)가 아주 빠르게 연산될 수 있다.
이 연산을 여러 번 한다고 생각해 보면, 좌측의 반도체-메모리 간의 연산을 4번 반복하는 것 대신, 우측처럼 단 한 번의 연산으로 훨씬 효율적으로 연산 수를 줄일 수 있다.
동시에, 노이즈 등의 문제로 회로가 항상 일정한 wx(i) 값을 보이지 않더라도, 여러 값을 동시에 처리하게 되면, output에서 개별 wx(i)의 노이즈의 영향을 아주 적어져서 정확도에는 별 영향을 끼치지 않을 것이다.
ref) https://news.skhynix.co.kr/post/jeonginseong-column-ai-6https://voidint.com/2020/11/25/gpu-vs-npu-deeplearning-difference/
'인공지능' 카테고리의 다른 글
CUDA란? (0) | 2024.01.04 |
---|---|
torch tensor 반복 확장하기 expand vs. repeat vs. repeat_interleave 차이 (0) | 2023.04.17 |
[texture] 3D obj에서 segmenation 기반 texture stiching github (0) | 2023.04.01 |