딥러닝에서 프루닝: 구조적 vs 비구조적
Source: Dev.to
Introduction
Deep learning 모델은 매년 더 크고 강력해지고 있습니다. 모바일 비전 시스템부터 대형 언어 모델에 이르기까지 파라미터 수가 폭발적으로 증가했죠. 하지만 정말 모든 파라미터가 필요할까요?
프루닝(pruning)은 신경망에서 불필요한 파라미터를 제거하면서 성능을 유지하는 모델 압축 기법입니다. 모델 크기를 줄이고, 추론 속도를 높이며, 계산 비용을 낮추는 데 도움이 됩니다.
이 글에서는 다음을 살펴봅니다:
- 프루닝이란?
- 왜 프루닝이 필요한가
- Structured vs. Unstructured 프루닝
- 실용적인 트레이드‑오프
🚀 Why Do We Need Pruning?
Modern neural networks:
- 높은 메모리 요구
- 더 많은 전력 소비
- 엣지 디바이스에서 느린 추론
- 배포 비용이 비쌈
Typical scenarios:
- 모바일 앱은 경량 모델이 필요
- 임베디드 시스템은 제한된 RAM을 가짐
- 엣지 AI는 빠른 추론을 요구
프루닝은 중복된 가중치를 제거함으로써 이러한 문제들을 해결합니다.
🌳 What Is Model Pruning?
모델 프루닝은 학습된 신경망에서 파라미터(가중치, 뉴런, 필터, 혹은 레이어) 를 제거하여 모델을 더 작고 빠르게 만드는 과정입니다.
핵심 아이디어: 학습된 네트워크의 많은 가중치는 최종 예측에 거의 기여하지 않으므로 제거할 수 있습니다.
Typical workflow
- 전체 모델을 학습한다
- 중요도가 낮은 가중치를 제거한다
- 프루닝된 모델을 미세 조정한다
🔹 1. Unstructured Pruning
📌 What Is Unstructured Pruning?
Unstructured 프루닝은 중요도 기준(보통 작은 절댓값 가중치)에 따라 네트워크의 개별 가중치를 제거합니다. 그 결과 많은 원소가 0인 희소 행렬이 됩니다.
How It Works
- 각 가중치의 절댓값을 계산한다.
- 절댓값이 가장 작은 가중치를 0으로 만든다.
Advantages
- 매우 높은 압축률을 달성할 수 있다.
Disadvantages
- 희소 행렬은 하드웨어 친화적이지 않을 수 있어, 일부 디바이스에서는 속도 향상이 제한될 수 있다.
Example
한 레이어에 1,000개의 가중치가 있고 그 중 70 %가 프루닝되면, 남는 비제로 가중치는 300개뿐이다.
🔹 2. Structured Pruning
What Is Structured Pruning?
Structured 프루닝은 개별 가중치가 아니라 전체 뉴런, 채널, 필터, 혹은 레이어를 제거합니다. 희소성을 만드는 대신 네트워크 구조 자체를 바꾸는 방식입니다.
How It Works
- 필터, 뉴런, 채널의 중요도를 평가한다.
- 중요도가 가장 낮은 것들을 완전히 제거한다.
Advantages
- 하드웨어 친화적이며, 실제 연산량과 메모리 사용량을 감소시킨다.
Disadvantages
- 공격적으로 프루닝할 경우 정확도 감소가 약간 더 클 수 있다.
Example
CNN 레이어에 64개의 필터가 있고 그 중 20개를 제거하면, 레이어는 이제 44개의 필터만 남아 파라미터와 FLOPs가 모두 감소한다.
When to Use Which?
Use Structured Pruning When
- 실시간 지연 시간이나 메모리 제한이 엄격한 실제 애플리케이션에 배포할 때 (예: MobileNet 최적화)
- 하드웨어 친화적인 속도 향상이 필요할 때
Use Unstructured Pruning When
- 최대 압축이 주요 목표이며, 대상 하드웨어가 희소성을 활용할 수 있을 때
Final Thoughts
프루닝은 단순히 크기를 줄이는 것이 아니라 AI를 실용적으로 만드는 작업입니다. 모델이 점점 커짐에 따라 프루닝과 같은 효율성 기술은 필수적이 됩니다. Structured 프루닝은 일반적으로 배포에 더 적합하고, Unstructured 프루닝은 가능한 가장 높은 압축을 제공합니다. AI의 미래는 점점 더 커지는 모델이 아니라, 더 똑똑하고 가벼운 모델에 달려 있습니다.