🧠 Accelerator

혼합 정밀도 하드웨어 (Mixed Precision Hardware)

개요

혼합 정밀도 하드웨어는 단일 연산에서 다양한 비트 폭의 부동소수점 형식을 혼합 사용하여 메모리 효율성과 연산 처리량을 극대화하는 기술입니다. FP32, FP16, BF16, FP8, FP4 등 다양한 정밀도 형식을 하드웨어적으로 지원하며, AI 훈련 및 추론의 성능을 2-8배 향상시킵니다.

최근 대규모 언어 모델(LLM)의 등장과 함께 메모리 대역폭과 연산 용량에 대한 수요가 급증하면서, 혼합 정밀도 기술은 더 이상 선택 사항이 아닌 필수가 되었습니다. NVIDIA, AMD, 구글 등 주요 벤더들은 자체 텐서 코어/매트릭스 유닛을 통해 FP8, FP4와 같은 초저정밀도 형식까지 지원하는 하드웨어를 개발하고 있습니다.

핵심 개념

혼합 정밀도 형식과 벤더 지원

부동소수점 형식 비교

형식 비트 수 지수 가수 동적 범위 사용 사례
FP32 32 8 23 ~38자리 기존 표준, 정밀도 필요
FP16 16 5 10 ~3자리 훈련, 추론
BF16 16 8 7 ~38자리 훈련 (Google TPU)
FP8 (E4M3) 8 4 3 ~2자리 추론, 훈련
FP8 (E5M2) 8 5 2 ~4자리 훈련
FP4 4 2 1 ~1자리 극한 추론 최적화

혼합 정밀도 동작 원리

혼합 정밀도는 다음과 같은 원리로 동작합니다:

  1. 입력 정밀도 저하: 가중치와 활성값을 FP16/BF16/FP8로 저장
  2. 누적 정밀도 유지: 곱셈 결과를 FP32로 누적하여 수치 안정성 확보
  3. 출력 정밀도 조정: 최종 결과를 다시 저정밀도로 변환

이를 통해 메모리 사용량은 줄이면서 수치 정확도는 유지할 수 있습니다.

실제 하드웨어는 단순히 비트 수만 줄이는 것이 아니라, 텐서 단위 또는 블록 단위 스케일(scale)을 함께 관리합니다. FP8/FP4처럼 표현 범위가 더 좁은 형식은 스케일링 정책이 성능과 정확도에 직접 영향을 주므로, 하드웨어의 정밀도 변환기와 소프트웨어 런타임의 amax 추적이 함께 동작해야 합니다.

하드웨어 구현 구조

혼합 정밀도 하드웨어는 일반적으로 다음 요소로 구성됩니다:

  • 전용 데이터 경로: 각 정밀도 형식에 최적화된 연산 유닛
  • 변환 로직: 정밀도 간 자동 변환 회로
  • 누적 레지스터: FP32 크기의 누적 레지스터
  • 제어 유닛: 동적 정밀도 선택 및 스케줄링

스케일링과 포맷 선택

  • FP16: 폭넓게 지원되지만 지수 비트가 작아서 큰 gradient나 activation에서 overflow/underflow 관리가 필요합니다.
  • BF16: FP32와 같은 8비트 지수를 유지해 훈련 안정성이 좋고, TPU와 GPU 모두에서 훈련 기본 형식으로 널리 쓰입니다.
  • FP8: E4M3와 E5M2를 나눠 쓰며, 보통 forward는 E4M3, gradient처럼 범위가 더 필요한 구간은 E5M2를 선택합니다.
  • FP4: 추론 또는 실험적 훈련 최적화에 가깝고, block scaling이나 stochastic rounding 같은 보조 기법 의존도가 높습니다.

비교/분석

벤더별 혼합 정밀도 지원

벤더 하드웨어 지원 정밀도 특징
NVIDIA Tensor Core (Volta+) FP16, BF16, FP8, FP4 가장 광범위한 형식 지원
AMD Matrix Core (CDNA3) FP16, BF16, FP8, INT8 MI300 세대에서 FP8과 sparsity 확장
Google TPU Matrix Unit BF16, FP32 누산, INT8 BF16 중심 훈련 경로와 XLA 자동 캐스팅
Intel AMX (Advanced Matrix) BF16, FP16, INT8 CPU 통합 가속기, 메모리 이동 비용 절감

정밀도별 성능 비교 (상대적)

정밀도 메모리 효율 연산 효율 정밀도 권장 사용
FP32 1x 1x 높음 기존 호환
FP16/BF16 2x 2-4x 중간 훈련 주력
FP8 4x 4-8x 낮음 훈련/추론
FP4 8x 8-16x 매우 낮음 추론 전용

