GPU 성능 튜닝: LLM 훈련 및 추론을 위한 처리량 극대화
2025년 12월 8일 업데이트
2025년 12월 업데이트: FP8 훈련이 H100/H200 및 Blackwell에서 프로덕션 준비 완료되어 FP16 대비 동등한 정확도로 2배의 처리량을 제공합니다. Hopper 아키텍처에 최적화된 Flash Attention 3가 1.5-2배 속도 향상을 달성합니다. vLLM 0.6+ 및 TensorRT-LLM이 연속 배칭과 추측적 디코딩을 통해 3-5배의 추론 처리량 향상을 제공합니다. Triton 백엔드를 사용한 torch.compile이 PyTorch 2.4+ 기본값이 되었습니다. NVIDIA NeMo Framework 2.0이 엔드투엔드 최적화 훈련 파이프라인을 제공합니다.
완벽하게 구성된 8-GPU 노드는 이론적 FLOPS의 98%를 달성하는 반면, 최적화되지 않은 동일한 시스템은 43%에서 고전하며 연간 $380,000의 활용되지 않는 하드웨어 비용을 낭비합니다.¹ MLPerf 벤치마크에 따르면 최고 성능자는 중간 수준 제출과 비교하여 동일한 H100 GPU에서 2.3배 더 많은 처리량을 추출하며, 이 차이는 하드웨어 이점이 아닌 전적으로 소프트웨어 최적화에 기인합니다.² 이론적 성능과 실제 달성 성능 사이의 격차는 모든 AI 팀을 괴롭히며, 단일 매개변수의 잘못된 구성이 훈련 시간을 두 배로 늘리거나 추론 비용을 세 배로 만들 수 있습니다. GPU 성능 튜닝을 마스터한 조직은 기본 구성을 사용하는 경쟁사보다 모델 훈련을 60% 더 빠르게 완료하고 토큰당 40% 더 낮은 비용으로 추론 요청을 처리합니다.
NVIDIA의 최적화 가이드는 다양한 프레임워크, 커널 및 구성에 걸쳐 1,200페이지에 달하지만, 대부분의 팀은 복잡성과 시간 제약으로 인해 사용 가능한 최적화의 20% 미만만 구현합니다.³ 일반적인 LLM 훈련 실행에는 메모리 할당, 커널 스케줄링, 통신 패턴 및 수치 정밀도에 영향을 미치는 300개 이상의 조정 가능한 매개변수가 포함됩니다. 각 매개변수는 비선형 방식으로 다른 매개변수와 상호작용합니다: 배치 크기를 늘리면 GPU 활용률이 향상되지만 메모리 부족 오류가 발생하거나 수렴이 저하될 수 있습니다. 최적화 공간이 너무 광대해서 철저한 검색이 불가능해지며, 성능 향상과 엔지니어링 노력의 균형을 맞추는 체계적인 접근 방식이 필요합니다.
메모리 대역폭 병목 현상이 LLM 성능을 제한합니다
현대 LLM은 컴퓨팅 한계보다 훨씬 먼저 메모리 벽에 부딪힙니다. H100의 3.35TB/s 메모리 대역폭은 1,979 TFLOPS의 컴퓨팅을 지원하여 591:1의 컴퓨팅 대 메모리 비율을 만듭니다.⁴ LLM 추론은 각 토큰 생성을 위해 모델 가중치를 반복적으로 읽어 메모리 대역폭이 제한 요소가 됩니다. FP16 정밀도의 700억 매개변수 모델은 가중치만으로 140GB가 필요하며, 활성화 및 KV 캐시를 위한 최소한의 공간만 남기고 전체 H100 메모리를 소비합니다.
메모리 최적화는 액세스 패턴을 이해하는 것에서 시작됩니다. 순차 읽기는 이론적 대역폭의 95%를 달성하는 반면 무작위 액세스는 15%로 떨어집니다. LLM은 혼합 패턴을 보입니다: 가중치 읽기는 순차적으로 유지되지만 어텐션 메커니즘은 키-값 캐시에 대한 불규칙한 액세스를 생성합니다. 메모리 레이아웃 최적화는 처리량을 극적으로 향상시킵니다. 행 우선 대 열 우선 저장은 특정 연산에 대해 메모리 액세스 효율성을 4배 변경합니다. 128바이트 경계에 맞게 텐서를 패딩하면 대역폭 활용률이 72%에서 91%로 증가합니다.⁵
Flash Attention은 연산을 융합하고 HBM 액세스를 줄여 메모리 효율성을 혁신합니다. 표준 어텐션 메커니즘은 중간 행렬을 HBM에 쓰며 임시 데이터에 대역폭을 소비합니다. Flash Attention은 SRAM 타일에서 어텐션을 계산하여 메모리 트래픽을 10-20배 줄입니다.⁶ 이 최적화는 4배 더 긴 컨텍스트 길이와 GPT-3와 같은 모델에 대해 2.4배 더 빠른 훈련을 가능하게 합니다. 구현에는 GPU 아키텍처에 기반한 신중한 타일 크기 선택이 필요합니다: H100의 최적 타일 크기는 증가된 SRAM 용량으로 인해 A100과 다릅니다.
배치 크기 최적화는 처리량과 수렴의 균형을 맞춥니다
더 큰 배치는 GPU 활용률을 향상시키지만 모델 수렴에 예측할 수 없는 영향을 미칩니다. 각 GPU는 Tensor Core 차원에 의해 결정된 특정 배치 크기 배수에서 가장 효율적으로 실행됩니다. H100 Tensor Core는 16x16 행렬 타일에서 FP16 연산을 처리하므로 16으로 나누어지는 배치 크기가 최적입니다.⁷ 배치 크기 127은 61%의 활용률만 달성하는 반면 배치 크기 128은 94%에 도달합니다. 이 극적인 차이는 하드웨어 스케줄링이 2의 거듭제곱 차원과 완벽하게 정렬되기 때문입니다.
그래디언트 누적은 메모리 제약 없이 큰 유효 배치 크기를 가능하게 합니다. 배치 크기 2048로 훈련하면 메모리를 초과할 수 있지만, 배치 크기 64의 32 단계에 걸쳐 그래디언트를 누적하면 동등한 결과를 얻을 수 있습니다. 이 기술은 메모리 한계 내에서 맞추면서 수학적 동등성을 유지합니다. 그래디언트 동기화가 덜 자주 발생하므로 통신 오버헤드가 약간 증가합니다. 스마트 구현은 그래디언트 계산과 통신을 겹쳐 지연 시간을 완전히 숨깁니다.
동적 배치 크기 조정은 LLM 훈련에서 다양한 시퀀스 길이에 적응합니다. 고정 배치 크기는 시퀀스 길이가 다를 때 패딩 토큰에 대한 계산을 낭비합니다. 동적 배칭은 시퀀스를 효율적으로 패킹하여 처리량을 20-35% 향상시킵니다.⁸ 메모리 할당이 예측 불가능해지면서 구현 복잡성이 증가합니다. 풀링을 사용한 사전 할당 전략은 성능을 유지하면서 단편화를 방지합니다.
혼합 정밀도 훈련은 정확도 손실 없이 가속화합니다
FP16 훈련은 신중한 수치 관리를 통해 모델 품질을 유지하면서 FP32에 비해 처리량을 두 배로 늘립니다. Tensor Core는 H100 GPU에서 FP32로 312 TFLOPS를 달성하지만 FP16으로는 989 TFLOPS를 달성합니다.⁹ 3.2배의 컴퓨팅 이점은 2배의 메모리 절감과 결합되어 더 큰 모델이나 배치 크기를 가능하게 합니다. Automatic Mixed Precision (AMP) 프레임워크는 정밀도 관리를 투명하게 처리하지만, 내부를 이해하면 더 나은 최적화가 가능합니다.
손실 스케일링은 FP16 훈련에서 그래디언트 언더플로우를 방지합니다. 그래디언트는 종종 FP16의 최소 표현 가능 값(5.96e-8) 아래로 떨어져 0으로 나타나고 학습이 중단됩니다.¹⁰ 손실에 2^16을 곱하면 그래디언트가 FP16의 표현 가능 범위로 이동합니다. 동적 손실 스케일링은 그래디언트 통계에 따라 승수를 조정하여 언더플로우와 오버플로우를 모두 방지합니다. 최적의 스케일링 요소는 모델 아키텍처와 데이터셋에 따라 다릅니다.
FP32의 마스터 가중치 복사본은 FP16으로 계산하면서 업데이트 정밀도를 보존합니다. 큰 가중치에 대한 작은 그래디언트 업데이트는 FP16 산술에서 사라집니다. FP32로 가중치를 유지하면 업데이트가 정확하게 누적됩니다. 오버헤드는 가중치에 대해 50%의 메모리를 추가하지만 계산 비용은 무시할 수 있습니다. 고급 구현은 확률적 반올림을 사용하여 적절한 노이즈를 주입하여 경우에 따라 수렴을 개선합니다.
커널 융합은 메모리 병목 현상을 제거합니다
개별적으로 실행되는 GPU 커널은 중간 결과에 대한 메모리 트래픽을 생성합니다. 간단한 레이어 정규화에는 평균, 분산, 뺄셈, 나눗셈 및 스케일링을 위한 별도의 커널이 포함됩니다. 각 커널은 HBM에서 읽고 쓰며 필요한 대역폭의 5배를 소비합니다. 융합된 커널은 레지스터와 공유 메모리에서 전체 연산을 계산하여 입력과 출력에 대해서만 HBM을 터치합니다.
커스텀 커널은 특정 모델 아키텍처를 최적화합니다. 표준 GEMM 커널은 일반 행렬 곱셈을 처리하지만 트랜스포머 블록에서의 최적화 기회를 놓칩니다. 어텐션, 피드포워드 네트워크 및 레이어 정규화를 위한 특수 커널은 처리량을 30-50% 향상시킵니다.¹¹ 개발에는 CUDA 전문 지식과 아키텍처별 튜닝이 필요합니다. Apex 및 TransformerEngine과 같은 라이브러리는 일반적인 연산에 대해 최적화된 커널을 제공합니다.
컴파일 프레임워크는 그래프 최적화를 통해 커널 융합을 자동화합니다. PyTorch의 torch.compile은 계산 그래프를 분석하고 융합된 커널을 자동으로 생성합니다.¹² XLA도 마찬가지로 TensorFlow 및 JAX 모델을 최적화합니다. 컴파일 오버헤드는 긴 훈련 실행에 걸쳐 상각됩니다. 초기 컴파일은 몇 분이 걸리지만 후속 반복은 20-40% 더 빠르게 실행됩니다. 프로파일 기반 최적화는 관찰된 입력 형상에 특화하여 성능을 더욱 향상시킵니다.
분산 훈련을 위한 통신 최적화
다중 GPU 훈련에는 통신 패턴의 신중한 최적화가 필요합니다. NCCL(NVIDIA Collective Communications Library)은 최적화된 프리미티브를 제공하지만 적절한 구성이 필요합니다. 링 allreduce는 이론적으로 대역폭 최적 통신을 달성하지만, 실제 구현은 동기화 오버헤드로 인해 어려움을 겪습니다. 트리 알고리즘은 작은 메시지에 대한 지연 시간을 줄이는 반면 링 알고리즘은 큰 전송에 대한 처리량을 최대화합니다.
네트워크 토폴로지 인식은 통신 효율성을 극적으로 향상시킵니다. NVLink를 통해 연결된 GPU는 900GB/s 양방향 대역폭을 달성하는 반면 PCIe는 64GB/s로 제한됩니다.¹³ 자주 통신하는 GPU를 NVLink로 연결된 노드에 함께 배치하는 배치 전략은 통신 시간을 5배 줄입니다. 계층적 allreduce는 InfiniBand를 통한 노드 간 통신 전에 NVLink를 통해 로컬 리덕션을 수행합니다.
그래디언트 압축은 최소한의 정확도 비용으로 통신량을 줄입니다. top-k 그래디언트만 전송하거나 INT8로 양자화하면 트래픽이 100-1000배 감소합니다.¹⁴ 오류 피드백 메커니즘은 미래 반복을 위해 잘린 그래디언트를 누적합니다. 압축률은 모델 희소성과 그래디언트 분포에 따라 다릅니다. 적응형 체계는 훈련 단계에 따라 압축을 조정하여 중요한 수렴 기간 동안 압축을 덜 사용합니다.
Introl의 성능 엔지니어링 팀은 글로벌 커버리지 영역 전역에서 10,000개 이상의 GPU 배포를 최적화하여 LLM 워크로드에 대해 이론적 성능의 85-95%를 일관되게 달성했습니다.¹⁵ 당사의 최적화 플레이북은 배포 시간을 40% 단축하면서 첫날부터 최대 하드웨어 활용률을 보장합니다.
추론 전용 최적화
추론 최적화는 훈련 최적화와 근본적으로 다릅니다. 사용자 대면 애플리케이션의 경우 처리량보다 지연 시간이 더 중요합니다. 컴퓨팅이 아닌 메모리 대역폭이 병목 현상이 됩니다. 서빙 비용이 총 비용을 지배하므로 효율성이 중요합니다.
키-값 캐시 관리는 추론 효율성을 결정합니다. 각 토큰 생성은 전체 KV 캐시를 읽으며 시퀀스 길이에 비례하여 메모리 대역폭을 소비합니다. PagedAttention은 KV 캐시 메모리를 가상화하여 낭비를 60%에서 5% 미만으로 줄입니다.¹⁶ 이 기술은 긴 시퀀스에 대해 4배 높은 처리량을 가능하게 합니다. 구현에는 신중한 메모리 풀 관리와 요청 스케줄링이 필요합니다.
양자화는 모델 크기와 대역폭 요구 사항을 줄입니다. INT8 양자화는 대부분의 모델에서 FP16 정확도의 99%를 유지하면서 메모리 사용량을 절반으로 줄입니다.¹⁷ INT4는 97%의 정확도 유지로 4배 압축을 달성합니다. 양자화 인식 훈련은 감소된 정밀도에 강건한 모델을 생성합니다. 훈련 후 양자화는 많은 모델에서 작동하지만 캘리브레이션 데이터셋 선택이 필요합니다.
연속 배칭은 용량이 가용해지는 즉시 새 요청을 시작하여 추론 처리량을 최대화합니다. 정적 배칭은 새 요청을 시작하기 전에 모든 요청이 완료될 때까지 기다려 짧은 시퀀스에서 리소스를 낭비합니다. 연속 배칭은 가변 길이 요청에 대해 처리량을 2.5배 향상시킵니다.¹⁸ 동적 메모리 관리 및 스케줄링 요구 사항으로 인해 구현 복잡성이 증가합니다.
실제 최적화 결과
사례 연구 1: 금융 서비스 LLM 훈련 - 모델: 700억 매개변수 커스텀 아키텍처 - 하드웨어: 64x H100 GPU - 기준선: GPU당 847 토큰/초 - 최적화: Flash Attention, 혼합 정밀도, 그래디언트 누적 - 결과: GPU당 1,923 토큰/초 (2.27배 향상) - 훈련 시간 18일에서 8일로 단축 - 비용 절감: 훈련 실행당 $240,000
사례 연구 2: 헬스케어 추론 시스템 - 모델: 130억 매개변수 의료 어시스턴트 - 하드웨어: 8x A100 GPU - 기준선: 토큰당 142ms 지연 시간, 820 토큰/초 처리량 - 최적화: PagedAttention, INT8 양자화, 연속 배칭 - 결과: 47ms 지연 시간, 2,140 토큰/초 (2.6배 처리량) - 백만 토큰당 비용: $0.73 → $0.28
사례 연구 3: 이커머스 추천 엔진 - 모델: 1,750억 매개변수 MoE 모델 - 하드웨어: 128x H100 GPU - 기준선: 43% MFU (Model FLOPS Utilization) - 최적화: Expert 병렬 처리, 커널 융합, 토폴로지 인식 배치 - 결과: 71% MFU (1.65배 향상) - 운영
[번역을 위해 콘텐츠 잘림]