GPU, TPU, NPU — AI 칩은 무엇이 다르고 언제 무엇을 쓰는가
GPU, TPU, NPU는 무엇이 다르고 언제 무엇을 쓸까. 딥러닝이 왜 전용 칩을 필요로 하는지(연산량과 데이터 이동)에서 출발해, 범용 병렬 프로세서 GPU, 시스톨릭 어레이 기반 TPU, 온디바이스 추론용 NPU의 구조와 트레이드오프, 스펙 시트를 읽는 법과 실무 선택 기준까지 정리합니다.
LLM을 서빙하다 보면 GPU 이야기를 정말 많이 하게 됩니다. VRAM이 몇 GB인지, 어떤 GPU에 어떤 모델이 올라가는지. 그런데 조금만 시야를 넓히면 TPU, NPU라는 이름도 계속 등장합니다. 셋 다 “AI 칩”이라고 불리는데, 정확히 무엇이 다른 걸까요?
결론부터 말하면, 셋은 같은 두 문제에 대한 서로 다른 답입니다. 이 글에서는 그 두 문제가 무엇인지부터 짚고, 각 칩이 그것을 어떻게 다르게 푸는지 보겠습니다.
TL;DR
- 딥러닝은 곱셈-누적(MAC) 연산의 대량 반복이다. AI 칩이 푸는 문제는 연산을 최대한 많이 동시에 하는 것과 데이터 이동을 최대한 줄이는 것, 두 가지다.
- 셋은 같은 층위가 아니다. GPU는 칩의 부류, TPU는 구글의 제품, NPU는 신경망 가속기의 일반 명칭이다.
- GPU: 범용성과 CUDA 생태계. 새 모델이 가장 먼저 도착하는 곳이지만 전력을 많이 쓴다.
- TPU: 시스톨릭 어레이로 중간 결과를 메모리에 돌려보내지 않는다. 대규모 연산 효율은 높지만 구글 클라우드와 XLA 생태계에 묶인다.
- NPU: 와트당 성능이 최우선인 온디바이스 추론 칩. 효율적이지만 모델 변환·양자화와 지원 연산 제약이 따른다.
- 고르는 기준은 성능 수치보다 어디서 돌리는가, 무엇을 하는가, 어떤 생태계 위에 있는가다.
Why — 딥러닝은 왜 CPU로 부족한가
딥러닝 모델이 하는 일을 아주 단순하게 줄이면, 결국 엄청난 양의 행렬 곱셈입니다. 트랜스포머의 Linear 레이어도, Attention의 Q·K 내적도 모두 행렬 곱셈입니다. 그리고 행렬 곱셈은 “곱하고 더하기(MAC, Multiply-Accumulate)”라는 단순한 연산을 수십억 번 반복하는 일입니다.
CPU는 이 일에 잘 맞지 않습니다. CPU는 소수의 강력한 코어로 복잡하고 순차적인 작업을 빠르게 처리하도록 설계되었습니다. 분기 예측, 큰 캐시, 비순차 실행 같은 기능에 칩 면적을 많이 씁니다. 운영체제, 웹 서버, 비즈니스 로직처럼 “다음에 무엇을 할지”가 복잡한 일에는 이게 강점입니다.
하지만 딥러닝은 정반대입니다. 연산 하나하나는 단순하고, 대신 서로 독립적인 연산이 어마어마하게 많습니다. 필요한 건 똑똑한 코어 몇 개가 아니라, 단순한 계산기 수천 개를 동시에 돌리는 능력입니다.
여기에 한 가지 병목이 더 있습니다. 데이터를 옮기는 비용입니다. 연산 자체보다, 가중치와 중간 결과를 메모리에서 읽고 쓰는 데 드는 시간과 전력이 더 큰 경우가 많습니다. LLM의 토큰 생성 단계가 대표적입니다. 토큰 하나를 만들 때마다 모델 가중치를 메모리에서 통째로 읽어와야 하니, 계산 능력보다 메모리 대역폭이 속도를 결정합니다.
간단히 계산해 보면 감이 옵니다. 7B 파라미터 모델을 FP16으로 올리면 가중치만 약 14GB입니다. 배치 크기 1로 토큰 하나를 만들 때마다 이 14GB를 읽어야 하니, 메모리 대역폭이 초당 2TB인 칩이라도 이론상 상한은 초당 약 140토큰입니다(2TB/s ÷ 14GB, KV Cache 읽기는 제외). 연산 유닛이 아무리 많아도 이 상한은 그대로입니다. 연산기는 데이터를 기다리며 놀고 있는 셈입니다.
이게 LLM 서빙에서 배치가 중요한 이유이기도 합니다. 한 번 읽어온 가중치로 여러 요청의 토큰을 함께 계산하면, 같은 메모리 읽기로 더 많은 일을 할 수 있습니다. ORCA의 continuous batching이나 PagedAttention이 결국 이 지점을 파고든 기법들입니다.
그래서 AI 칩이 푸는 문제는 두 가지로 정리됩니다.
- 단순한 곱셈-누적 연산을 최대한 많이, 동시에 수행하기
- 그 과정에서 데이터 이동을 최대한 줄이기
GPU, TPU, NPU는 이 두 문제에 대한 서로 다른 답입니다.
먼저 짚을 점 — 셋은 같은 층위의 개념이 아니다
비교에 들어가기 전에, 흔히 헷갈리는 지점을 하나 정리하고 가겠습니다. GPU, TPU, NPU는 나란히 놓고 부르지만 같은 층위의 개념이 아닙니다.
- GPU는 범용 병렬 프로세서라는 칩의 부류입니다. 여러 회사가 만듭니다.
- TPU는 구글이 만든 특정 제품의 이름입니다. 딥러닝 전용으로 설계한 구글의 칩(ASIC)을 가리킵니다.
- NPU는 신경망 연산에 특화된 가속기를 부르는 일반 명칭입니다. 주로 스마트폰이나 노트북 칩 안에 들어간 AI 전용 유닛을 말할 때 많이 쓰이고, 데이터센터용 전용 칩을 NPU라고 부르기도 합니다.
그래서 엄밀히 말하면 TPU는 넓은 의미의 NPU, 즉 신경망 전용 가속기의 한 예라고 볼 수도 있습니다. 이 구분을 머리에 두고 각각을 보면 훨씬 덜 헷갈립니다.
GPU — 그래픽 칩이 AI의 표준이 되기까지
GPU는 원래 이름 그대로 그래픽을 처리하던 칩입니다. 화면의 수백만 개 픽셀 색을 계산하는 일은 픽셀끼리 서로 독립적이라 병렬로 처리하기 좋았고, 그래서 GPU는 처음부터 수천 개의 단순한 코어를 갖도록 설계되었습니다.
이 구조가 딥러닝과 우연히, 그러나 완벽하게 맞아떨어졌습니다. 픽셀 수백만 개를 동시에 계산하던 능력은 행렬 원소 수백만 개를 동시에 계산하는 데 그대로 쓸 수 있었습니다. GPU는 같은 명령을 수많은 스레드가 서로 다른 데이터에 동시에 실행하는 방식(SIMT)으로 동작하는데, 이게 행렬 연산과 궁합이 좋습니다.
이후 GPU는 AI를 위해 진화했습니다. 행렬 곱셈만 전담하는 텐서 코어 같은 전용 유닛을 넣었고, FP16, BF16, INT8처럼 정밀도를 낮춘 연산을 지원해 같은 시간에 더 많이 계산하게 되었습니다. 메모리도 HBM 같은 고대역폭 메모리로 바뀌었습니다.
GPU의 가장 큰 강점은 범용성과 생태계입니다. GPU는 여전히 프로그래밍 가능한 범용 병렬 프로세서라서, 새로운 모델 구조나 새로운 연산이 나와도 소프트웨어로 대응할 수 있습니다. 그리고 CUDA를 중심으로 PyTorch, 각종 커널 라이브러리, vLLM 같은 서빙 엔진까지 거대한 생태계가 GPU 위에 쌓여 있습니다. 새 논문이 나오면 대부분 GPU 코드가 먼저 공개됩니다.
대신 대가도 있습니다. 범용성을 유지하기 위해 AI 연산에 직접 쓰이지 않는 기능에도 칩 면적과 전력을 씁니다. 그래서 전력 소모가 크고, 특정 연산만 놓고 보면 전용 칩보다 효율이 떨어질 수 있습니다.
TPU — 행렬 곱셈만을 위해 만든 칩
TPU는 구글이 자사 서비스의 딥러닝 연산 수요를 감당하기 위해 직접 설계한 칩입니다. 처음부터 목표가 분명했습니다. 범용성을 포기하는 대신, 행렬 곱셈을 극도로 효율적으로 하자.
TPU의 핵심은 시스톨릭 어레이(systolic array)라는 구조입니다. 곱셈-누적 유닛을 격자 모양으로 촘촘하게 배치하고, 데이터가 이 격자를 따라 한 칸씩 흘러가며 계산되게 만든 구조입니다. “시스톨릭”은 심장이 박동하며 혈액을 밀어내는 모습에서 따온 이름입니다.
아래는 동작을 단순화한 그림입니다.
1
2
3
4
5
6
7
8
9
10
11
입력이 오른쪽으로 흐른다 →
x1 → [MAC] → [MAC] → [MAC] →
↓ ↓ ↓
x2 → [MAC] → [MAC] → [MAC] →
↓ ↓ ↓
x3 → [MAC] → [MAC] → [MAC] →
↓ ↓ ↓
부분합이 아래로 누적되어 결과가 된다
(각 MAC 유닛에는 가중치가 미리 올라가 있다)
핵심은 중간 결과가 메모리로 돌아가지 않는다는 점입니다. 일반적인 방식이라면 곱셈 결과를 메모리에 썼다가 다시 읽어 더해야 하지만, 시스톨릭 어레이에서는 각 유닛이 계산한 값을 바로 옆 유닛에게 넘깁니다. 한 번 읽어온 데이터가 격자를 지나가며 여러 번 재사용됩니다. 앞서 말한 두 번째 문제, 데이터 이동을 줄이는 것을 하드웨어 구조 자체로 해결한 셈입니다.
TPU의 강점은 대규모 행렬 연산의 효율입니다. 연산 패턴이 예측 가능한 대규모 학습과 추론에서 전력 대비 성능이 뛰어나고, 여러 칩을 묶어 거대한 모델을 학습시키는 데 쓰입니다.
트레이드오프도 분명합니다. 첫째, TPU는 기본적으로 구글 클라우드를 통해 씁니다. GPU처럼 칩을 사서 내 서버에 꽂는 방식이 아닙니다. 둘째, XLA 컴파일러를 거치는 JAX나 TensorFlow 쪽 생태계와 가장 잘 맞습니다. PyTorch도 PyTorch/XLA를 통해 쓸 수 있지만, GPU만큼 자연스럽지는 않습니다. 컴파일 단계가 끼어 있어 입력 shape이 자주 바뀌면 재컴파일 비용이 생기는 것도 체감되는 차이입니다. 셋째, 격자에 잘 맞지 않는 불규칙한 연산은 상대적으로 덜 효율적입니다.
NPU — 내 손 안의 AI를 위한 칩
NPU(Neural Processing Unit)는 신경망 연산 전용 가속기를 부르는 일반적인 이름입니다. 가장 흔히 만나는 NPU는 스마트폰과 노트북 칩 안에 들어 있습니다. 사진을 찍을 때의 이미지 보정, 얼굴 인식, 음성 인식, 실시간 번역처럼 기기 안에서 바로 돌아가는 AI가 NPU의 몫입니다.
NPU가 푸는 문제는 GPU나 TPU와 조금 다릅니다. 데이터센터에서는 “얼마나 빠르게, 얼마나 많이”가 중요하지만, 스마트폰에서는 배터리와 발열이 먼저입니다. 그래서 NPU는 최고 성능보다 와트당 성능(전력 효율)을 최우선으로 설계됩니다. 정밀도를 INT8이나 그보다 더 낮게 줄이고, 자주 쓰이는 신경망 연산에 맞춘 고정된 회로를 두어 최소한의 전력으로 추론합니다.
온디바이스 추론에는 전력 말고도 장점이 있습니다. 데이터가 기기 밖으로 나가지 않으니 개인정보 측면에서 유리하고, 네트워크를 거치지 않으니 지연이 짧고 오프라인에서도 동작합니다.
최근에는 데이터센터용 NPU도 늘고 있습니다. GPU가 비싸고 구하기 어렵고 전력을 많이 먹는다는 문제를 겨냥해, 추론에 특화된 전용 칩을 만드는 회사들이 생겨났습니다. 국내에서도 FuriosaAI, 리벨리온 같은 기업들이 이런 칩을 개발해왔습니다.
NPU의 트레이드오프는 유연성과 생태계입니다. 칩을 만드는 회사마다 전용 SDK와 컴파일러가 다릅니다. PyTorch로 만든 모델을 그대로 올릴 수 없고, 대개 해당 칩이 지원하는 형식으로 변환하고 양자화하는 과정이 필요합니다. 칩이 지원하지 않는 연산이 모델에 섞여 있으면, 그 부분은 CPU로 넘어가면서 성능이 크게 떨어지기도 합니다. 새로운 모델 구조가 나왔을 때 대응이 느린 것도 같은 이유입니다.
NPU를 소개할 때 자주 보이는 TOPS 수치도 조심해서 읽어야 합니다. TOPS는 보통 INT8(혹은 그 이하) 기준의 초당 연산 횟수라서, GPU의 FP16 TFLOPS와 나란히 비교할 수 없습니다. 그리고 앞서 본 것처럼 LLM 토큰 생성은 메모리 대역폭에 묶이는 경우가 많아서, TOPS가 높다고 생성 속도가 그만큼 빨라지지도 않습니다.
한눈에 비교하기
| GPU | TPU | NPU | |
|---|---|---|---|
| 개념의 층위 | 칩의 부류 | 구글의 특정 제품 | 신경망 가속기의 일반 명칭 |
| 설계 철학 | 범용 병렬 처리 | 대규모 행렬 곱셈 특화 | 저전력 추론 특화 |
| 주요 무대 | 데이터센터, 워크스테이션 | 구글 클라우드 | 스마트폰·노트북, 일부 데이터센터 |
| 강점 | 범용성, 거대한 생태계 | 대규모 연산의 전력 대비 성능 | 전력 효율, 낮은 지연, 프라이버시 |
| 트레이드오프 | 전력 소모, 비용 | 클라우드 종속, 생태계 제약 | 변환·양자화 필요, 지원 연산 제한 |
결국은 범용성과 효율 사이의 스펙트럼
세 칩을 나란히 놓고 보면 하나의 선이 보입니다.
1
2
3
범용성 높음 효율 높음
CPU ──────── GPU ──────── TPU / NPU ──────── (특정 모델 전용 회로)
무엇이든 할 수 있다 정해진 일을 매우 잘한다
왼쪽으로 갈수록 무엇이든 할 수 있고, 오른쪽으로 갈수록 정해진 일을 더 적은 전력으로 더 빠르게 합니다. 대신 오른쪽으로 갈수록 새로운 것에 대응하기 어려워집니다. 어느 칩이 “더 좋다”가 아니라, 무엇을 얻고 무엇을 포기할지의 선택입니다.
실무에서는 무엇을 기준으로 고를까
실제로 칩을 고를 때는 세 가지 질문이 유용합니다.
어디서 돌리는가. 클라우드나 자체 서버라면 GPU나 TPU, 사용자의 기기 안이라면 NPU입니다. 기기에서 돌려야 한다면 선택지는 사실상 NPU(또는 기기 내 GPU)로 좁혀집니다.
무엇을 하는가. 새로운 모델을 실험하고 구조를 자주 바꾸는 연구·개발 단계라면 유연한 GPU가 편합니다. 모델이 고정되고 같은 추론을 대량으로 반복하는 단계라면, 전용 칩의 효율이 의미를 갖기 시작합니다.
어떤 생태계 위에 있는가. 현실적으로 가장 큰 기준일 때가 많습니다. 오픈소스 LLM을 직접 서빙한다면, vLLM 같은 서빙 엔진과 최적화 커널들이 GPU를 중심으로 발전해왔다는 점을 무시하기 어렵습니다. 반대로 이미 구글 클라우드와 JAX 위에서 일하고 있다면 TPU가 자연스러운 선택이 됩니다.
그래서 오늘날 LLM 서빙의 기본값은 여전히 GPU입니다. 성능만의 문제가 아니라, 새로운 모델과 기법이 가장 먼저 도착하는 곳이기 때문입니다.
스펙 시트를 볼 때 확인할 것
칩을 비교할 때 가장 큰 숫자 하나만 보면 판단이 흐려집니다. LLM 관점에서는 이 세 가지를 함께 봐야 합니다.
- 메모리 용량: 모델 가중치와 KV Cache가 올라가는가. 안 올라가면 나머지 숫자는 의미가 없습니다.
- 메모리 대역폭: 토큰 생성(decode) 속도의 상한을 정합니다. 위의 “14GB ÷ 대역폭” 계산이 바로 이 숫자로 하는 것입니다.
- 연산 성능과 그 정밀도: 프롬프트 처리(prefill)와 큰 배치에서 중요합니다. FP16인지 INT8인지, 희소성(sparsity)을 가정한 수치인지 꼭 확인해야 합니다.
정리
- 딥러닝은 단순한 곱셈-누적 연산의 대량 반복이고, 병목은 연산량과 데이터 이동이다.
- GPU는 수천 개의 코어로 병렬 처리하는 범용 칩이다. 유연하고 생태계가 거대하지만 전력을 많이 쓴다.
- TPU는 구글이 만든 행렬 곱셈 전용 칩이다. 시스톨릭 어레이로 데이터 이동을 줄여 대규모 연산에 효율적이지만, 구글 클라우드와 특정 생태계에 묶인다.
- NPU는 신경망 가속기의 일반 명칭이고, 주로 기기 안에서 저전력으로 추론한다. 효율적이지만 모델을 칩에 맞게 변환해야 한다.
- 셋은 경쟁 관계라기보다 범용성과 효율 사이의 서로 다른 지점이다.
GPU만 알 때는 “VRAM이 얼마나 되나”만 보였는데, 세 칩을 비교하고 나니 질문이 바뀌었습니다. 이 모델을 어디서, 어떤 단계에서, 어떤 생태계 위에서 돌릴 것인가. 칩 선택은 결국 그 질문에 대한 답이었습니다.
📚 시리즈: LLM 서빙 인프라
- OS의 페이징을 KV Cache에 가져온 PagedAttention
- ORCA: continuous batching은 어디서 왔는가 (1) — iteration-level scheduling과 selective batching
- ORCA: continuous batching은 어디서 왔는가 (2) — 분산 아키텍처와 예약 스케줄링
- GPU, TPU, NPU — AI 칩은 무엇이 다르고 언제 무엇을 쓰는가 ← 지금 글