- GPU는 현대 머신러닝에서 핵심적인 역할을 하며, 고속 행렬곱 연산에 특화된 수많은 Streaming Multiprocessors(SMs) 와 HBM(고대역폭 메모리) 가 결합된 구조임
- GPU의 SM은 Tensor Core(행렬곱)와 CUDA Core(벡터 연산)로 나뉘며, 대규모 병렬 연산과 유연한 프로그래밍을 지원함
- GPU와 TPU는 내부 구조와 네트워크 구성 면에서 차이가 있으며, GPU는 범용성과 확장성이 높지만, 최적 성능 달성에는 더 많은 고려가 필요함
- 노드(Node) 내에서는 NVLink 및 NVSwitch로 GPUs 간 초고속 통신이 가능하고, 노드 간에는 InfiniBand 등의 네트워크로 연결되어 대규모 분산 학습에 대응함
- GPU에서의 집합 연산(Collectives) (예: AllReduce, AllGather 등)은 하드웨어 구조와 네트워크 계층에 따라 성능이 크게 달라지며, 이론상 밴드위스보다 실질적으로 낮은 경향이 있음
GPU란 무엇인가?
- 최신 ML(머신러닝) GPU(예: H100, B200)는 행렬곱 연산에 특화된 Streaming Multiprocessor(SM) 수십~수백 개와 빠른 HBM 메모리가 결합된 구성임
- 각 SM에는 Tensor Core(행렬곱), Warp Scheduler(벡터 연산), SMEM(온칩 캐시)이 있음
- TPU와 달리 GPU는 100개 이상의 SM을 통해 더 유연하고 대규모 병렬 처리가 가능함
SM 세부 구조
- SM은 4개의 서브파티션으로 나눠지고, 각 서브파티션에는 각기 Tensor Core, CUDA Core(벡터 연산), Warp Scheduler, 레지스터 파일 등이 존재함
- CUDA Core는 벡터 산술 연산(SIMD/SIMT) 담당, Tensor Core는 행렬곱에 특화
- Tensor Core FLOPs가 압도적으로 크며, 낮은 정밀도의 연산에서는 처리 속도가 더욱 빨라짐
- 최신 GPU(예: B200)는 대형 TMEM이 추가되어 대용량 Tensor Core 입력 지원
CUDA Core의 유연성
- GPU의 CUDA Core는 SIMT(Single Instruction Multiple Threads) 모델을 사용하여, 한 명령어를 여러 쓰레드에 병렬 실행함
- 각 쓰레드는 독립된 명령 포인터(프로그램 카운터)를 가져 조건 분기 등 유연성 제공하지만, 워프 내 명령 분기(divergence)가 많으면 성능 저하 발생
- 각 CUDA Core는 개별 상태와 메모리 접근이 자유로움 (TPU는 연속된 메모리만 처리 가능)
스케줄링/병렬성
- SM은 다수 워프(최대 64개)를 스케줄링해 동시 실행하며, 각 워프 스케줄러는 한 번에 하나의 프로그램 실행
- 이 구조 덕분에 GPU는 상당히 유연하면서도 높은 동시 처리가 가능함
GPU 메모리 구조
- GPU는 HBM이 가장 크며, 그 외에도 L2/L1(SMEM)/TMEM/레지스터 등 메모리 계층 구조를 가짐
최신 GPU 사양 요약
- SM(Streaming Multiprocessor) 개수, 클럭, 메모리, FLOPs, 대역폭(BW) 등이 모델마다 상이함
- 메모리 용량(HBM) 및 대역폭, FLOPs(흑체/정수/저정밀) 등은 세대가 거듭될수록 증가함
- 표(생략)에서 주요 특징: Blackwell(B200)은 HBM 192GB, HBM BW 8.0TB/s, FP8 FLOPs 4.5e15 등
- 각 세대별로 레지스터 및 온칩 캐시(SMEM) 용량, TMEM 추가 등 하드웨어 발전이 뚜렷함
GPU/TPU 비교
- GPU는 범용적이면서도 많은 소형 SM(병렬 유닛)으로 모듈화되어 있으며, 하드웨어 제어가 많아 이해/최적화가 어려움
- TPU는 소수 대형 Tensor Core 및 많은 벡터 ALU(VPU)로 구성, 단일 스레드 제어 방식으로 하드웨어 단순/비용 절감 가능
- 이로 인해 TPU는 컴파일러 최적화가 필수이며, GPU는 여러 커널을 독립 실행 가능해 사용 용이성 높음
- 성능/가격 측면에서 최근 H200 GPU가 TPU v5p보다 FLOPs/s 2배, HBM 1.5배, 가격은 2.5배 정도임
- TPU는 VMEM(온칩 캐시)이 많고 빠르며, LLM 모델 추론 등에서 큰 이점 발생 가능
GPU 하드웨어 퀴즈 Q&A 요점
- H100의 fp32 CUDA 코어는 총 16,896개(132 SM x 4 x 32), B200은 18,944개
- 벡터 연산 FLOPs는 H100 기준 최대 33.5TFLOPs/s 수준, Tensor Core의 행렬곱 FLOPs(990TFLOPs/s)에 비해 30배 낮음
- H100의 L1/SMEM, 레지스터 합산 용량은 66MB, TPU VMEM은 120MB
- Bandwidth(대역폭)와 FLOPs의 비율(이론상 연산 집약도)은 H100/B200 모두 280-300 정도로 TPU와 유사
GPU 네트워킹(통신 구조)
노드/클러스터 구조
- GPU 노드는 대개 8개 GPU로 묶여 NVLink(초고속) 및 NVSwitch(스위치)로 Full Bandwidth 직접 연결됨
- 노드 간에는 InfiniBand(Ethernet 등)를 사용해 스케일 아웃 가능
- 최신(Blackwell) GPU는 Node 72개까지 확장 가능한 구조
네트워크 계층별 특징
- 노드 내부(NVLink 영역): 각 GPU당 egress 450GB/s(H100), 900GB/s(B200), NVSwitch 당 최대 1.6TB/s
- 노드 상위(InfiniBand Leaf/Spine): Leaf Switch(8개)~Spine Switch(16개) 구조, GPU~GPU간 이론상 400GB/s Full Bandwidth 유지
- SuperPod와 같은 대형 아키텍처에서는 1024개 GPU(128노드), GB200(72GPU Node)는 9배 증폭된 대역폭(3600GB/s)
네트워크 성능 요점
- 이론상 네트워크 구조(Full Fat Tree)는 노드~노드 간에도 최대 대역폭을 제공하도록 설계
- 하드웨어 포트 제약 등으로 1024~4096GPU로 확장 시 Spine/Core Switch를 더 추가하는 계층화 방식 사용
- Node 내 밴드위스(450GB/s) → Node 간 밴드위스(400GB/s) 로 전환 = 집합 연산에서 성능 차이
집합 연산(Collectives) 구조
- AllGather, AllReduce(합산), AllToAll(분산) 등 고수준 집합 연산 지원
- Node 내에서는 NVLink로 직접 연결되어 최적 성능 가능(이론상 B/W), Node~Node간은 InfiniBand 경유
- NVIDIA의 NCCL, NVSHMEM 라이브러리 활용
집합 연산 성능 분석
- AllGather/ReduceScatter: B/W(450GB/s H100 기준)로 링(Ring) 방식 구현, 작은 메시지일 때는 트리(Tree) 방식도 가능
- AllToAll: 각 GPU가 직접 상대 GPU에 전송, B/W에서 N으로 나누는 방식이어서 Node 내에서 이론상 2배 빠름
- 실제 측정 결과 AllReduce에서 370GB/s 수준으로, 하드웨어 최대치에는 미치지 못함
- TPU 대비 대용량(수십 MB ~ GB)에서야 하드웨어 Peak Bandwidth에 근접
종합 요약 및 인사이트
- GPU는 범용성, 확장성이 강점이지만, 하드웨어/네트워크 구조에 따라 성능 최적화 난이도와 관찰 가능성이 TPU보다 높음
- 네트워킹(Intra-Node/NVLink/InfiniBand/Leaf/Spine 등)이 대규모 학습 성능의 핵심이고, 실질 밴드위스와 이론 밴드위스 차이 주의 필요
- 집합 연산 및 네트워크 구조에 대한 이해가 초대형 분산 모델 학습/서빙에서 필수 요소임
- 실질적인 벤치마크와 하드웨어 세부 구조 이해를 바탕으로 성능 병목 구간/최적 조건을 파악하는 프로세스가 요구됨