모델/시스템 최적화: 효율화 방식
ㅁ 효율화 방식
ㅇ 정의:
메모리 사용량과 연산 효율을 높이기 위해 모델 파라미터와 연산 방식을 최적화하는 기법들의 집합.
ㅇ 특징:
– 연산 정밀도를 낮추거나 연산 단계를 줄여 메모리와 계산 자원을 절감
– 일부 기법은 학습 단계에서 적용, 일부는 추론 단계에서 적용
ㅇ 적합한 경우:
– 제한된 GPU 메모리 환경
– 모바일, 임베디드 디바이스 배포 전 모델 경량화 필요 시
ㅇ 시험 함정:
– 모든 효율화 기법이 학습과 추론 모두에 동일 효과를 주는 것은 아님
– 정밀도 저하로 인한 성능 손실 가능성 간과 금지
ㅇ 시험 대비 “패턴 보기” 예시:
O: “모바일 환경에서 모델 메모리 사용량을 줄이기 위해 연산 정밀도를 낮추는 기법을 적용한다.”
X: “모델 효율화 방식은 항상 성능을 향상시킨다.”
================================
1. FP16
ㅇ 정의:
32비트 부동소수점(FP32) 대신 16비트 부동소수점(FP16)으로 연산 및 저장하는 방식.
ㅇ 특징:
– 메모리 사용량 절반 수준으로 감소
– 연산 속도 향상 가능 (특히 Tensor Core 지원 GPU에서)
– 수치 표현 범위 축소로 인한 underflow/overflow 위험 존재
ㅇ 적합한 경우:
– 대규모 딥러닝 모델 학습 시 GPU 메모리 부족 문제 해결
– 추론 속도 향상이 필요한 실시간 서비스
ㅇ 시험 함정:
– FP16은 항상 정확도가 유지되는 것이 아님
– 모든 연산이 FP16에서 안전하게 수행되는 것은 아님 (예: softmax, log 연산)
ㅇ 시험 대비 “패턴 보기” 예시:
O: “FP16 사용 시 메모리 절감과 연산 속도 향상을 기대할 수 있다.”
X: “FP16은 FP32와 동일한 수치 범위를 가진다.”
================================
2. Quantization Aware Training
ㅇ 정의:
학습 과정에서 양자화(quantization)로 인한 정밀도 손실을 고려하여 모델을 학습하는 기법.
ㅇ 특징:
– 학습 시부터 정수 연산 환경을 모사하여 파라미터를 조정
– 추론 시 int8 등 저정밀 연산으로 변환해도 성능 손실 최소화
ㅇ 적합한 경우:
– 모바일/엣지 디바이스에서 int8 추론을 목표로 하는 경우
– 성능 저하 없이 모델 경량화를 원하는 경우
ㅇ 시험 함정:
– 사후 양자화(Post-training quantization)와 혼동 금지
– 학습 시 추가 연산이 필요하므로 학습 속도는 느려질 수 있음
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Quantization Aware Training은 학습 시 양자화 효과를 반영하여 성능 저하를 줄인다.”
X: “Quantization Aware Training은 학습 과정과 무관하게 적용된다.”
================================
3. Layer Fusion
ㅇ 정의:
연속된 연산 레이어들을 하나의 연산으로 결합하여 메모리 접근과 연산량을 줄이는 기법.
ㅇ 특징:
– 예: Conv + BatchNorm + ReLU를 하나의 fused 연산으로 처리
– 메모리 접근 횟수 감소, 캐시 효율 증가
– 주로 추론 단계에서 적용
ㅇ 적합한 경우:
– 추론 최적화가 필요한 경량 모델
– 메모리 대역폭이 제한적인 환경
ㅇ 시험 함정:
– 학습 단계에서는 적용 효과가 제한적일 수 있음
– 모든 연산 조합이 fusion 가능한 것은 아님
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Layer Fusion은 연속된 연산을 결합하여 메모리 접근을 줄인다.”
X: “Layer Fusion은 항상 학습 속도를 크게 향상시킨다.”
ㅁ 추가 학습 내용
학습 정리
1. FP16과 혼합 정밀도 학습(Mixed Precision Training)
– FP16은 16비트 부동소수점 연산으로 메모리 사용량과 연산 속도를 개선
– 혼합 정밀도 학습은 주요 연산을 FP16으로 수행하되, 학습 안정성을 위해 일부 연산(예: 손실 계산, 가중치 업데이트 등)은 FP32로 유지
– 목적: 메모리 절감, 연산 속도 향상, 안정적 학습
2. Quantization Aware Training(QAT)
– 모델 학습 중 양자화 효과를 시뮬레이션하여 양자화 후 성능 저하를 최소화
– 양자화 스킴 구분
• 대칭(Symmetric) vs 비대칭(Asymmetric): zero-point 존재 여부, 표현 범위 차이
• per-tensor vs per-channel: 양자화 스케일 적용 범위 차이
– 스킴 선택에 따라 성능 및 정확도 차이가 발생
3. Layer Fusion
– 연속된 연산(예: Conv + BatchNorm + ReLU)을 하나의 연산으로 합쳐 최적화
– TensorRT, XLA 등 컴파일러 최적화 도구와 함께 사용되는 경우 많음
– 목적: 메모리 접근 최소화, 연산 효율 향상
4. 전력 효율성과의 관계
– FP16, QAT, Layer Fusion 모두 메모리 절감과 연산 효율 향상 → 전력 소비 감소
– 임베디드 AI 환경에서 전력 효율성은 중요한 평가 요소
시험 대비 체크리스트
[ ] FP16과 FP32의 차이와 혼합 정밀도 학습의 원리 설명 가능
[ ] 혼합 정밀도 학습에서 FP32로 유지하는 연산의 이유와 예시 제시 가능
[ ] QAT의 개념과 학습 과정에서의 장점 설명 가능
[ ] 대칭/비대칭 양자화의 차이와 적용 사례 구분 가능
[ ] per-tensor / per-channel 양자화의 차이와 장단점 설명 가능
[ ] Layer Fusion의 개념과 예시(Conv+BN+ReLU 등) 제시 가능
[ ] TensorRT, XLA 등 컴파일러 최적화와 Layer Fusion의 연계 방식 이해
[ ] FP16, QAT, Layer Fusion이 전력 절감에 기여하는 원리 설명 가능
[ ] 임베디드 AI 시험에서 전력 효율성 관련 문제에 대응할 수 있도록 사례 준비