머신러닝 정밀도 선택: 학습은 높게, 서빙은 낮게!

by DD
5개월 전
조회수 0

머신러닝 모델 학습 및 서빙 시 수치 정밀도(Numerical Precision) 선택은 추론 속도, 메모리 사용량, 정확도에 직접적인 영향을 미침

FP32는 학습 표준, FP16은 GPU 추론 가속, BF16은 넓은 표현 범위, INT8은 엣지 디바이스에 최적화됨

Mixed Precision Training (AMP)은 학습 시 여러 정밀도를 혼합 사용하여 성능과 안정성을 동시에 확보하는 표준 기법으로 자리 잡음

최신 GPU 및 CPU는 BF16을 광범위하게 지원하며, 하드웨어 가속 기술(Hardware Acceleration)을 통해 성능 향상 가능

'Train High, Infer Low' 전략을 기반으로 각 단계별 정확도를 측정하고 비즈니스 요구사항에 맞는 최적점을 찾는 것이 중요함

머신러닝 정밀도별 특성과 최적 활용 방안

머신러닝 모델의 수치 정밀도(Numerical Precision)는 추론 속도, 메모리 사용량, 정확도 간의 트레이드오프를 결정하는 핵심 요소임.

FP32 (Float32): 32비트 부동소수점으로, 넓은 표현 범위(±3.4×10³⁸)와 약 7~8자리 정밀도를 제공하여 모델 학습(Model Training) 및 디버깅에 표준으로 사용됨.

FP16 (Float16): 16비트 부동소수점으로, FP32 대비 메모리 50% 절감 및 속도 2배 향상이 가능하나, 표현 범위가 ±65,504로 좁아 오버플로우(Overflow) 위험이 존재함. 주로 GPU 추론 가속에 활용됨.

BF16 (BFloat16): FP32와 동일한 지수 비트(8비트)를 사용하여 표현 범위는 유지하면서 가수 비트(7비트)를 줄여 정밀도를 낮춘 16비트 부동소수점임. 대규모 언어 모델(LLM) 학습 및 추론에 유리하며, 특히 최신 GPU 및 TPU에서 성능 이점을 보임.

INT8: 8비트 정수형으로, 메모리 사용량을 FP32의 1/4 수준으로 줄이고 추론 속도를 최대 4배까지 높일 수 있음. 모바일 및 엣지 디바이스 배포에 필수적이나, 1~5%의 정확도 손실(Accuracy Loss)이 발생할 수 있어 양자화 작업이 필요함.

Mixed Precision Training (AMP)의 작동 원리 및 이점

Mixed Precision Training (AMP)은 자동 혼합 정밀도(Automatic Mixed Precision) 기법을 사용하여 학습 과정에서 FP16, BF16, FP32 등 여러 정밀도를 동적으로 혼합 적용함.

작동 방식: 연산 집약적인 부분(Matmul, Conv)은 FP16/BF16으로 빠르게 처리하고, 수치 안정성이 중요한 부분(Softmax, LayerNorm, Loss 계산)은 FP32를 유지하여 계산 속도와 수치 안정성(Numerical Stability)을 동시에 확보함.

이점: 순수 FP32 학습 대비 메모리 사용량을 최대 50% 절감하고 학습 속도를 향상시키면서도, 정확도 손실을 최소화함. 이는 대규모 모델 학습 시 GPU 메모리 제약을 극복하고 학습 시간을 단축하는 데 결정적인 역할을 함.

구현: PyTorch의 `torch.autocast`나 TensorFlow의 `tf.keras.mixed_precision` API를 통해 간편하게 적용 가능하며, 하드웨어 가속(Hardware Acceleration)을 최대한 활용함.

하드웨어별 수치 정밀도 지원 현황 및 성능 영향

머신러닝 워크로드의 성능은 하드웨어의 수치 정밀도 지원 여부에 크게 좌우됨.

NVIDIA GPU: Ampere 아키텍처 이상 GPU는 FP32, FP16, BF16, INT8을 모두 지원하며, 특히 BF16 및 INT8 연산에서 높은 성능을 제공함. Turing 아키텍처는 BF16 지원이 제한적임.

Google TPU: BF16을 네이티브로 지원하며, LLM 학습 및 추론에 최적화되어 있음.

CPU: Intel의 4세대 Xeon Sapphire Rapids (2023+) 및 AMD EPYC Genoa (2022+) 등 최신 CPU는 AVX-512 BF16 또는 AMX와 같은 기술을 통해 BF16 연산 가속을 지원함. Apple Silicon (M 시리즈) 역시 BF16을 지원함.

성능 향상: BF16 지원 CPU는 이전 세대 대비 1.5~4배의 성능 향상을 기대할 수 있으며, CPU에서도 AMP(AMP)를 활용하여 효율적인 연산이 가능함.

정밀도 선택 전략: 'Train High, Infer Low'의 실질적 적용

머신러닝 모델 서빙 시 'Train High, Infer Low' 전략은 학습 시에는 높은 정밀도를 유지하고, 서빙 시에는 성능과 비용 효율성을 위해 낮은 정밀도로 변환하는 것을 의미함.

LLM 학습/서빙: FP32+BF16 Mixed Precision으로 학습 후, BF16으로 추론하는 것이 가장 일반적이며 수치 안정성과 성능을 모두 확보할 수 있음.

컴퓨터 비전: FP32 학습 후 FP16 추론은 속도 향상이 크지만, 이미지 데이터의 제한된 범위(0~255)를 고려해야 하며 오버플로우 위험을 인지해야 함.

모바일/엣지: FP32 학습 후 INT8 양자화(Quantization-Aware Training, QAT)를 통해 추론 시 정확도 손실을 최소화하면서 메모리 및 속도 이점을 극대화함.

결론적으로, 각 모델의 특성과 비즈니스 요구사항(정확도 vs 속도 vs 비용)을 고려하여 직접 테스트하고 최적의 정밀도 조합을 결정하는 것이 중요함.

Train High, Infer Low - 머신러닝 학습과 서빙의 FP32, FP16, BF16, INT8 정밀도 선택