본문 바로가기
반도체, 소.부.장.

NPU: 딥러닝에 최적화된 칩

by 뜨리스땅 2024. 2. 27.
728x90
반응형

추론의 영역으로 들어서며 GPGPU와 NPU의 경쟁 본격화

 

NPU(Neural Processing Unit)는 우리가 일반적으로 추론용 AI 반도체로 알고 있는 하드웨어이다.

 

우리가 이렇게 알고 있는 이유는 AI 모델에 광범위한 데이터를 학습시키는 것에는 범용성이 뛰어난 GPGPU(General Purpose Graphic Processing Unit)가 적합하고, 이를 활용하여 답변이나 이미지를 생성하는 것에 더 적합한 반도체는 특수목적성을 가진 NPU(Nerual Processing Unit)라고 많이 알려져 있기 때문이다.

 

하지만 과연 학습을 할 때 범용성을 가지고 있는 것이 반드시 유리할까? 예를 들어 자율주행 AI를 구현할 때 아무 목적성이 없는 GPGPU를 탑재해 AI를 학습시키는 것이 빠를까? 아니면 자율주행 학습에 필요한 몇가지 연산을 가속해줄 수 있는 NPU를 탑재해 학습시키는 것이 빠를까? 당연히 후자가 더 빠를 것이다.

 

사실 GPGPU가 범용성이 있기 때문에 학습에 유리하다는 말은 모든 영세 AI 서비스 회사들의 서비스에 최적화된 NPU를 개발한 후 이를 클라우드 서버에 탑재해 사용하는 것은 불가능하기 때문에 어떤 분야에든 두루두루 사용될 수 있는 GPGPU를 사용하는 것이 유리하다는 뜻이다.

 

즉 GPGPU를 사용하는 것이 범용성이 있다고 하는 것은 자율주행이든, 이미지생성이든, 자연어처리이든 여러 종류의 AI회사들의 서비스를 GPGPU를 탑재한 데이터센터에서 모두 수용할 수 있다는 뜻이지, 개별 AI서비스를 학습시키는 것에 GPGPU를 사용하는 것이 가장 효율적이라는 뜻이 아니다.

 

 

 

 

딥러닝을 위해 필요한 연산 들을 가속해주는 NPU

 

반면 NPU라고 하는 칩은 애초에 딥러닝에 적합한 연산들을 가속해주는 칩이기 때문에 완성도가 있는 NPU를 개별 AI서비스에 최적화하여 만든다면 학습과 추론 모두에서 GPGPU를 앞설 수 있다.

 

다만 현재까지는 NPU 개발의 역사가 GPGPU 개발의 역사 대비 짧기 때문에 그러한 수준의 완성도에 도달한 NPU가 많지 않고, NPU가 발전하고 있는 과도기에 NPU를 가장 잘 대체할 수 있는 칩이 GPGPU이기 때문에 GPGPU가 널리 사용되고 있는 것이다.

 

 

특히 학습 대비 컴퓨팅 파워가 상대적으로 덜 필요한 추론의 영역으로 들어가게 되면 현재 개발된 혹은 개발되고 있는 칩으로도 GPGPU를 충분히 대체할 수 있기 때문에 추론에서 더욱 NPU가 각광받고 있는 것이다. 현재 Microsoft, Google, Amazon, Meta, 삼성전자, 퀄컴, Apple 등 수많은 빅테크 및 팹리스 회사들은 이미 여러 종류의 자체 NPU를 출시한 상황이며 본인들의 데이터센터나 온디바이스에 이를 채용하고 있다.

 

현재는 GPGPU의 지배력이 매우 높지만 이미 고객사들이 NPU로 GPGPU를 대체할 시도를 실행하고 있는 만큼 향후 AI 산업에서 NPU의 역할은 더욱 커질 것으로 생각한다.

 

 

 

 

특정 연산을 가속하는 NPU, AI 서비스의 종류에 따 라서 커스터마이징이 가능한 칩

 

여러 회사에서 출시하고 있는 각종 NPU/TPU/IPU 등은 AI 가속기라는 이름으로 포괄되어 불리우는데 AI 가속기의 개념을 통해 NPU에 대해 더 자세히 알아보도록 하겠다.

 

AI 가속기라는 용어가 종종 사용되는 이유는 NPU가 특정 연산을 가속하는 역할을 하기 때문이다. 현재 빅테크들이나 여러 스타트업들이 AI용으로 만들고 있는 NPU/TPU/IPU 등은 AI 연산을 가속하고 더 나아가 특정 분야의 AI 연산을 가속하는 칩이다. 이러한 가속의 영역은 무엇이든 될 수 있다. ETF 포트폴리오 생성, 아비트라지 트레이딩, 자율주행, 이미지 생성 등 여러 특수목적용 가속기들이 있다.

 

 

