모델 최적화: 경량화

ㅁ 경량화

ㅇ 정의:
모델의 메모리 사용량과 연산량을 줄여 배포 및 추론 속도를 향상시키는 최적화 기법들의 집합.

ㅇ 특징:
– 정확도 손실을 최소화하면서 모델 크기와 연산량을 줄임
– 하드웨어 특성에 맞춘 최적화 가능
– 다양한 기법을 조합하여 사용 가능

ㅇ 적합한 경우:
– 모바일, 엣지 디바이스처럼 연산 자원이 제한된 환경
– 실시간 추론이 필요한 서비스

ㅇ 시험 함정:
– 경량화 기법이 항상 정확도 향상을 보장하는 것은 아님
– 일부 기법은 학습 단계에서 적용해야 효과적임

ㅇ 시험 대비 “패턴 보기” 예시:
O: 경량화는 모델 추론 속도를 향상시킬 수 있다.
X: 경량화는 반드시 모델 정확도를 향상시킨다.

================================

1. FP16

ㅇ 정의:
부동소수점 32비트(FP32) 대신 16비트(FP16) 정밀도를 사용하는 연산 방식.

ㅇ 특징:
– 메모리 사용량 절반으로 감소
– 연산 속도 향상 가능 (GPU, TPU 등 지원 시)
– 정밀도 손실로 인한 수치 불안정 가능

ㅇ 적합한 경우:
– 대규모 딥러닝 모델 추론 및 학습
– 하드웨어가 FP16 연산을 지원하는 경우

ㅇ 시험 함정:
– 모든 연산에서 FP16을 쓰면 underflow/overflow 문제 발생 가능
– 일부 레이어는 FP32 유지 필요

ㅇ 시험 대비 “패턴 보기” 예시:
O: FP16은 메모리 사용량을 줄인다.
X: FP16은 모든 경우에 FP32보다 정확하다.

================================

2. Quantization-aware Training

ㅇ 정의:
학습 단계에서 양자화를 고려하여 가중치와 활성값을 저비트 정밀도로 변환하는 기법.

ㅇ 특징:
– 학습 시 양자화 오차를 반영하여 정확도 손실 최소화
– 8비트 또는 그 이하 정밀도 사용 가능
– 하드웨어 친화적 모델 생성

ㅇ 적합한 경우:
– 양자화 후에도 높은 정확도가 필요한 경우
– 모바일/엣지 환경 배포 전 학습 가능할 때

ㅇ 시험 함정:
– 사후 양자화(Post-training quantization)와 혼동
– 모든 모델 구조에서 동일 효과를 보장하지 않음

ㅇ 시험 대비 “패턴 보기” 예시:
O: QAT는 학습 중 양자화 효과를 반영한다.
X: QAT는 학습 없이도 적용 가능하다.

================================

3. Pruning

ㅇ 정의:
중요도가 낮은 가중치나 뉴런을 제거하여 모델 크기와 연산량을 줄이는 기법.

ㅇ 특징:
– 구조적(Structured) / 비구조적(Unstructured) 방법 존재
– 파라미터 수와 FLOPs 감소
– 과적합 방지 효과 가능

ㅇ 적합한 경우:
– 과대적합 모델
– 경량화 및 속도 개선이 필요한 경우

ㅇ 시험 함정:
– Pruning 후 추가 학습(Fine-tuning) 필요성을 간과
– 모든 레이어에서 동일 비율로 Pruning하면 성능 저하 심각 가능

ㅇ 시험 대비 “패턴 보기” 예시:
O: Pruning은 중요하지 않은 연결을 제거한다.
X: Pruning은 항상 정확도를 높인다.

================================

4. Layer Fusion

ㅇ 정의:
연속된 연산(예: Conv + BatchNorm + ReLU)을 하나의 연산으로 합치는 최적화 기법.

ㅇ 특징:
– 메모리 접근 횟수 감소
– 연산 효율성 향상
– 추론 속도 개선

ㅇ 적합한 경우:
– 추론 전용 모델 최적화
– 하드웨어 및 프레임워크가 Fusion 지원 시

ㅇ 시험 함정:
– 학습 단계에서는 적용하지 않는 경우가 많음
– 모든 연산 조합이 Fusion 가능한 것은 아님

ㅇ 시험 대비 “패턴 보기” 예시:
O: Layer Fusion은 메모리 접근을 줄인다.
X: Layer Fusion은 학습 속도를 항상 높인다.

ㅁ 추가 학습 내용

경량화 기법은 적용 시점, 정밀도 손실과 정확도 변화, 하드웨어 지원 여부를 구분하여 이해해야 한다.
FP16은 주로 혼합 정밀도 학습(Mixed Precision Training)에서 사용되며, 학습 속도와 메모리 사용량을 줄이면서도 정확도 손실을 최소화하는 데 활용된다.
양자화에서는 QAT(Quantization Aware Training)와 사후 양자화(Post-Training Quantization)의 차이를 명확히 구분해야 한다. QAT는 학습 단계에서 양자화를 고려하여 정확도 손실을 최소화하고, 사후 양자화는 이미 학습된 모델에 적용하므로 구현은 간단하지만 정확도 저하 가능성이 크다.
Pruning은 구조적(Structural)과 비구조적(Unstructured) 방식이 있으며, 희소성(Sparsity)을 활용할 때 하드웨어 가속이 가능한지 여부가 중요하다. 구조적 Pruning은 하드웨어 최적화에 유리하다.
Layer Fusion은 주로 추론 단계에서 사용되며, 대표적으로 Conv-BN-Fusion이 있다. 이는 연산 병합을 통해 속도를 향상시킨다.
TensorRT, ONNX Runtime, TVM 등은 모델 경량화 및 최적화를 지원하는 프레임워크로, 각자의 지원 기법과 특징을 파악해 두면 실무와 시험 모두에 도움이 된다.

답글 남기기

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

*
*