혼합 정밀도는 딥러닝 모델 학습의 효율성을 높이기 위해 계산에 16비트와 32비트 부동소수점 유형을 모두 사용하는 머신러닝 기법입니다. 혼합 정밀도는 각 정밀도 유형의 강점을 활용하여 모델 정확도를 크게 떨어뜨리지 않으면서도 계산 속도를 높이고 메모리 사용량을 줄일 수 있습니다.
혼합 정밀도를 사용하는 주된 동기는 더 빠른 학습 및 추론 프로세스를 달성하기 위해서입니다. 딥 러닝 모델, 특히 대규모 신경망에는 광범위한 계산 리소스가 필요합니다. 혼합 정밀도가 가능합니다:
메모리 사용량 감소: 데이터를 16비트 부동 소수점으로 저장하면 32비트 부동 소수점에 비해 절반의 공간만 필요합니다. 따라서 메모리 사용 공간을 크게 줄일 수 있으므로 동일한 하드웨어에서 더 큰 배치 크기나 더 복잡한 모델을 학습시킬 수 있습니다.
계산 속도 향상: NVIDIA 의 Tensor 코어와 같은 많은 최신 GPU는 16비트 연산에 최적화되어 있습니다. 따라서 혼합 정밀도는 이러한 하드웨어 최적화를 활용하여 더 빠른 계산을 달성할 수 있습니다.
에너지 효율성: 혼합 정밀도를 사용하면 전력 소비를 줄일 수 있어 환경적 이유와 디바이스 수명 모두에 도움이 됩니다.
실제로 혼합 정밀도에는 모델의 가중치를 전체 32비트 정밀도로 유지하여 모델 정확도를 유지하면서 활성화 및 그라데이션과 같은 특정 계산 측면을 16비트 정밀도로 변환하는 것이 포함됩니다. 손실 스케일링은 일반적으로 정밀도 감소로 인해 발생할 수 있는 언더플로우를 방지하기 위해 사용됩니다.
혼합 정밀도는 자연어 처리 및 컴퓨터 비전과 같이 대규모 모델 및 데이터 세트와 관련된 다양한 분야에서 높은 연관성을 보입니다. 예를 들어
자연어 처리(NLP): GPT-3 및 Transformer 아키텍처와 같은 대규모 언어 모델은 언어 이해 및 생성에 필요한 높은 정확도를 유지하면서 보다 효율적인 학습을 가능하게 하는 혼합 정밀도의 이점을 크게 누릴 수 있습니다.
컴퓨터 비전: 를 사용한 물체 감지와 같은 애플리케이션에서 Ultralytics YOLO를 사용한 물체 감지와 같은 애플리케이션에서 혼합 정밀도는 추론 단계의 속도를 높일 수 있으며, 이는 자율 주행 차량이나 감시 시스템과 같은 실시간 처리 시나리오에서 매우 중요합니다.
혼합 정밀도는 종종 모델 정량화 및 모델 가지 치기와 같은 용어와 함께 나타납니다. 세 가지 모두 모델 최적화를 목표로 하지만 접근 방식은 다릅니다:
모델 양자화: 모델 가중치와 계산을 더 낮은 비트폭 표현(예: 8비트)으로 변환하여 메모리와 계산을 더욱 줄이며, 일반적으로 정확도에 약간의 영향을 미칩니다.
모델 가지치기: 신경망의 중복 부분을 제거하여 크기를 줄이고 속도를 개선하는 작업으로, 정확도를 회복하기 위해 재학습이 필요한 경우가 많습니다.
자율 주행 차량: 자율주행 차량에서 혼합 정밀도는 비전 기반 애플리케이션에서 더 빠른 계산을 가능하게 합니다. 예를 들어 자율 주행의 AI는 혼합 정밀도를 활용하여 복잡한 환경 인식을 효율적으로 처리함으로써 안전과 의사 결정 프로세스를 모두 향상시킵니다.
의료 분야의 이미지 세분화: 혼합 정밀도는 CT 스캔 및 MRI와 같은 의료 영상 작업을 위한 의료 분야의 AI 애플리케이션에도 사용됩니다. 이를 통해 대규모 데이터 세트를 빠르게 처리하여 실시간 진단 및 치료 계획을 지원할 수 있습니다.
혼합 정밀도를 구현하려면 모델 훈련 워크플로우에 변화가 필요하며, 이를 위해 설계된 라이브러리와 도구를 사용하는 경우가 많습니다. 다음과 같은 프레임워크 TensorFlow 및 PyTorch 와 같은 프레임워크는 혼합 정밀도에 대한 기본 지원을 제공하므로 기존 프로젝트에 쉽게 통합할 수 있습니다.
혼합 정밀도와 같은 최적화가 적용된 모델 배포에 대한 실용적인 가이드는 원활한 모델 개발을 위한 도구와 리소스를 제공하는 Ultralytics HUB를 참조하세요.