사실 인공지능 알고리즘은 CPU, GPU, NPU 등 모든 로직 프로세서에서 계산이 가능하다. 다만 특정 목적에 맞게 칩을 커스터마이징 하게 되면 해당 분야에 대해서는 같은 연산 워크로드를 다른 종류의 칩 대비 훨씬 더 가속하여 마무리할 수 있도록 도와주는 것이다. 그러한 측면에서 GPU(Graphic Processing Unit)는 화면상의 그래픽 값들을 빠르게 연산하기 위해서 만들어진 칩이며 NPU(Neural Processing Unit)는 인공신경망을 이용한 연산을 빠르게 하기 위해 만든어진 칩이다.

 

GPU가 화면 상의 수많은 점들에 1초에 수백, 수천번씩 컬러 값들을 채워넣기 위해서는 병렬 연산(Matrix Computation)이 필요했고 딥러닝을 위한 칩이 아직 제대로 개발되지 않은 상황에서 우연찮게 이러한 GPU의 특성이 인공지능 연산에 사용되기 적합했던 것이다.

 

하지만 GPU는 처음부터 AI연산을 위해 만들어진 칩이 아니었기 때문에 AI에 필요한 단순 연산까지만 수행을 할 수 있으며, 연산의 결과물을 분석하기 위해서는 별도의 소프트웨어가 필요하다. 또한 그래픽 연산을 위한 여러 기능이 혼재되어 있다 보니 AI 연산에는 딱히 필요 없는 기능들이 섞여 있다는 것도 문제다.

 

NPU는 이러한 GPU에서 불필요한 기능을 모두 제거하고 인공지능 연산에 최적화된 기능만 집약한 칩이라고 할 수 있다.

 

 

 

3차원 텐서 연산에 특화된 NPU

 

NPU가 어떻게 인공지능 연산을 가속화하는지 알아보기 위해 NPU의 구동방식에 대해 알아보도록 하겠다. 먼저 NPU 이전에 연산 하드웨어로 사용되었던 CPU는 Scalar(0D) Compuation, GPU는 Vector(1D), Matrix(2D) Computation을 사용한다.

 

반면 NPU는 2D를 넘어서는 3차원 텐서 연산에 특화되어 있다. 그리고 딥러닝 모델은 주로 3D 이상의 다차원 텐서 연산을 기반으로 동 작한다. 이러한 연산은 주로 행렬 곱셈, 합성곱(convolution), 활성화 함수 계산 등과 같은 수학적 계산을 포함하는데 NPU가 이러한 연산에 특화된 칩인 것이다

 

 

합성곱(Convolution)은 입력 데이터에서 지역적 패턴 및 특징을 감지하고 추출하는 데 사용되는 연산 기술인데 이를 통해 컴퓨터 비전 및 패턴 인식 작업을 효과적으로 수행할 수 있다. 합성곱 신경망(CNN)은 객체 감지 등의 기능에 사용되는데 이미지 내에서 특정 객체나 패턴을 찾고 그 위치를 식별할 수 있도록 도와준다. 예를 들어, 자동차, 얼굴, 동물 등의 객체를 감지하고 분류하는 데 사용되는 것이 합성곱 연산이다.

 

 

활성화 함수는 신경망에서 뉴런이 입력을 어떻게 처리하는지를 결정하는 역할을 한다. 이 함수 들이 있어야 뉴런이 언제 활성화되고 언제 비활성화되는지를 조절할 수 있는데, 그 일종인 시그모이드 함수는 입력을 받아서 0과 1 사이의 값으로 변환시키고 특정 값을 뉴런이 활성화된 상태로 처리한다. 쉽게 예시를 들어 스팸 메일을 분류하는 AI를 만든다면 수많은 일반 메일과 스팸 메일 에 0(일반 메일), 1(스팸 메일)의 레이블을 지정해 학습시킨다. 이렇게 학습한 후 추론 과정에서 무 작위의 메일을 분석한 후 0.8이라는 값이 나오면 학습을 하며 설정했던 임계값(0.6)을 넘었기 때문에 스팸 메일로 처리하는 방식이 활성화 함수 연산이다.

 

 

 

GPGPU 대비 빠르고 저렴 한 NPU

 

