절반 정밀도
반정밀도(FP16)가 더 빠른 계산, 감소된 메모리 사용량 및 효율적인 모델 배포로 AI를 어떻게 가속화하는지 알아보세요.
FP16이라고도 하는 Half-precision은 숫자를 나타내기 위해 16비트의 메모리를 사용하는 부동 소수점 숫자 형식으로, 일반적인 32비트 단정밀도(FP32) 또는 64비트 배정밀도(FP64) 형식과 대조됩니다. 딥 러닝의 맥락에서 half-precision을 사용하면 모델의 메모리 사용량과 계산 요구 사항이 크게 줄어듭니다. 이러한 절충은 수치 범위 및 정밀도 감소를 대가로 합니다. 그러나 최신 기술, 특히 혼합 정밀도 훈련은 모델 정확도에 미치는 영향을 최소화하면서 더 빠른 훈련 및 추론을 가능하게 하여 FP16을 효율적인 머신 러닝(ML)의 초석으로 만들었습니다.
Half-Precision은 어떻게 작동하나요?
FP32에서 FP16으로 전환하면 모델 가중치 및 활성화를 저장하는 데 필요한 메모리가 절반으로 줄어듭니다. 이를 통해 더 큰 모델, 더 큰 배치 크기 또는 메모리가 적은 GPU에서 훈련할 수 있습니다. 또한 NVIDIA Tensor Cores가 있는 GPU와 같은 최신 GPU는 32비트 연산보다 훨씬 빠른 속도로 16비트 행렬 연산을 수행하도록 특별히 설계되었습니다.
FP16의 주요 과제는 제한된 숫자 범위로, 훈련 중 기울기 소실과 같은 문제를 일으킬 수 있습니다. 이를 해결하기 위해 반정밀도는 거의 항상 혼합 정밀도 접근 방식을 사용하여 구현됩니다. 이 전략은 속도를 위해 대부분의 계산을 FP16으로 수행하지만, 숫자 안정성을 유지하기 위해 가중치 업데이트 및 특정 손실 함수 계산과 같은 중요한 작업에는 FP32를 전략적으로 사용합니다. PyTorch 및 TensorFlow와 같은 딥 러닝 프레임워크는 자동 혼합 정밀도 훈련에 대한 기본 제공 지원을 제공합니다.
응용 분야 및 예시
절반 정밀도는 주로 혼합 정밀도 기술을 통해 널리 사용됩니다.
- 모델 학습 가속화: 이미지 분류 또는 자연어 처리 (NLP)와 같은 대규모 딥러닝 모델의 학습은 혼합 정밀도를 사용하여 크게 가속화할 수 있으며, 학습 시간과 비용을 줄일 수 있습니다. Ultralytics HUB와 같은 플랫폼은 종종 클라우드 학습 세션 중에 이러한 최적화를 활용합니다.
- 객체 탐지 추론 최적화: Ultralytics YOLO11과 같은 모델은 더 빠른 실시간 추론을 위해 FP16 정밀도로 ONNX 또는 TensorRT와 같은 형식으로 내보낼 수 있습니다. 이는 여러 비디오 피드를 분석하는 보안 시스템 또는 고속 생산 라인의 품질 관리와 같이 높은 처리량이 필요한 애플리케이션에 매우 중요합니다.
- 리소스가 제한된 장치에 배포: FP16 모델의 감소된 메모리 공간 및 계산 비용은 NVIDIA Jetson 또는 TensorFlow Lite 또는 Apple의 Core ML과 같은 프레임워크를 사용하는 모바일 장치와 같은 edge AI 플랫폼에 배포하는 데 적합합니다.
- 대규모 언어 모델(LLM) 학습: GPT-3 및 기타 기반 모델(foundation models)과 같은 모델의 엄청난 크기로 인해 모델을 메모리에 맞추고 합리적인 시간 내에 학습을 완료하려면 16비트 형식을 사용해야 합니다.
Half-Precision과 다른 형식 비교
- Bfloat16 (BF16): Google에서 개발한 또 다른 16비트 형식인 Bfloat16은 FP16에 비해 지수부에 더 많은 비트를 할당하고 가수부에 더 적은 비트를 할당합니다. 따라서 FP32와 동일한 동적 범위를 가지므로 언더플로 및 오버플로에 더 강하지만, 정밀도는 낮아집니다. 이 형식은 Google의 TPU에서 많이 활용됩니다. 자세한 내용은 Google Cloud AI 블로그에서 확인할 수 있습니다.
- 모델 양자화: 둘 다 모델 최적화 기술이지만, 모델 양자화는 일반적으로 부동 소수점 가중치(FP32 또는 FP16)를 더 낮은 비트 정수 형식(가장 일반적으로 8비트 정수(INT8))으로 변환합니다. 이는 특히 CPU 및 특정 가속기에서 훨씬 더 빠른 속도 향상을 제공할 수 있지만 모델 성능의 상당한 저하를 방지하기 위해 QAT(Quantization-Aware Training)와 같은 보다 신중한 보정 프로세스가 필요한 경우가 많습니다.
- 단정밀도 (FP32): 이는 대부분의 딥 러닝 프레임워크에서 기본 형식입니다. 높은 정밀도와 넓은 동적 범위를 제공하므로 훈련에 강력합니다. 그러나 반정밀도보다 느리고 메모리 집약적이므로 대규모 모델을 배포하거나 최대 속도가 필요한 애플리케이션에는 적합하지 않습니다. 이러한 형식 간의 절충점은 다양한 모델 비교에서 볼 수 있듯이 중요한 고려 사항입니다.