용어집

반정밀

반정밀도(FP16)가 어떻게 더 빠른 연산, 메모리 사용량 감소, 효율적인 모델 배포로 AI를 가속화하는지 알아보세요.

YOLO 모델을 Ultralytics HUB로 간단히
훈련

자세히 알아보기

반정밀은 기술적으로 FP16(부동 소수점 16비트)으로 알려져 있으며, 보다 일반적인 32비트 단정밀도(FP32) 또는 64비트 배정밀도(FP64) 형식과 달리 16비트를 사용하여 숫자를 표현하는 숫자 형식입니다. 인공지능(AI), 특히 딥러닝(DL) 분야에서 반정확도를 활용하는 것은 모델 훈련과 추론을 최적화하고 계산 효율성과 수치 정확도의 균형을 맞추는 데 중요한 기술이 되었습니다. 이를 통해 모델을 더 빠르게 실행하고 메모리를 덜 소비할 수 있으므로 더 다양한 하드웨어에서 복잡한 AI를 구현할 수 있습니다.

반정밀이란 무엇인가요?

부동소수점 숫자는 컴퓨터에서 실수를 표현하는 데 사용되며, 고정된 비트 수 내에서 실수를 근사화합니다. IEEE 754 표준은 FP16 및 FP32를 포함한 일반적인 형식을 정의합니다. FP16 숫자는 부호에 1비트, 지수(범위 결정)에 5비트, 시그니피컨드 또는 멘티사(정밀도 결정)에 10비트를 사용합니다. 이에 비해 FP32는 부호 1비트, 지수 8비트, 피연산자 23비트를 사용합니다. 이러한 비트 수의 감소는 FP16이 FP32보다 숫자 범위가 훨씬 작고 정밀도가 낮다는 것을 의미합니다. 이러한 형식의 작동 방식에 대한 기본적인 개요는 부동소수점 산술 기본 사항을 참조하세요.

반정밀의 이점

FP16을 사용하면 딥러닝 워크플로에서 몇 가지 이점이 있습니다:

  • 메모리 사용량 감소: FP16에 저장된 모델 가중치, 활성화 및 그라데이션은 FP32에 비해 절반의 메모리만 필요합니다. 따라서 더 큰 모델, 더 큰 배치 크기 또는 제한된 메모리를 가진 디바이스에 배포할 수 있습니다.
  • 더 빠른 계산: Tensor 코어가 탑재된 NVIDIA GPUGoogle TPU와 같은 특수 프로세서와 같은 최신 하드웨어는 FP32 연산보다 훨씬 빠르게 FP16 연산을 수행할 수 있습니다.
  • 처리량 향상 및 지연 시간 단축: 메모리 대역폭 요구 사항 감소와 빠른 계산의 조합으로 훈련 중 처리량이 증가하고 추론 대기 시간이 단축되어 까다로운 애플리케이션에서 실시간 추론이 가능해집니다.

잠재적 단점

유익하지만 FP16만 사용하면 때때로 문제가 발생할 수 있습니다:

  • 수치 범위 감소: 지수 범위가 작아지면 FP16 숫자가 오버플로(너무 커짐) 또는 언더플로(너무 작아짐, 종종 0이 됨)에 더 취약해집니다.
  • 정밀도 저하: 부호 비트 수가 줄어든다는 것은 정밀도가 낮아진다는 것을 의미하며, 신중하게 관리하지 않으면 민감한 모델의 최종 정확도에 영향을 미칠 수 있습니다.
  • 그라데이션 문제: 훈련 중에 작은 그라데이션 값이 FP16에서 0이 되어 학습을 방해할 수 있습니다. 이는 사라지는 그라데이션과 같은 문제를 악화시킬 수 있습니다.

반정확도 대 관련 개념