NPU의 텐서 처리 기능은 이러한 텐서 연산을 효율적으로 수행하기 위해 설계되었으며, NPU는 텐서 연산을 위한 특수한 텐서 코어를 이용해 딥러닝 모델의 연산을 가속한다. 이러한 연산을 CPU나 GPU로는 전혀 수행할 수 없다는 것이 아니다. 같은 연산을 훨씬 더 빠르게 적은 비용(에너지)으로 해 결한다는 것이 핵심이다.

 

 

메모리 레이턴시와 소비 전력, 폼팩터 측면에서 유리한 NPU

 

또다른 NPU의 구동 방식은 온칩 메모리 방식이다. NPU(신경망 처리 장치)의 온칩 메모리는 인공지능과 머신러닝 작업을 위해 특별히 설계된 구성 요소로 메모리가 NPU 칩 내부에 통합되어 있다. 이러한 구조는 데이터 전송 시간을 줄여주는 역할을 하며 또한 외부 메모리 대비해 전력 소비를 낮추는 데 도 도움이 된다.

 

또한 메모리 공간을 효율적으로 사용하여 더 작은 칩 설계가 가능하다. 이러한 특징들은 NPU를 통한 인공지능 작업을 더욱 빠르고 효율적으로 만들며 작은 폼팩터로 스마트폰, AR/VR 등 의 온디바이스 AI에서 사용하기 편리하다

 

 

 

정확도의 하락을 감수하고 속도를 선택하는 NPU

 

NPU의 마지막 구동 방식은 저정밀 연산이다. NPU에서 저정밀 연산은 알고리즘 연산의 효율성을 높이기 위해 사용되는 기술이다. 이러한 저정밀 연산은 데이터를 처리할 때 더 적은 비트를 사용하여 연산을 수행한다.

 

보통, 정밀도가 높을수록 연산은 더 정확하지만, 처리 속도와 전력 소비가 증가한다. 반면, 저정밀 연산은 정밀도를 일정 부분 감수하면서 처리 속도와 전력 소비 측면에서 상당한 이점을 제공한다. 여기서 더 적은 비트를 사용한다는 개념은 더 적은 자리수의 부동소수점(FP: Floating Point) 으로 표현된 데이터를 연산해 속도를 향상시킨다는 뜻이다.

 

부동소수점이란 컴퓨터 내부에서 실수를 표현하는 방식인데, FP(Floating Point, 부동소수점) 뒤의 숫 자에 따라 같은 실수를 몇 자리 2진수로 표현할지를 결정하는 방식이다. 예를 들어 FP8은 어떤 실수를 8자리 2진수로 표현한다는 뜻이며, FP16은 어떤 실수를 16자리 2진수로 표현한다는 뜻이다.

 

FP 뒤의 숫자가 작을수록 더 적은 메모리 용량을 이용하여 실수를 표현할 수 있으므로 연산의 속도는 더 빨라 질 수 있지만 이는 연산의 정확도와 Trade off의 관계를 가진다. 즉, FP8을 사용하면 FP16을 사용했을 때보다 메모리 용량을 적게 사용하여 한 번에 많은 연산을 할 수 있지만 정확도는 떨어지는 결과를 초 래하게 된다. <그림28>의 예시를 통해 저정밀 연산과 연산 정확도 간의 Trade-off 관계를 설명해보겠다.

 

<그림28>의 FP64와 FP32값을 비교해보면 같은 11.1의 숫자를 저장하는 데 필요한 저장 공간이 FP32에서 1/2로 줄어드는 것을 확인할 수 있다. 그렇다면 11.1이라는 실수를 FP32의 값으로 저장을 하면 될 텐데 왜 저장공간이 많이 필요한 FP64와 같은 데이터 저장 방식도 고려하는 것일까?

 

 

이는 각 각의 산출값이 같은 11.1이라는 숫자로 변환되지 않기 때문이다. 앞선 계산 과정에서 동일한 2진수의 가수부분을 추출할 때 FP64는 52자리 숫자로 추출하였고, FP32는 23자리 숫자로 추출하였다. 그렇기 때문에 정확도에 차이가 발생할 수밖에 없는데 FP64 값은 정확히 11.1이라는 숫자로 변환되지만 FP32 값은 11.100000381469727이 된다.

 

 

즉 저장공간은 FP64에 비해 FP32가 작게 차지하지만 오차가 있는 데이터를 저장하게 되는 것이다. 이렇게 오차가 있는 데이터를 저장하게 되면 연산에 오차가 생기게 되 고 이는 FP16, FP8로 내려갈수록 이는 더 심화된다.

 

 

 

 

