모델/시스템 최적화: 효율화 방식 – FP16

ㅁ 효율화 방식

ㅇ 정의:
FP16(Half-Precision Floating Point)은 16비트 부동소수점 형식으로, FP32(32비트) 대비 메모리 사용량과 연산량을 절반으로 줄이는 데이터 표현 방식.

ㅇ 특징:
– 메모리 대역폭 절감으로 모델 훈련 및 추론 속도 향상
– GPU의 텐서 코어 등 특수 연산 장치에서 FP16 연산 최적화 지원
– 정밀도가 낮아 일부 연산에서 수치적 불안정 발생 가능

ㅇ 적합한 경우:
– 대규모 딥러닝 모델 훈련 시 GPU 메모리 부족 문제 해결
– 실시간 추론 서비스에서 응답 속도 개선 필요 시
– Mixed Precision Training 기법과 함께 사용하여 속도와 정확도의 균형을 맞출 때

ㅇ 시험 함정:
– FP16은 항상 FP32보다 빠르다고 단정하면 오답 (하드웨어 지원 여부, 연산 특성에 따라 다름)
– 모든 연산을 FP16으로 하면 수치적 발산 가능성 존재 → 손실 축적 방지 필요

ㅇ 시험 대비 “패턴 보기” 예시:
O: FP16은 메모리 사용량을 줄이고 연산 속도를 높이기 위해 사용되는 16비트 부동소수점 형식이다.
X: FP16은 모든 상황에서 FP32보다 항상 높은 정확도를 제공한다.

ㅁ 추가 학습 내용

FP16 관련 학습 정리

1. IEEE 754 Half Precision 구조
– 부호 비트: 1비트
– 지수 비트: 5비트
– 가수 비트: 10비트

2. Mixed Precision Training에서의 Loss Scaling 기법
– FP16 사용 시 작은 값이 언더플로우로 손실되는 문제를 완화하기 위해 손실 값을 일정 배율로 스케일 업하여 연산 후 다시 스케일 다운하는 방법

3. 하드웨어별 FP16 처리 성능 차이
– NVIDIA Tensor Core: FP16 연산에 최적화되어 높은 연산 성능 제공
– 일반 CUDA Core: FP16 연산 가능하지만 Tensor Core 대비 성능 이점이 적음

4. FP16과 bfloat16의 차이
– FP16: 지수 5비트, 가수 10비트 → 정밀도 높음, 표현 범위 제한적
– bfloat16: 지수 8비트, 가수 7비트 → FP32와 동일한 지수 범위, 정밀도는 낮음

5. FP16 사용 시 발생할 수 있는 문제와 방지 기법
– 언더플로우: 매우 작은 값이 0으로 처리되는 현상
– 오버플로우: 매우 큰 값이 무한대로 처리되는 현상
– 방지 기법: Loss Scaling, 값 범위 조정, 연산 과정에서의 데이터 타입 변환 활용

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*