동작 원리

텐서 코어 연산 흐름

  1. 메모리 로드: 가중치와 활성값을 저정밀도로 로드
  2. 행렬 곱셈: 저정밀도 곱셈 연산 수행
  3. 누적: 결과를 FP32로 누적
  4. 정규화/활성화: 필요에 따라 정규화 및 활성화 함수 적용
  5. 출력 저장: 최종 결과를 지정된 정밀도로 저장

자동 혼합 정밀도 (AMP)

소프트웨어 수준에서 자동으로 정밀도를 관리하는 기술:

  • Loss Scaling: FP16 훈련 시 기울기 언더플로우 방지
  • Dynamic Loss Scaling: 학습 과정에서 스케일 팩터 동적 조정
  • 자동 캐스팅 규칙: Softmax, reduction, normalization처럼 FP32가 필요한 연산 식별

AMP는 하드웨어 기능을 그대로 노출하는 것이 아니라, 연산 종류별로 안전한 기본 정밀도를 자동 선택하는 계층이다. 예를 들어 GEMM/Conv는 FP16, BF16, FP8 경로를 우선 사용하고, 누산이나 통계 계산은 FP32에 남겨 수치 안정성을 확보한다.

훈련과 추론의 선택 기준

구간 주로 쓰는 형식 이유
Forward activation BF16, FP16, FP8 메모리 대역폭과 처리량 이득이 큼
Weight 저장 BF16, FP8, FP4 모델 크기 축소와 캐시 적중률 개선
Gradient/optimizer state FP32, BF16 작은 오차 누적에 민감
Accumulation FP32 장기 누산 안정성 확보
Inference serving FP8, FP4, INT8 지연 시간과 비용 최적화

장단점

장점

  • 메모리 절약: FP32 대비 2-8배 메모리 사용량 감소
  • 처리량 향상: 같은 하드웨어에서 2-8배 더 많은 연산 처리
  • 전력 효율: 단위 연산당 전력 소비 감소
  • 배치 사이즈 확대: 더 큰 배치로 학습 가능
  • 모델 크기 확대: 제한된 메모리에서 더 큰 모델 학습 가능

단점

  • 정밀도 손실: 저정밀도로 인한 수치 오차 발생
  • 구현 복잡도: 정밀도 관리 로직 추가 필요
  • 호환성 문제: 기존 코드 수정 필요
  • 하드웨어 의존성: 최신 하드웨어에서만 완전 지원

관련 기술

하드웨어 및 런타임

  • Tensor Core / Matrix Core / MXU: 혼합 정밀도 GEMM을 실행하는 핵심 행렬 유닛
  • Transformer Engine: FP8/FP4 사용 시 스케일링, amax 추적, 캐스팅 정책을 관리하는 NVIDIA 소프트웨어 계층
  • ROCm / hipBLASLt: AMD Matrix Core의 저정밀도 연산 경로를 노출하는 소프트웨어 스택
  • XLA 자동 캐스팅: TPU에서 BF16 중심 혼합 정밀도 경로를 자동 삽입
  • 양자화 런타임: FP8/FP4와 INT8/INT4를 함께 운용하며 추론 비용을 더 낮추는 계층

참고 문헌

  • Micikevicius et al., "Mixed Precision Training", ICLR 2018
  • NVIDIA, "Training with Mixed Precision", NVIDIA Documentation
  • NVIDIA, "Transformer Engine FP8/FP4 Primer"
  • AMD, "AMD Instinct MI300 Series Accelerators"
  • Google, "BFloat16: The secret to high performance on Cloud TPUs", Google Cloud Blog
  • Google Cloud TPU Documentation, "Improve your model's performance with bfloat16"
  • IEEE 754-2008, Standard for Floating-Point Arithmetic
  • OCP, "MX Format Specification", Open Compute Project

관련 문서

핵심 정리

혼합 정밀도 하드웨어는 다양한 비트 폭의 부동소수점 형식을 혼합 사용하여 메모리 효율성과 연산 처리량을 극대화하는 기술입니다. FP16, BF16, FP8, FP4 등의 형식을 하드웨어적으로 지원하며, AI 훈련 및 추론에서 2-8배의 성능 향상을 달성합니다. NVIDIA Tensor Core, AMD Matrix Core, Google TPU 등 주요 벤더들이 이를 지원하며, 자동 혼합 정밀도(AMP) 같은 소프트웨어 기술과 결합하여 광범위하게 활용되고 있습니다. 앞으로는 더 낮은 정밀도(FP2, Binary) 연구와 하드웨어-소프트웨어 공동 최적화가 더 중요해질 것으로 보입니다.