모델/시스템 최적화: 경량화 기법
ㅁ 경량화 기법
ㅇ 정의:
모델 경량화 기법은 딥러닝 모델의 파라미터 수, 연산량, 메모리 사용량을 줄여 추론 속도를 높이고 배포 효율성을 향상시키는 기술이다.
ㅇ 특징:
– 정확도를 최대한 유지하면서 연산량과 저장 공간을 절감
– 모바일, 임베디드 환경에서 활용도 높음
– 다양한 기법을 조합하여 사용 가능
ㅇ 적합한 경우:
– 제한된 하드웨어 환경에서 모델 배포
– 실시간 응답이 필요한 서비스
– 전력 소모를 줄여야 하는 IoT 기기
ㅇ 시험 함정:
– 경량화 기법이 항상 정확도 향상을 보장한다고 착각
– 단일 기법만으로 모든 상황에 최적이라고 오해
ㅇ 시험 대비 “패턴 보기” 예시:
O: “경량화 기법은 모델의 추론 속도를 향상시키기 위해 사용된다.”
X: “경량화 기법은 항상 모델의 정확도를 향상시킨다.”
================================
1. Weight Pruning
ㅇ 정의:
모델의 가중치 중 중요도가 낮은 값을 제거하여 파라미터 수를 줄이는 기법.
ㅇ 특징:
– 불필요한 연결을 제거하여 연산량 감소
– 비구조적(Non-structured) 또는 구조적(Structured) 방식 적용 가능
– pruning 후 fine-tuning 필요
ㅇ 적합한 경우:
– 대규모 네트워크에서 불필요한 가중치가 많은 경우
– 메모리와 연산 자원을 절감해야 하는 환경
ㅇ 시험 함정:
– pruning 후 반드시 재학습 과정이 필요함을 간과
– pruning 비율이 높을수록 정확도 손실이 커질 수 있음
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Weight Pruning은 중요도가 낮은 가중치를 제거한다.”
X: “Weight Pruning은 모든 가중치를 동일 비율로 제거하여 정확도를 항상 유지한다.”
================================
2. Structured Sparsity
ㅇ 정의:
모델의 특정 구조 단위(예: 채널, 필터, 블록)로 불필요한 부분을 제거하여 연산 효율을 높이는 기법.
ㅇ 특징:
– 하드웨어 가속기에서 효율적으로 동작
– 구조 단위 제거로 병렬 연산 최적화 가능
– pruning과 유사하지만 제거 단위가 크고 규칙적임
ㅇ 적합한 경우:
– GPU, TPU 등 병렬 처리 장치에서 최적화 필요
– 채널, 필터 단위로 불필요한 계산을 줄이고자 할 때
ㅇ 시험 함정:
– 비구조적 sparsity와 혼동
– 구조적 sparsity는 메모리 절감보다 연산 최적화 효과가 큼
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Structured Sparsity는 필터 단위로 불필요한 계산을 제거한다.”
X: “Structured Sparsity는 개별 가중치를 무작위로 제거한다.”
================================
3. Knowledge Distillation
ㅇ 정의:
성능이 높은 대규모 모델(Teacher)의 지식을 작은 모델(Student)에 전달하여 성능을 유지하면서 경량화하는 기법.
ㅇ 특징:
– Teacher 모델의 soft label을 활용하여 Student 모델 학습
– Student 모델은 파라미터가 적지만 Teacher에 근접한 성능 가능
– 분류 경계에 대한 정보(soft target) 전달
ㅇ 적합한 경우:
– 대규모 모델을 경량화하면서 정확도 손실을 최소화해야 하는 경우
– 제한된 환경에서 고성능 모델 배포
ㅇ 시험 함정:
– distillation이 항상 Teacher와 동일 성능을 보장한다고 오해
– hard label만 사용해도 distillation이 가능하다고 착각
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Knowledge Distillation은 Teacher 모델의 soft label을 사용한다.”
X: “Knowledge Distillation은 Student 모델이 Teacher 모델과 동일한 구조를 가져야 한다.”
ㅁ 추가 학습 내용
학습 정리
1. Weight Pruning의 비구조적/구조적 차이와 하드웨어 최적화 효과
– 비구조적(Unstructured) Pruning: 개별 가중치 단위로 0으로 만들어 희소화. 모델 크기 감소 가능하나 메모리 접근 패턴이 불규칙해 하드웨어 가속 최적화에 한계.
– 구조적(Structured) Pruning: 채널, 필터, 블록 단위로 제거. 연산 구조 단순화로 하드웨어 가속기, GPU, CPU에서 성능 향상 효과 큼.
2. Structured Sparsity 적용 시 Conv 레이어와 FC 레이어 효과 차이
– Conv 레이어: 필터 또는 채널 제거 시 연산량과 메모리 접근량 모두 감소, 속도 향상 효과 큼.
– FC 레이어: 노드 단위 제거로 메모리 절감 효과는 있으나 연산량 비중이 Conv에 비해 적어 속도 향상은 제한적일 수 있음.
3. Knowledge Distillation에서 Temperature 파라미터 역할과 soft label 생성 방식
– Temperature(T): 로짓을 softmax에 넣기 전 나누어 분포를 부드럽게 함.
– T가 높을수록 클래스 간 확률 분포가 평탄해져 학생 모델이 클래스 간 유사성을 학습하기 쉬움.
– Soft label: Teacher 모델의 출력 확률 분포를 Temperature 적용 후 사용.
4. 경량화 기법과 양자화(Quantization), 네트워크 아키텍처 검색(NAS)과의 조합 사례
– Pruning + Quantization: 파라미터 수와 비트 수를 모두 줄여 메모리와 연산량 동시 절감.
– NAS + Quantization: 최적 구조 탐색 후 양자화 적용으로 효율 극대화.
– NAS + Pruning: 구조 탐색 시 희소성 조건을 반영하여 경량 구조 자동 설계.
5. 실제 배포 환경에서 경량화 기법 선택 시 고려 지표
– 모델 크기: 저장 공간 요구량.
– FLOPs: 연산량.
– Latency: 응답 시간.
– Energy Consumption: 전력 소모량.
– 하드웨어 호환성: GPU, CPU, 모바일 SoC 등.
6. 경량화 후 성능 검증을 위한 벤치마크 도구와 측정 방법
– 도구: TensorRT, ONNX Runtime, TFLite Benchmark Tool 등.
– 측정 방법: 동일 환경에서 Latency, Throughput, 메모리 사용량, 에너지 소비 측정.
– 실제 데이터셋 기반 정확도 및 지표 비교 필수.
시험 대비 체크리스트
[ ] 비구조적 Pruning과 구조적 Pruning의 정의와 차이 설명 가능
[ ] 두 방식의 하드웨어 최적화 효과 비교 가능
[ ] Structured Sparsity가 Conv와 FC 레이어에 미치는 영향 차이 설명 가능
[ ] Knowledge Distillation에서 Temperature의 역할과 soft label 생성 과정 이해
[ ] Pruning, Quantization, NAS의 조합 사례와 장점 설명 가능
[ ] 경량화 기법 선택 시 고려해야 할 지표 나열 및 설명 가능
[ ] 경량화 후 성능 검증 도구와 측정 방법 제시 가능