Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Half-Precision

반정밀도(FP16)는 FP32의 32비트 대신 16비트로 수를 저장하여 메모리 사용량을 절반으로 줄이고 GPU 연산을 가속합니다. FP16의 한계, 손실 스케일링, 추론을 다룹니다.

FP16, float16 또는 IEEE 754 binary16이라고도 하는 반정밀도는 부호 비트 1개, 지수 비트 5개, 가수 비트 10개로 구성된 16비트 부동소수점 형식입니다. 표준 32비트 단정밀도 (FP32)와 비교하면 각 숫자에 필요한 메모리와 대역폭이 절반으로 줄어들며, Tensor Core를 탑재한 GPU는 FP16 행렬 연산을 FP32보다 여러 배 빠르게 처리합니다. 이 형식은 표현 범위가 좁아 최댓값이 65,504이고 유효 십진 자릿수는 약 3자리라는 단점이 있습니다. 신경망은 이러한 반올림을 잘 견디므로 FP16은 GPU 추론의 표준 정밀도가 되었으며, 혼합 정밀도에서 FP32와 함께 사용하면 학습 속도를 높이는 일반적인 방법이 됩니다.

FP16과 FP32 비교#

FP32는 지수에 8비트, 가수에 23비트를 사용하므로 대략 10⁻³⁸에서 10³⁸까지 표현할 수 있으며 유효 십진 자릿수는 약 7자리입니다. FP16은 지수 비트가 5개이므로 정규 값의 범위가 6.1 × 10⁻⁵에서 65,504로 제한되며, 더 작은 비정규 값은 정밀도가 낮아진 상태로 약 6 × 10⁻⁸까지 표현할 수 있습니다. 이보다 큰 값은 무한대로 오버플로되고 이보다 작은 값은 0으로 반올림됩니다. 모델을 변환하면 이점과 한계를 모두 확인할 수 있습니다.

import torch
import torchvision

# ResNet-18 stores its weights in FP32 by default
model = torchvision.models.resnet18()
fp32_mb = sum(p.numel() * p.element_size() for p in model.parameters()) / 1e6

# Casting to FP16 stores every weight in 2 bytes instead of 4
model.half()
fp16_mb = sum(p.numel() * p.element_size() for p in model.parameters()) / 1e6
print(f"Weights: {fp32_mb:.1f} MB in FP32, {fp16_mb:.1f} MB in FP16")

# FP16 overflows above 65,504 and rounds to about 3 significant digits
x = torch.tensor([65504.0, 70000.0, 0.1])
print("FP16 values:", x.half().tolist())

가중치 크기가 46.8 MB에서 23.4 MB로 줄어듭니다. 두 번째 줄에서 65,504는 FP16 최댓값으로 유지되고, 70,000은 inf이 되며, 0.1은 FP16으로 표현할 수 있는 가장 가까운 값인 0.0999755859375로 저장됩니다.

학습에서의 반정밀도#

FP16만으로 학습하면 작은 그래디언트가 0으로 언더플로되고 가중치에 비해 미세한 가중치 업데이트가 반올림 과정에서 사라지기 때문에 많은 모델의 정확도가 떨어지거나 학습이 발산합니다. 혼합 정밀도 학습은 두 문제를 모두 해결합니다. 업데이트를 위해 가중치의 FP32 마스터 복사본을 유지하고, 순전파 및 역전파는 FP16으로 실행합니다. 또한 손실에 스케일 계수를 곱해 그래디언트가 FP16 범위 안에 머물게 한 뒤 FP32에서 스케일을 되돌립니다. PyTorch의 GradScaler처럼 프레임워크가 이 계수를 자동으로 조정합니다.

FP16 활성화는 학습 중 배치가 차지하는 메모리도 절반으로 줄여, 동일한 GPU에서 더 큰 배치나 더 높은 해상도의 입력을 처리할 수 있게 합니다. 지원 하드웨어에서는 FP32와 같은 크기의 지수부로 인해 손실 스케일링이 필요 없는 bfloat16 (BF16)을 학습에 사용하는 경우가 많습니다.

추론에서의 반정밀도#

추론에는 그래디언트가 필요하지 않고 대부분의 비전 모델 활성화 값은 FP16 범위 안에 있으므로, 완성된 모델을 FP16으로 변환해도 보통 FP32에 비해 정확도가 조금만 낮아지며 INT8 모델 양자화에 필요한 보정 데이터도 필요하지 않습니다. TensorRT와 같은 GPU 엔진은 Tensor Core에서 실행되는 FP16 엔진을 빌드하며, NVIDIA Jetson과 같은 임베디드 GPU는 실시간 추론에 FP16을 활용합니다. 많은 CPU는 빠른 FP16 연산을 지원하지 않으므로 얻는 이점이 더 적습니다. Ultralytics YOLO는 기본적으로 GPU에서 FP16 혼합 정밀도로 학습하고 (amp=True), FP16 예측과 내보내기에는 quantize=16을 사용합니다. 예를 들어 YOLO26은 다음과 같습니다.

from ultralytics import YOLO

# 가장 작은 YOLO26 감지 모델을 불러옵니다.
model = YOLO("yolo26n.pt")

# GPU에서 FP16으로 예측합니다. CPU에서는 PyTorch 모델이 FP32로 실행됩니다.
results = model.predict("https://ultralytics.com/images/bus.jpg", quantize=16)

# 가중치를 FP16으로 저장하는 ONNX 모델을 내보냅니다.
path = model.export(format="onnx", quantize=16)

내보낸 파일은 각 가중치를 4바이트가 아닌 2바이트로 저장합니다. 동일한 quantize=16 인수로 TensorRT, OpenVINO, CoreML 및 기타 내보내기 형식용 FP16 모델을 생성할 수 있습니다.

  • BFloat16 (BF16): 다른 16비트 부동소수점 형식으로, 지수 비트 8개와 가수 비트 7개를 사용합니다. 정밀도 대신 FP32의 표현 범위를 제공하므로 대규모 모델 학습에 선호됩니다.
  • FP8: 최신 NVIDIA GPU에서 사용하는 8비트 부동소수점 형식입니다. 메모리를 다시 절반으로 줄이며, 주로 대규모 언어 모델의 학습과 서빙에 사용됩니다.
  • INT8 양자화: 값을 텐서별 또는 채널별 스케일을 적용한 8비트 정수로 변환합니다. FP16보다 빠르고 크기가 작지만, 정확도를 유지하려면 보정 데이터 또는 양자화 인식 학습이 필요합니다.

반정밀도가 사용되는 분야#

  • 엣지 AI: Jetson 모듈 및 기타 임베디드 GPU의 디텍터는 수 와트에서 수십 와트의 전력으로 카메라 프레임 속도를 달성하기 위해 FP16으로 실행됩니다.
  • 클라우드 추론: FP16으로 서빙하면 모델 복제본당 메모리 사용량이 절반으로 줄어들어 GPU 하나에서 더 많은 복제본이나 더 큰 배치를 처리할 수 있습니다.
  • 대규모 언어 모델: 70억 개 파라미터 모델의 가중치는 FP32에서 28 GB, FP16에서 14 GB의 메모리를 필요로 합니다. 따라서 FP16에서는 KV 캐시 공간을 남긴 채 단일 24 GB 소비자용 GPU에 모델을 올릴 수 있습니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요