TCO 및 구축비용 측면에서 유리한 NPU

 

GPU 대비 NPU가 가지는 장점에는 또 어떤 것들이 있을까? GPU를 사용해 앞에서 설명한 AI 서비스들을 구동할 수도 있겠지만 이러한 방식에는 명확한 문제들이 몇가지 있다. GPU의 경우에 전력소모량이 크기 때문에 TCO(Total Cost of Operation)가 매우 커질 수밖에 없다.

 

TCO가 크다는 것은 AI 서비스를 제공함에 따른 운영 비용이 커진다는 것인데 이로 인해 서비스 업체들의 마진에 악영향을 미칠 수 있다. 예를 들어 어떠한 영세 AI 서비스 업체에서 애니메이션 영상 제작 AI 서비스를 만들어 AWS(Amazon Web Service)에 업로드해두고 서비스를 하고 있는데 전력 비용 이 너무 커서 실제 벌어들이는 매출보다 AWS에 지불해야 하는 서버 임대료가 더 큰 상황인 것이다.

 

일례로 Chat GPT의 검색 1회당 운영비는 26원인데 현재 가입자 약 2억명이 한달에 10번만 검색해도 운영비가 520억원에 달한다. 또한 전력을 많이 사용한다는 것은 필연적으로 발열의 문제를 일으키게 되는데 발열이 심한 GPU를 사용하게 되면 쿨링(냉각)에 필요한 비용도 추가된다.

 

마지막으로 운영의 측면이 아니라 구축을 할 때도 GPU의 높은 가격 때문에 많은 구축 비용을 지불 해야한다. NPU는 딥러닝에 특화된 기능뿐만 아니라 이러한 운영 및 구축비용 측면에서도 GPU 대비 훨씬 저렴하다는 장점을 가진다.

 

 

 

 

이제는 추론용 칩이 학습용 칩보다 중요한 국면

 

특히 이러한 NPU는 추론 시장으로 갈수록 중요해진다. AI 서비스를 출시하는 시점에서 서비스 업체들에게 중요한 것은 더이상 학습용 반도체가 아닌 추론용 반도체이다. 이들이 만들어낼 서비스는 이미지 생성, 질병(암, 종양) 포착용, 대출 상환 능력 평가용 등 다양한 종류가 될 것인데 각 각의 응용처에 완벽히 Customizing된 추론 칩을 사용할수록 서비스의 퀄리티가 좋아질 수밖에 없 기 때문이다.

 

마이크로소프트, 구글, 아마존, 메타 등 자금 여력이 충분한 빅테크 업체들은 이미 자체 NPU를 보유하고 있으며 다른 작은 AI 서비스 회사들의 NPU 수요를 충족시키기 위해 글로벌 하게는 Sambanova, Graphcore, Groq, Cerebras와 같은 업체들이, 우리나라에서는 Sapheon, Rebellions, FuriosAI와 같은 스타트업들이 여러 분야의 AI에 최적화된 NPU를 설계하고 있다.

 

 

 

 

NPU 침투의 가장 큰 걸림 돌은 NVIDIA의 CUDA

 

그렇다면 당장 지금부터 NPU가 GPGPU를 대체할 수 있을까? 하드웨어의 성능 측면에서는 대체 가능성이 보인다고 할 수 있다. 실제로 여러 업체에서 설계한 NPU가 이미 엔비디아의 GPGPU 성능을 뛰어넘은 사례가 있기 때문이다.

 

하지만 NPU의 확산에 가장 큰 걸림돌이 되는 것은 바로 소프트웨어 생태계이다. 현재 NVIDIA가 제공하고 있는 CUDA(Compute Unified Device Architecture)는 이미 AI 프로그래밍 생태계를 장악하고 있으며 AI 개발자 대부분이 CUDA 생태 계를 이용해 인공지능을 구현하고 있다. 그리고 이 CUDA 생태계는 NVIDIA의 GPU만을 하드웨어로 지원하기 때문에 쉽사리 하드웨어를 NPU로 바꾸기가 힘든 것이다.

 

 

 

출처: 현대차증권

 

뜨리스땅

 

 

 

 

https://tristanchoi.tistory.com/610

 

딥러닝: AI에 최적화된 알고리즘

인간의 신경망처럼 학습하는 딥러닝 생성형 AI를 구축하는 방법으로 널리 사용되는 프로그래밍 방식은 딥러닝이다. 딥러닝은 인공지능의 아버지라 불리는 제프리 힌튼 교수에 의해 붙여진 이름

tristanchoi.tistory.com

 

728x90
반응형

댓글