반정밀도(FP16)가 AI를 가속화하는 방법을 알아보세요. GPU 및 에지 디바이스에서 더 빠른 추론과 메모리 절감을 위해 Ultralytics 최적화하는 방법을 확인하세요.
반정밀도(하프 프리시전)는 흔히 FP16으로 표기되며, 컴퓨터 메모리에서 16비트를 차지하는 부동소수점 데이터 형식입니다. 이는 32비트를 사용하는 표준 단정밀도(FP32) 형식과 다릅니다. 인공지능 및 기계 학습 분야에서 반정밀도는 모델 훈련과 추론을 가속화하면서 메모리 소비를 크게 줄이는 핵심 최적화 기법입니다. 신경망 모델 가중치 및 기울기와 같은 수치 값을 더 적은 비트로 저장함으로써 개발자는 GPU 처리 장치에 더 큰 모델을 탑재하거나 기존 모델을 훨씬 빠르게 실행할 수 있습니다. 이러한 효율성 증대는 YOLO26과 같은 현대적이고 복잡한 아키텍처를 정확도를 크게 저하시키지 않으면서 자원이 제한된 장치에 배포하는 데 필수적입니다.
반정밀도를 이해하려면 정밀도와 대비해 보는 것이 도움이 됩니다. 표준 32비트 부동소수점 수(FP32)는 지수와 맨티사에 더 많은 비트를 할당하여 매우 넓은 동적 범위와 높은 수치 정밀도를 제공합니다. 그러나 딥러닝 모델은 작은 수치 오차에 대해 놀라울 정도로 강건한 것으로 알려져 있습니다. 신경망은 16비트 형식이 제공하는 축소된 동적 범위와 세분성 속에서도 효과적으로 학습하는 경우가 흔합니다.
반정밀도로 전환하면 메모리 대역폭 요구량이 절반으로 줄어듭니다. 이는 훈련 중 더 큰 배치 크기를 허용하여 기울기 업데이트를 안정화하고 전체 훈련 과정을 가속화할 수 있습니다. NVIDIA Tensor 같은 현대적인 하드웨어 가속기는 FP32보다 훨씬 빠른 속도로 FP16 행렬 곱셈을 수행하도록 특별히 최적화되어 있습니다.
반정밀도 채택은 AI 실무자들에게 다음과 같은 실질적인 이점을 제공합니다:
반정밀도는 생산 등급 AI 시스템에서 보편적으로 사용됩니다. 구체적인 예시 두 가지를 소개합니다:
에지 디바이스에서의 실시간 객체 탐지: detect 위해 Ultralytics 실행하는 보안 카메라 시스템을 고려해 보십시오. FP16으로 모델을 배포하면 NVIDIA Jetson이나 Raspberry Pi AI Kit 같은 임베디드 칩에서 원활하게 실행됩니다. 감소된 계산 부하로 인해 시스템은 실시간 추론 모드에서 지연 없이 비디오 피드를 처리할 수 있으며, 이는 시의적절한 경보에 필수적입니다.
대규모 언어 모델(LLM) 배포: GPT-4나 Llama 변형과 같은 생성형 AI 모델은 수십억 개의 매개변수를 가집니다. 이러한 모델을 정밀도(FP32) 그대로 로드하려면 막대한 서버 메모리가 필요하며, 이는 종종 비용 부담이 큽니다. 이 모델들을 FP16(또는 더 낮은 형식)으로 변환함으로써 클라우드 제공업체는 기초 모델을 수천 명의 사용자에게 동시에 제공할 수 있어 챗봇 및 자동화된 콘텐츠 생성 같은 서비스의 경제성을 확보할 수 있습니다.
두 기술 모두 모델 크기를 줄이는 것을 목표로 하지만, '반정밀도'와 모델 양자화를 구분하는 것이 중요합니다.
그리고 ultralytics 이 라이브러리는 반정밀도 활용을 간편하게 합니다. 예측 시 하드웨어가 지원할 경우 모델이 자동으로 반정밀도로 전환되거나, 명시적으로 요청할 수 있습니다.
Here is a Python example demonstrating how to load a
YOLO26 모델을 실행하고 반정밀도로 추론을 수행합니다.
참고: 실행 시 half=True 일반적으로 CUDA GPU 필요합니다.
import torch
from ultralytics import YOLO
# Check if CUDA (GPU) is available, as FP16 is primarily for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"
# Load the latest YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image with half-precision enabled
# The 'half=True' argument tells the engine to use FP16
results = model.predict("https://ultralytics.com/images/bus.jpg", device=device, half=True)
# Print the device and precision status
print(f"Inference device: {results[0].orig_img.shape}, Speed: {results[0].speed}")
데이터셋 및 훈련 파이프라인을 관리하는 사용자를 위해 Ultralytics 클라우드에서 이러한 최적화 작업의 상당 부분을 자동으로 처리하여 주석 작업부터 최적화된 모델 배포까지의 전환 과정을 간소화합니다.
숫자 형식과 AI에 미치는 영향에 대해 자세히 알아보려면 Tensor 관련 NVIDIA 러닝 성능 문서를참조하십시오. 이러한 최적화가 개발 라이프사이클에 어떻게 적용되는지 더 폭넓게 이해하려면 머신 러닝 운영(MLOps)에 관한 내용을 읽어보십시오.
또한, 서로 다른 최적화 전략 간의 장단점에 관심이 있는 분들은 비트 정밀도를 줄이는 대신 연결을 제거하는 트리밍 기법을 살펴보거나, 디지털 산술의 기술적 사양을 위해 IEEE 부동소수점 산술 표준(IEEE 754)을 탐구해 볼 수 있습니다. 이러한 기본 원리를 이해하면 모델을 다음과 같은 형식으로 내보낼 때 정보에 기반한 결정을 내리는 데 도움이 됩니다. ONNX 또는 TensorRT 과 같은 포맷으로 모델을 내보낼 때 정보에 기반한 결정을 내리는 데 도움이 됩니다.