모델/시스템 최적화: 효율화 방식
ㅁ 효율화 방식
1. FP16
ㅇ 정의:
부동소수점 32비트(FP32) 대신 16비트(FP16) 부동소수점 형식을 사용하여 메모리 사용량과 연산량을 줄이는 방식.
ㅇ 특징:
– 메모리 대역폭 절감 및 연산 속도 향상.
– 일부 연산에서 정밀도 손실 가능.
– GPU의 Tensor Core 등 FP16 가속 기능 활용 가능.
ㅇ 적합한 경우:
– 대규모 딥러닝 모델 학습 시 GPU 메모리 부족 문제 해결.
– 추론 속도 개선이 필요한 경우.
ㅇ 시험 함정:
– FP16 사용이 항상 성능 향상을 보장하는 것은 아님(O/X 문제에서 자주 출제).
– 정밀도 손실이 민감한 금융/의료 데이터 처리에는 부적합.
ㅇ 시험 대비 “패턴 보기” 예시:
– “FP16은 FP32보다 메모리 사용량이 절반이다.” → O
– “FP16은 모든 경우에 FP32보다 정확도가 높다.” → X
2. Quantization Aware Training
ㅇ 정의:
학습 과정에서 양자화(정수화) 효과를 시뮬레이션하여, 추론 시 정수 연산 기반 모델의 성능 저하를 최소화하는 기법.
ㅇ 특징:
– 학습 중에 양자화 오차를 반영하여 파라미터를 조정.
– 추론 시 INT8 등 저정밀 연산으로 변환 가능.
– 모델 크기 및 메모리 사용량 크게 감소.
ㅇ 적합한 경우:
– 모바일, 임베디드 환경에서의 경량 추론.
– 제한된 연산 리소스 환경.
ㅇ 시험 함정:
– 사후 양자화(Post-training quantization)와 혼동하기 쉬움.
– 학습 시 양자화 효과를 반영하지 않으면 정확도 저하 가능성 큼.
ㅇ 시험 대비 “패턴 보기” 예시:
– “Quantization Aware Training은 학습 중 양자화 효과를 고려한다.” → O
– “Quantization Aware Training은 추론 후에만 양자화를 적용한다.” → X
3. Layer Fusion
ㅇ 정의:
연속된 연산 레이어(예: Convolution + Batch Normalization + ReLU)를 하나의 연산으로 결합하여 메모리 접근 횟수와 연산 오버헤드를 줄이는 최적화 기법.
ㅇ 특징:
– 메모리 접근 감소로 인한 성능 향상.
– 연산 병합으로 캐시 효율성 증가.
– 주로 추론 단계에서 적용.
ㅇ 적합한 경우:
– CNN 기반 모델의 추론 최적화.
– 메모리 대역폭이 제한적인 환경.
ㅇ 시험 함정:
– 학습 단계에서 항상 적용 가능한 것은 아님.
– 모델 구조 변경 시 재적용 필요.
ㅇ 시험 대비 “패턴 보기” 예시:
– “Layer Fusion은 메모리 접근 횟수를 줄인다.” → O
– “Layer Fusion은 항상 학습 속도를 향상시킨다.” → X
ㅁ 추가 학습 내용
FP16에서는 혼합 정밀도 학습(Mixed Precision Training) 개념을 함께 이해해야 한다. 이는 FP16과 FP32를 적절히 혼합하여 연산 속도를 높이면서 정밀도 손실을 최소화하는 방법이다.
Quantization Aware Training에서는 대칭 양자화와 비대칭 양자화, per-channel 양자화와 per-tensor 양자화 방식의 차이를 구분할 수 있어야 한다.
Layer Fusion은 그래프 최적화(Graph Optimization)와 관련이 있으며, TensorRT, ONNX Runtime 등의 추론 엔진에서 최적화 과정 중 자동으로 적용되는 경우가 많다. 따라서 해당 툴에서 Layer Fusion이 적용되는 시점과 제한사항을 숙지하는 것이 중요하다.