모델 최적화: 경량화
ㅁ 경량화
ㅇ 정의:
모델의 메모리 사용량과 연산량을 줄여 경량화하여 배포 및 추론 속도를 향상시키는 기술.
ㅇ 특징:
– 정확도 손실을 최소화하면서 모델 크기와 연산량 감소.
– 모바일, 임베디드 환경 등 자원 제약 환경에서 필수.
ㅇ 적합한 경우:
– 실시간 추론이 필요한 경우.
– 배터리 소모를 최소화해야 하는 경우.
ㅇ 시험 함정:
– 단순히 모델 크기를 줄이는 것이 아니라 정확도와의 균형이 중요함.
– 경량화 기법별 적용 시기와 방법 혼동.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “모바일 환경에서 추론 속도를 높이기 위해 FP16 변환을 적용한다.”
X: “경량화는 항상 정확도를 향상시킨다.”
================================
1. FP16
ㅇ 정의:
모델의 가중치와 연산을 32비트 부동소수점(FP32)에서 16비트(FP16)로 변환하여 연산 효율을 높이는 방법.
ㅇ 특징:
– 메모리 사용량 절반 감소.
– 일부 하드웨어(GPU, TPU)에서 연산 속도 향상.
ㅇ 적합한 경우:
– GPU에서 대규모 모델 추론 시.
– 메모리 부족 환경.
ㅇ 시험 함정:
– 모든 연산이 FP16에 적합하지 않음(정밀도 손실 가능).
– 학습 시 FP16만 사용하면 수치 불안정 가능.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “FP16 변환은 메모리 사용량을 줄인다.”
X: “FP16 변환은 항상 정확도를 유지한다.”
================================
2. Quantization-aware Training
ㅇ 정의:
학습 과정에서 양자화 효과를 모사하여 모델이 정수 연산 환경에서도 정확도를 유지하도록 하는 기법.
ㅇ 특징:
– 8비트 정수 연산을 고려한 학습.
– 추론 시 속도와 메모리 효율 향상.
ㅇ 적합한 경우:
– 엣지 디바이스 배포.
– 정수 전용 가속기 사용.
ㅇ 시험 함정:
– 사후 양자화(Post-training quantization)와 혼동.
– 학습 시 추가 연산 부담.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Quantization-aware training은 학습 중 양자화 효과를 반영한다.”
X: “Quantization-aware training은 학습 후에만 적용된다.”
================================
3. Pruning
ㅇ 정의:
모델의 중요도가 낮은 가중치나 뉴런을 제거하여 크기와 연산량을 줄이는 기법.
ㅇ 특징:
– 희소성 증가.
– 모델 구조 단순화.
ㅇ 적합한 경우:
– 과적합 방지.
– 메모리와 연산 자원 절약.
ㅇ 시험 함정:
– 무분별한 Pruning은 정확도 급감.
– 구조적 Pruning과 비구조적 Pruning 구분 필요.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Pruning은 중요도가 낮은 연결을 제거한다.”
X: “Pruning은 항상 모델의 성능을 향상시킨다.”
================================
4. Layer Fusion
ㅇ 정의:
연속된 연산 레이어를 하나의 연산으로 합쳐 연산 효율을 높이는 기법.
ㅇ 특징:
– 메모리 접근 횟수 감소.
– 연산 병목 완화.
ㅇ 적합한 경우:
– CNN에서 Convolution + BatchNorm + ReLU 연산이 연속될 때.
– 추론 최적화 단계.
ㅇ 시험 함정:
– 학습 단계에서는 적용 시 부정확 결과 가능.
– 모든 연산 조합이 Fusion 가능한 것은 아님.
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Layer Fusion은 연속된 연산을 합쳐 효율을 높인다.”
X: “Layer Fusion은 학습 단계에서 항상 적용된다.”
ㅁ 추가 학습 내용
[학습 정리]
1. Mixed Precision Training
– 개념: FP16(half precision)과 FP32(single precision)을 혼합하여 학습하는 기법
– 장점: 메모리 사용량 절감, 연산 속도 향상, GPU Tensor Core 활용 가능
– 단점: 수치적 불안정성 가능, 일부 연산에서 정밀도 손실 발생, 구현 시 스케일링 관리 필요
2. Post-training Quantization vs Dynamic Quantization
– Post-training Quantization: 학습 완료 후 모델 가중치와(또는) 활성값을 낮은 비트수로 변환, 추가 학습 없이 진행
– Dynamic Quantization: 추론 시 가중치는 양자화된 상태로 저장, 활성값은 실행 중에 양자화/복원
– 차이점: 적용 시점, 활성값 처리 방식, 정확도 및 속도 영향
3. Structured Pruning vs Unstructured Pruning
– Structured Pruning: 채널, 필터, 레이어 단위로 구조적으로 제거 → 하드웨어 가속에 유리
– Unstructured Pruning: 개별 가중치 단위로 제거 → 희소성 증가, 하지만 하드웨어 최적화 어려움
– 차이점: 제거 단위, 하드웨어 효율성, 구현 복잡도
4. Layer Fusion의 하드웨어별 구현
– CUDA: 커널 병합을 통한 메모리 접근 최소화 및 연산 효율화
– TensorRT: Conv + BN + ReLU 등 연산을 하나의 최적화된 커널로 변환
– ONNX Runtime: 그래프 최적화 단계에서 연산 병합 적용, 백엔드별 최적화 활용
5. 정확도 저하 최소화를 위한 Fine-tuning 전략
– 경량화 후 재학습으로 가중치 보정
– Learning rate 조정, 데이터 증강, 지식 증류 활용
– 부분적으로 원래 정밀도의 가중치 복원
6. 경량화 기법 조합 적용 사례
– Pruning 후 Quantization: 모델 파라미터 수를 줄인 뒤 비트수 축소로 추가 최적화
– Quantization-aware Training과 Pruning 병행
– Layer Fusion과 Quantization 결합으로 추론 속도 극대화
[시험 대비 체크리스트]
– Mixed Precision Training의 정의, FP16·FP32 혼합 이유와 장단점 설명 가능 여부
– Post-training Quantization과 Dynamic Quantization의 적용 시점과 활성값 처리 차이 암기
– Structured Pruning과 Unstructured Pruning의 정의, 제거 단위, 하드웨어 효율성 차이 숙지
– Layer Fusion이 CUDA, TensorRT, ONNX Runtime에서 어떻게 구현되는지 구체적으로 설명 가능 여부
– 경량화 후 Fine-tuning 시 정확도 회복 방법과 전략 나열 가능 여부
– Pruning과 Quantization 등 경량화 기법을 조합 적용하는 대표 사례와 장점 설명 가능 여부