FP16을 다른 숫자 형식 및 기법과 구별하는 것이 중요합니다:

  • 단일 정밀도(FP32): 다음과 같은 많은 머신 러닝(ML) 프레임워크의 기본 형식입니다. PyTorchTensorFlow. 대부분의 작업에서 범위와 정밀도의 균형이 잘 잡혀 있지만 FP16보다 리소스 집약적입니다.
  • 더블 정밀도(FP64): 매우 높은 정밀도를 제공하지만 FP32보다 두 배의 메모리와 컴퓨팅 리소스가 필요합니다. 주로 과학 컴퓨팅에 사용되며 딥 러닝에는 거의 사용되지 않습니다.
  • 혼합 정밀도: 딥러닝에서 FP16이 가장 일반적으로 사용되는 방식입니다. 여기에는 훈련이나 추론 중에 FP16과 FP32를 모두 전략적으로 사용하는 것이 포함됩니다. 일반적으로 컨볼루션이나 행렬 곱셈과 같은 계산 집약적인 연산은 속도를 위해 FP16에서 수행되고, 가중치 업데이트나 특정 감소와 같은 중요한 연산은 수치 안정성과 정확도를 유지하기 위해 FP32에서 유지됩니다. 손실 스케일링과 같은 기술은 언더플로 문제를 완화하는 데 도움이 됩니다. 원래의 혼합 정밀도 교육 백서 또는 PyTorch AMPTensorFlow 혼합 정밀도 가이드를 참조하세요. Ultralytics 모델은 종종 혼합 정밀도를 활용합니다. 모델 학습을 위한 팁을 참조하세요.
  • BFloat16(BF16): 또 다른 16비트 포맷으로, 주로 Google 개발했습니다. 8개의 지수 비트(FP32와 동일하여 넓은 범위를 제공)를 사용하지만, 7개의 시그니피컨드 비트(FP16보다 정밀도가 낮음)만 사용합니다. 특히 대규모 언어 모델(LLM)을 학습하는 데 유용합니다. BFloat16에 대해 자세히 알아보세요.
  • 모델 정량화: 모델 정밀도를 8비트 정수(INT8) 이하로 더욱 낮추는 기술입니다. 이는 엣지 디바이스에 배포할 때 최대의 효율성을 제공하지만 일반적으로 정확도를 유지하기 위해 신중한 보정 또는 양자화 인식 훈련(QAT)이 필요합니다. PyTorch 양자화 소개를 참조하세요.

애플리케이션 및 예시

주로 혼합 정밀 기술을 통한 반정밀이 널리 사용됩니다:

  1. 모델 훈련 가속화: 이미지 분류나 자연어 처리(NLP)와 같은 대규모 딥 러닝 모델의 훈련은 혼합 정밀도를 사용하여 속도를 크게 높여 훈련 시간과 비용을 줄일 수 있습니다. Ultralytics HUB와 같은 플랫폼은 종종 이러한 최적화를 활용합니다.
  2. 객체 감지 추론 최적화: 다음과 같은 모델 Ultralytics YOLO11 과 같은 모델은 내보내기 모드 설명서에 설명된 도구를 사용하여 다음과 같은 형식으로 내보낼 수 있습니다. ONNX 또는 TensorRT 와 같은 형식으로 내보낼 수 있어 추론 속도가 빨라집니다. 이는 자율 주행 차량이나 실시간 비디오 감시 시스템과 같이 실시간 성능이 필요한 애플리케이션에 매우 중요합니다.
  3. 리소스 제약이 있는 디바이스에 배포: FP16 모델의 메모리 사용 공간과 컴퓨팅 비용이 줄어들어 NVIDIA Jetson과 같은 엣지 컴퓨팅 플랫폼이나 TensorFlow Lite 또는 Core ML과 같은 프레임워크를 사용하는 모바일 디바이스에 배포하는 데 적합합니다.
  4. 대규모 언어 모델(LLM) 훈련: GPT-3 및 최신 아키텍처와 같은 모델의 크기가 엄청나게 크기 때문에 모델을 메모리에 맞추고 합리적인 시간 내에 훈련을 완료하려면 16비트 형식(FP16 또는 BF16)을 사용해야 합니다.

요약하자면, 반정밀도(FP16)는 딥러닝 최적화 툴킷의 핵심 도구로, 더 빠른 계산과 메모리 사용량 감소를 가능하게 해줍니다. 범위와 정밀도에는 한계가 있지만, 혼합 정밀도 기술을 사용하여 효과적으로 관리할 수 있으므로 대규모 모델을 학습하고 효율적인 AI 애플리케이션을 배포하는 데 필수적입니다.

모두 보기