Mixed Precision
혼합 정밀도가 Ultralytics YOLO26과 같은 모델의 학습을 가속하고 메모리 사용량을 줄이는 방법을 알아봅니다. 더 빠른 AI 인사이트를 위한 FP16 및 FP32의 이점을 살펴봅니다.
혼합 정밀도는 메모리 사용량을 줄이면서 딥러닝 모델의 학습을 가속하는 데 사용되는 모델 최적화의 핵심 기술입니다. 일반적으로 16비트 및 32비트 부동 소수점 형식과 같은 서로 다른 수치 형식을 전략적으로 결합하는 이 방법을 사용하면 머신 러닝 알고리즘이 모델의 최종 정확도를 저하시키지 않고 더 빠르게 계산을 수행할 수 있습니다. 특히 대규모 데이터셋에서 YOLO26 아키텍처를 학습하는 것과 같이 리소스를 많이 사용하는 작업에서 현대 AI 개발의 표준 관행으로 자리 잡았습니다.
혼합 정밀도의 작동 방식#
기존 딥러닝 워크플로에서는 일반적으로 단정밀도 부동 소수점 형식(FP32)을 사용하여 계산을 수행합니다. FP32의 각 숫자는 32비트의 메모리를 필요로 합니다. 이 형식은 매우 정밀하지만 계산 비용과 메모리 사용량이 클 수 있습니다.
혼합 정밀도는 16비트만 사용하는 반정밀도(FP16)를 도입합니다. 그러나 FP16만 사용하면 동적 범위가 더 작아 수치 불안정성이 발생할 수 있습니다. 이를 해결하기 위해 혼합 정밀도 방법은 안정성을 위해 모델 가중치의 "마스터 복사본"을 FP32로 유지하는 동시에, 합성곱 및 행렬 곱셈과 같은 수학 연산의 대부분은 FP16으로 수행합니다.
이 과정은 일반적으로 다음 세 가지 핵심 단계로 구성됩니다.
-
캐스팅: NVIDIA Tensor Cores와 같은 호환 하드웨어에서 실행 속도를 높이기 위해 모델의 입력과 활성값을 FP16으로 변환합니다.
-
손실 스케일링: 손실 함수의 값을 증폭하여 FP16에서 작은 그래디언트 업데이트가 0이 되는 "언더플로"를 방지합니다.
-
누적: 산술 연산은 FP16으로 수행하되, 마스터 가중치를 업데이트하기 전에 필요한 정보를 보존할 수 있도록 결과를 FP32로 누적합니다.
AI 학습의 이점#
혼합 정밀도를 도입하면 계산 리소스를 효율적으로 활용하는 개발자와 연구자에게 다음과 같은 중요한 이점이 제공됩니다.
- 더 빠른 학습 속도: FP16 연산은 더 적은 메모리 대역폭을 필요로 하며 최신 GPUs에서 더 빠르게 처리됩니다. 이를 통해 에포크에 필요한 시간을 크게 줄일 수 있습니다.
- 메모리 사용량 감소: FP16 텐서는 FP32의 절반에 해당하는 메모리만 차지하므로 개발자는 배치 크기를 사실상 두 배로 늘릴 수 있습니다. 배치 크기가 클수록 그래디언트 추정이 안정되고 수렴이 빨라지는 경우가 많습니다.
- 에너지 효율성: 계산 부하가 감소하면 에너지 소비량도 줄어들며, 이는 대규모 클라우드 학습 작업에 매우 중요합니다.
실제 적용 사례#
혼합 정밀도는 복잡한 모델과 대규모 데이터셋을 효율적으로 처리하기 위해 다양한 산업 분야에서 활용됩니다.
자율주행#
자율주행 차량 개발에서는 엔지니어가 수백만 개의 고해상도 비디오 프레임으로 객체 감지 모델을 학습해야 합니다. 혼합 정밀도를 사용하면 YOLO26과 같은 최첨단 모델을 효율적으로 학습할 수 있습니다. 메모리 사용 공간이 줄어들면 더 높은 해상도의 입력을 처리할 수 있으며, 이는 멀리 있는 교통 표지판이나 보행자와 같은 작은 객체를 감지하는 데 매우 중요합니다.
의료 이미지 분석#
의료 이미지 분석은 대개 MRI 또는 CT 스캔에서 얻은 3D 볼륨 데이터를 다루며, 이는 메모리 사용량이 매우 큽니다. 이 데이터를 완전한 FP32 정밀도로 사용하여 세그멘테이션 모델을 학습하면 "메모리 부족"(OOM) 오류가 자주 발생합니다. 혼합 정밀도를 사용하면 연구자가 이러한 대형 모델을 GPU 메모리에 탑재할 수 있어, 의사의 질병 조기 진단을 지원하는 AI 개발이 용이해집니다.
Ultralytics에서 혼합 정밀도 구현하기#
PyTorch와 같은 최신 프레임워크는 일반적으로 자동 혼합 정밀도(AMP)라는 기능을 통해 혼합 정밀도의 복잡한 작업을 자동으로 처리합니다. ultralytics 패키지는 최적의 성능을 보장하기 위해 학습 중 AMP를 기본적으로 활성화합니다.
다음은 Ultralytics YOLO26으로 학습을 시작하는 간단한 예시입니다. 혼합 정밀도는 기본적으로 활성화되어 있으며 amp 인수를 통해 제어할 수 있습니다.
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Train the model on the COCO8 dataset
# amp=True is the default setting for mixed precision training
results = model.train(data="coco8.yaml", epochs=5, imgsz=640, amp=True)혼합 정밀도와 관련 개념 비교#
혼동을 피하려면 혼합 정밀도와 용어집의 유사한 용어를 구분하는 것이 좋습니다.
- 모델 양자화: 혼합 정밀도는 학습 중 더 낮은 정밀도의 부동 소수점 숫자(FP16)를 사용하는 반면, 양자화는 일반적으로 학습 후 가중치를 정수(예: INT8)로 변환하여 배포합니다. 양자화는 주로 엣지 디바이스의 추론 지연 시간에 중점을 두는 반면, 혼합 정밀도는 학습 속도와 안정성에 중점을 둡니다.
- 반정밀도: 이는 FP16 데이터 형식 자체를 구체적으로 의미합니다. 혼합 정밀도는 FP16과 FP32를 함께 사용하는 기술입니다. "혼합" FP32 마스터 복사본 없이 순수 반정밀도만 사용하면 수치 오류로 인해 모델이 수렴하지 않는 경우가 많습니다.
결론#
혼합 정밀도는 신경망 학습 방식을 혁신했으며, 오늘날 사용되는 대규모 파운데이션 모델과 비전 시스템을 가능하게 한 핵심 요소로 작용하고 있습니다. 수학적 정밀도에 대한 요구와 하드웨어의 속도 및 메모리 제약 사이에서 균형을 맞춤으로써 개발자가 더 빠르게 반복 작업을 수행하고 더욱 뛰어난 AI 솔루션을 구축할 수 있도록 합니다.
데이터셋을 관리하고 최적화된 모델을 원활하게 학습하려는 사용자를 위해 Ultralytics Platform은 이러한 최신 최적화 기술을 자동으로 활용하는 종합적인 환경을 제공합니다.









