| 분류 | 병렬 연산 프로세서[1] |
|---|---|
| 본래 용도 | 그래픽 처리(정점·픽셀 계산)[2] [3] |
| 현재 주요 용도 | AI 학습과 추론 실행, 범용 병렬 계산[2] [3] |
| 예시 제품 | NVIDIA H100, AMD Instinct MI350X, Intel Xe GPU[4] [5] [6] |
| 핵심 메모리 | 고대역폭 메모리(HBM)[1] |
| 핵심 행렬 연산 장치 | 텐서 코어, 매트릭스 코어[7] [5] |
쉽게 말하면, GPU는 같은 종류의 계산을 많이 동시에 처리하도록 만들어진 프로세서다. 원래 화면의 그래픽을 만드는 계산을 위해 개발되었고, 지금은 범용 계산과 AI 모델의 학습·추론 실행에도 많이 쓰인다. CPU처럼 한 가지 일을 빨리 끝내는 칩이라기보다, 같은 계산을 수많은 칸에서 한꺼번에 처리하는 칩이다.[1]
1. 개요
그래픽 처리 장치(GPU, graphics processing unit)는 같은 종류의 연산을 여러 개 동시에 수행하도록 설계된 프로세서다. GPU는 같은 변환과 음영(셰이딩) 계산을 수많은 정점, 프래그먼트, 픽셀에 적용하는 그래픽 작업을 위해 개발되었다. 프로그래밍 가능한 연산 자원은 범용 계산과 여러 인공지능 작업에도 쓰인다.[2][3]
GPU는 단순히 빠른 CPU가 아니다. CPU는 보통 실리콘과 전력 예산의 더 많은 부분을 짧은 지연 시간 실행, 큰 캐시, 분기 예측, 적은 수의 복잡한 명령 흐름에 쓴다. GPU는 연산 처리량에 더 많은 자원을 쓰고 가벼운 스레드를 많이 동시에 유지한다. 이 설계는 데이터 병렬성이 충분할 때 잘 작동하지만, 작업이 직렬적이거나 분기가 많거나, 장치를 채우기에 지나치게 작거나, 메모리 전송이 대부분일 때는 성능이 나빠질 수 있다.[8][9][1]
현대 AI 시스템은 행렬 곱셈, 합성곱, 정규화, 어텐션 같은 연산을 큰 병렬 커널로 표현할 수 있어서 학습과 추론 실행에 GPU를 흔히 쓴다. 다만 GPU는 AI 가속기의 한 부류일 뿐이다. CPU, 텐서 처리 장치, 주문형 집적회로(ASIC), FPGA 등 다른 장치도 지연 시간, 전력, 비용, 소프트웨어, 배포 조건에 따라 더 나을 수 있다. 작업 전반에 적용되는 고정된 GPU 대 CPU 속도 배율은 없다.[9][1]
2020년대 중반 AI용으로 판매되는 GPU는 이전 범용 GPU와 네 가지 점에서 다르며, 아래에서 각각 다룬다. 첫째, 벡터 연산 장치만이 아니라 전용 행렬 곱셈 엔진을 갖는다. 둘째, 한때 기본이던 32비트 부동소수점보다 훨씬 좁은 수치 형식을 지원한다. 셋째, 일반 그래픽용 DRAM 대신 패키지에 올린 고대역폭 메모리를 쓴다. 넷째, 고속 일관성 링크로 수십 개 장치를 일부 용도에서 하나처럼 동작하게 한다. 이 변화로 일반적인 성능 한계가 연산에서 메모리 트래픽과 통신으로 옮겨 갔다. 그래서 현대 데이터센터 GPU는 부동소수점 능력은 풍부하지만, 그 능력을 쓰는 데 필요한 대역폭이 부족할 수 있다.[1]
GPU 사양을 읽을 때는 주의가 필요하다. 제조사 표는 행렬 피연산자가 하드웨어가 지원하는 희소성 패턴으로 가지치기된 경우의 처리량을 맨 앞에 내세우는 경우가 많으며, 그 수치는 같은 형식의 일반 밀집 수치의 정확히 두 배다. 수치 형식과 밀집 여부, 또는 희소성 활용 여부를 함께 밝히지 않은 처리량은 다른 것과 비교할 수 없다. 이 문서는 수치를 인용할 때마다 둘 다 밝힌다. 여기서 인용하는 제품 사양은 2026년 8월 기준이며, 제품 목록이 아니라 구조적 특징을 설명하는 데 쓴다.[1]
2. 구조
2.1. 처리량 중심 실행
GPU에는 여러 개의 병렬 처리 장치가 들어 있다. NVIDIA 문서에서는 이를 스트리밍 멀티프로세서라 부르고, AMD 용어에서는 컴퓨트 유닛이라 부른다. 프로그램은 많은 스레드를 실행시키며, 하드웨어가 이를 실행 단위로 묶는다. NVIDIA의 CUDA 모델에서 워프(warp) 하나는 스레드 32개로 이루어진다. 워프 안의 스레드는 같은 프로그램 주소에서 시작하지만 각자 레지스터와 명령 상태를 가진다. 스레드들이 서로 다른 분기를 타면 하드웨어는 경로를 따로 실행해야 할 수 있고, 그 결과 명령 하나의 유효 작업량이 줄어든다.[8][1]
이런 실행 방식을 흔히 SIMT(single instruction, multiple thread)라 부른다. 벡터 또는 SIMD 실행과 비슷하지만 스레드 중심의 프로그래밍 모델을 드러낸다. 다른 제조사는 다른 이름과 묶음 폭을 쓰며, 폭은 아키텍처마다 달라질 수 있다. 소프트웨어는 모든 GPU가 NVIDIA의 32스레드 워프 구조를 갖는다고 가정해서는 안 된다.[1]
GPU는 실행 가능한 스레드 묶음을 많이 유지해 지연 시간을 가린다. 한 묶음이 데이터를 기다리면 스케줄러는 다른 묶음의 작업을 내보낼 수 있다. 따라서 지연 시간 은폐는 독립 작업이 충분하고, 여러 묶음을 동시에 상주시킬 레지스터와 로컬 메모리가 충분할 때 효과가 있다. 스레드당 자원을 과하게 쓰는 커널은 점유율(occupancy)을 떨어뜨릴 수 있지만, 점유율이 최대라고 해서 성능이 그 자체로 최대가 되는 것은 아니다.[8][1]
2.2. 메모리 계층
GPU 성능은 연산만큼 데이터 이동에 좌우된다. 독립형(디스크리트) 가속기는 보통 자체 장치 메모리를 가지며 상호연결을 통해 호스트 프로세서와 통신한다. 내장형 GPU와 일부 시스템온칩 설계는 CPU와 물리 메모리를 공유하지만, 성능에 영향을 주는 캐시와 접근 규칙은 여전히 가진다. GPU 메모리 계층의 보통 단계는 다음과 같다.[1]
- 스레드 전용 레지스터
- 워크그룹이나 블록 안의 스레드가 공유하는 저지연 온칩 메모리
- 하드웨어가 관리하는 캐시 하나 이상
- 칩 밖의 장치 메모리. GDDR 또는 고대역폭 메모리를 쓸 수 있다
- 상호연결 또는 통합 메모리 방식으로 접근하는 호스트 메모리[1]
레지스터와 온칩 공유 메모리는 빠르지만 용량이 제한된다. 장치 메모리는 용량이 훨씬 크지만 지연 시간이 길다. 효율적인 커널은 인접한 스레드가 가까운 주소를 쓰도록 접근을 배열하고, 온칩 저장소의 값을 재사용하며, 호스트와 장치 사이의 불필요한 전송을 피한다. CUDA 문서는 첫 번째 패턴을 병합 접근(coalescing)이라 부른다. 통합 가상 주소나 관리형 메모리는 프로그래밍을 단순하게 만들 수 있지만, 페이지나 캐시 라인을 옮기는 물리적 비용을 없애지는 않는다.[8][1]
데이터센터 제품은 장치 메모리로 가는 트래픽을 줄이려고 큰 최종 수준 캐시(last-level cache)도 추가해 왔다. 예를 들어 AMD Instinct MI350X는 AMD가 인피니티 캐시(Infinity Cache)라 부르는 256 MB 캐시를 컴퓨트 다이 전체에서 공유하며, 다이마다 4 MB의 L2와 컴퓨트 유닛마다 32 KB의 L1을 더 갖는다.[5] 이 크기의 캐시는 그렇지 않으면 장치 메모리에 쓰고 다시 읽었을 중간 텐서를 담을 수 있다. 그러나 대형 모델의 가중치를 담기에는 훨씬 작아서, 대역폭 한계를 없애지는 못한다.[1]
2.3. 고대역폭 메모리
데이터센터 GPU는 소비자용 그래픽 카드의 GDDR 메모리 대신 고대역폭 메모리(HBM)를 쓴다. HBM은 여러 DRAM 다이를 수직으로 쌓고 실리콘 관통 비아(TSV)로 연결하며, 스택을 실리콘 인터포저를 통해 프로세서와 같은 패키지에 얹는다. 이 설계는 클록 속도를 희생하고 인터페이스 폭을 얻는다. HBM 스택은 핀당 데이터 속도는 낮지만 매우 넓은 버스를 제공하고, GDDR은 더 좁은 버스를 더 높은 속도로 쓴다. 메모리를 패키지 위에 올리면 배선도 짧아져 비트 하나를 옮기는 데 드는 에너지가 줄어든다.[1]
JEDEC은 2025년 4월 HBM4 표준 JESD270-4를 발표했다. 이 표준은 2048비트 인터페이스에서 최대 8 Gb/s의 전송 속도를 규정해 스택당 최대 2 TB/s를 준다. 스택당 독립 채널 수는 HBM3의 16개에서 32개로 두 배가 되며, 각 채널은 두 개의 의사 채널로 나뉜다. 또 24 Gb 또는 32 Gb 다이로 만든 4단, 8단, 12단, 16단 스택을 지원한다. 따라서 장치당 용량은 패키지에 얹을 수 있는 스택 수와 각 스택의 높이로 제한되고, 대역폭은 인터페이스 폭에 데이터 속도를 곱한 값으로 정해진다. 두 한계 모두 메모리 다이뿐 아니라 패키징에 의해서도 결정된다.[1]
| 장치 | 메모리 | 용량 | 대역폭 |
|---|---|---|---|
| NVIDIA A100 (SXM, 80 GB) | HBM2e | 80 GB | 2,039 GB/s[10] |
| NVIDIA H100 (SXM) | HBM3 | 80 GB | 3.35 TB/s[4] |
| NVIDIA H200 (SXM) | HBM3E | 141 GB | 4.8 TB/s[11] |
| NVIDIA GB200 (NVL72의 GPU당) | HBM3E | 약 186 GB | 8 TB/s[12] |
| AMD Instinct MI350X | HBM3E | 288 GB | 8 TB/s[5] |
| Google TPU7x (Ironwood) | HBM3E | 192 GB | 7.37 TB/s[13] |
| NVIDIA Rubin (발표 수치) | HBM4 | 최대 288 GB | 최대 22 TB/s[14] |
메모리 용량과 메모리 대역폭은 서로 다른 질문에 답하므로 자주 혼동된다. 용량은 모델, 활성값(activation), 캐시가 장치에 들어가는지를 정한다. 대역폭은 그 상태를 얼마나 빨리 읽을 수 있는지를 정하며, AI 추론 실행의 상당 부분에서 달성 가능한 속도를 결정하는 값이다.[1]
2.4. 특수 연산 장치
범용 GPU 연산 장치는 정수와 부동소수점 명령을 처리한다. 그래픽 프로세서에는 텍스처 샘플링, 래스터화 같은 작업을 맡는 고정 기능 장치도 들어 있다. 데이터센터와 AI 지향 설계에는 행렬 곱셈 엔진이 추가되기도 한다.[1]
NVIDIA는 Volta 아키텍처에서 텐서 코어(Tensor Core)를 도입했다. Volta에 문서화된 행렬 곱셈-누적 연산에서 피승수 행렬은 FP16이었고, 누적기와 출력 행렬은 FP16 또는 FP32일 수 있었다. NVIDIA 백서는 주된 혼합 정밀도 경로를 FP32 누적을 쓰는 FP16 입력으로 설명한다.[7] 이후 제품은 더 많은 형식과 형태를 지원하므로, Volta의 연산을 모든 텐서 코어 세대의 사양으로 취급하면 안 된다. AMD의 CDNA 아키텍처에는 매트릭스 코어가 있고, 인텔 Xe GPU 아키텍처는 벡터 엔진과 함께 Xe 매트릭스 확장(Xe Matrix Extensions)을 설명한다.[6][15][1]
전용 행렬 하드웨어는 지원되는 연산, 데이터 형식, 차원, 배치에서만 최고 처리량을 높인다. 소프트웨어 라이브러리는 이 장치를 쓰기 위해 텐서에 패딩을 넣거나 변환할 수 있다. 따라서 광고되는 최고 성능 수치는 임의의 모델이나 커널의 속도를 말해 주지 않는다.[1]
2.5. 행렬 연산 장치의 동작
텐서 코어는 스칼라 또는 벡터 융합 곱셈-덧셈 명령을 줄줄이 내보내는 대신, 작은 행렬 곱셈-누적 D = A x B + C를 스레드 묶음에 걸쳐 명령 하나로 계산하는 하드웨어다. 장점은 곱셈이 고립된 상태에서 빨라지는 데 있지 않다. 명령 하나가 많은 곱셈-누적 연산을 처리하므로, 명령 인출, 해독, 스케줄링, 레지스터 파일 접근의 연산당 비용이 타일 전체에 나뉜다. 또 피연산자를 곱셈마다 범용 레지스터 파일에서 읽는 대신 전용 데이터 경로에 담아 둘 수 있다.[1]
이로부터 세 가지 결과가 나오며, 셋 모두 내세운 처리량 수치보다 중요하다. 첫째, 타일 모양이 고정되어 있다. 행렬 엔진은 연산을 지원되는 타일 모양으로 나누고 패딩 낭비를 감당할 수 있을 때만 일반 행렬 곱셈을 가속한다. 작은 행렬, 나누어떨어지지 않는 차원, 특이한 배치에서는 장치의 많은 부분이 논다. NVIDIA의 성능 지침이 타일 양자화(tile quantization)와 웨이브 양자화 효과를 중심으로 짜여 있는 것도 이 때문이다.[16][1]
둘째, 이 엔진은 구조상 혼합 정밀도다. 입력은 좁은 형식으로 보관하고 누적기는 더 넓게 두며, 보통 16비트와 8비트 입력에는 FP32를 쓴다. 이 구조 덕분에 저정밀도 행렬 곱셈을 수치적으로 쓸 수 있게 된다. 개별 곱의 반올림 오차는 입력 형식에 따라 제한되고, 오차가 쌓일 수 있는 축약 차원의 합산은 더 높은 정밀도로 이루어진다.[7][17][1]
셋째, 행렬 작업만 이득을 본다. 원소별 연산, 정규화, 소프트맥스, 활성화 함수, 데이터 이동, 축약은 여전히 범용 연산 장치에서 실행되며 보통 메모리 대역폭에 묶인다. 실행 시간이 이런 연산에 지배되는 모델은 행렬 엔진의 최고 성능을 거의 누리지 못한다. 커널 융합과 어텐션 전용 커널의 효과가 그토록 큰 이유 중 하나가 여기에 있다.[1]
이제 주요 제조사는 모두 이에 상응하는 장치를 낸다. NVIDIA 텐서 코어, AMD 매트릭스 코어(MI350X 모듈 한 개에 1,024개),[5] 인텔 Xe 매트릭스 확장이 그 예다.[6] 구글의 텐서 처리 장치는 수축기 배열(systolic array)로 같은 목표에 도달한다. 이 구조는 큰 곱셈-누적 하드웨어 블록에 걸쳐 제어 오버헤드를 분산시키지만, 구조가 다른 장치다.[18]
2.6. 수치 형식과 저정밀도 흐름
지난 10년간 가장 큰 영향을 준 아키텍처 변화는 연산 수치의 비트 폭이 좁아졌다는 것이다. 원소 폭이 절반이 될 때마다 주어진 곱셈에 읽어야 할 바이트는 절반이 되고, 해당 형식을 네이티브로 지원하는 하드웨어에서는 최고 행렬 처리량이 대략 두 배가 된다. 대가는 표현력이다. 비트가 적으면 동적 범위, 정밀도, 또는 둘 다가 줄어든다.[1]
| 형식 | 부호 / 지수 / 가수 비트 | FP32 대비 범위 | 비고 |
|---|---|---|---|
| FP32 | 1 / 8 / 23 | 기준 | 학습의 역사적 기본값[1] |
| TF32 | 1 / 8 / 10 | 같음 | 내부 19비트 형식. FP32 입력을 반올림하고 곱은 FP32로 누적[17] |
| FP16 | 1 / 5 / 10 | 훨씬 좁음 | 작은 기울기를 표현하려면 손실 스케일링 필요[19] |
| BF16 | 1 / 8 / 7 | 같음 | 가수 비트를 줄이고 FP32 수준의 동적 범위 유지[1] |
| FP8 E4M3 | 1 / 4 / 3 | 좁음 | 순전파(가중치와 활성값)[20] |
| FP8 E5M2 | 1 / 5 / 2 | E4M3보다 넓음 | 기울기(정밀도보다 범위가 중요)[20] |
| FP6 E3M2, E2M3 | 1 / 3 / 2, 1 / 2 / 3 | 매우 좁음 | 블록 스케일링 사용[21] |
| FP4 E2M1 | 1 / 2 / 1 | 매우 좁음 | 블록 스케일링이 있어야 사용 가능[21] [22] |
이 흐름은 단순히 「비트가 적을수록 좋다」는 뜻이 아니다. 각 형식은 특정한 문제를 푼다. TF32는 수치 동작을 바꾸고 싶지 않은 학습 코드에서 FP32 행렬 곱셈이 병목이었기 때문에 생겼다. FP32의 8비트 지수를 유지하므로 재조정이 필요 없지만, 가수는 FP16의 10비트로 줄이고 누적은 FP32로 한다. NVIDIA는 이를 Ampere 아키텍처와 함께 도입했으며, 딥러닝 라이브러리에서 FP32 행렬 연산의 기본 경로가 되었다.[17] A100에서 TF32 행렬 처리량은 밀집 기준 156 TFLOPS이며, 기존 FP32 벡터 연산은 19.5 TFLOPS다.[10][1]
FP16과 BF16은 16비트 예산을 다르게 나눈다. FP16은 가수 10비트를 쓰지만 지수는 5비트뿐이라 기울기 값이 0으로 언더플로될 수 있다. 표준 해결책은 손실 스케일링과 가중치의 FP32 마스터 사본을 함께 쓰는 것이며, 이는 Micikevicius 등이 설명한 방식이다.[19] BF16은 FP32와 같은 8비트 지수를 유지하고 가수는 7비트를 받아들인다. 그래서 재조정 없이 같은 범위를 쓸 수 있지만 해상도는 거칠어진다. 현재 NVIDIA와 AMD의 데이터센터 제품에서는 두 형식이 같은 처리량으로 지원된다.[4][5][1]
FP8은 하나가 아니라 두 가지 인코딩으로 등장했다. NVIDIA, Arm, 인텔의 공동 제안으로 표준화되었으며, 정밀도가 더 중요한 순전파에는 E4M3를, 동적 범위가 더 중요한 기울기에는 E5M2를 쓴다. 저자들은 FP8 학습이 합성곱 신경망, 순환 신경망, 트랜스포머에서 16비트 학습과 같은 결과 품질을 냈다고 보고했다. 여기에는 1,750억 파라미터 규모의 학습도 포함된다. 또 16비트로 학습한 모델의 학습 후 양자화도 검토했다.[20] 하나의 텐서별 스케일로는 모든 텐서의 범위를 덮을 수 없으므로, 실제 FP8 학습은 실행 중에 갱신되는 텐서별 스케일링 계수에 의존한다. NVIDIA의 Transformer Engine 라이브러리가 이 과정을 자동화한다.[1]
4비트에서는 텐서별 스케일링만으로 부족해져, 업계는 블록 스케일링으로 옮겨 갔다. 오픈 컴퓨트 프로젝트(Open Compute Project)의 Microscaling(MX) 명세 1.0은 32개 원소 블록에 공유 스케일을 정의한다. 스케일은 2의 거듭제곱을 나타내는 8비트(E8M0)로 저장하고, 원소는 FP8, FP6, FP4 또는 INT8로 저장한다.[21] NVIDIA의 NVFP4는 더 작은 16개 원소 블록을 쓰고, 순수한 2의 거듭제곱이 아닌 가수 비트가 있는 E4M3 스케일과 텐서별 FP32 스케일을 하나 더 쓴다. NVIDIA는 이 방식이 2의 거듭제곱 방식보다 양자화 오차를 줄인다고 밝혔다.[22] 중요한 일반 원칙은 4비트 형식이 맨 4비트 숫자가 아니라는 점이다. 4비트 원소에 공유 스케일을 더한 것이며, 실제 저장 비용과 정확도는 원소 폭만큼 블록 크기에도 좌우된다.[1]
각 단계가 정확도에 치르는 비용은 작업에 따라 다르므로 측정해야 한다. 문헌에서 보고된 경향은 형식이 좁아질수록, 그리고 연산의 더 많은 부분에 적용될수록 위험이 커진다는 것이다. TF32와 BF16은 학습에서 대체로 그대로 바꿔 쓸 수 있다(drop-in). FP8은 스케일링 전략이 필요하며 지금은 학습과 추론 모두에서 일상적으로 쓰인다. FP4는 주로 블록 스케일링을 쓴 추론용 가중치와 활성값에 쓰이며, 정확도는 하드웨어만큼 양자화 방식에도 좌우된다. 어느 경우든 근거는 최고 연산 처리량 수치가 아니라 목표 작업의 종단 간 품질 측정이어야 한다. 방법은 양자화, 학습 후 양자화, 양자화 인지 학습(quantization-aware training)을 참고한다.[1]
좁은 형식의 두 번째 이득은 자주 간과되지만, 추론에서는 보통 더 큰 쪽이다. 가중치의 폭을 절반으로 줄이면 순전파마다 메모리에서 읽어야 할 바이트도 절반이 된다. 한계가 연산이 아니라 메모리 대역폭인 작업에서는, 행렬 엔진의 추가 처리량을 쓰지 못하더라도 이것만으로 스텝당 시간이 거의 절반으로 줄 수 있다.[1]
2.7. 구조화된 희소성과 처리량 수치 읽기
Ampere 세대부터 NVIDIA 데이터센터 GPU에는 특정 0 패턴을 건너뛸 수 있는 행렬 연산 장치가 들어 있다. 이 패턴은 2:4 또는 세분화된 구조적 희소성이라 부르며, 곱셈 축약 차원의 연속된 네 값마다 최소 두 개가 0이어야 한다. 희소성은 50%로 고정되고, 0이 아닌 값은 절반 크기로 연속 저장되며, 살아남은 값이 원래 네 자리 중 어디였는지를 적은 작은 메타데이터 인덱스가 함께 저장된다. 하드웨어는 이 메타데이터로 맞는 활성값을 골라 곱셈-누적을 절반만 수행하므로, 행렬 곱의 첫 피연산자가 이 압축 형태일 때 수학 처리량이 두 배가 된다.[23]
NVIDIA 연구진은 이런 가중치를 만드는 「학습-가지치기-재학습」 절차를 설명했다. 먼저 밀집 모델을 일반적으로 학습하고, 네 개 가중치 묶음마다 2:4 패턴이 되도록 가지치기하며, 살아남은 가중치에 같은 하이퍼파라미터로 원래 학습 일정을 다시 수행한다. 이 방법은 모델별 하이퍼파라미터 탐색 없이도 여러 작업과 구조에서 정확도를 유지했다고 보고되었다.[23]
2배는 지원되는 일반 행렬 곱에서 첫 피연산자가 실제로 가지치기되고 압축된 경우에만 적용된다. 원소별 연산, 키-값 캐시를 쓰는 어텐션, 지원되지 않는 형태의 층, 이 패턴으로 가지치기되지 않은 모델에는 적용되지 않는다. 실측도 이를 뒷받침한다. PyTorch 엔지니어는 A100에서 ViT-L MLP 블록의 선형 층 순전파와 역전파가 1.3배 빨라졌다고 보고했다. ImageNet에서 DINOv2 ViT-L을 학습할 때 종단 간 벽시계 시간은 약 6% 줄었고, top-1 정확도는 밀집 기준 82.8에 대해 82.7이었다. 같은 보고는 빠른 사용자 정의 희소화 커널이 있어야 이득이 났다고 덧붙였다. 표준 cuSPARSELt 압축 경로에서는 압축 호출만 380마이크로초가 걸린 반면, 밀집-희소 행렬 곱의 절약은 151마이크로초에 그쳐 손해였다.[1]
공개 가중치로 배포되는 모델 대부분은 밀집 모델이다. 따라서 일반적인 배포에 적용되는 수치는 밀집 수치다. 그런데 제조사는 희소성 적용 수치를 가장 눈에 띄는 자리에 둔다. 이 패턴은 일관적이므로 한 번 알면 찾기 쉽다.[1]
| 출처 | 수치 표시 방식 |
|---|---|
| NVIDIA A100 데이터시트 | 행마다 두 값을 두고 큰 값에 별표를 달며 「희소성 적용」이라고 각주[10] |
| NVIDIA H100 데이터시트 | 행마다 한 값만 두고 「희소성 적용 수치, 희소성이 없으면 사양이 절반」이라고 각주[4] |
| NVIDIA HGX 플랫폼 페이지 | 「희소/밀집」 형식으로 표기하며, 한 값만 보이면 「밀집은 보이는 희소 사양의 1/2」[24] |
| NVIDIA GB200 NVL72 페이지 | 「희소/밀집」 형식으로 표기하며, 「밀집은 보이는 희소 사양의 절반」[12] |
| AMD Instinct MI350X 데이터시트 | 두 열을 두고 두 번째 열 제목을 「W/SPARSITY」로 표기[5] |
H100 SXM 데이터시트는 FP8 텐서 처리량 3,958 TFLOPS와 BF16·FP16 1,979 TFLOPS를 모두 희소성 적용 수치로 표시하며, 희소성이 없으면 사양이 절반이라고 각주한다. 따라서 밀집 수치는 FP8 1,979 TFLOPS, BF16 989 TFLOPS다.[4] AMD는 MI350X의 두 열을 모두 표시한다. FP8 밀집은 4.614 PFLOPS, 희소성 적용은 9.2274 PFLOPS이며, FP4 밀집은 9.2275 PFLOPS, 희소성 적용은 18.455 PFLOPS다.[5] NVIDIA HGX B200 보드(GPU 8개)는 FP4를 희소성 적용 144 PFLOPS, 밀집 72 PFLOPS로 표시하며, 이는 GPU당 18과 9 PFLOPS다.[24]
두 가지 규칙이 따른다. 같은 형식에 대해 두 수치가 있고 하나가 다른 것의 정확히 두 배라면, 큰 쪽이 희소성 적용 수치다. 하나의 수치만 있다면 각주를 확인해야 한다. 마케팅 표의 단일하고 한정어 없는 수치는 희소성 적용 수치일 가능성이 더 높다. 한 장치의 희소성 수치와 다른 장치의 밀집 수치를 섞은 비교는 의미가 없으며, 이 오류는 2차 보도에서 흔하다.[1]
2.8. 칩렛과 다이 분할 패키징
노광 장비는 단일 다이의 최대 면적인 레티클 한계를 정하며, 현재 장비에서 약 800 mm² 수준이다. 이보다 많은 트랜지스터가 필요한 설계는 여러 다이로 나눠 패키지에서 다시 조립해야 한다. 주요 GPU 제조사 둘 다 이 선을 넘었다.[1]
NVIDIA의 Blackwell 아키텍처는 레티클 한계에 닿는 다이 두 개를 한 패키지에 놓는다. 총 트랜지스터는 2,080억 개이며, NV-HBI라 부르는 10 TB/s 인터페이스로 연결되고, 소프트웨어에는 통합 메모리 공간을 가진 단일 GPU로 보인다.[25] NVIDIA는 Rubin GPU가 두 개의 연산 다이에 걸쳐 3,360억 개의 트랜지스터를 가진다고 밝혔다.[14] AMD는 다이 수에서 더 일찍, 더 멀리 나아갔다. MI350X 모듈은 3 nm 공정의 가속기 연산 다이 8개(각 32 컴퓨트 유닛)를 가지며, 6 nm로 만든 미러링된 I/O 다이 두 개 위에 놓이고, 연산 다이 전체가 공유하는 256 MB 최종 수준 캐시를 갖는다.[5]
공학적 교환 관계는 단순하다. 다이가 작을수록 수율이 좋고, 공정 노드를 섞으면 최선단 노드의 이득이 없는 로직을 더 싼 노드에 둘 수 있다. 반면 다이 경계를 넘는 모든 바이트는 지연 시간과 에너지를 치르며, 다이 간 링크가 온다이 트래픽보다 느리면 소프트웨어가 관리해야 하는 불균일한 메모리 동작이 생긴다. 두 회사가 밝힌 설계 목표는 다중 다이 장치를 하나처럼 동작하게 만드는 것이며, 그래서 다이 간 대역폭을 TB/s 단위로 표기한다.[1]
다중 다이 구조는 고급 패키징, 특히 TSMC의 CoWoS 계열 2.5D 실리콘 인터포저 공정에 의존한다. 이 공정이 HBM 스택을 연산 다이 옆에 놓는다. 패키징은 웨이퍼 제조와 별도의 생산 라인이며 장비와 리드타임이 따로 있으므로, 완성된 가속기에는 로직 웨이퍼, HBM, 패키징 용량이 동시에 필요하다.[1]
3. 개발
초기 그래픽 가속기는 대부분 고정된 렌더링 파이프라인을 구현했다. 정점 단계와 프래그먼트 단계가 프로그래밍 가능해지자 연구자들은 그래픽이 아닌 계산을 그래픽 API에 대응시켰고, 이 분야를 그래픽 하드웨어를 이용한 범용 계산이라 불렀다. 2005년 서베이는 이 전환과, 계산을 그래픽 연산으로 표현할 때 생기는 프로그래밍의 어려움을 기록했다.[2]
NVIDIA는 1999년 GeForce 256을 「세계 최초의 GPU」로 마케팅했다. 이는 회사의 마케팅 주장이며, 한 회사가 모든 그래픽 프로세서를 발명했다는 증거도, 더 넓은 정의를 만족하는 이전 장치가 없다는 증거도 아니다.[26] 이후 이 용어는 그래픽 기능과 고도로 병렬인 프로그래밍 가능 실행을 결합한 프로세서의 일반적 이름이 되었다.
2006년 11월 CUDA가 출시되어 개발자는 모든 작업을 그래픽 파이프라인으로 짜지 않고도 NVIDIA GPU에서 C 유사 환경으로 범용 계산을 할 수 있게 되었다.[27] 2008년 12월 Khronos Group은 이기종 프로세서의 병렬 프로그래밍을 위한 로열티 없는 명세인 OpenCL 1.0을 공개했다.[28] 이 시스템들은 GPU 컴퓨팅을 일반적인 고성능 컴퓨팅 방법으로 자리 잡게 했다.
GPU는 현대 딥러닝의 중심이 되었다. 2012년 AlexNet 논문은 3 GB 메모리를 가진 NVIDIA GTX 580 두 대에서 큰 합성곱 신경망을 학습했다. 저자들은 학습에 5~6일이 걸렸다고 보고했고, 네트워크를 두 장치에 어떻게 나눴는지도 설명했다.[29] 이 결과는 역사적으로 큰 영향을 주었지만, 당시의 특정 하드웨어, 모델, 데이터셋, 시간은 현재 시스템에 일반화하면 안 된다.
| 기능 | 첫 데이터센터 세대 | 비고 |
|---|---|---|
| 행렬 곱셈-누적 장치 | Volta, 2017년 | FP16 입력, FP16 또는 FP32 누적[7] |
| TF32, BF16, 2:4 구조적 희소성 | Ampere, 2020년 | A100은 TF32 밀집 156 TFLOPS, 희소성 적용 312 TFLOPS 표기[10] |
| 텐서별 스케일링을 쓴 FP8 | Hopper, 2022년 | H100은 FP8 밀집 1,979 TFLOPS, 희소성 적용 3,958 TFLOPS 표기[4] |
| 같은 텐서 처리량에 더 크고 빠른 HBM | H200, 2024년 | H100과 같은 텐서 처리량, 141 GB에 4.8 TB/s[11] |
| 블록 스케일링 FP4, 두 다이 패키지 | Blackwell, 2024년 | 2,080억 개 트랜지스터를 두 다이에 배치, 다이 간 10 TB/s[25] |
| HBM4와 GPU당 3.6 TB/s 확장 링크 | Rubin 플랫폼, 2026년 1월 상세 공개 | NVIDIA는 GPU당 최대 288 GB, 최대 22 TB/s를 밝힘[14] |
이 표에서 진행 방향이 보인다. 연산 폭은 32비트에서 4비트로 줄었다. 장치당 메모리 용량과 대역폭은 대략 10배 수준으로 늘었다. 단일 다이 확장 대신 패키지 단위 통합이 자리 잡았다. AMD도 같은 길을 따랐다. CDNA 4 세대(2025년)에서 FP6와 FP4 행렬 지원과 288 GB HBM3E에 도달했고,[5] 2026년 7월 23일 Advancing AI 행사에서 HBM4를 쓰는 Instinct MI400 시리즈와 Helios 랙 규모 시스템을 발표했다.[30]
4. 프로그래밍 모델과 소프트웨어
4.1. 커널, 스레드, 동기화
GPU 프로그램은 보통 호스트 코드와 하나 이상의 장치 커널로 이루어진다. 호스트는 메모리를 할당하거나 확인하고, 데이터를 옮기거나 매핑하며, 커널을 시작하고, 결과를 가져온다. 커널은 많은 스레드가 실행한다. CUDA는 스레드를 블록으로, 블록을 그리드로 묶으며, 블록 안의 스레드는 공유 메모리와 블록 단위 동기화로 협력할 수 있다.[8]
동기화 범위가 중요하다. 한 블록 안의 배리어는 보통 그리드의 모든 블록을 동기화하지 않는다. 장치 전체에 걸친 연산에는 명시적 통신이나 그것을 구현한 라이브러리가 필요하다. 순서에 대한 잘못된 가정은 한 장치에서 정상처럼 보여도 경쟁 상태를 만들 수 있다.[1]
커널 실행과 호스트-장치 전송에는 오버헤드가 있다. 작은 연산을 합치고, 데이터를 장치에 두고, 실행마다 충분한 작업을 주면 활용률이 높아질 수 있다. 다만 연산 융합은 레지스터 사용을 늘리거나 계산을 중복시키거나 수치 동작을 복잡하게 만들 수 있어, 효과는 작업마다 다르다.[1]
4.2. 벤더 및 크로스 플랫폼 생태계
CUDA는 NVIDIA GPU의 플랫폼이자 프로그래밍 모델이다. 컴파일러 툴체인, 런타임, 프로파일러, 최적화된 라이브러리를 포함한다. CUDA 소스와 바이너리는 벤더 중립적인 GPU 인터페이스가 아니다.[8]
AMD의 HIP은 AMD와 NVIDIA 플랫폼 사이에서 GPU 코드를 이식하기 위한 C++ 런타임과 커널 언어다. AMD는 기계적인 CUDA-HIP 변환 도구를 문서화하지만, 이식에는 수작업이 필요할 수 있다고 밝힌다. 소스 이식성이 같은 수치 동작이나 성능을 보장하지는 않는다.[31]
OpenCL은 이기종 계산을 위한 크로스 플랫폼 호스트 및 커널 API를 정의한다.[28] SYCL은 이기종 백엔드 위에 단일 소스 C++ 프로그래밍 모델을 제공하는 Khronos 표준이다.[32] 구현은 여전히 대상 하드웨어를 지원해야 하며, 성능 튜닝은 장치의 실행 폭, 메모리 계층, 컴파일러, 라이브러리에 따라 달라질 수 있다. 이것이 기능적 이식성과 성능 이식성의 차이다.[1]
머신러닝 사용자는 커널을 직접 쓰기보다 프레임워크를 통해 작업한다. TensorFlow, PyTorch, JAX는 텐서 연산을 구성해 런타임과 벤더 라이브러리로 보낸다. 예를 들어 NVIDIA의 cuDNN은 합성곱, 어텐션, 행렬 곱, 정규화 등 신경망 연산에 맞춰 튜닝된 기본 함수를 제공한다.[33] 프레임워크 배치는 항상 자동이거나 최적이 아니며, TensorFlow는 명시적 장치 배치, 메모리 할당 설정, 다중 GPU 전략을 문서화한다.[1]
4.3. CUDA가 유지되는 이유와 경쟁 기술
CUDA의 지속성은 흔히 한 기능 탓으로 돌려지지만, 서로 강화하는 여러 요소에 기반한다. 첫째는 연식이다. 2006년부터 출시되어 거의 20년 동안 축적된 커널, 튜토리얼, 대학 강의, 사내 코드베이스가 이를 전제로 한다. 둘째는 언어보다 라이브러리 계층이다. 다른 플랫폼을 채택하는 팀은 컴파일러만이 아니라 cuBLAS, cuDNN, CUTLASS, NCCL, cuSPARSELt, 프로파일링 도구, 추론 런타임의 대응물이 필요하며, 각각 아키텍처별로 튜닝되어야 한다. 셋째, 대부분의 연구자가 쓰는 프레임워크는 NVIDIA 하드웨어에 맞춰 개발되어 새 연산이 그곳에 먼저 나오고 가장 잘 튜닝된다. 넷째는 가용성이다. NVIDIA 제품은 모든 주요 클라우드에서 제공되어 여러 곳에서 실행할 대상의 기본값이 된다. NVIDIA는 2026 회계연도 총매출 2,159억 달러 가운데 데이터센터 매출 1,973억 달러를 보고했으며, 이 규모가 지속적인 소프트웨어 투자를 뒷받침한다.[34]
그렇다고 이 플랫폼이 기술적으로 넘볼 수 없는 것은 아니며, 대안은 기능 격차를 상당히 좁혀 왔다.[1]
AMD의 ROCm이 가장 직접적인 경쟁자다. ROCm을 미성숙한 스택이라고 묘사한 글은 2010년대 후반의 것이며, 이제 일괄적으로 맞는 설명이 아니다. AMD의 MI350 시리즈 제품 문서는 PyTorch, TensorFlow, JAX, ONNX Runtime, Kokkos, Raja, SGLang, Triton, vLLM을 지원 대상으로 나열하고, 모델 개발사와의 협업을 통해 새 모델에 대한 출시 당일 지원을 제공한다고 밝힌다.[5] 또 ROCm 7.0은 2025년 MI350X와 MI355X 및 OCP FP8 형식을 지원하며 출시되었고, 이후 7.x 시리즈에서 부 버전 릴리스가 이어졌다.[1] AMD는 2026년 4월 MLPerf Inference v6.0의 클로즈드 부문과 오픈 부문 모두에 MI355X 결과를 제출했다.[35]
실무자들이 지적하는 남은 차이는 프레임워크 실행 여부보다 폭에 있다. 동시에 지원하는 하드웨어 세대 수, 프로파일링과 디버깅 도구의 성숙도, 덜 흔한 연산의 지원 범위, 서드파티 커널 생태계의 깊이가 그것이다. 이것들은 실제 비용이지만, 예전보다 좁아졌다.[1]
다른 세 접근은 각기 다른 각도에서 문제를 다룬다. OpenAI에서 처음 개발된 Triton은 타일 기반 커널을 쓰는 Python 내장 언어로, 컴파일러가 스레드, 메모리 계층, 행렬 장치로의 매핑을 맡는다. 원 논문이 밝힌 설계 목표는 프로그래머가 블록 알고리즘을 표현하고 블록 내부 스케줄링은 컴파일러가 맡게 하는 것이었다. Triton은 이식성 계층이라기보다 기계가 생성한 커널이 겨냥하는 기반으로서 의미가 더 크다. Intel의 oneAPI는 다중 벤더 대상을 위한 SYCL 구현, 라이브러리, 도구를 묶는다. 그 거버넌스는 UXL Foundation으로 넘어갔으며, 운영위원에는 Arm, Codeplay, Fujitsu, Google Cloud, Imagination, Intel, Qualcomm, Samsung이 있고, SYCL 표준에 대해 Khronos와 공식 연락 관계를 맺고 있다.[1] AMD의 HIP은 CUDA와 충분히 비슷해 기계적 변환으로 이식 작업의 상당 부분을 처리하는 실용적 길을 택했다.[31]
4.4. 컴파일 스택
프레임워크와 커널 사이에는 컴파일러가 있으며, 이 계층이 실제로 이식성을 제공하는 주된 수단이 되었다. 모든 연산과 모든 아키텍처마다 커널을 손으로 쓰는 대신, 컴파일러가 연산을 융합하고 타일 크기를 고르고 코드를 생성한다. PyTorch의 torch.compile이 널리 쓰이는 예다. TorchDynamo는 Python 바이트코드를 그래프로 포착하면서 즉시 실행 모드의 유연성을 유지하고, 기본 백엔드인 TorchInductor는 그래프를 GPU용 Triton과 CPU용 OpenMP를 쓴 C++로 낮춘다. Ansel 등은 NVIDIA A100에서 180개가 넘는 실제 모델을 대상으로 추론 기하평균 2.27배, 학습 1.41배 속도 향상을 보고했으며, 다른 PyTorch 컴파일러 백엔드 6개보다 높았다. 이 구조에서 성능이 중요한 GPU 코드는 작성되는 것이 아니라 생성된다. 그래서 새 백엔드는 다시 쓴 커널 라이브러리가 아니라 코드 생성기가 필요하다. JAX는 XLA를 통해 비슷한 경로를 택하며, 그 안에서 Pallas가 더 낮은 수준의 커널 작성 경로를 제공한다.[1]
한계도 분명하다. 컴파일러는 원소별 연산 체인 융합과 메모리 트래픽 감소에 강하지만, 손으로 튜닝한 행렬 곱이나 어텐션 커널에는 덜 미치며, 그래서 CUTLASS와 FlashAttention 같은 라이브러리가 그 밑에서 계속 쓰인다. 컴파일에는 시작 시 시간이 들고, 즉시 실행 경로와 다른 수치 결과를 낼 수 있어 아래에서 다루는 재현성 문제와 얽힌다.[1]
5. 인공지능에서의 GPU
5.1. 신경망이 GPU에 대응하는 이유
신경망을 학습하고 실행하는 일은 데이터 배치에 텐서 연산을 되풀이해서 적용하는 것이다. 완전 연결 층과 어텐션에는 행렬 곱셈이 들어 있다. 합성곱 신경망은 많은 공간 위치와 채널에 걸쳐 필터를 적용한다. 이 연산들은 규칙적인 구조를 가지고 독립적인 곱셈-누적을 많이 수행할 수 있어 병렬 하드웨어에 적합하다.[1]
대응이 자동으로 되는 것은 아니다. 행렬 곱셈은 차원이 충분히 커서 많은 스레드 블록을 만들 수 있고, 메모리에서 읽은 각 값이 많은 연산에 재사용될 때 가장 효율적이다. 작은 행렬, 불리한 차원, 전치, 희소한 접근 패턴, 잦은 동기화는 활용률을 떨어뜨릴 수 있다. NVIDIA의 딥러닝 성능 가이드는 산술 강도와 타일 재사용을 써서 행렬 모양과 배치 크기가 실제 처리량에 영향을 주는 이유를 설명한다.[16]
AI 프레임워크는 고수준 연산을 커널이나 라이브러리 호출로 낮춘다. 하나의 모델 층은 산술, 축약, 데이터 배치, 활성화 함수를 위해 여러 커널을 호출할 수 있다. 컴파일러 시스템은 이 중 일부를 융합해 메모리 트래픽을 줄이기도 한다. 종단 간 실행 시간에는 가장 빠른 행렬 곱셈만이 아니라 이 모든 연산이 포함된다.[1]
5.2. 실제 정밀도 사용
형식 자체는 앞의 구조 절에서 설명했다. 모델 수준에서 중요한 것은 각 형식을 계산의 어느 부분에 적용하는지, 그리고 그 결과 정확도를 어떻게 검증하는지다. 혼합 정밀도 학습은 낮은 정밀도의 저장이나 연산을 선택된 높은 정밀도 연산과 결합한다. Micikevicius 등은 가중치, 활성값, 기울기를 FP16으로 두고 FP32 마스터 가중치 사본을 유지하며, 작은 기울기를 보존하기 위해 손실 스케일링을 쓰고 선택된 연산은 FP32로 누적하는 학습을 설명했다.[19] 이 기법들은 검토된 모델과 하드웨어의 수치 동작을 다룬 것이며, 모든 네트워크가 전역적으로 FP16으로 바꾼 뒤에도 올바르게 학습된다는 뜻은 아니다. 같은 주의가 FP8에도 적용된다. FP8 학습이 성공하는 것은 형식이 본질적으로 충분해서가 아니라 스케일링 계수가 관리되기 때문이다.[1]
양자화된 추론도 정확도 목표에 대한 측정이 필요하다. 낮은 정밀도는 메모리 트래픽을 줄이고 처리량을 늘릴 수 있지만, 보정 오차, 지원되지 않는 연산자, 형식 간 변환, 작은 배치는 이득을 줄일 수 있다. 따라서 낮은 정밀도의 최고 연산 처리량은 종단 간 벤치마크를 대신하지 못한다. 배포 시스템에서 흔하고 타당한 방식은, 읽는 바이트를 주로 차지하는 가중치는 공격적으로 양자화하고, 활성값, 누적, 정규화 및 출력 투영처럼 수치에 민감한 층은 높은 정밀도로 유지하는 것이다.[1]
5.3. 학습 작업
딥러닝 학습에는 순전파, 기울기 계산, 옵티마이저 갱신, 데이터 입력, 보통 체크포인트 저장이 포함된다. GPU 메모리에는 모델 파라미터, 역전파를 위해 보관하는 활성값, 기울기, 옵티마이저 상태, 임시 작업 공간, 프레임워크 오버헤드가 모두 들어가야 한다. 메모리에 들어가는 가장 큰 모델이 처리량이 가장 높은 모델인 것은 아니다.[1]
배치를 키우면 병렬성과 산술 강도가 늘 수 있지만, 배치 크기는 최적화와 통계적 효율에도 영향을 준다. 시스템마다 도달하는 모델 품질이 다르면 초당 예제 수만 보고하는 것은 오해를 부를 수 있다. MLPerf Training은 지정된 작업에서 정해진 품질 목표에 도달하는 종단 간 시간을 기준으로 설계되었으며, 시스템 비교를 더 의미 있게 하려는 규칙을 갖는다.[1]
모델이 한 장치에 들어가지 않으면 학습은 여러 병렬화 방법을 조합할 수 있다.[1]
- 데이터 병렬: 모델을 복제하고 워커마다 다른 예제를 배정한 뒤 기울기를 합친다.
- 텐서 병렬: 한 층 안의 연산이나 텐서를 장치들에 나눈다.
- 파이프라인 병렬: 서로 다른 층 묶음을 서로 다른 장치에 두고 마이크로배치를 단계들에 차례로 통과시킨다.
- 상태 샤딩: 파라미터, 기울기, 옵티마이저 상태를 워커들에 나눈다.[1]
Megatron-LM 연구는 데이터, 텐서, 파이프라인 병렬을 결합했고, 이들의 상호작용이 통신, 유휴 시간, 메모리 사용, 커널 효율에 영향을 준다고 기록했다. GPipe는 마이크로배치로 파이프라인 단계를 활성 상태로 유지할 수 있음을 보였지만, 파이프라인 일정의 앞뒤에 생기는 유휴 「버블」도 함께 보여 주었다. ZeRO는 데이터 병렬 학습에서 장치당 메모리를 줄이려고 모델 상태를 나눈다. 이후 연구는 전문가 혼합 모델을 위한 전문가 병렬과 긴 시퀀스를 위한 컨텍스트 병렬을 추가했다. FSDP는 PyTorch에 내장된 샤딩 구현이며, 기울기 체크포인팅은 활성값 메모리를 재계산과 맞바꾼다.[1]
어떤 방법을 쓸지는 주로 어떤 자원이 부족한지에 따라 정해지며, 선택은 상호연결과 얽힌다. 텐서 병렬은 층마다 장치가 활성값을 여러 번 교환하므로 가장 무겁고 지연에 민감한 트래픽을 만들며, 보통 빠른 스케일업 링크를 공유하는 장치 안에 한정된다. 파이프라인 병렬은 트래픽이 적지만 유휴 버블을 만든다. 데이터 병렬은 스텝마다 큰 기울기 교환이 한 번 일어나 느린 네트워크를 견디지만, 메시지 크기가 모델과 함께 커진다.[1]
확장은 선형적이지 않다. 워커들은 기울기, 활성값, 파라미터, 옵티마이저 상태를 교환하며, 동기화 때문에 장치가 놀 수 있다. NCCL은 NVIDIA 시스템에서 all-reduce, all-gather, reduce-scatter, broadcast 같은 집합 연산을 구현한다. 성능은 메시지 크기, 토폴로지, 상호연결 대역폭, 소프트웨어, 워커 간 연산 균형에 달려 있다. 한 클러스터 크기와 모델에서 보고된 속도 향상은 GPU의 보편적 성질이 아니다.[1]
5.4. 추론 실행 작업
추론 실행은 학습과 목표가 다르다. 대화형 서비스는 한 요청의 지연 시간을 우선할 수 있고, 오프라인 서비스는 많은 요청을 묶어 처리량을 최대화할 수 있다. 모델은 연산이 아니라 메모리 용량이나 대역폭에 묶일 수도 있다.[1]
자기회귀 대규모 언어 모델 추론이 이 차이를 보여 준다. 입력 프롬프트를 처리하는 단계에서는 입력 토큰들에 걸쳐 병렬 작업이 드러날 수 있다. 이후 토큰 생성은 각 시퀀스 안에서 디코딩 단계마다 순차적이지만, 배치가 여러 시퀀스에 걸친 병렬 작업을 제공한다. 가중치와 어텐션의 키-값 캐시는 읽히거나 보관되어야 하므로 메모리 트래픽과 용량이 지배할 수 있다. 배치를 키우면 처리량은 오르지만 대기 시간과 메모리 사용이 함께 늘어난다.[1]
보고된 추론 속도는 맥락이 있어야 의미가 있다. 모델과 정밀도, 배치 크기, 입력과 출력 길이, 지연 시간 통계, 샘플링 방식, 하드웨어 개수, 서빙 소프트웨어, 정확도 또는 품질 검사가 함께 제시되어야 한다. 한 설정의 초당 토큰 수 값은 그 조건 없이 다른 설정으로 옮길 수 없다.[1]
6. 메모리 대역폭과 서비스 경제성
이 절이 문서의 실질적 핵심이다. 현재 대부분의 AI 추론에서 속도와 비용을 정하는 값은 GPU가 초당 수행할 수 있는 부동소수점 연산 수가 아니라, 초당 읽을 수 있는 바이트 수와 읽은 바이트당 유용한 연산 수다.[1]
6.1. 산술 강도와 기계 균형
산술 강도(연산 강도라고도 함)는 커널이 장치 메모리에서 전송된 바이트당 수행하는 연산 수다. 기계 균형은 하드웨어의 대응 값으로, 최고 연산 처리량을 최고 메모리 대역폭으로 나눈 값이며 바이트당 연산으로 표시한다. 산술 강도가 기계 균형보다 낮은 커널은 아무리 잘 작성해도 최고 연산 처리량에 도달할 수 없는데, 다음 피연산자가 도착하기 전에 연산을 끝내 버리기 때문이다. 이것이 특정 장치에 적용한 Roofline 틀이다.[36]
기계 균형은 수십 년간 계속 올라왔고, 이것이 메모리가 한계가 된 근본 이유다. Gholami 등은 이 격차를 정량화했다. 20년 동안 서버 하드웨어의 최고 FLOPS는 2년마다 3.0배로 늘었지만, DRAM 대역폭은 1.6배, 상호연결 대역폭은 1.4배로 늘었다. 이 누적 격차가 「메모리 벽」이며, 세대가 바뀔 때마다 같은 영역에 머물기 위해 소프트웨어가 더 많은 데이터 재사용을 해야 한다는 뜻이다.[1]
다음 표는 장치 간 비교에 가장 공정한 공통 기준인 BF16 또는 FP16 밀집 행렬 처리량으로 기계 균형을 계산한 것이다.[1]
| 장치 | 밀집 16비트 행렬 처리량 | 메모리 대역폭 | 기계 균형 |
|---|---|---|---|
| NVIDIA V100 (SXM2) | 125 TFLOPS | 900 GB/s | 약 139 FLOP/byte[7] |
| NVIDIA A100 (SXM, 80 GB) | 312 TFLOPS | 2,039 GB/s | 약 153 FLOP/byte[10] |
| NVIDIA H100 (SXM) | 989 TFLOPS | 3.35 TB/s | 약 295 FLOP/byte[4] |
| NVIDIA H200 (SXM) | 989 TFLOPS | 4.8 TB/s | 약 206 FLOP/byte[11] |
| NVIDIA GB200 (NVL72의 GPU당) | 2,500 TFLOPS | 8 TB/s | 약 313 FLOP/byte[12] |
| AMD Instinct MI350X | 2,310 TFLOPS | 8 TB/s | 약 289 FLOP/byte[5] |
| Google TPU7x (Ironwood) | 2,307 TFLOPS | 7.37 TB/s | 약 313 FLOP/byte[13] |
위 표의 모든 행렬 수치는 밀집이다. Ampere 이후 NVIDIA 값은 표가 지시하는 대로 희소성 적용 수치를 절반으로 낮춰 도출했다.[4][12] 두 가지를 알 수 있다. 첫째, 기계 균형은 V100에서 H100까지 대략 두 배가 되었다. 따라서 오래된 장치에서 거의 연산에 묶여 있던 커널이 소프트웨어 변경 없이 새 장치에서는 메모리에 묶인다. 둘째, H200은 예외적으로 균형이 낮아진 유일한 항목이다. 연산은 H100과 같고 더 많고 빠른 메모리를 달았기 때문이다.[1]
더 좁은 형식에서는 상황이 나빠진다. FP8을 쓰면 가중치가 2바이트 대신 1바이트를 차지하며, 이때 H100의 밀집 기계 균형은 약 591 연산/바이트, GB200은 약 625 연산/바이트다. 정밀도를 한 단계 낮출 때마다 같은 피연산자 수에 대해 연산은 두 배가 되고 바이트는 절반이 되므로, 균형점은 더 멀어진다.[1]
6.2. 디코딩이 대역폭에 묶이는 이유
자기회귀 생성 중 배치 B개의 시퀀스에 대해 b바이트씩 저장된 N개 가중치를 갖는 트랜스포머 선형 층 하나를 생각해 보자. 각 시퀀스는 스텝마다 토큰 하나를 만든다. 이 층은 약 2NB번의 부동소수점 연산을 수행하고 약 Nb바이트의 가중치를 읽는다. 따라서 산술 강도는 층의 크기와 무관하게 약 2B/b 연산/바이트다.[1]
BF16에서 배치 크기가 1이면 약 1 연산/바이트로, H100의 기계 균형 약 295에 훨씬 못 미친다. 장치는 산술 능력의 99% 넘게 놀고, 이는 소프트웨어가 나빠서가 아니라 가중치가 도착한 뒤에 할 일이 없기 때문이다. 균형점에 도달하려면 수백 개의 동시 시퀀스가 필요하다. NVIDIA 가이드도 디코딩 중에는 가중치, 키, 값, 활성값을 메모리에서 GPU로 옮기는 속도가 지연 시간을 지배하며, 연산이 실제로 얼마나 빨리 이루어지는지는 그렇지 않다고 결론 내린다.[37]
이 결과는 하한으로 표현할 수 있다. 8비트 가중치를 쓰는 70B 밀집 모델은 디코딩 스텝마다 약 70 GB를 읽어야 한다. 메모리 대역폭이 8 TB/s인 장치에서 스텝당 약 9밀리초이며, 시퀀스당 초당 약 110토큰이다. 이는 산술, 어텐션 트래픽, 커널 오버헤드, 대역폭 비효율을 세기 전의 값이다. 추가 부동소수점 능력으로는 이 수치가 낮아지지 않는다. 대역폭을 늘리거나, 가중치당 바이트를 줄이거나, 토큰당 읽는 가중치 수를 줄이거나, 더 많은 시퀀스가 같은 읽기를 나누는 것이 유일한 방법이다.[1]
프롬프트 처리(prefill)는 다르게 동작한다. 가중치 행렬에 많은 토큰 벡터를 한꺼번에 곱하므로 강도가 진행 중인 토큰 수에 따라 커지고, 이 단계는 보통 연산에 묶인다. 이 차이 때문에 서빙 시스템은 prefill과 decode를 서로 다른 자원에 나누는 쪽으로 가고 있으며, 단계와 배치 구성을 밝히지 않은 「초당 토큰 수」는 모호하다. Pope 등은 같은 시스템에서 이 범위의 양 끝을 측정해, 낮은 배치 크기에서 토큰당 29밀리초, 대규모 배치 처리 중 76%의 모델 FLOPS 활용률을 보고했다.[38]
전문가 혼합 구조는 토큰마다 라우팅된 전문가만 읽어 산술을 바꾼다. 예를 들어 MLPerf Inference v6.0에서 쓰인 GPT-OSS 120B 모델은 총 파라미터가 약 1,170억 개이고 토큰당 활성 파라미터가 약 51억 개다.[35] 이는 토큰당 읽는 바이트를 크게 줄이지만, 더 많은 메모리 용량이 필요하고 라우팅에 따라 트래픽 패턴이 달라져 배칭을 복잡하게 만든다.[1]
6.3. 키-값 캐시
어텐션은 두 번째이자 점점 커지는 메모리 트래픽을 더한다. 생성된 각 토큰은 앞선 모든 토큰의 키와 값에 주의를 기울이며, 매 스텝마다 다시 계산하면 낭비이므로 캐시한다. NVIDIA는 토큰당 캐시 크기를 2 × 층 수 × (헤드 수 × 헤드 차원) × 원소당 바이트로, 전체 크기를 배치 크기 × 시퀀스 길이 × 2 × 층 수 × 은닉 크기 × 원소 크기로 제시한다. Llama 2 7B에서 배치 크기 1, 4,096 토큰, FP16이면 약 2 GB다.[37]
이 캐시는 서빙 비용을 정하는 세 가지 성질을 가진다. 첫째, 배치 크기와 문맥 길이에 비례해 커진다. 가중치 읽기를 나누려고 배치를 두 배로 늘리면 캐시도 두 배가 되고, 긴 문맥은 이를 더 늘린다. 그래서 용량이 장치가 담을 수 있는 배치 크기를 정하는 구속 조건이 된다.[1]
둘째, 배치 전체에 걸쳐 나눠지지 않는다. 가중치는 배치의 모든 시퀀스가 공유하므로 한 번 읽으면 모두에게 쓰인다. 반면 캐시는 시퀀스마다 따로 있어서, 어텐션 단계는 배치 크기와 무관하게 시퀀스당 거의 같은 바이트를 읽고 어떤 배치 크기에서도 대역폭에 묶인다. 이 때문에 키와 값 헤드를 쿼리 헤드 사이에 공유해 캐시를 줄이는 다중 쿼리 어텐션, 그룹 쿼리 어텐션 같은 구조적 대응이 나왔다. Pope 등은 다중 쿼리 어텐션의 더 작은 캐시가 같은 메모리 예산에서 훨씬 긴 문맥을 허용함을 보였다.[38]
셋째, 조각난다. 단순한 할당은 가능한 최대 시퀀스 길이만큼 연속 메모리를 예약하므로 대부분을 낭비한다. vLLM 시스템은 운영체제의 페이징 아이디어를 캐시에 적용해, 연속일 필요가 없고 요청 사이에 공유할 수 있는 고정 크기 블록으로 할당했다. 이 시스템은 비슷한 지연 시간에서 FasterTransformer와 Orca보다 처리량이 2배에서 4배 높았으며, 이득은 긴 시퀀스와 큰 모델에서 가장 컸다.[1] 관련 개념은 페이지드어텐션(PagedAttention)과 연속 배치(continuous batching)를 참고한다.
어텐션은 다른 이유로도 메모리에 묶여 있었다. 표준 구현은 전체 어텐션 점수 행렬을 장치 메모리에 실체화했다. FlashAttention은 계산을 재구성해 온칩 SRAM을 통해 타일 단위로 처리함으로써 이 읽기와 쓰기를 없앴다. 보고된 결과는 시퀀스 길이 1K의 GPT-2에서 3배, Long Range Arena 과제에서 2.4배, BERT-large 학습에서 MLPerf 1.1 기록 대비 종단 간 15% 향상이다. 이 방법은 정확한(exact) 알고리즘이며, 이득은 전적으로 더 적은 바이트를 옮긴 데서 나왔다.[1]
6.4. 연산은 풍부하고 대역폭은 부족한 상태
두 영역은 같은 요청 안에서 함께 나타날 수 있다. 서빙 시스템은 prefill을 높은 산술 활용률로 돌린 뒤, 시간의 대부분을 decode에 쓰면서 같은 장치 부동소수점 능력의 일부만 쓸 수 있다. 워크로드 전체로 평균하면 GPU는 높은 점유율과 바쁜 스케줄러를 보고하면서도 최고 FLOPS의 한 자릿수 퍼센트만 달성할 수 있다. 두 측정은 모두 맞다.[1]
가장 분명한 예는 H100과 H200의 비교다. 두 제품은 Hopper 연산이 같아서 모든 형식에서 텐서 처리량이 같다. H200은 3.35 TB/s HBM3 80 GB 대신 4.8 TB/s HBM3E 141 GB를 가진다. NVIDIA는 H200이 Llama 2 70B에서 H100보다 추론 성능이 1.9배, GPT-3 175B에서 1.6배라고 밝혔다.[11] 추가 연산 없이 메모리를 키운 것만으로 추론에서 세대 간 개선의 대부분을 얻은 셈이다.
장치를 선정하거나 구매하는 사람에게 실제 함의는 직접적이다. 밀집 모델의 대화형 서빙이라면 최고 FLOPS보다 메모리 대역폭과 용량으로 장치를 먼저 비교해야 한다. 장치당 처리량은 캐시가 메모리를 소진할 때까지 배치 크기에 따라 가파르게 오르고, 그와 동시에 요청당 지연 시간은 나빠진다. 가중치 양자화는 읽는 바이트를 비례해서 줄이므로, 비용을 정하는 것은 파라미터 수가 아니라 가중치 용량이다. 측정은 목표 지연 시간 예산에서 해야 하는데, 달성 가능한 배치 크기는 지연 목표로 정해지고 달성 가능한 처리량은 배치 크기로 정해지기 때문이다.[1]
7. 상호연결과 스케일아웃
하나의 작업이 한 장치를 넘어서면 네트워크가 프로세서의 일부가 된다. 현대 AI 시스템은 기술과 목적이 다른 두 네트워크를 쓴다. 적은 수의 GPU를 하나의 장치처럼 다룰 만큼 촘촘하게 묶는 스케일업 패브릭과, 그 묶음들을 클러스터로 연결하는 스케일아웃 네트워크다.[1]
NVLink는 NVIDIA의 점대점 GPU 상호연결이다. GPU당 대역폭은 세대마다 대략 두 배가 되었다.[1]
| 세대 | 아키텍처 | GPU당 대역폭 | GPU당 링크 수 |
|---|---|---|---|
| 4세대 | Hopper | 900 GB/s | 18[39] |
| 5세대 | Blackwell | 1,800 GB/s | 18[39] |
| 6세대 | Rubin | 3,600 GB/s | 36[39] |
표의 출처는 NVIDIA다.[39] 비교하면 PCIe Gen5 x16 슬롯은 양방향 128 GB/s를 제공하므로,[4] 5세대 NVLink는 옆에 붙은 호스트 버스보다 GPU당 약 14배 많은 트래픽을 나른다. 이 차이 때문에 텐서 병렬 작업은 NVLink 도메인 안에 배치되며, PCIe 경계를 넘는 일은 거의 없다.[1]
NVSwitch는 점대점 링크를 전체 대 전체 도메인으로 확장한다. NVIDIA는 Hopper 세대 스위치가 8-GPU 도메인을 집계 7.2 TB/s로, Blackwell 세대가 72-GPU 도메인을 130 TB/s로, Rubin 세대가 72-GPU 도메인을 260 TB/s로 지원한다고 밝혔다.[39] 이 도메인 안에서는 모든 GPU가 다른 모든 GPU에 전체 링크 대역폭으로 닿을 수 있어, GPU 묶음을 하나의 큰 메모리 풀처럼 프로그래밍할 수 있다.
AMD의 대응 스케일업 패브릭은 Infinity Fabric이다. MI350X 모듈은 144 GB/s 스케일업 링크 7개를 노출하며, 유니버설 베이스보드의 가속기 8개 사이에서 일관된 메모리 공유에 참여한다.[5] UALink는 독점 대안에 맞서 가속기용 개방형 스케일업 상호연결을 표준화하려는 업계 노력이다.[1]
노드 사이에서 AI 클러스터는 전통적으로 InfiniBand를 써 왔다. InfiniBand는 원격 직접 메모리 접근(RDMA), 크레딧 기반 흐름 제어, 분산 학습의 간헐적인 all-reduce 트래픽에 맞는 적응형 라우팅을 제공한다. 대안은 RoCE(RDMA over Converged Ethernet)를 쓰는 이더넷이다. 이더넷은 무손실 동작과 혼잡 제어에서 전통적으로 약했지만, 더 싸고 네트워크 운영자에게 익숙하며 공급사도 더 많다.[1]
이 격차는 Ultra Ethernet Consortium이 2025년 6월 11일 명세 1.0을 발표하면서 좁혀졌다. 이 명세는 이더넷 위에서 AI와 고성능 컴퓨팅 트래픽 패턴을 겨냥한 560쪽 이상의 완전한 통신 스택이다. AMD는 이 컨소시엄의 창립 멤버이며 이더넷 기반 AI 네트워킹용 가속기를 만든다고 밝혔다.[5] NVIDIA는 2020년 InfiniBand 주요 업체를 인수했고, 지금은 AI 백엔드 네트워크용으로 InfiniBand 라인과 이더넷 라인을 모두 판매한다. 두 기술의 시장 점유율 추정치는 벤더 공개가 아니라 분석 기관에서 나온 것이므로 그렇게 다뤄야 한다.[1]
이 선택이 중요한 이유는 분산 학습 성능이 점대점 전송이 아니라 집합 연산으로 정해지기 때문이다. 큰 기울기 텐서의 all-reduce는 가장 느린 참가자가 끝나야 완료되므로, 헤드라인 링크 속도보다 꼬리 지연과 혼잡 동작이 스텝 시간을 더 좌우한다.[1]
대형 모델, 텐서와 전문가 병렬, 빠른 스케일업 패브릭의 결합은 실제로 구매하는 단위를 바꿨다. 최전선 작업에서 의미 있는 단위는 단일 GPU가 아니라 랙이다. NVIDIA GB200 NVL72는 액랭식 랙 하나에 Grace CPU 36개와 Blackwell GPU 72개를 넣어, 130 TB/s NVLink 도메인 안에서 HBM3E 13.4 TB를 집계 576 TB/s로 제공한다. NVIDIA는 이 랙의 NVFP4 텐서 처리량을 희소성 적용 1,440 PFLOPS, 밀집 720 PFLOPS로, FP16/BF16 처리량을 희소성 적용 360 PFLOPS로 표기한다.[12] 후속인 Rubin 세대는 72-GPU 도메인을 유지하면서 NVLink 집계 대역폭을 260 TB/s로 두 배로 늘린다.[39] AMD는 2026년 7월 23일 Advancing AI 행사에서 Instinct MI400 시리즈와 함께 비슷한 랙 규모 시스템 Helios를 발표했다.[30][1]
랙 단위 구매는 조달 이상의 결과를 낳는다. 전력 밀도가 높아져 액랭이 선택이 아닌 요건이 되며, 이는 어느 건물이 장비를 수용할 수 있는지를 제한한다. 국제에너지기구(IEA)는 가속 서버를 AI 지향 데이터센터의 전력 밀도와 에너지 사용 증가를 이끄는 중요 요인으로 꼽는다.[40] 장애 단위도 커진다. 랙 하나를 잃으면 NVLink 도메인 전체가 빠지므로, 체크포인트 간격과 작업 재시작 동작을 이에 맞춰 설계해야 한다.[1]
8. 성능 분석
GPU는 작업에 유용한 병렬 연산이 실행, 전송, 동기화, 스케줄링 비용을 넘을 때만 이득을 본다. 역사적 비교에서 Lee 등은 처리량 지향 응용 14개를 Intel CPU와 NVIDIA GPU에서 모두 최적화해, GPU의 평균 속도 향상이 2.5배라고 보고했다. 이 연구는 각 아키텍처에 유리한 사례도 함께 분석했다.[9] 이 결과는 2010년 하드웨어와 소프트웨어에 묶여 있다. 그 교훈은 통제된 작업별 비교 없이는 GPU의 10배, 100배 이상 가속 주장이 유효하지 않다는 것이다.[1]
공정한 CPU-GPU 비교는 양쪽 플랫폼에서 최적화된 구현을 쓰고, 응용이 요구할 때는 데이터 전송 비용을 포함하며, 출력 품질을 고정하고, 전체 하드웨어와 소프트웨어 구성을 보고해야 한다. 튜닝된 GPU 라이브러리를 튜닝되지 않은 단일 스레드 CPU 프로그램과 비교하면 프로세서가 아니라 구현 선택을 측정하는 셈이다.[1]
루프라인 모델은 커널의 성능을 최고 연산 처리량, 메모리 대역폭, 연산 강도(주 메모리에서 전송된 바이트당 수행한 연산 수)와 연결한다. 상한은 최고 연산 성능과 메모리 대역폭에 연산 강도를 곱한 값 중 작은 쪽이다.[36] 강도가 낮은 커널은 모델상 메모리에 묶여 있어 연산 장치를 더해도 상한이 오르지 않는다. 강도가 높은 커널은 연산에 묶일 수 있다. 실제 성능은 명령 의존성, 캐시 동작, 통신, 실행 오버헤드, 분기 발산 때문에 상한보다 낮게 머문다. 이 모델은 진단 도구이지, 모든 커널이 상한에 닿는다는 예측이 아니다.[1]
앞의 메모리 대역폭 절은 이 모델을 특정 장치와 언어 모델 추론 실행 단계에 적용한 것이며, 그 기계 균형 값은 각 장치 루프라인의 능선점(ridge point)이다.[1]
GPU 사양에는 보통 다음 항목이 실린다.[1]
- 메모리 용량과 대역폭
- 지원 수치 형식
- 선택한 형식의 최고 연산 처리량
- 열설계전력(TDP)
- 호스트 및 장치 상호연결
- 소프트웨어와 가상화 지원[1]
이 수치들은 서로 다른 질문에 답한다. 메모리 용량은 작업 집합이 들어가는지를, 대역폭은 데이터를 얼마나 빨리 옮길 수 있는지를 정한다. 최고 연산 처리량은 특정 명령 구성과 충분한 독립 작업을 가정한다. 어떤 수치는 융합 곱셈-덧셈을 연산 두 개로 센다. 어떤 수치는 지원되는 희소성 패턴을 요구하는 희소성 적용 처리량을 인용한다. 열설계전력은 설계 사양이지 작업에 쓰인 에너지를 직접 측정한 값이 아니다.[1]
비교가 잘못되는 대부분의 경우를 덮는 확인 목록은 다음과 같다.
- 어떤 수치 형식을 가리키는가? 형식이 없는 숫자는 숫자로서 의미가 없다.
- 밀집인가, 희소성 적용인가? 같은 형식에서 한 값이 다른 값의 정확히 두 배라면 큰 쪽이 희소성 적용 수치다.
- 장치당, 보드당, 랙당 수치인가? 8-GPU 보드와 72-GPU 랙도 단일 칩과 같은 단위로 표기된다.
- 메모리 수치는 용량인가 대역폭인가, 장치당인가 합산인가?
- 상호연결 수치는 단방향인가 양방향인가?
- 비교 기준이 같은 정밀도의 이전 세대인가, 다른 정밀도인가? 정밀도 변경과 하드웨어 변경을 함께 담은 세대 배수는 둘 다를 반영한다.[1]
조달이나 과학 보고를 위해서는 의도한 모델, 데이터셋, 정밀도, 배치 또는 요청 분포, 품질 목표, 전체 소프트웨어 스택으로 벤치마크해야 한다. 워밍업, 측정 기간, 필요하면 오차 막대나 반복 실행을 포함하고, 에너지를 보고한다면 에너지 측정 경계도 함께 밝힌다.[1]
MLPerf는 MLCommons가 관리하며, 제출물은 정의된 작업에서 정의된 품질 목표를 충족해야 하고 다른 제출자의 검토를 받는다. 그래서 현재로서는 통제된 교차 벤더 비교에 가장 가까운 자료다. MLPerf Inference v6.0은 2026년 4월 1일 발표되었으며, AMD, Google, Intel, NVIDIA와 여러 클라우드 사업자를 포함한 24개 조직이 제출했다. 이번 버전은 공개 가중치 GPT-OSS 120B 모델 기반 벤치마크, 텍스트-영상 생성, DLRMv3, 비전-언어 모델을 추가했다.[35]
클로즈드 부문 결과는 모델과 최적화를 제한해 비교 가능성을 높이지만, 조정된 배포가 달성할 수 있는 수준을 과소평가한다. 오픈 부문 결과는 더 큰 자유를 허용하는 만큼 비교 가능성이 떨어진다. 제출은 하드웨어뿐 아니라 벤더의 엔지니어링 노력을 반영하며, 제출자 집합은 스스로 선택된다. 벤치마크 결과는 칩의 속성이 아니라 특정 구성에 대한 증거다.[1]
9. 한계와 위험
GPU는 작업에 병렬 연산이 적을 때, 예측할 수 없는 포인터 추적이 있을 때, 스레드 묶음 안에서 분기가 잦을 때, 세밀한 동기화가 필요할 때 덜 적합하다. 계산이 작아서 실행과 전송 오버헤드가 지배하면 CPU가 나을 수 있다. 하이브리드 응용은 제어 흐름과 전처리를 CPU에 두고, 밀집 커널만 GPU에 맡기는 경우가 많다.[1]
가속기 메모리는 유한하다. 이를 넘는 모델은 재계산, 오프로딩, 샤딩, 낮은 정밀도 저장 중 하나가 필요하며, 각각 실행 시간과 복잡도를 바꾼다. 다중 GPU 실행은 집합 통신과 토폴로지 효과를 더한다. 장치를 늘리는 것이 잘못 분할된 작업을 오히려 느리게 만들 수도 있다.[1]
부동소수점 덧셈과 곱셈은 일반적으로 결합 법칙이 성립하지 않는다. 병렬 축약은 CPU 구현과 다른 순서로 값을 합칠 수 있어 반올림 결과가 달라진다. 프레임워크는 장치나 소프트웨어 버전에 따라 다른 알고리즘을 고르기도 한다. PyTorch는 릴리스, 플랫폼, CPU와 GPU 실행 사이에서 완전한 재현성을 보장하지 않으며, 결정적 연산은 더 느릴 수 있다고 밝힌다.[1]
마지막 비트의 차이가 자동으로 오류인 것은 아니지만, 수치적으로 불안정한 알고리즘에는 영향을 줄 수 있다. 검증은 근거 없이 비트 단위 동일성을 요구하기보다 응용에 맞는 허용 오차와 과제 수준의 품질 지표를 써야 한다. 좁은 형식은 차이를 키운다. 같은 모델을 FP4로 돌리더라도 블록 스케일링 구현이 다른 두 시스템은, 각자 명세에 맞는 올바른 구현이어도 눈에 띄게 다른 출력을 낼 수 있다.[1]
고성능 GPU는 높은 전기 및 냉각 부하를 만든다. IEA는 가속 서버가 AI 지향 데이터센터에서 전력 밀도와 에너지 사용 증가의 주요 원인이라고 밝힌다.[40] GPU의 정격 전력은 한 번의 학습 실행이나 데이터센터 전체가 쓰는 에너지가 아니다. 설비 냉각, CPU, 메모리, 네트워크, 스토리지, 활용률, 작업 기간도 기여한다.[1]
보드 전력은 세대를 거치며 급격히 올랐다. A100 SXM은 400 W, H100 SXM은 최대 700 W, AMD MI350X는 최대 1,000 W의 총 보드 전력으로 표기된다.[10][4][5] 이 밀도에서는 공랭이 고밀도 구성에 비현실적이 되며, 그래서 랙 규모 시스템은 액랭을 쓴다.[1]
에너지 비교에는 측정 경계와 달성한 산출물을 명시해야 한다. 순간 전력이 높은 장치도 동등한 작업을 훨씬 빨리 끝내면 총 에너지는 적을 수 있고, 활용률이 낮은 가속기는 용량을 낭비한다. 탄소 영향은 추가로 위치, 시간, 전력 공급원에 따라 달라진다.[1]
실제 성능은 컴파일러, 커널, 라이브러리, 드라이버, 프레임워크 지원에 달려 있다. 벤더 전용 API는 성숙한 최적화를 제공하지만 전환 비용을 키운다. 크로스 플랫폼 소스도 아키텍처별 튜닝이 필요할 수 있다. 장기 배포라면 하드웨어 사양과 함께 소프트웨어 유지보수, 지원되는 수치 형식, 디버깅과 프로파일링 도구, 검증된 라이브러리의 가용성을 평가해야 한다.[1]
10. 공급, 비용, 정책
AI GPU는 함께 도착해야 하는 세 개의 독립 공급망에 의존한다. 최선단 로직 웨이퍼, HBM 스택, 이를 결합하는 고급 패키징이다. 어느 하나라도 생산을 제한할 수 있으며, 특히 패키징은 2.5D 인터포저 용량이 웨이퍼 투입만큼 빨리 늘지 않아 벤더와 파운드리가 반복해서 제약으로 지목해 왔다. HBM 공급사는 SK hynix, Samsung, Micron 세 곳이며, 그 가용성은 가속기 가용성과 밀접하게 움직여 왔다.[1]
이 사업 규모는 부품 범주치고는 특이하다. NVIDIA는 2026 회계연도 매출 2,159억 달러를 보고했고, 그중 1,973억 달러가 데이터센터 부문에서 나왔다.[34]
2022년 이후 미국은 상무부 산업안보국(BIS)을 통해 고급 컴퓨팅 칩의 수출을 제한해 왔다. 통제는 제품 이름이 아니라 계산된 지표에 걸려 있다. 총처리성능(TPP)은 2 × MacTOPS × 연산의 비트 길이로 정의되며 칩 전체에 걸쳐 합산한다. MacTOPS는 초당 테라 연산 단위의 이론 최고 곱셈-누적 속도다. 보조 지표인 성능 밀도는 TPP를 다이 면적으로 나눈 값이다. TPP가 4,800 이상이거나, TPP가 1,600 이상이면서 성능 밀도가 5.92 이상인 데이터센터 칩은 수출 통제 분류 번호 3A090.a에 해당한다.[1]
임계값이 수식이므로 공급사는 기준선 아래에 걸리는 변형을 설계할 수 있고, 실제로 그렇게 해 왔다. 그 결과 제한 대상 목적지를 위한 구분된 제품군이 생겼으며, 예를 들어 NVIDIA의 H20이 있다.[1]
정책은 계속 움직였다. 2026년 1월 15일 BIS는 중국과 마카오에 대한 허가 방침을 거부 추정에서 사안별 심사로 바꿨다. 대상은 TPP 21,000 미만이고 총 DRAM 대역폭이 6,500 GB/s 미만인 칩이며, NVIDIA H200과 AMD MI325X가 명시되었다. 승인은 미국에서 상업적으로 구매할 수 있을 것, 국내 공급이 충분할 것, 중국과 마카오로의 출하량을 고객의 미국 출하량의 절반 이하로 제한할 것, 수하인의 고객 확인 절차를 거칠 것, 출하 전마다 독립적인 미국 실험실 검사를 받을 것, 서비스형 인프라를 통한 원격 접근을 제한할 것을 조건으로 한다. 제3국 재수출과 다른 금수 대상국으로의 수출은 여전히 금지된다.[1]
결과적으로 시장은 최소 세 단계로 나뉜다. 제한 없는 목적지, 조건부 허가 대상 목적지, 금지 목적지다. 이 구분은 어떤 하드웨어가 어디에서 얼마에 구할 수 있는지를 정하고, 따라서 어느 관할권에서 어떤 모델을 학습하거나 서빙할 수 있는지에도 영향을 준다. 관련 개념은 수출 통제와 Entity List를 참고한다.[1]
구매와 임대는 둘 다 널리 쓰이며, 선택은 활용률, 보유 기간, 노후화 위험을 누가 지느냐에 달려 있다. 소유는 일정, 데이터 위치, 소프트웨어 스택에 대한 통제를 주고, 지속 활용률이 높을 때 변동비를 고정비로 바꾼다. 다만 전력, 냉각, 공간, 네트워크 용량을 확보해야 하고, 하드웨어의 잔존 가치 위험을 소유자가 진다. 클라우드나 전문 GPU 운영사에서 임대하면 이 위험을 마진을 붙여 넘기고, 수요에 맞춰 용량을 조정하며, 인도를 기다리지 않고 새 세대에 접근할 수 있다. 공개 요율은 사업자, 지역, 세대, 약정 기간에 따라 크게 다르며, 하루 관측한 스팟 가격을 비용 기준으로 삼으면 안 된다.[1]
노후화 문제에는 분명한 공개 자료가 있다. Amazon은 2025년 1월 1일부터 서버와 네트워크 장비 일부의 추정 내용연수를 6년에서 5년으로 줄였다고 밝혔다. 이유로 AI와 머신러닝 분야의 기술 발전 속도를 들었고, 이에 따라 2025년 영업이익이 약 7억 달러 줄 것으로 예상했다. 이는 이전의 연장 결정을 뒤집은 것이며, 대형 사업자가 AI 하드웨어가 예상보다 빨리 낡는다고 밝힌 가장 직접적인 공개 진술이다.[1]
새 세대가 나와도 이전 세대 GPU가 쓸모없어지지는 않는다. 작업은 더 작은 모델, 미세 조정, 배치 추론 실행, 개발 업무로 내려간다. 다만 장치의 가치는 사람들이 실행하려는 모델에 비해 메모리 대역폭과 용량이 얼마나 되는지에 묶여 있다. 그래서 메모리가 넉넉한 제품은 연산 성능 수치가 시사하는 것보다 오래 쓸모를 유지한다.[1]
11. GPU의 대안
GPU는 AI 작업에 잘 맞는 범용 병렬 프로세서다. 여러 부류의 하드웨어는 범용성을 버리고 더 좁은 대상에서 효율을 얻는다.[1]
구글의 텐서 처리 장치(TPU)는 실제 운영 환경에서 가장 오래 쓰인 대안이다. 그래픽 하드웨어가 없고, 행렬 연산을 수축기 배열(systolic array)로 구성한다. 이 배열에서는 피연산자가 곱셈-누적 셀 격자를 따라 흐르므로 각 값이 레지스터 파일로 돌아가지 않고 여러 셀에서 재사용된다. Jouppi 등은 추론용으로 만들어진 첫 세대 설계를 설명했는데, 8비트 곱셈-누적 장치 256 × 256 배열이었다.[18]
일곱 번째 세대인 TPU7x(Ironwood)는 2025년 4월 발표되었고, 2025년 11월 Google Cloud에서 정식 제공되었다. 구글은 칩당 BF16 2,307 TFLOPS와 FP8 4,614 TFLOPS, HBM3E 192 GB와 7.37 TB/s, 칩 간 상호연결 1.2 TB/s를 밝혔으며, 최대 9,216개 칩으로 구성된 팟을 제공한다고 했다.[13][1]
구글은 희소성 한정 없이 단일 값을 발표하므로, 이 수치는 밀집 수치이며 위 GPU 밀집 수치와 직접 비교할 수 있다. GPU와의 설계 차이는 실재하지만 예전보다 좁아졌다. 두 설계 모두 큰 행렬 엔진, HBM, 전용 스케일업 네트워크를 결합하고, 같은 기계 균형 문제를 겪는다.[1]
| 분류 | 예시 | 강한 영역 | 약한 영역 |
|---|---|---|---|
| GPU | NVIDIA Blackwell·Rubin, AMD Instinct MI355X | 다양한 모델 구조에 대한 유연성, 커널과 프레임워크 생태계, 모든 클라우드에서의 가용성 | 고정되고 잘 알려진 작업에서의 와트당 최고 효율[1] |
| 텐서 프로세서 | Google TPU Ironwood | 컴파일러 중심 스택을 갖춘 대규모 동질 학습·서빙 설비 | 한 클라우드 밖에서의 가용성, 생태계의 폭[1] |
| 클라우드 사업자 ASIC | AWS Trainium, AWS Inferentia | 사업자 자체 클라우드 안에서의 작업 단위당 비용 | 이식성, 도구 성숙도[1] |
| 지연 특화 가속기 | Groq LPU, Cerebras 웨이퍼 스케일 | 가중치를 온칩 SRAM에 두어 토큰당 지연이 매우 낮음 | 장치당 모델 크기 한계, 메모리 단위당 자본 비용[1] |
| 재구성 및 데이터플로 장치 | FPGA, SambaNova, Tenstorrent | 특이한 데이터플로, 낮은 물량, 긴 배포 수명 | 프로그래밍 노력, 최고 밀도[1] |
| 고정 기능 ASIC | Etched | 아키텍처가 고정되는 한 토큰당 비용 | 모델 구조가 바뀌면 노후화[1] |
| CPU | 행렬 확장을 갖춘 서버 CPU | 소형 모델, 낮은 요청률, 전처리, 제어 흐름 | 대형 밀집 모델의 와트당 처리량[1] |
| 엣지 가속기 | Apple Neural Engine, Qualcomm NPU | 온디바이스 지연 시간, 개인정보 보호, 네트워크 의존 없음 | 모델 크기와 지속 처리량[1] |
표의 모든 비교에는 두 가지 주의가 필요하다. 첫째, 가중치를 SRAM에 담는 가속기는 지연 시간을 얻는 대신 장치당 용량을 포기하므로, 비교 결과가 모델 크기에 따라 완전히 달라진다. 200억 파라미터 모델에서 크게 빠른 설계가 4,000억 파라미터 모델에서는 훨씬 많은 장치를 요구할 수 있다. 둘째, 특정 모델 구조에 특화된 하드웨어에는 구조 위험이 있다. 전문가 혼합 라우팅과 긴 문맥 어텐션으로의 이동은 몇 년 사이에 최전선 모델의 메모리 접근 패턴을 바꾸었고, 이전 패턴에 고정된 하드웨어는 우위를 잃는다.[1]
일반 원칙은 다음과 같다. 작업을 더 정확히 알고 더 오래 고정될수록 특화 장치가 이기기 쉽고, 작업이 더 많이 바뀔 것으로 예상될수록 GPU의 범용성이 치를 값어치가 있다.[1]
12. 프로세서 선택
중요한 질문은 GPU가 일반적으로 더 나은지가 아니라, 특정 시스템이 특정 작업을 만족하는지다. 주요 질문은 다음과 같다.[1]
- 요구되는 요청 크기에서 계산이 병렬 작업을 충분히 드러내는가?
- 모델과 그 임시 상태가 메모리에 들어가는가?
- 성능이 연산, 메모리 대역폭, 통신, 지연 시간 중 무엇에 묶여 있는가?
- 필요한 연산과 수치 형식이 잘 지원되는가?
- 소프트웨어 스택이 이식성, 유지보수, 재현성 요구를 충족하는가?
- 시스템이 달성하는 종단 간 품질, 지연 시간, 처리량, 에너지, 비용은 얼마인가?[1]
추론 실행에서는 세 번째 질문이 보통 메모리 대역폭으로 귀결되며, 더 짧은 확인 경로가 있다. 토큰당 읽어야 할 바이트 수를 추정하고, 이를 장치의 메모리 대역폭으로 나누어 스텝 시간의 하한을 구하며, 이 하한을 지연 시간 목표와 비교하고, 남은 여유가 허용하는 배치 크기를 도출한다. 키-값 캐시까지 세었을 때 필요한 배치 크기가 메모리 용량을 넘으면, 연산 성능 수치와 무관하게 장치가 너무 작다.[1]
학습에서는 대응하는 질문이 있다. 모델 상태가 선택한 샤딩 방식에 들어가는지, 병렬화 전략의 통신이 사용 가능한 스케일업 도메인 안에 들어가는지, 그리고 결과적인 스텝 시간과 품질 도달 시간이 얼마인지를 묻는다.[1]
벤치마크는 배포 목표와 맞아야 한다. 학습은 정해진 품질 목표에 도달하는 시간이 필요하다. 대화형 추론 실행은 지정된 부하에서의 지연 시간 분포가 필요하다. 오프라인 추론 실행은 단위 시간당 완료한 작업량을 강조한다. 과학 응용은 수치 오차와 재현성을 우선할 수 있다. 같은 GPU도 목표가 달라지면 순위가 달라질 수 있다.[1]
각주·출처 40개
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48 ↩49 ↩50 ↩51 ↩52 ↩53 ↩54 ↩55 ↩56 ↩57 ↩58 ↩59 ↩60 ↩61 ↩62 ↩63 ↩64 ↩65 ↩66 ↩67 ↩68 ↩69 ↩70 ↩71 ↩72 ↩73 ↩74 ↩75 ↩76 ↩77 ↩78 ↩79 ↩80 ↩81 ↩82 ↩83 ↩84 ↩85 ↩86 ↩87 ↩88 ↩89 ↩90 ↩91 ↩92 ↩93 ↩94 ↩95 ↩96 ↩97 ↩98 ↩99 ↩100 ↩101 ↩102 ↩103 ↩104 ↩105 ↩106 ↩107 ↩108 ↩109 ↩110 ↩111 ↩112 ↩113 ↩114 ↩115 ↩116 ↩117 ↩118 ↩119 ↩120 ↩121 ↩122 ↩123 ↩124 ↩125 ↩126 ↩127 ↩128 ↩129 AI Wiki: Graphics processing unit (2026-08-01 수정본) · CC BY 4.0 · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 A Survey of General-Purpose Computation on Graphics Hardware · 확인 2026-10-11
- ↩1 ↩2 ↩3 The GPU Computing Era · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 NVIDIA H100 Tensor Core GPU Datasheet · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 AMD Instinct MI350X GPU (AI Wiki 인용) · 확인 2026-10-11
- ↩1 ↩2 ↩3 Intel Xe GPU Architecture (AI Wiki 인용) · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 NVIDIA Tesla V100 GPU Architecture · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 CUDA Programming Guide · 확인 2026-10-11
- ↩1 ↩2 ↩3 Debunking the 100X GPU vs. CPU Myth: An Evaluation of Throughput Computing on CPU and GPU (AI Wiki 인용) · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 NVIDIA A100 Tensor Core GPU Datasheet · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 NVIDIA H200 Tensor Core GPU · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 NVIDIA GB200 NVL72 · 확인 2026-10-11
- ↩1 ↩2 ↩3 TPU7x (Ironwood · 확인 2026-10-11
- ↩1 ↩2 ↩3 Inside the NVIDIA Vera Rubin Platform: Six New Chips, One AI Supercomputer · 확인 2026-10-11
- ↩1 Hardware implementation · 확인 2026-10-11
- ↩1 ↩2 Deep Learning Performance Guide: Matrix Multiplication · 확인 2026-10-11
- ↩1 ↩2 ↩3 Accelerating AI Training with NVIDIA TF32 Tensor Cores · 확인 2026-10-11
- ↩1 ↩2 In-Datacenter Performance Analysis of a Tensor Processing Unit · 확인 2026-10-11
- ↩1 ↩2 ↩3 Mixed Precision Training · 확인 2026-10-11
- ↩1 ↩2 ↩3 FP8 Formats for Deep Learning · 확인 2026-10-11
- ↩1 ↩2 ↩3 OCP Microscaling Formats (MX) Specification Version 1.0 · 확인 2026-10-11
- ↩1 ↩2 Introducing NVFP4 for Efficient and Accurate Low-Precision Inference · 확인 2026-10-11
- ↩1 ↩2 Accelerating Sparse Deep Neural Networks · 확인 2026-10-11
- ↩1 ↩2 NVIDIA HGX Platform · 확인 2026-10-11
- ↩1 ↩2 NVIDIA Blackwell Architecture · 확인 2026-10-11
- ↩1 NVIDIA Unveils the GeForce 256, the World's First GPU · 확인 2026-10-11
- ↩1 CUDA Refresher: Getting Started with CUDA · 확인 2026-10-11
- ↩1 ↩2 OpenCL 1.0 Released · 확인 2026-10-11
- ↩1 ImageNet Classification with Deep Convolutional Neural Networks · 확인 2026-10-11
- ↩1 ↩2 AAI 2026: AMD Launches AMD Instinct MI400 Series GPUs for Frontier AI, HPC · 확인 2026-10-11
- ↩1 ↩2 HIP Programming Model · 확인 2026-10-11
- ↩1 SYCL · 확인 2026-10-11
- ↩1 cuDNN Documentation · 확인 2026-10-11
- ↩1 ↩2 NVIDIA Announces Financial Results for Fourth Quarter and Fiscal 2026 · 확인 2026-10-11
- ↩1 ↩2 ↩3 MLCommons Releases New MLPerf Inference v6.0 Benchmark Results · 확인 2026-10-11
- ↩1 ↩2 Roofline: An Insightful Visual Performance Model for Multicore Architectures · 확인 2026-10-11
- ↩1 ↩2 Mastering LLM Techniques: Inference Optimization · 확인 2026-10-11
- ↩1 ↩2 Efficiently Scaling Transformer Inference · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 NVLink and NVLink Switch · 확인 2026-10-11
- ↩1 ↩2 Energy demand from AI (AI Wiki 인용) · 확인 2026-10-11